Oam管理模块

This commit is contained in:
DB 2023-10-09 17:39:23 +08:00
parent 6f3f81480f
commit 78e589cada
178 changed files with 12327 additions and 37 deletions

View File

@ -72,6 +72,21 @@
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
</dependency>
<!--knife4j-Swagger-->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi2-spring-boot-starter</artifactId>
</dependency>
<!-- 自定义验证注解 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<!--quartz-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
</dependencies>
</project>

258
Cpop-Core/sql/QRTZ.sql Normal file
View File

@ -0,0 +1,258 @@
/*
Navicat Premium Data Transfer
Source Server : RockBlade-MYSQL-TEST
Source Server Type : MySQL
Source Server Version : 80021
Source Host : 192.168.211.130:3306
Source Schema : rockblade
Target Server Type : MySQL
Target Server Version : 80021
File Encoding : 65001
Date: 28/08/2023 22:23:11
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for QRTZ_BLOB_TRIGGERS
-- ----------------------------
DROP TABLE IF EXISTS `QRTZ_BLOB_TRIGGERS`;
CREATE TABLE `QRTZ_BLOB_TRIGGERS` (
`SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`BLOB_DATA` blob NULL,
PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE,
INDEX `SCHED_NAME`(`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE,
CONSTRAINT `qrtz_blob_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `qrtz_triggers` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of QRTZ_BLOB_TRIGGERS
-- ----------------------------
-- ----------------------------
-- Table structure for QRTZ_CALENDARS
-- ----------------------------
DROP TABLE IF EXISTS `QRTZ_CALENDARS`;
CREATE TABLE `QRTZ_CALENDARS` (
`SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`CALENDAR_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`CALENDAR` blob NOT NULL,
PRIMARY KEY (`SCHED_NAME`, `CALENDAR_NAME`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of QRTZ_CALENDARS
-- ----------------------------
-- ----------------------------
-- Table structure for QRTZ_CRON_TRIGGERS
-- ----------------------------
DROP TABLE IF EXISTS `QRTZ_CRON_TRIGGERS`;
CREATE TABLE `QRTZ_CRON_TRIGGERS` (
`SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`CRON_EXPRESSION` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`TIME_ZONE_ID` varchar(80) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE,
CONSTRAINT `qrtz_cron_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `qrtz_triggers` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of QRTZ_CRON_TRIGGERS
-- ----------------------------
-- ----------------------------
-- Table structure for QRTZ_FIRED_TRIGGERS
-- ----------------------------
DROP TABLE IF EXISTS `QRTZ_FIRED_TRIGGERS`;
CREATE TABLE `QRTZ_FIRED_TRIGGERS` (
`SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`ENTRY_ID` varchar(95) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`INSTANCE_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`FIRED_TIME` bigint(0) NOT NULL,
`SCHED_TIME` bigint(0) NOT NULL,
`PRIORITY` int(0) NOT NULL,
`STATE` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`JOB_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`JOB_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`IS_NONCONCURRENT` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`REQUESTS_RECOVERY` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`SCHED_NAME`, `ENTRY_ID`) USING BTREE,
INDEX `IDX_QRTZ_FT_TRIG_INST_NAME`(`SCHED_NAME`, `INSTANCE_NAME`) USING BTREE,
INDEX `IDX_QRTZ_FT_INST_JOB_REQ_RCVRY`(`SCHED_NAME`, `INSTANCE_NAME`, `REQUESTS_RECOVERY`) USING BTREE,
INDEX `IDX_QRTZ_FT_J_G`(`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) USING BTREE,
INDEX `IDX_QRTZ_FT_JG`(`SCHED_NAME`, `JOB_GROUP`) USING BTREE,
INDEX `IDX_QRTZ_FT_T_G`(`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE,
INDEX `IDX_QRTZ_FT_TG`(`SCHED_NAME`, `TRIGGER_GROUP`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of QRTZ_FIRED_TRIGGERS
-- ----------------------------
-- ----------------------------
-- Table structure for QRTZ_JOB_DETAILS
-- ----------------------------
DROP TABLE IF EXISTS `QRTZ_JOB_DETAILS`;
CREATE TABLE `QRTZ_JOB_DETAILS` (
`SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`JOB_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`JOB_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`DESCRIPTION` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`JOB_CLASS_NAME` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`IS_DURABLE` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`IS_NONCONCURRENT` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`IS_UPDATE_DATA` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`REQUESTS_RECOVERY` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`JOB_DATA` blob NULL,
PRIMARY KEY (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) USING BTREE,
INDEX `IDX_QRTZ_J_REQ_RECOVERY`(`SCHED_NAME`, `REQUESTS_RECOVERY`) USING BTREE,
INDEX `IDX_QRTZ_J_GRP`(`SCHED_NAME`, `JOB_GROUP`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of QRTZ_JOB_DETAILS
-- ----------------------------
-- ----------------------------
-- Table structure for QRTZ_LOCKS
-- ----------------------------
DROP TABLE IF EXISTS `QRTZ_LOCKS`;
CREATE TABLE `QRTZ_LOCKS` (
`SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`LOCK_NAME` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
PRIMARY KEY (`SCHED_NAME`, `LOCK_NAME`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of QRTZ_LOCKS
-- ----------------------------
INSERT INTO `QRTZ_LOCKS` VALUES ('RockBladeScheduler', 'TRIGGER_ACCESS');
-- ----------------------------
-- Table structure for QRTZ_PAUSED_TRIGGER_GRPS
-- ----------------------------
DROP TABLE IF EXISTS `QRTZ_PAUSED_TRIGGER_GRPS`;
CREATE TABLE `QRTZ_PAUSED_TRIGGER_GRPS` (
`SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
PRIMARY KEY (`SCHED_NAME`, `TRIGGER_GROUP`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of QRTZ_PAUSED_TRIGGER_GRPS
-- ----------------------------
-- ----------------------------
-- Table structure for QRTZ_SCHEDULER_STATE
-- ----------------------------
DROP TABLE IF EXISTS `QRTZ_SCHEDULER_STATE`;
CREATE TABLE `QRTZ_SCHEDULER_STATE` (
`SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`INSTANCE_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`LAST_CHECKIN_TIME` bigint(0) NOT NULL,
`CHECKIN_INTERVAL` bigint(0) NOT NULL,
PRIMARY KEY (`SCHED_NAME`, `INSTANCE_NAME`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of QRTZ_SCHEDULER_STATE
-- ----------------------------
-- ----------------------------
-- Table structure for QRTZ_SIMPLE_TRIGGERS
-- ----------------------------
DROP TABLE IF EXISTS `QRTZ_SIMPLE_TRIGGERS`;
CREATE TABLE `QRTZ_SIMPLE_TRIGGERS` (
`SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`REPEAT_COUNT` bigint(0) NOT NULL,
`REPEAT_INTERVAL` bigint(0) NOT NULL,
`TIMES_TRIGGERED` bigint(0) NOT NULL,
PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE,
CONSTRAINT `qrtz_simple_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `qrtz_triggers` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of QRTZ_SIMPLE_TRIGGERS
-- ----------------------------
-- ----------------------------
-- Table structure for QRTZ_SIMPROP_TRIGGERS
-- ----------------------------
DROP TABLE IF EXISTS `QRTZ_SIMPROP_TRIGGERS`;
CREATE TABLE `QRTZ_SIMPROP_TRIGGERS` (
`SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`STR_PROP_1` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`STR_PROP_2` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`STR_PROP_3` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`INT_PROP_1` int(0) NULL DEFAULT NULL,
`INT_PROP_2` int(0) NULL DEFAULT NULL,
`LONG_PROP_1` bigint(0) NULL DEFAULT NULL,
`LONG_PROP_2` bigint(0) NULL DEFAULT NULL,
`DEC_PROP_1` decimal(13, 4) NULL DEFAULT NULL,
`DEC_PROP_2` decimal(13, 4) NULL DEFAULT NULL,
`BOOL_PROP_1` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`BOOL_PROP_2` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE,
CONSTRAINT `qrtz_simprop_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `qrtz_triggers` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of QRTZ_SIMPROP_TRIGGERS
-- ----------------------------
-- ----------------------------
-- Table structure for QRTZ_TRIGGERS
-- ----------------------------
DROP TABLE IF EXISTS `QRTZ_TRIGGERS`;
CREATE TABLE `QRTZ_TRIGGERS` (
`SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`JOB_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`JOB_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`DESCRIPTION` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`NEXT_FIRE_TIME` bigint(0) NULL DEFAULT NULL,
`PREV_FIRE_TIME` bigint(0) NULL DEFAULT NULL,
`PRIORITY` int(0) NULL DEFAULT NULL,
`TRIGGER_STATE` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`TRIGGER_TYPE` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`START_TIME` bigint(0) NOT NULL,
`END_TIME` bigint(0) NULL DEFAULT NULL,
`CALENDAR_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`MISFIRE_INSTR` smallint(0) NULL DEFAULT NULL,
`JOB_DATA` blob NULL,
PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE,
INDEX `IDX_QRTZ_T_J`(`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) USING BTREE,
INDEX `IDX_QRTZ_T_JG`(`SCHED_NAME`, `JOB_GROUP`) USING BTREE,
INDEX `IDX_QRTZ_T_C`(`SCHED_NAME`, `CALENDAR_NAME`) USING BTREE,
INDEX `IDX_QRTZ_T_G`(`SCHED_NAME`, `TRIGGER_GROUP`) USING BTREE,
INDEX `IDX_QRTZ_T_STATE`(`SCHED_NAME`, `TRIGGER_STATE`) USING BTREE,
INDEX `IDX_QRTZ_T_N_STATE`(`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`, `TRIGGER_STATE`) USING BTREE,
INDEX `IDX_QRTZ_T_N_G_STATE`(`SCHED_NAME`, `TRIGGER_GROUP`, `TRIGGER_STATE`) USING BTREE,
INDEX `IDX_QRTZ_T_NEXT_FIRE_TIME`(`SCHED_NAME`, `NEXT_FIRE_TIME`) USING BTREE,
INDEX `IDX_QRTZ_T_NFT_ST`(`SCHED_NAME`, `TRIGGER_STATE`, `NEXT_FIRE_TIME`) USING BTREE,
INDEX `IDX_QRTZ_T_NFT_MISFIRE`(`SCHED_NAME`, `MISFIRE_INSTR`, `NEXT_FIRE_TIME`) USING BTREE,
INDEX `IDX_QRTZ_T_NFT_ST_MISFIRE`(`SCHED_NAME`, `MISFIRE_INSTR`, `NEXT_FIRE_TIME`, `TRIGGER_STATE`) USING BTREE,
INDEX `IDX_QRTZ_T_NFT_ST_MISFIRE_GRP`(`SCHED_NAME`, `MISFIRE_INSTR`, `NEXT_FIRE_TIME`, `TRIGGER_GROUP`, `TRIGGER_STATE`) USING BTREE,
CONSTRAINT `qrtz_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) REFERENCES `qrtz_job_details` (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of QRTZ_TRIGGERS
-- ----------------------------
SET FOREIGN_KEY_CHECKS = 1;

View File

@ -1,5 +1,6 @@
package com.cpop.core.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@ -8,6 +9,7 @@ import org.springframework.stereotype.Component;
* @Description: 生成密钥对的配置文件
* @create: 2023-08-04 23:06
*/
@Data
@Component
@ConfigurationProperties(prefix = "cpop.gateway.rsa-keypair")
public class GenerateKeyPairConfig {
@ -32,36 +34,5 @@ public class GenerateKeyPairConfig {
*/
private String privateKeyFile;
/**
* 获取指定加密算法
* @return 读取YAML文件的 SystemConfig.rsa-keypair.algorithm 属性
*/
public String getAlgorithm() {
return algorithm;
}
/**
* 获取密钥长度用来初始化
* @return 读取YAML文件的 SystemConfig.rsa-keypair.key-size 属性
*/
public Integer getKeySize() {
return keySize;
}
/**
* 获取公钥存放文件
* @return 读取YAML文件的 SystemConfig.rsa-keypair.public-key-file 属性
*/
public String getPublicKeyFile() {
return publicKeyFile;
}
/**
* 获取私钥存放文件
* @return 读取YAML文件的 SystemConfig.rsa-keypair.private-key-file 属性
*/
public String getPrivateKeyFile() {
return privateKeyFile;
}
}

View File

@ -6,10 +6,10 @@ import com.cpop.common.utils.StringUtils;
import com.cpop.common.utils.ip.IpUtils;
import com.cpop.core.base.entity.LoginUser;
import com.cpop.core.base.enums.UserType;
import com.cpop.core.gateway.miniProgram.MiniProgramAuthenticationToken;
import com.cpop.core.service.RedisService;
import com.cpop.core.service.impl.OamStaffDetailsServiceImpl;
import com.cpop.core.utils.JwtUtils;
import com.pupu.core.security.miniProgram.MiniProgramAuthenticationToken;
import com.pupu.core.service.impl.OamStaffDetailsServiceImpl;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jws;
import io.jsonwebtoken.JwtException;

View File

@ -0,0 +1,158 @@
package com.cpop.core.utils;
import org.quartz.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.text.ParseException;
import java.util.Calendar;
import java.util.Date;
/**
* @author: DB
* @Date: 2023/07/12/16:54
* @Description:
*/
@Component
public class QuartzUtils {
@Autowired
private Scheduler scheduler;
/**
* @Description: 获取Job信息
* @param name
* @param group
* @return String
* @author DB
* @Date: 2023/7/12 0012 16:57
*/
public String getJobInfo(String name, String group) throws SchedulerException {
TriggerKey triggerKey = new TriggerKey(name, group);
CronTrigger cronTrigger = (CronTrigger) scheduler.getTrigger(triggerKey);
return String.format("time:%s,state:%s", cronTrigger.getCronExpression(),
scheduler.getTriggerState(triggerKey).name());
}
/**
* @Description: 修改某个任务的执行时间
* @param name
* @param group
* @param time
* @return boolean
* @author DB
* @Date: 2023/7/12 0012 16:57
*/
public boolean modifyJob(String name, String group, String time) throws SchedulerException {
Date date = null;
TriggerKey triggerKey = new TriggerKey(name, group);
CronTrigger cronTrigger = (CronTrigger) scheduler.getTrigger(triggerKey);
String oldTime = cronTrigger.getCronExpression();
if (!oldTime.equalsIgnoreCase(time)) {
CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(time);
CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity(name, group)
.withSchedule(cronScheduleBuilder).build();
date = scheduler.rescheduleJob(triggerKey, trigger);
}
return date != null;
}
/**
* @Description: 暂停所有任务
* @param
* @return
* @author DB
* @Date: 2023/7/12 0012 16:57
*/
public void pauseAllJob() throws SchedulerException {
scheduler.pauseAll();
}
/**
* @Description: 暂停某个任务
* @param name
* @param group
* @return
* @author DB
* @Date: 2023/7/12 0012 16:57
*/
public void pauseJob(String name, String group) throws SchedulerException {
JobKey jobKey = new JobKey(name, group);
JobDetail jobDetail = scheduler.getJobDetail(jobKey);
if (jobDetail == null) {
return;
}
scheduler.pauseJob(jobKey);
}
/**
* @Description: 恢复所有任务
* @param
* @return
* @author DB
* @Date: 2023/7/12 0012 16:57
*/
public void resumeAllJob() throws SchedulerException {
scheduler.resumeAll();
}
/**
* @Description: 恢复某个任务
* @param name
* @param group
* @return
* @author DB
* @Date: 2023/7/12 0012 16:57
*/
public void resumeJob(String name, String group) throws SchedulerException {
JobKey jobKey = new JobKey(name, group);
JobDetail jobDetail = scheduler.getJobDetail(jobKey);
if (jobDetail == null) {
return;
}
scheduler.resumeJob(jobKey);
}
/**
* @Description: 删除某个任务
* @param name
* @param group
* @return
* @author DB
* @Date: 2023/7/12 0012 16:57
*/
public void deleteJob(String name, String group) throws SchedulerException {
JobKey jobKey = new JobKey(name, group);
JobDetail jobDetail = scheduler.getJobDetail(jobKey);
if (jobDetail == null) {
return;
}
scheduler.deleteJob(jobKey);
}
/**
* @Description: 日期转Cron
* @param date
* @return String
* @author DB
* @Date: 2023/7/14 0014 11:26
*/
public String convertToCron(Date date) throws ParseException {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int seconds = calendar.get(Calendar.SECOND);
int minutes = calendar.get(Calendar.MINUTE);
int hours = calendar.get(Calendar.HOUR_OF_DAY);
int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
// Calendar中的月份从0开始所以需要加1
int month = calendar.get(Calendar.MONTH) + 1;
int year = calendar.get(Calendar.YEAR);
return seconds + " " +
minutes + " " +
hours + " " +
dayOfMonth + " " +
month + " " +
"? " + year;
}
}

View File

@ -7,6 +7,7 @@ import com.cpop.common.utils.StringUtils;
import com.cpop.core.base.exception.file.FileNameLengthLimitExceededException;
import com.cpop.core.base.exception.file.FileSizeLimitExceededException;
import com.cpop.core.base.exception.file.InvalidExtensionException;
import com.cpop.core.utils.SpringUtils;
import com.cpop.core.utils.uuid.Seq;
import org.apache.commons.io.FilenameUtils;
import org.springframework.web.multipart.MultipartFile;
@ -47,7 +48,7 @@ public class FileUploadUtils {
/**
* 默认上传的地址
*/
private static String defaultBaseDir = CpopConfig.getProfile();
private static String defaultBaseDir = SpringUtils.getBean(CpopConfig.class).getProfile();
public void setDefaultBaseDir(String defaultBaseDir) {
FileUploadUtils.defaultBaseDir = defaultBaseDir;
@ -134,7 +135,7 @@ public class FileUploadUtils {
}
public final String getPathFileName(String uploadDir, String fileName) throws IOException {
int dirLastIndex = CpopConfig.getProfile().length() + 1;
int dirLastIndex = SpringUtils.getBean(CpopConfig.class).getProfile().length() + 1;
String currentDir = StringUtils.substring(uploadDir, dirLastIndex);
return Constants.RESOURCE_PREFIX + "/" + currentDir + "/" + fileName;
}

View File

@ -7,6 +7,7 @@ import com.cpop.common.utils.DateUtils;
import com.cpop.common.utils.StringUtils;
import com.cpop.core.base.exception.UtilException;
import com.cpop.core.config.CpopConfig;
import com.cpop.core.utils.SpringUtils;
import com.cpop.core.utils.uuid.IdUtils;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.io.IOUtils;
@ -80,7 +81,7 @@ public class FileUtils {
* @throws IOException IO异常
*/
public String writeImportBytes(byte[] data) throws IOException {
return writeBytes(data, CpopConfig.getImportPath());
return writeBytes(data, SpringUtils.getBean(CpopConfig.class).getImportPath());
}
/**

View File

@ -121,7 +121,7 @@
</update>
<!--根据键查询配置-->
<select id="selectConfigByKeys" resultType="com.pupu.core.base.table.SysConfig">
<select id="selectConfigByKeys" resultType="com.cpop.core.base.table.SysConfig">
SELECT
config_key AS configKey,
config_name AS configName,

View File

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.cpop</groupId>
<artifactId>Cpop-Union</artifactId>
<version>1.0.0</version>
<relativePath>../../pom.xml</relativePath> <!-- lookup parent from repository -->
</parent>
<artifactId>Cpop-Oam-Web</artifactId>
<name>Cpop-Oam-Web</name>
<description>Cpop-Oam-Web</description>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>com.cpop</groupId>
<artifactId>Cpop-Oam</artifactId>
</dependency>
<!--Mysql-->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@ -0,0 +1,20 @@
package com.cpop.oam.web;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableAsync;
/**
* @author DB
*/
@SpringBootApplication(scanBasePackages = {"com.cpop.**"})
@MapperScan("com.cpop.**.mapper")
@EnableAsync
public class CpopOamWebApplication {
public static void main(String[] args) {
SpringApplication.run(CpopOamWebApplication.class, args);
}
}

View File

@ -0,0 +1,86 @@
# 项目相关配置
cpop:
# 文件路径 示例( Windows配置W:/WorkSpace/java/uploadPathLinux配置 /home/baseFramework/uploadPath
profile: E:/Cpop/uploadPath
jwt:
#白名单
whiteList: /login,/getCaptcha,/profile/**,/doc.html,/webjars/**,/favicon.ico,/v2/api-docs/**,/swagger-resources
gateway:
rsa-keypair:
# 公钥文件
publicKeyFile: E:\Cpop\Cpop-Union\Cpop-Core\src\main\resources\static\keyPair\publicKey
# 公钥文件
privateKeyFile: E:\Cpop\Cpop-Union\Cpop-Core\src\main\resources\static\keyPair\privateKey
# DataSource Config
spring:
application:
name: Cpop-Oam-Dev
datasource:
url: jdbc:mysql://localhost:3306/cpop-union?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: root
#redis配置
redis:
#地址
host: localhost
#端口
port: 6379
#数据库
database: 0
#密码
password:
#连接超时
timeout: 5000
lettuce:
pool:
#
min-idle: 0
#
max-idle: 8
#
max-active: 8
#
max-wait: -1ms
data:
mongodb:
host: localhost
port: 27017
database: cpop-union
server:
port: 9420
servlet:
context-path: /Cpop-Oam-Dev
#Mybatis-Flex
mybatis-flex:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
# springdoc-openapi项目配置
knife4j:
enable: true
openapi:
title: PuPu-OAM开发API
description: PuPu-OAM开发API
email:
concat: DB
url: https://api.jamboxsys.com
version: 1.0.0
license: Apache 2.0
license-url: https://stackoverflow.com/
terms-of-service-url: https://api.jamboxsys.com
group:
#系统
system:
group-name: Oam
api-rule: package
api-rule-resources:
- com.pupu.oam
#jambox
jambox:
group-name: Jambox
api-rule: package
api-rule-resources:
- com.pupu.jambox

View File

@ -0,0 +1,60 @@
# 项目相关配置
cpop:
# 文件路径 示例( Windows配置W:/WorkSpace/java/uploadPathLinux配置 /home/baseFramework/uploadPath
profile: /root/jambox-union/jambox-oam/uploadPath/upload
jwt:
#白名单
whiteList: /login,/getCaptcha,/profile/**
#拦截
gateway:
rsa-keypair:
# 公钥文件
publicKeyFile: /root/jambox-union/jambox-oam/script/secretKey/publicKey
# 公钥文件
privateKeyFile: /root/jambox-union/jambox-oam/script/secretKey/privateKey
# DataSource Config
spring:
application:
name: PuPu_Oam
datasource:
url: jdbc:mysql://sh-cynosdbmysql-grp-fggo83js.sql.tencentcdb.com:20965/pupu-union?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: Customer0401
#redis配置
redis:
#地址
host: 106.52.49.102
#端口
port: 6333
#数据库
database: 5
#密码
password: Jambox.123*
#连接超时
timeout: 5000
lettuce:
pool:
#
min-idle: 0
#
max-idle: 8
#
max-active: 8
#
max-wait: -1ms
data:
mongodb:
host: localhost
port: 27017
database: rock-blade
server:
port: 9420
servlet:
context-path: /PuPu-OAM
#Mybatis-Flex
mybatis-flex:
configuration:
log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl

View File

@ -0,0 +1,87 @@
# 项目相关配置
cpop:
# 文件路径 示例( Windows配置W:/WorkSpace/java/uploadPathLinux配置 /home/baseFramework/uploadPath
profile: /root/jambox-union/jambox-oam/uploadPath/upload
jwt:
#白名单
whiteList: /login,/getCaptcha,/profile/**,/doc.html,/webjars/**,/favicon.ico,/v2/api-docs/**,/swagger-resources
#拦截
gateway:
rsa-keypair:
# 公钥文件
publicKeyFile: /root/jambox-union/jambox-oam/script/secretKey/publicKey
# 公钥文件
privateKeyFile: /root/jambox-union/jambox-oam/script/secretKey/privateKey
# DataSource Config
spring:
application:
name: PuPu-TEST
datasource:
url: jdbc:mysql://sh-cynosdbmysql-grp-fggo83js.sql.tencentcdb.com:20965/pupu-union?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: Customer0401
#redis配置
redis:
#地址
host: 106.52.49.102
#端口
port: 6333
#数据库
database: 5
#密码
password: Jambox.123*
#连接超时
timeout: 5000
lettuce:
pool:
#
min-idle: 0
#
max-idle: 8
#
max-active: 8
#
max-wait: -1ms
data:
mongodb:
host: localhost
port: 27017
database: rock-blade
server:
port: 9420
servlet:
context-path: /PuPu-Oam-TEST
#Mybatis-Flex
mybatis-flex:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
# springdoc-openapi项目配置
knife4j:
enable: true
openapi:
title: PuPu-OAM开发API
description: PuPu-OAM开发API
email:
concat: DB
url: https://api.jamboxsys.com
version: 1.0.0
license: Apache 2.0
license-url: https://stackoverflow.com/
terms-of-service-url: https://api.jamboxsys.com
group:
#系统
system:
group-name: Oam
api-rule: package
api-rule-resources:
- com.pupu.oam
#jambox
jambox:
group-name: Jambox
api-rule: package
api-rule-resources:
- com.pupu.jambox

View File

@ -0,0 +1,118 @@
# 项目相关配置
cpop:
# 名称
name: PuPu-OAM
# 版本
version: 1.0.0
#JWT
jwt:
#密钥
secret: abcdefghijklmnopqrstuvwxyz
#过期时间
expire: 604800
#token头
header: Authorization
#拦截
gateway:
rsa-keypair:
# 加密方式
algorithm: RSA
# 初始化大小
keySize: 2048
#Spring
spring:
mvc:
pathmatch:
matching-strategy: ant_path_matcher
servlet:
multipart:
#文件最大传输
max-file-size: 1024MB
max-request-size: 300MB
profiles:
active: dev,jambox,api,sdk
datasource:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
#hikari数据源特性配置
hikari:
#最大连接数,默认值10.
maximum-pool-size: 10
#最小空闲连接默认值10.
minimum-idle: 10
#连接超时时间(毫秒),默认值30秒.
connection-timeout: 30000
#空闲连接超时时间默认值600000(10分钟),只有空闲连接数大于最大连接数且空闲时间超过该值,才会被释放;如果大于等于 max-lifetime 且 max-lifetime>0,则会被重置为0.
idle-timeout: 600000
#连接最大存活时间,默认值30分钟.设置应该比mysql设置的超时时间短
max-lifetime: 3000000
#连接测试查询
connection-test-query: select 1
messages:
#i18n
basename: static/i18n/messages
encoding: UTF-8
cacheDuration: 3600
quartz:
job-store-type: jdbc
jdbc:
initialize-schema: embedded
#定时任务启动开关true-开 false-关
auto-startup: true
#延迟1秒启动定时任务
startup-delay: 1s
#启动时更新己存在的Job
overwrite-existing-jobs: true
properties:
org:
quartz:
scheduler:
instanceName: PuPuOamScheduler
instanceId: AUTO
jobStore:
class: org.springframework.scheduling.quartz.LocalDataSourceJobStore
driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate
tablePrefix: QRTZ_
isClustered: false
misfireThreshold: 12000
clusterCheckinInterval: 15000
threadPool:
class: org.quartz.simpl.SimpleThreadPool
threadCount: 1
threadPriority: 5
threadsInheritContextClassLoaderOfInitializingThread: true
#Mybatis-Flex
mybatis-flex:
global-config:
key-config:
key-type: generator
value: snowFlakeId
# 逻辑删除数据存在标记值 默认值:0
normal-value-of-logic-delete: 0
# 逻辑删除数据删除标记值 默认值:0
deleted-value-of-logic-delete: 1
# 全局逻辑删除默认字段
logic-delete-column: is_delete
# 线程池配置参数
task:
pool:
# 设置核心线程数
corePoolSize: 10
# 设置最大线程数
maxPoolSize: 20
# 设置空闲线程存活时间(秒
keepAliveSeconds: 300
# 设置队列容量
queueCapacity: 100
# 设置线程名称前缀
threadNamePrefix: "PuPu-Oam-AsyncNotify-"
# 设置线程池等待终止时间(秒)
awaitTerminationSeconds: 60
logging:
level:
#swagger日志
springfox: error

View File

@ -0,0 +1,80 @@
#\u767B\u5F55\u4FE1\u606F
i18n_login_success=Login Success
i18n_loginOut_success=Login Out Success
#\u544A\u8B66\u90AE\u4EF6i18n
i18n_alarm_email_dir=Dear
i18n_alarm_email_as_below=This is an alarm information from cloud platform:
i18n_alarm_email_content=Alarm content:
i18n_alarm_email_source=Alarm source:
i18n_alarm_email_level=Alarm level:
i18n_alarm_email_time=Alarm time:
i18n_alarm_email_level_alert=alert
i18n_alarm_email_level_info=info
i18n_alarm_email_level_warning=warning
i18n_alarm_email_level_error=error
i18n_alarm_email_tip=If the alarm level is warning or error, please resolve it as soon as possible!
i18n_alarm_email_not_reply=This email is automatically sent by system, please do not reply.
i18n_alarm_email_subject=System alert email
#\u7CFB\u7EDF\u4FE1\u606F
i18n_sysInfo_no_version_Info=No version information retrieved!
#\u7CFB\u7EDF\u65E5\u5FD7\u4FE1\u606F
i18n_sysLog_terminalLog=Terminal Log
i18n_sysLog_systemLog=System Log
i18n_sysLog_webLog=Web Log
i18n_sysLog_DBLog=DataBase Log
i18n_sysLog_pgPoolLog=PgPool Log
#\u64CD\u4F5C\u65E5\u5FD7\u4FE1\u606F
i18n_operationLog_systemLogin=System User Login
i18n_operationLog_systemLogout=System User Logout
i18n_operationLog_insertOamMenu=Insert Oam Menu
i18n_operationLog_updateOamMenu=Update Oam Menu
i18n_operationLog_removeOamMenu=Remove Oam Menu
i18n_operationLog_insertOamRole=Insert Oam Role
i18n_operationLog_updateOamRole=Update Oam Role
i18n_operationLog_removeOamRole=Remove Oam Role
i18n_operationLog_insertOamDept=Insert Oam Dept
i18n_operationLog_updateOamDept=Update Oam Dept
i18n_operationLog_removeOamDept=Remove Oam Dept
i18n_operationLog_insertOamStaff=Insert Oam User
i18n_operationLog_updateOamStaff=Update Oam User
i18n_operationLog_removeOamStaff=Remove Oam User
i18n_operationLog_updateOamStaffPassword=Update Oam Staff Password
i18n_operationLog_insertOamDuty=Insert Oam Duty
i18n_operationLog_removeOamDuty=Remove Oam Duty
i18n_operationLog_insertIterationTask=Insert Iteration Task
i18n_operationLog_setTaskAuditComments=Set Task Audit Comments
i18n_operationLog_claimTask=Claim Duty
i18n_operationLog_removeTask=Remove Task
i18n_operationLog_insertTaskStaffGroup=Insert Task Staff Group
i18n_operationLog_updateStaffGrandPoint=Update Staff Grand Point
i18n_operationLog_removeTaskStaffGroup=Remove Task Staff Group
i18n_operationLog_updateTaskItem=Update Task Item
i18n_operationLog_updateTaskResponsibleStaff=Update Task Responsible Staff
i18n_operationLog_insertDemandTask=Insert Demand Task
i18n_operationLog_insertWorkOrder=Insert Work Order
i18n_operationLog_finishTask=Finish Task
i18n_operationLog_insertWorkOrderRecord=Insert Work Order Record
i18n_operationLog_concludeWorkOrder=Conclude Work Order
i18n_operationLog_pauseWorkOrder=Pause Work Order
i18n_operationLog_insertReimburseType=Insert Reimburse Type
i18n_operationLog_updateReimburseType=Update Reimburse Type
i18n_operationLog_removeReimburseType=Remove Reimburse Type
i18n_operationLog_auditStaffApplication=Audit Staff Application
i18n_operationLog_reimburseReject=Reimburse Reject
i18n_operationLog_reimbursePay=Reimburse Pay
#\u7CFB\u7EDF\u63D0\u793A\u4FE1\u606F
i18n_alert_accountOrPwdError=Username or password is wrong!
i18n_alert_peopleUnderTheDepartmentError=There are people under the department, it is not allowed to delete the department!
i18n_alert_departmentNotDeactivatedError=The current department is not deactivated, deletion is not allowed\uFF01
i18n_alert_userOrPhoneOrEmailIsExist=Username or mobile phone number or email address already exists
i18n_alert_userIsExist=User already exists
i18n_alert_oldPasswordIsWrong=The old password was entered incorrectly, please try again
#\u7CFB\u7EDF\u57FA\u7840\u4FE1\u606F
i18n_baseInfo_success=Success
i18n_baseInfo_failed=Failed

View File

@ -0,0 +1,80 @@
#\u767B\u5F55\u4FE1\u606F
i18n_login_success=\u767B\u5F55\u6210\u529F
i18n_loginOut_success=\u767B\u51FA\u6210\u529F
#\u544A\u8B66\u90AE\u4EF6i18n
i18n_alarm_email_dir=\u4EB2\u7231\u7684
i18n_alarm_email_as_below=\u4EE5\u4E0B\u662F\u7CFB\u7EDF\u53D1\u9001\u7684\u544A\u8B66\u4FE1\u606F:
i18n_alarm_email_content=\u544A\u8B66\u5185\u5BB9:
i18n_alarm_email_source=\u544A\u8B66\u6765\u6E90:
i18n_alarm_email_level=\u544A\u8B66\u7EA7\u522B:
i18n_alarm_email_time=\u544A\u8B66\u65F6\u95F4:
i18n_alarm_email_level_alert=\u63D0\u793A
i18n_alarm_email_level_info=\u4FE1\u606F
i18n_alarm_email_level_warning=\u8B66\u544A
i18n_alarm_email_level_error=\u9519\u8BEF
i18n_alarm_email_tip=\u5982\u679C\u662F\u8B66\u544A\u6216\u9519\u8BEF\u7EA7\u522B\u7684\u4FE1\u606F,\u8BF7\u5C3D\u5FEB\u5904\u7406,\u4EE5\u514D\u5F71\u54CD\u5DE5\u4F5C\u4E1A\u52A1\uFF01
i18n_alarm_email_not_reply=\u672C\u90AE\u4EF6\u4E3A\u7CFB\u7EDF\u81EA\u52A8\u53D1\u9001\u7684\u90AE\u4EF6,\u8BF7\u52FF\u56DE\u590D\u3002
i18n_alarm_email_subject=\u7CFB\u7EDF\u544A\u8B66\u90AE\u4EF6
#\u7CFB\u7EDF\u4FE1\u606F
i18n_sysInfo_no_version_Info=\u6CA1\u6709\u68C0\u7D22\u5230\u7248\u672C\u4FE1\u606F\uFF01
#\u7CFB\u7EDF\u65E5\u5FD7\u4FE1\u606F
i18n_sysLog_terminalLog=\u7EC8\u7AEF\u65E5\u5FD7
i18n_sysLog_systemLog=\u7CFB\u7EDF\u65E5\u5FD7
i18n_sysLog_webLog=web\u65E5\u5FD7
i18n_sysLog_DBLog=\u6570\u636E\u5E93\u65E5\u5FD7
i18n_sysLog_pgPoolLog=pgPool\u65E5\u5FD7
#\u64CD\u4F5C\u65E5\u5FD7\u4FE1\u606F
i18n_operationLog_systemLogin=\u7CFB\u7EDF\u7528\u6237\u767B\u5F55
i18n_operationLog_systemLogout=\u7CFB\u7EDF\u7528\u6237\u9000\u51FA
i18n_operationLog_insertOamMenu=\u6DFB\u52A0OAM\u83DC\u5355
i18n_operationLog_updateOamMenu=\u4FEE\u6539OAM\u83DC\u5355
i18n_operationLog_removeOamMenu=\u5220\u9664OAM\u83DC\u5355
i18n_operationLog_insertOamRole=\u6DFB\u52A0OAM\u89D2\u8272
i18n_operationLog_updateOamRole=\u4FEE\u6539OAM\u89D2\u8272
i18n_operationLog_removeOamRole=\u5220\u9664OAM\u89D2\u8272
i18n_operationLog_insertOamDept=\u6DFB\u52A0OAM\u90E8\u95E8
i18n_operationLog_updateOamDept=\u4FEE\u6539OAM\u90E8\u95E8
i18n_operationLog_removeOamDept=\u5220\u9664OAM\u90E8\u95E8
i18n_operationLog_insertOamStaff=\u6DFB\u52A0OAM\u7528\u6237
i18n_operationLog_updateOamStaff=\u4FEE\u6539OAM\u7528\u6237
i18n_operationLog_removeOamStaff=\u5220\u9664OAM\u7528\u6237
i18n_operationLog_updateOamStaffPassword=\u4FEE\u6539OAM\u7528\u6237\u5BC6\u7801
i18n_operationLog_insertOamDuty=\u6DFB\u52A0OAM\u503C\u73ED
i18n_operationLog_removeOamDuty=\u5220\u9664OAM\u503C\u73ED
i18n_operationLog_insertIterationTask=\u6DFB\u52A0\u8FED\u4EE3\u4EFB\u52A1
i18n_operationLog_setTaskAuditComments=\u8BBE\u7F6E\u5BA1\u6838\u610F\u89C1
i18n_operationLog_claimTask=\u9886\u53D6\u4EFB\u52A1
i18n_operationLog_removeTask=\u5220\u9664\u4EFB\u52A1
i18n_operationLog_insertTaskStaffGroup=\u65B0\u589E\u4EFB\u52A1\u5458\u5DE5\u7EC4
i18n_operationLog_updateStaffGrandPoint=\u66F4\u65B0\u5458\u5DE5\u7EE9\u70B9
i18n_operationLog_removeTaskStaffGroup=\u5220\u9664\u5458\u5DE5\u4EFB\u52A1\u7EC4
i18n_operationLog_updateTaskItem=\u66F4\u65B0\u4EFB\u52A1\u8FDB\u5EA6
i18n_operationLog_updateTaskResponsibleStaff=\u66F4\u65B0\u4EFB\u52A1\u8D1F\u8D23\u4EBA
i18n_operationLog_insertDemandTask=\u65B0\u589E\u9700\u6C42\u4EFB\u52A1
i18n_operationLog_insertWorkOrder=\u65B0\u589E\u5DE5\u5355
i18n_operationLog_finishTask=\u5B8C\u6210\u4EFB\u52A1
i18n_operationLog_insertWorkOrderRecord=\u65B0\u589E\u5DE5\u5355\u8BB0\u5F55
i18n_operationLog_concludeWorkOrder=\u5B8C\u6210\u5DE5\u5355
i18n_operationLog_pauseWorkOrder=\u6682\u505C\u5DE5\u5355
i18n_operationLog_insertReimburseType=\u6DFB\u52A0\u62A5\u9500\u7C7B\u578B
i18n_operationLog_updateReimburseType=\u4FEE\u6539\u62A5\u9500\u7C7B\u578B
i18n_operationLog_removeReimburseType=\u5220\u9664\u62A5\u9500\u7C7B\u578B
i18n_operationLog_auditStaffApplication=\u5BA1\u6838\u5458\u5DE5\u7533\u8BF7
i18n_operationLog_reimburseReject=\u62A5\u9500\u62D2\u7EDD
i18n_operationLog_reimbursePay=\u62A5\u9500\u4E0B\u6B3E
#\u7CFB\u7EDF\u63D0\u793A\u4FE1\u606F
i18n_alert_accountOrPwdError=\u8D26\u53F7\u6216\u5BC6\u7801\u9519\u8BEF\uFF01
i18n_alert_peopleUnderTheDepartmentError=\u5F53\u524D\u90E8\u95E8\u4E0B\u6709\u4EBA\u5458\uFF0C\u4E0D\u5141\u8BB8\u5220\u9664\u90E8\u95E8\uFF01
i18n_alert_departmentNotDeactivatedError=\u5F53\u524D\u90E8\u95E8\u672A\u505C\u7528\uFF0C\u4E0D\u5141\u8BB8\u5220\u9664\u90E8\u95E8\uFF01
i18n_alert_userOrPhoneOrEmailIsExist=\u7528\u6237\u540D\u6216\u624B\u673A\u53F7\u6216\u90AE\u7BB1\u5DF2\u5B58\u5728
i18n_alert_userIsExist=\u7528\u6237\u5DF2\u5B58\u5728
i18n_alert_oldPasswordIsWrong=\u65E7\u5BC6\u7801\u8F93\u5165\u9519\u8BEF\uFF0C\u8BF7\u91CD\u65B0\u8F93\u5165
#\u7CFB\u7EDF\u57FA\u7840\u4FE1\u606F
i18n_baseInfo_success=\u6210\u529F
i18n_baseInfo_failed=\u5931\u8D25

View File

@ -0,0 +1,31 @@
package com.cpop.oam.web;
import org.springframework.boot.test.context.SpringBootTest;
/**
* @author DB
* @createTime 2023/09/15 17:44
* @description
*/
@SpringBootTest
public class CpopApiTests {
/*@Autowired
private WebHookSendHandler webHookSendHandler;
*//**
* @descriptions 机器人发送测试
* @author DB
* @date 2023/09/15 17:46
*//*
@Test
public void webHookSendTest(){
List<String> list = new ArrayList<>();
list.add("17728500831");
try {
System.out.println(webHookSendHandler.webHookSendText("586442ba-6eeb-4a3c-937d-75faa4d9dbb9", list, "测试数据,不用管", false));
} catch (IOException e) {
throw new RuntimeException(e);
}
}*/
}

View File

@ -0,0 +1,81 @@
package com.cpop.oam.web;
import com.cpop.core.base.entity.LoginUser;
import com.cpop.core.base.enums.OperationLogEnum;
import com.cpop.core.base.enums.UserType;
import com.cpop.core.service.CoreService;
import com.cpop.core.utils.RsaUtils;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.Map;
/**
* @author DB
* @Description: RockBlade核心功能测试
* @create 2023-08-27 11:11
*/
@SpringBootTest
public class CpopCoreTests {
@Autowired
private CoreService coreService;
@Autowired
private RsaUtils rsaUtils;
/**
* @Description: 添加操作日志
* @param
* @return
* @Author DB
* @Date: 2023/8/27 11:11
*/
@Test
public void insertOperationLog() {
LoginUser loginUser = new LoginUser();
loginUser.setIpAddr("localhost")
.setUserId("1")
.setUserName("RockBlade");
coreService.insertOperationLog(200, OperationLogEnum.SYSTEM_LOGIN, loginUser, null);
}
/**
* @Description: 根据用户名获取用户信息
* @param
* @return
* @Author DB
* @Date: 2023/8/27 23:46
*/
@Test
public void loadUserByUsername() {
System.out.println(coreService.getSysUser("RockBlade", UserType.OAM_USER));
}
/**
* 初始化密钥对
*/
@Test
public void initKeyPair() {
Map<String, String> keyPairMap = rsaUtils.initKeyPair();
String publicKey = keyPairMap.get("publicKey");
String privateKey = keyPairMap.get("privateKey");
System.out.println("公钥:");
System.out.println(publicKey);
System.out.println();
System.out.println("私钥:");
System.out.println(privateKey);
System.out.println();
String source = "Admin@123";
System.out.println("待加密字符串:"+source);
System.out.println();
String strEncrypt = rsaUtils.encrypt(source);
System.out.println("加密后的字符串:");
System.out.println(strEncrypt);
System.out.println();
String strDecrypt = rsaUtils.decrypt(strEncrypt);
System.out.println("解密后的字符串:");
System.out.println(strDecrypt);
}
}

24
Cpop-Oam/pom.xml Normal file
View File

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.cpop</groupId>
<artifactId>Cpop-Union</artifactId>
<version>1.0.0</version>
<relativePath>../pom.xml</relativePath> <!-- lookup parent from repository -->
</parent>
<artifactId>Cpop-Oam</artifactId>
<name>Cpop-Oam</name>
<description>Oam模块</description>
<packaging>jar</packaging>
<dependencies>
<!--核心包-->
<dependency>
<groupId>com.cpop</groupId>
<artifactId>Cpop-Core</artifactId>
</dependency>
</dependencies>
</project>

414
Cpop-Oam/sql/Oam.sql Normal file
View File

@ -0,0 +1,414 @@
/*
Navicat Premium Data Transfer
Source Server : localhost
Source Server Type : MySQL
Source Server Version : 80032
Source Host : localhost:3306
Source Schema : cpop-union
Target Server Type : MySQL
Target Server Version : 80032
File Encoding : 65001
Date: 27/09/2023 16:06:32
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for pp_oam_dept
-- ----------------------------
DROP TABLE IF EXISTS `cp_oam_dept`;
CREATE TABLE `cp_oam_dept` (
`id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '部门id',
`parent_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '父部门id',
`name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '部门名称',
`order_no` int(0) NULL DEFAULT NULL COMMENT '排序',
`leader` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '负责人',
`phone` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '电话',
`email` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '邮箱',
`status` tinyint(1) NULL DEFAULT NULL COMMENT '部门状态:1正常,0停用',
`remark` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '备注',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
`create_user_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人id',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
`update_user_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人id',
`is_delete` tinyint(1) NULL DEFAULT 1 COMMENT '逻辑删除(0否1是)',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '部门表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of pp_oam_dept
-- ----------------------------
INSERT INTO `cp_oam_dept` VALUES ('72c677f7f492c98f39e633ddc4433d17', NULL, '深圳普普数字产业发展有限公司', 0, 'DB', '18000000000', '18000000000@qq.com', 1, NULL, '2023-03-20 22:17:59', '1', '2023-09-12 16:33:44', '1', 0);
-- ----------------------------
-- Table structure for pp_oam_duty
-- ----------------------------
DROP TABLE IF EXISTS `cp_oam_duty`;
CREATE TABLE `cp_oam_duty` (
`id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键',
`service_staff_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '服务员工id',
`technology_staff_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '技术员工id',
`duty_date` date NULL DEFAULT NULL COMMENT '值班日期',
`remark` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '备注',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
`create_user_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人id',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
`update_user_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人id',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '值班表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of pp_oam_duty
-- ----------------------------
-- ----------------------------
-- Table structure for pp_oam_finance_reimburse
-- ----------------------------
DROP TABLE IF EXISTS `cp_oam_finance_reimburse`;
CREATE TABLE `cp_oam_finance_reimburse` (
`id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`staff_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '提交人',
`status` int(0) NULL DEFAULT 0 COMMENT '状态0:已提交;1:审批中;2:下款中;3:已下发;4:驳回',
`type_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '申请类型',
`report_date` date NULL DEFAULT NULL COMMENT '报销日期',
`remarks` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '申请说明',
`price` decimal(20, 2) NULL DEFAULT NULL COMMENT '申请金额',
`attachment_url` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '附件',
`reject_reason` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '驳回原因',
`create_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',
`update_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '更新时间',
`create_user_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人id',
`update_user_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人id',
`is_delete` tinyint(0) NULL DEFAULT 0 COMMENT '逻辑删除',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '报销记录表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of pp_oam_finance_reimburse
-- ----------------------------
-- ----------------------------
-- Table structure for pp_oam_finance_reimburse_stage
-- ----------------------------
DROP TABLE IF EXISTS `cp_oam_finance_reimburse_stage`;
CREATE TABLE `cp_oam_finance_reimburse_stage` (
`id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键',
`finance_reimburse_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '报销记录id',
`stage_amount` decimal(10, 2) NULL DEFAULT NULL COMMENT '阶段金额',
`payment_time` datetime(0) NULL DEFAULT NULL COMMENT '下发时间',
`create_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',
`create_user_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人id',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
`update_user_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人id',
`deleted` tinyint(1) NULL DEFAULT 1 COMMENT '逻辑删除1否0是',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '报销阶段表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of pp_oam_finance_reimburse_stage
-- ----------------------------
-- ----------------------------
-- Table structure for pp_oam_finance_reimburse_type
-- ----------------------------
DROP TABLE IF EXISTS `cp_oam_finance_reimburse_type`;
CREATE TABLE `cp_oam_finance_reimburse_type` (
`id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键',
`type_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '报销类型',
`create_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',
`create_user_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人id',
`update_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '更新时间',
`update_user_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人id',
PRIMARY KEY (`id`) USING BTREE,
INDEX `report_name`(`type_name`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '报销类型表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of pp_oam_finance_reimburse_type
-- ----------------------------
-- ----------------------------
-- Table structure for pp_oam_menu
-- ----------------------------
DROP TABLE IF EXISTS `cp_oam_menu`;
CREATE TABLE `cp_oam_menu` (
`id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '菜单ID',
`parent_menu` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '父级菜单ID',
`name` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '菜单名称',
`icon` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '菜单图标',
`component` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '菜单路由,父菜单为空',
`status` tinyint(1) NULL DEFAULT NULL COMMENT '标记菜单的状态 0:禁用 1正常根据权限正常显示',
`type` int(0) NULL DEFAULT NULL COMMENT '菜单类型0:目录1:菜单2:按钮',
`permission` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '权限',
`redirect` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '重定向路径,一级菜单有值',
`order_no` int(0) NULL DEFAULT NULL COMMENT '排序,值越小越靠前,一级菜单有值',
`path` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '路由地址',
`title` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '标题',
`hide_menu` tinyint(1) NULL DEFAULT 0 COMMENT '隐藏菜单',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
`create_user_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人id',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
`update_user_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人id',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统菜单表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of pp_oam_menu
-- ----------------------------
INSERT INTO `cp_oam_menu` VALUES ('0543bcb8d5e324bbfdb3ab5a6a69b6d9', '1e0ab5fda780a0a0f76aa484ef92ec12', NULL, NULL, 'LAYOUT', 1, 2, 'dutyCalendar:duty:remove', NULL, 10, NULL, '删除值班', 0, '2023-05-19 09:23:26', '1', '2023-09-15 10:40:34', '1');
INSERT INTO `cp_oam_menu` VALUES ('07585353c7ed61cca5fba5ba0057fe9f', NULL, 'OamTask', 'ant-design:carry-out-outlined', 'LAYOUT', 1, 0, NULL, NULL, 10, '/oamTask', '任务管理', 0, '2023-05-19 10:10:24', '1', '2023-09-15 15:46:23', '1');
INSERT INTO `cp_oam_menu` VALUES ('0bc2a7f74fbfa18a6de9e8582a12a7ae', '0d486bfdddc4d9aae67a7162467848ba', NULL, NULL, 'LAYOUT', 1, 2, 'oamTask:task:update', NULL, 20, NULL, '领取任务', 0, '2023-05-19 17:53:17', '1', '2023-09-15 15:47:05', '1');
INSERT INTO `cp_oam_menu` VALUES ('0d486bfdddc4d9aae67a7162467848ba', '07585353c7ed61cca5fba5ba0057fe9f', 'Task', 'ant-design:align-left-outlined', '/oamTask/task/Index.vue', 1, 1, 'oamTask:task:list', NULL, 0, '/oamTask/task', '任务列表', 0, '2023-05-19 10:15:13', '1', '2023-09-26 15:26:38', '1');
INSERT INTO `cp_oam_menu` VALUES ('118a8b1f852823668c3e4969442b1b06', 'bdaf51dd6319b24f7ba1c8d2ae11b953', 'Brand', 'ant-design:behance-circle-filled', '/brandAndCampus/brand/index.vue', 1, 1, 'brandAndCampus:brand:list', NULL, 0, '/brandAndCampus/brand', '品牌管理', 0, '2023-06-01 18:00:25', '1', '2023-06-07 10:07:28', '1');
INSERT INTO `cp_oam_menu` VALUES ('13474e90432670ec0ffebaf63bd42984', '0d486bfdddc4d9aae67a7162467848ba', NULL, NULL, 'LAYOUT', 1, 2, 'oamTask:task:insert', NULL, 0, NULL, '添加迭代任务', 0, '2023-05-19 17:51:37', '1', '2023-09-15 15:46:51', '1');
INSERT INTO `cp_oam_menu` VALUES ('1e0ab5fda780a0a0f76aa484ef92ec12', '282e702ef80abfab3e15f857a7fbaf38', 'Duty', 'ant-design:table-outlined', '/dutyCalendar/duty/index.vue', 1, 1, 'dutyCalendar:duty:list', NULL, 0, '/dutyCalendar/duty', '值班管理', 1, '2023-05-17 15:02:54', '1', '2023-09-15 10:40:14', '1');
INSERT INTO `cp_oam_menu` VALUES ('22fdbfdbdefabb5bfb93f883ab5dcf2e', '118a8b1f852823668c3e4969442b1b06', NULL, NULL, 'LAYOUT', 1, 2, 'brandAndCampus:brand:update', NULL, 0, NULL, '编辑品牌', 0, '2023-06-01 18:01:15', '1', '2023-06-07 10:07:43', '1');
INSERT INTO `cp_oam_menu` VALUES ('282e702ef80abfab3e15f857a7fbaf38', NULL, 'DutyCalendar', 'ant-design:table-outlined', 'LAYOUT', 1, 0, NULL, '/dutyCalendar/duty', 50, '/dutyCalendar', '值班管理', 0, '2023-05-17 14:56:49', '1', '2023-09-15 10:42:10', '1');
INSERT INTO `cp_oam_menu` VALUES ('29a80a59088e00ec86c39ae4b4216f02', '56159c5249674322afe4577ecc4e4fb0', 'AccountDetail', 'ant-design:android-filled', '/system/account/components/AccountDetail.vue', 1, 1, NULL, NULL, 35, '/system/accountDetail/:id', '账号详情', 1, '2022-10-20 10:34:31', '1', '2023-04-12 17:37:12', '1');
INSERT INTO `cp_oam_menu` VALUES ('2b43f89630a90fa1d4e0325d3de20c4a', '97916ae22affe061ec9af71afc915af5', NULL, NULL, 'LAYOUT', 1, 2, 'oamTask:taskDemand:insert', NULL, 0, NULL, '新增需求', 0, '2023-05-30 15:34:21', '1', '2023-05-30 17:14:32', '1');
INSERT INTO `cp_oam_menu` VALUES ('34b34b1461e9d8ff28904bdcebf6c801', 'bdaf51dd6319b24f7ba1c8d2ae11b953', 'BrandStaff', 'ant-design:user-outlined', '/brandAndCampus/brandStaff/index.vue', 1, 1, 'brandAndCampus:brandStaff:list', NULL, 10, '/brandAndCampus/brandStaff', '品牌管理员', 0, '2023-06-02 11:11:25', '1', '2023-09-14 10:16:08', '1');
INSERT INTO `cp_oam_menu` VALUES ('3757a482ea8ab4533ea3f58b53844df8', '5f6f850fafc42bf86cccd2b20c2d4560', NULL, NULL, 'LAYOUT', 1, 2, 'toamTask:workOrder:record', NULL, 20, NULL, '工单记录', 0, '2023-07-13 12:47:45', '1', '2023-07-13 12:47:45', '1');
INSERT INTO `cp_oam_menu` VALUES ('37584218da7773e76fc8cb58a27c190c', '56159c5249674322afe4577ecc4e4fb0', 'Config', 'ant-design:control-filled', '/system/config/index.vue', 1, 1, 'system:config:list', NULL, 40, '/system/config', '系统配置', 0, '2023-07-13 15:19:26', '1', '2023-07-13 15:19:26', '1');
INSERT INTO `cp_oam_menu` VALUES ('37e2f67bec72f466c1b6863132a6444e', NULL, 'WechatDevelopmentPlatform', 'ant-design:aliwangwang-outlined', 'LAYOUT', 0, 0, NULL, NULL, 80, '/wechatDevelopmentPlatform', '微信开发平台', 0, '2023-06-07 15:18:01', '1', '2023-07-04 17:40:38', '1');
INSERT INTO `cp_oam_menu` VALUES ('43189970133945d5c5e854b8a8c7acb1', '56159c5249674322afe4577ecc4e4fb0', 'Menu', 'fa:bars', '/system/menu/index.vue', 1, 1, NULL, NULL, 0, '/system/menu', '菜单管理', 0, '2022-10-02 19:07:55', '1', '2022-10-19 17:12:32', '1');
INSERT INTO `cp_oam_menu` VALUES ('469e2e562418185cf40936c1b1bd8f73', '883112b812224735d2a71b120d0bdf66', NULL, NULL, 'LAYOUT', 1, 2, 'system:dept:update', NULL, 10, NULL, '修改部门', 0, '2022-10-19 17:38:53', '1', '2022-10-19 17:38:53', '1');
INSERT INTO `cp_oam_menu` VALUES ('4b0cb1472b28b094cb3f2301c792bac3', '913147f25f3721685f74570df0ed6f29', NULL, NULL, 'LAYOUT', 1, 2, 'system:account:update', NULL, 10, NULL, '修改账号', 0, '2022-10-20 11:23:35', '1', '2022-10-20 11:23:35', '1');
INSERT INTO `cp_oam_menu` VALUES ('508f8ede8beb9ba02d3ba25ab74b57cf', 'c29ebe0bfbc9d62412c0a663175f82ec', NULL, NULL, 'LAYOUT', 1, 2, 'oamTask:taskAudit:update', NULL, 0, NULL, '任务审核', 0, '2023-05-29 09:12:12', '1', '2023-09-18 09:53:54', '1');
INSERT INTO `cp_oam_menu` VALUES ('56159c5249674322afe4577ecc4e4fb0', NULL, 'System', 'fa:cogs', 'LAYOUT', 1, 0, NULL, NULL, 100, '/system', '系统管理', 0, '2022-09-29 22:48:18', '1', '2023-05-17 14:51:37', '1');
INSERT INTO `cp_oam_menu` VALUES ('5f6f850fafc42bf86cccd2b20c2d4560', '07585353c7ed61cca5fba5ba0057fe9f', 'WorkOrder', 'ant-design:bulb-twotone', '/oamTask/workOrder/Index.vue', 1, 1, 'oamTask:workOrder:list', NULL, 30, '/oamTask/workOrder', '工单管理', 0, '2023-07-13 12:45:35', '1', '2023-09-26 15:26:56', '1');
INSERT INTO `cp_oam_menu` VALUES ('5fac1c7c5a5f7f04f1030725c093e7be', '90fb318a81def682de9c48b0fd05cc75', NULL, NULL, 'LAYOUT', 1, 2, 'wechatDevelopmentPlatform:applet:insert', NULL, 0, NULL, '新增小程序', 0, '2023-06-07 15:29:10', '1', '2023-06-07 15:29:10', '1');
INSERT INTO `cp_oam_menu` VALUES ('62362924994736128', NULL, 'Finance', 'ant-design:money-collect-filled', 'LAYOUT', 1, 0, NULL, NULL, 40, '/finance', '财务报销', 0, '2023-09-21 15:09:00', '1', '2023-09-21 15:09:00', '1');
INSERT INTO `cp_oam_menu` VALUES ('62363536260018176', '62362924994736128', 'Application', 'ant-design:arrow-up-outlined', '/financial/application/Index.vue', 1, 1, 'financial:application:list', NULL, 0, '/financial/application', '报销申请', 0, '2023-09-21 15:11:26', '1', '2023-09-25 13:06:37', '1');
INSERT INTO `cp_oam_menu` VALUES ('62364011151699968', '62362924994736128', 'Audit', 'ant-design:bug-twotone', '/financial/audit/Index.vue', 1, 1, 'financial:reimburseAudit:list', NULL, 5, '/financial/audit', '报销审核', 0, '2023-09-21 15:13:19', '1', '2023-09-27 14:06:39', '1');
INSERT INTO `cp_oam_menu` VALUES ('628e33ac5f72b68e6f11b7e5e1ac4c72', '5f6f850fafc42bf86cccd2b20c2d4560', NULL, NULL, 'LAYOUT', 1, 2, 'task:workOrder:update', NULL, 10, NULL, '修改工单', 0, '2023-07-13 12:47:14', '1', '2023-07-13 12:47:14', '1');
INSERT INTO `cp_oam_menu` VALUES ('63781576994349056', '62363536260018176', '', NULL, 'LAYOUT', 1, 2, 'financial:application:insert', NULL, 0, NULL, '新增报销', 0, '2023-09-25 13:06:13', '1', '2023-09-25 13:06:13', '1');
INSERT INTO `cp_oam_menu` VALUES ('64547480627785728', '62364011151699968', '', NULL, 'LAYOUT', 1, 2, 'financial:reimburseAudit:update', NULL, 0, NULL, '编辑报销审核', 0, '2023-09-27 15:49:39', '1', '2023-09-27 15:50:50', '1');
INSERT INTO `cp_oam_menu` VALUES ('64547713428434944', '62364011151699968', '', NULL, 'LAYOUT', 1, 2, 'financial:reimburseAudit:insert', NULL, 5, NULL, '新增报销审核', 0, '2023-09-27 15:50:34', '1', '2023-09-27 15:50:34', '1');
INSERT INTO `cp_oam_menu` VALUES ('64547902948061184', '62364011151699968', '', NULL, 'LAYOUT', 1, 2, 'financial:reimburseAudit:remove', NULL, 10, NULL, '删除报销审核', 0, '2023-09-27 15:51:19', '1', '2023-09-27 15:51:19', '1');
INSERT INTO `cp_oam_menu` VALUES ('735d0f3d49a4543d4af64a9cf4652dff', '1e0ab5fda780a0a0f76aa484ef92ec12', NULL, NULL, 'LAYOUT', 1, 2, 'dutyCalendar:duty:insert', NULL, 0, NULL, '新增值班', 0, '2023-05-19 09:22:58', '1', '2023-09-15 10:40:25', '1');
INSERT INTO `cp_oam_menu` VALUES ('7be5939441b413a705a5fcb600839f0f', 'ae8d81c31d13607b6f4b1962df01d469', NULL, NULL, 'LAYOUT', 1, 2, 'brandAndCampus:campus:update', NULL, 0, NULL, '编辑校区', 0, '2023-06-07 09:54:51', '1', '2023-06-07 10:08:12', '1');
INSERT INTO `cp_oam_menu` VALUES ('81973d68c66261975c6c2b5eef9084dd', '913147f25f3721685f74570df0ed6f29', NULL, NULL, 'LAYOUT', 1, 2, 'system:account:info', NULL, 40, NULL, '账号详情', 0, '2022-10-20 11:29:37', '1', '2022-10-20 11:29:37', '1');
INSERT INTO `cp_oam_menu` VALUES ('83a42156935b50053fbacfa09ef43fbb', '913147f25f3721685f74570df0ed6f29', NULL, NULL, 'LAYOUT', 1, 2, 'system:account:insert', NULL, 0, NULL, '新增账号', 0, '2022-10-20 11:23:05', '1', '2022-10-20 11:23:05', '1');
INSERT INTO `cp_oam_menu` VALUES ('84098277d121e712c3ea7e850ef0ef49', '118a8b1f852823668c3e4969442b1b06', NULL, NULL, 'LAYOUT', 1, 2, 'brandAndCampus:brand:remove', NULL, 10, NULL, '删除品牌', 0, '2023-06-01 18:01:38', '1', '2023-06-07 10:07:17', '1');
INSERT INTO `cp_oam_menu` VALUES ('883112b812224735d2a71b120d0bdf66', '56159c5249674322afe4577ecc4e4fb0', 'Department', 'ant-design:apartment-outlined', '/system/dept/index.vue', 1, 1, 'system:dept:list', NULL, 20, '/system/department', '部门管理', 0, '2022-10-14 16:11:15', '1', '2022-10-20 09:47:57', '1');
INSERT INTO `cp_oam_menu` VALUES ('89b03c3daceb1c2ebe2aa01c4a775888', '5f6f850fafc42bf86cccd2b20c2d4560', NULL, NULL, 'LAYOUT', 1, 2, 'oamTask:workOrder:insert', NULL, 0, NULL, '新增工单', 0, '2023-07-13 12:46:36', '1', '2023-07-13 12:46:36', '1');
INSERT INTO `cp_oam_menu` VALUES ('8a3cabbff478dac7366d8b5e56da9296', '0d486bfdddc4d9aae67a7162467848ba', NULL, NULL, 'LAYOUT', 1, 2, 'oamTask:task:remove', NULL, 10, NULL, '删除任务', 0, '2023-05-19 17:52:03', '1', '2023-09-15 15:46:57', '1');
INSERT INTO `cp_oam_menu` VALUES ('8fc436c8b5085e3d6b51ae3a87eb3c2e', 'ae8d81c31d13607b6f4b1962df01d469', NULL, NULL, 'LAYOUT', 1, 2, 'brandAndCampus:campus:remove', NULL, 10, NULL, '删除校区', 0, '2023-06-07 09:55:16', '1', '2023-06-07 10:08:25', '1');
INSERT INTO `cp_oam_menu` VALUES ('8fd75624e030697574bbee52be834120', '90fb318a81def682de9c48b0fd05cc75', NULL, NULL, 'LAYOUT', 1, 2, 'wechatDevelopmentPlatform:applet:remove', NULL, 20, NULL, '删除小程序', 0, '2023-06-07 15:29:47', '1', '2023-06-07 15:29:47', '1');
INSERT INTO `cp_oam_menu` VALUES ('90fb318a81def682de9c48b0fd05cc75', '37e2f67bec72f466c1b6863132a6444e', 'Applet', 'ant-design:star-outlined', '/wechatDevelopmentPlatform/applet/index.vue', 1, 1, 'wechatDevelopmentPlatform:applet:list', NULL, 5, '/wechatDevelopmentPlatform/applet', '小程序管理', 0, '2023-06-07 15:20:56', '1', '2023-06-07 16:35:08', '1');
INSERT INTO `cp_oam_menu` VALUES ('913147f25f3721685f74570df0ed6f29', '56159c5249674322afe4577ecc4e4fb0', 'Account', 'ant-design:user-switch-outlined', '/system/account/index.vue', 1, 1, 'system:account:list', NULL, 30, '/system/account', '账号管理', 0, '2022-10-14 16:12:48', '1', '2022-10-20 11:23:18', '1');
INSERT INTO `cp_oam_menu` VALUES ('97916ae22affe061ec9af71afc915af5', '07585353c7ed61cca5fba5ba0057fe9f', 'TaskDemand', 'ant-design:highlight-outlined', '/oamTask/taskDemand/Index.vue', 1, 1, 'oamTask:taskDemand:list', NULL, 20, '/oamTask/taskDemand', '需求管理', 0, '2023-05-30 15:33:40', '1', '2023-09-26 15:26:49', '1');
INSERT INTO `cp_oam_menu` VALUES ('9f617344d80b7cdd8ffe7134b6b123c1', 'ff2f547cefb7e18a0b922afb3e491d87', NULL, NULL, 'LAYOUT', 1, 2, 'system:role:remove', NULL, 20, NULL, '删除角色', 0, '2022-10-20 10:26:21', '1', '2022-10-20 10:26:21', '1');
INSERT INTO `cp_oam_menu` VALUES ('9f6ff374ed8c9c48152bb7f571688a1a', '913147f25f3721685f74570df0ed6f29', NULL, NULL, 'LAYOUT', 1, 2, 'system:account:remove', NULL, 20, NULL, '删除账号', 0, '2022-10-20 11:23:52', '1', '2022-10-20 11:23:52', '1');
INSERT INTO `cp_oam_menu` VALUES ('9fb84dd03cb4e7e7722325d8aaa0161d', '883112b812224735d2a71b120d0bdf66', NULL, NULL, 'LAYOUT', 1, 2, 'system:dept:insert', NULL, 0, NULL, '新增部门', 0, '2022-10-19 17:26:49', '1', '2022-10-19 17:45:13', '1');
INSERT INTO `cp_oam_menu` VALUES ('ae8d81c31d13607b6f4b1962df01d469', 'bdaf51dd6319b24f7ba1c8d2ae11b953', 'Campus', 'ant-design:linkedin-filled', '/brandAndCampus/campus/index.vue', 1, 1, 'brandAndCampus:campus:list', NULL, 5, '/brandAndCampus/campus', '校区管理', 0, '2023-06-07 09:53:22', '1', '2023-09-14 10:15:35', '1');
INSERT INTO `cp_oam_menu` VALUES ('ae9a4ffa962c4bb9369332f18d5a7c27', 'fc0534b43c89ab33cd5c7c7a61cd8af9', 'Analysis', 'ion:grid-outline', '/dashboard/analysis/index.vue', 1, 1, NULL, NULL, 0, '/dashboard/analysis', '分析页', 1, '2022-10-19 16:05:38', '1', '2022-10-19 17:13:28', '1');
INSERT INTO `cp_oam_menu` VALUES ('bdaf51dd6319b24f7ba1c8d2ae11b953', NULL, 'BrandAndCampus', 'ant-design:sketch-outlined', 'LAYOUT', 1, 0, NULL, NULL, 30, '/brandAndCampus', '品牌校区', 0, '2023-06-01 17:58:10', '1', '2023-06-01 17:58:10', '1');
INSERT INTO `cp_oam_menu` VALUES ('c29ebe0bfbc9d62412c0a663175f82ec', '07585353c7ed61cca5fba5ba0057fe9f', 'AuditList', 'ant-design:alert-twotone', '/oamTask/auditList/Index.vue', 1, 1, 'oamTask:taskAudit:list', NULL, 10, '/oamTask/auditList', '审核列表', 0, '2023-05-19 18:06:09', '1', '2023-09-26 15:26:43', '1');
INSERT INTO `cp_oam_menu` VALUES ('c702e78723fbd8483b797fafd8205cd0', 'ff2f547cefb7e18a0b922afb3e491d87', NULL, NULL, 'LAYOUT', 1, 2, 'system:role:update', NULL, 10, NULL, '修改角色', 0, '2022-10-20 10:26:04', '1', '2022-10-20 10:26:04', '1');
INSERT INTO `cp_oam_menu` VALUES ('ca262b7fc779b93b677b687cf53f21ce', '34b34b1461e9d8ff28904bdcebf6c801', NULL, NULL, 'LAYOUT', 1, 2, 'brandAndCampus:brandStaff:insert', NULL, 0, NULL, '添加品牌管理员', 0, '2023-06-02 11:26:01', '1', '2023-09-14 17:49:51', '1');
INSERT INTO `cp_oam_menu` VALUES ('cbabba6bad9ed10af0c0adf1ad669344', '90fb318a81def682de9c48b0fd05cc75', NULL, NULL, 'LAYOUT', 1, 2, 'wechatDevelopmentPlatform:applet:update', NULL, 10, NULL, '修改小程序', 0, '2023-06-07 15:29:28', '1', '2023-06-07 15:29:28', '1');
INSERT INTO `cp_oam_menu` VALUES ('d31018cf901c9d5cfecb0c112ac3f1d0', '883112b812224735d2a71b120d0bdf66', NULL, NULL, 'LAYOUT', 1, 2, 'system:dept:remove', NULL, 20, NULL, '删除部门', 0, '2022-10-19 17:56:04', '1', '2022-10-19 17:56:04', '1');
INSERT INTO `cp_oam_menu` VALUES ('dd510cfe81e9f4659caed569da35e415', '34b34b1461e9d8ff28904bdcebf6c801', NULL, NULL, 'LAYOUT', 1, 2, 'brandAndCampus:brandStaff:remove', NULL, 10, NULL, '删除品牌管理员', 0, '2023-06-02 11:26:37', '1', '2023-09-14 17:50:02', '1');
INSERT INTO `cp_oam_menu` VALUES ('df7de32544aaf7b74aa7c6aaf684e5c4', 'ff2f547cefb7e18a0b922afb3e491d87', NULL, NULL, 'LAYOUT', 1, 2, 'system:role:insert', NULL, 0, NULL, '新增角色', 0, '2022-10-20 10:25:44', '1', '2022-10-20 10:25:44', '1');
INSERT INTO `cp_oam_menu` VALUES ('fc0534b43c89ab33cd5c7c7a61cd8af9', NULL, 'Dashboard', 'ion:grid-outline', 'LAYOUT', 1, 0, NULL, '/dashboard/analysis', 0, '/dashboard', '系统概况', 0, '2022-09-29 22:48:18', '1', '2022-10-19 17:13:37', '1');
INSERT INTO `cp_oam_menu` VALUES ('ff2f547cefb7e18a0b922afb3e491d87', '56159c5249674322afe4577ecc4e4fb0', 'Role', 'ant-design:crown-filled', '/system/role/index.vue', 1, 1, 'system:role:list', NULL, 10, '/system/role', '角色管理', 0, '2022-10-02 20:06:22', '1', '2022-10-20 10:25:06', '1');
-- ----------------------------
-- Table structure for pp_oam_role
-- ----------------------------
DROP TABLE IF EXISTS `cp_oam_role`;
CREATE TABLE `cp_oam_role` (
`id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键',
`role_name` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '角色名称',
`role_value` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '角色值',
`status` tinyint(1) NULL DEFAULT 1 COMMENT '状态(1启用;0停用)',
`remark` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '备注',
`order_no` int(0) NULL DEFAULT NULL COMMENT '排序',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
`create_user_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人id',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
`update_user_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人id',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `uni_role_value`(`role_value`) USING BTREE COMMENT '角色值唯一'
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统角色表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of pp_oam_role
-- ----------------------------
INSERT INTO `cp_oam_role` VALUES ('40bfee343c625523fc3763353996c6ef', '超级管理员', 'superAdmin', 1, '超级管理员', 0, '2023-03-21 20:38:30', '1', '2023-03-21 20:38:33', '1');
-- ----------------------------
-- Table structure for pp_oam_role_menu
-- ----------------------------
DROP TABLE IF EXISTS `cp_oam_role_menu`;
CREATE TABLE `cp_oam_role_menu` (
`role_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '角色id',
`menu_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '菜单id',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
`create_user_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人id',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
`update_user_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人id',
PRIMARY KEY (`role_id`, `menu_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统-角色-菜单表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of pp_oam_role_menu
-- ----------------------------
-- ----------------------------
-- Table structure for pp_oam_staff
-- ----------------------------
DROP TABLE IF EXISTS `cp_oam_staff`;
CREATE TABLE `cp_oam_staff` (
`id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键',
`name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '姓名',
`dept_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '部门id',
`user_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户id',
`staff_type` int(0) NULL DEFAULT NULL COMMENT '员工类型(0:技术人员;1:售后人员;2:管理人员)',
`role_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '角色id',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
`create_user_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人id',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
`update_user_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人id',
`is_delete` tinyint(1) NULL DEFAULT 0 COMMENT '逻辑删除(0否1是)',
PRIMARY KEY (`id`) USING BTREE,
INDEX `fk_user_id`(`user_id`) USING BTREE,
CONSTRAINT `cp_oam_staff_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `cp_sys_user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '员工表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of pp_oam_staff
-- ----------------------------
-- ----------------------------
-- Table structure for pp_oam_task
-- ----------------------------
DROP TABLE IF EXISTS `cp_oam_task`;
CREATE TABLE `cp_oam_task` (
`id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键',
`task_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '任务名',
`task_type` int(0) NULL DEFAULT NULL COMMENT '任务类型(0:迭代;1:需求;2:工单)',
`responsible_staff_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '主要负责员工id',
`task_status` int(0) NULL DEFAULT NULL COMMENT '任务状态(-1:失败;0:待审核;1:待接受;2:进行中;3:已完成;4:逾期;5:暂停;6:逾期完成)',
`task_item` int(0) NULL DEFAULT NULL COMMENT '任务项(0:开发中;1:待测试:2:待部署;3:已归档)',
`task_content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '任务内容',
`task_weight` int(0) NULL DEFAULT NULL COMMENT '任务权重',
`task_rating` int(0) NULL DEFAULT NULL COMMENT '任务评级(0:A;1:B;2:C;3:D;4:E)',
`attachment_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '附件地址',
`remark` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '备注',
`expected_completion_date` date NULL DEFAULT NULL COMMENT '预期完成日期',
`completion_date` date NULL DEFAULT NULL COMMENT '完成日期',
`task_receipt_time` datetime(0) NULL DEFAULT NULL COMMENT '任务接收时间',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
`create_user_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人id',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
`update_user_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人id',
`is_delete` tinyint(1) NULL DEFAULT 0 COMMENT '是否删除(0否1是)',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'OAM-任务表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of pp_oam_task
-- ----------------------------
-- ----------------------------
-- Table structure for pp_oam_task_demand
-- ----------------------------
DROP TABLE IF EXISTS `cp_oam_task_demand`;
CREATE TABLE `cp_oam_task_demand` (
`id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键',
`task_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '任务id',
`mechanism_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商户id',
`brand_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '品牌id',
`campus_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '校区id',
`demand_type` int(0) NULL DEFAULT NULL COMMENT '需求类型(0:轻;1:缓;2:急;3:重)',
`record_staff_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '记录员工id',
`sign_pic` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '签约图片',
`sign_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '签约二维码',
`prepayment` decimal(10, 2) NULL DEFAULT NULL COMMENT '预付款',
`payable` decimal(10, 2) NULL DEFAULT NULL COMMENT '应付款',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
`create_user_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人id',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
`update_user_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人id',
`is_delete` tinyint(1) NULL DEFAULT 0 COMMENT '是否删除(0否1是)',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'OAM-任务-需求表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of pp_oam_task_demand
-- ----------------------------
-- ----------------------------
-- Table structure for pp_oam_task_staff_group
-- ----------------------------
DROP TABLE IF EXISTS `cp_oam_task_staff_group`;
CREATE TABLE `cp_oam_task_staff_group` (
`id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键',
`task_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '任务id',
`staff_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '员工id',
`grade_point` int(0) NULL DEFAULT NULL COMMENT '绩点',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
`create_user_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人id',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
`update_user_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人id',
PRIMARY KEY (`id`) USING BTREE,
INDEX `task_staff_key`(`task_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'OAM-任务-关联员工任务组表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of pp_oam_task_staff_group
-- ----------------------------
-- ----------------------------
-- Table structure for pp_oam_task_work_order
-- ----------------------------
DROP TABLE IF EXISTS `cp_oam_task_work_order`;
CREATE TABLE `cp_oam_task_work_order` (
`id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键',
`task_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '任务id',
`brand_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '品牌id',
`campus_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '校区id',
`product_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '产品id',
`phone_number` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '问题手机号',
`record_staff_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '记录员工id',
`finish_time` datetime(0) NULL DEFAULT NULL COMMENT '办结时间',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
`create_user_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人id',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
`update_user_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人id',
`is_delete` tinyint(1) NULL DEFAULT 0 COMMENT '是否删除(0否1是)',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '任务-工单表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of pp_oam_task_work_order
-- ----------------------------
-- ----------------------------
-- Table structure for pp_oam_task_work_order_record
-- ----------------------------
DROP TABLE IF EXISTS `cp_oam_task_work_order_record`;
CREATE TABLE `cp_oam_task_work_order_record` (
`id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键',
`task_work_order_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '任务工单id',
`record_staff_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '记录员工id',
`record_text` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '记录内容',
`attachment_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '附件地址',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
`create_user_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人id',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
`update_user_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人id',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '任务-工单-记录表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of pp_oam_task_work_order_record
-- ----------------------------
SET FOREIGN_KEY_CHECKS = 1;

View File

@ -0,0 +1,77 @@
package com.cpop.oam.business.bo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* 部门表Bo
*
* @author DB.lost
* @since 2023-05-10
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "SysDept对象", description = "部门表")
public class DeptBo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 部门id
*/
@ApiModelProperty("部门id")
private String id;
/**
* 父部门id
*/
@ApiModelProperty("父部门id")
private String parentId;
/**
* 部门名称
*/
@ApiModelProperty("部门名称")
private String name;
/**
* 排序
*/
@ApiModelProperty("排序")
private Integer orderNo;
/**
* 负责人
*/
@ApiModelProperty("负责人")
private String leader;
/**
* 电话
*/
@ApiModelProperty("电话")
private String phone;
/**
* 邮箱
*/
@ApiModelProperty("邮箱")
private String email;
/**
* 部门状态:1正常,0停用
*/
@ApiModelProperty("部门状态:1正常,0停用")
private Boolean status;
/**
* 备注
*/
@ApiModelProperty("备注")
private String remark;
}

View File

@ -0,0 +1,33 @@
package com.cpop.oam.business.bo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* @author DB
* @Description:
* @create 2023-05-09 20:51
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "SysDeptListBo对象", description = "部门树查询参数对象")
public class DeptListBo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 部门名称
*/
@ApiModelProperty("部门名称")
private String name;
/**
* 部门状态:0正常,1停用
*/
@ApiModelProperty("部门状态:0正常,1停用")
private Boolean status;
}

View File

@ -0,0 +1,59 @@
package com.cpop.oam.business.bo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.io.Serializable;
import java.util.List;
/**
* 值班表Bo
*
* @author DB.lost
* @since 2023-05-11
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "Duty对象", description = "值班表")
public class DutyBo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@ApiModelProperty("主键")
private String id;
/**
* 服务员工id
*/
@NotBlank(message = "服务员工id不能为空")
@ApiModelProperty(value = "服务员工id",required = true)
private String serviceStaffId;
/**
* 技术员工id
*/
@NotBlank(message = "技术员工id不能为空")
@ApiModelProperty(value = "技术员工id",required = true)
private String technologyStaffId;
/**
* 值班日期
*/
@NotEmpty(message = "值班日期不能为空")
@ApiModelProperty(value = "值班日期",required = true)
private List<String> dutyDate;
/**
* 备注
*/
@ApiModelProperty("备注")
private String remark;
}

View File

@ -0,0 +1,29 @@
package com.cpop.oam.business.bo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* Description:
* date: 2023/5/11 11:43
*
* @Author ST
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "Duty对象", description = "值班表")
public class DutyListBo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 值班月份
*/
@ApiModelProperty("值班月份")
private String dutyMoth;
}

View File

@ -0,0 +1,37 @@
package com.cpop.oam.business.bo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* @author DB
* @createTime 2023/09/20 17:37
* @description
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "FinanceReimburseAuditPageBo对象", description = "财务报销审核请求参数")
public class FinanceReimburseAuditPageBo implements Serializable {
/**
* 状态0已提交1审批中2已下发3:下款中;5:驳回
*/
@ApiModelProperty(value = "状态0已提交1审批中2已下发3:下款中;4:驳回")
private Integer status;
/**
* 申请类型
*/
@ApiModelProperty(value = "申请类型")
private String typeId;
/**
* 查询
*/
@ApiModelProperty(value = "查询")
private String query;
}

View File

@ -0,0 +1,32 @@
package com.cpop.oam.business.bo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* @author DB
* @createTime 2023/09/20 16:43
* @description 财务报销请求参数
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "FinanceReimbursePageBo对象", description = "财务报销请求参数")
public class FinanceReimbursePageBo implements Serializable {
/**
* 状态0已提交1审批中2已下发3:下款中;5:驳回
*/
@ApiModelProperty(value = "状态0:已提交;1:审批中;2:下款中;3:已下发;4:驳回")
private Integer status;
/**
* 申请类型
*/
@ApiModelProperty(value = "申请类型")
private String typeId;
}

View File

@ -0,0 +1,109 @@
package com.cpop.oam.business.bo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* 系统菜单表Bo
*
* @author DB.lost
* @since 2023-05-10
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "SysMenu对象", description = "系统菜单表")
public class MenuBo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 菜单ID
*/
@ApiModelProperty("菜单ID")
private String id;
/**
* 父级菜单ID
*/
@ApiModelProperty("父级菜单ID")
private String parentMenu;
/**
* 菜单名称
*/
@ApiModelProperty("菜单名称")
private String name;
/**
* 菜单图标
*/
@ApiModelProperty(value = "菜单图标")
private String icon;
/**
* 菜单路由父菜单为空
*/
@ApiModelProperty("菜单路由,父菜单为空")
private String component;
/**
* 标记菜单的状态 0:禁用 1启用根据权限正常显示
*/
@NotNull(message = "状态不能为空")
@ApiModelProperty(value = "标记菜单的状态 0:禁用 1启用根据权限正常显示", required = true)
private Boolean status;
/**
* 菜单类型0:目录1:菜单2:按钮
*/
@NotNull(message = "菜单类型不能为空")
@ApiModelProperty(value = "菜单类型0:目录1:菜单2:按钮", required = true)
private Integer type;
/**
* 权限
*/
@ApiModelProperty("权限")
private String permission;
/**
* 重定向路径一级菜单有值
*/
@ApiModelProperty("重定向路径,一级菜单有值")
private String redirect;
/**
* 排序值越小越靠前一级菜单有值
*/
@NotNull(message = "排序不能为空")
@ApiModelProperty(value = "排序,值越小越靠前,一级菜单有值", required = true)
private Integer orderNo;
/**
* 路由地址
*/
@ApiModelProperty(value = "路由地址")
private String path;
/**
* 标题
*/
@NotBlank(message = "标题不能为空")
@ApiModelProperty(value = "标题", required = true)
private String title;
/**
* 隐藏菜单
*/
@ApiModelProperty("隐藏菜单")
private Boolean hideMenu;
}

View File

@ -0,0 +1,33 @@
package com.cpop.oam.business.bo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* Description:
* date: 2023/4/25 18:01
* @author ST
*/
@Data
@Accessors(chain = true)
@ApiModel(description = "菜单传入对象")
public class MenuListBo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 标题
*/
@ApiModelProperty(value = "标题")
private String title;
/**
* 标记菜单的状态 0:禁用 1启用根据权限正常显示
*/
@ApiModelProperty(value = "标记菜单的状态 0:禁用 1启用根据权限正常显示")
private Boolean status;
}

View File

@ -0,0 +1,44 @@
package com.cpop.oam.business.bo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* Description: 修改用户密码bo
* date: 2023/5/12 16:01
*
* @Author ST
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "ModifyUserPasswordBo对象", description = "修改用户密码bo")
public class ModifyUserPasswordBo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 用户id
*/
@NotBlank(message = "用户id不能为空")
@ApiModelProperty(value = "用户id",required = true)
private String userId;
/**
* 旧密码
*/
@NotBlank(message = "旧密码不能为空")
@ApiModelProperty(value = "旧密码",required = true)
private String oldPassword;
/**
* 新密码
*/
@NotBlank(message = "新密码不能为空")
@ApiModelProperty(value = "新密码",required = true)
private String newPassword;
}

View File

@ -0,0 +1,37 @@
package com.cpop.oam.business.bo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* @author: DB
* @Date: 2023/07/12/12:00
* @Description:
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "PauseWorkOrderBo对象", description = "")
public class PauseWorkOrderBo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 工单id
*/
@ApiModelProperty("工单id")
private String taskId;
/**
* 暂停到时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "GMT+8")
@ApiModelProperty("暂停到时间")
private LocalDateTime taskReceiptTime;
}

View File

@ -0,0 +1,44 @@
package com.cpop.oam.business.bo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.time.LocalDate;
/**
* Description:
* date: 2023/5/15 16:20
*
* @Author ST
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "Task列表分页查询对象", description = "OAM-任务")
public class PersonTaskPageBo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 周一
*/
@JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
@ApiModelProperty("周一")
private LocalDate monday;
/**
* 周末
*/
@JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
@ApiModelProperty("周末")
private LocalDate sunday;
/**
* 任务状态
*/
@ApiModelProperty("任务状态")
private Integer taskStatus;
}

View File

@ -0,0 +1,62 @@
package com.cpop.oam.business.bo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.cpop.core.annontation.StringArrayConvert;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.sql.Date;
/**
* @author DB
* @createTime 2023/09/21 15:50
* @description 报销申请
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "ReimburseStatusBo", description = "报销申请请求参数")
public class ReimburseApplicationBo implements Serializable {
/**
* 申请类型
*/
@NotBlank(message = "申请类型不能为空")
@ApiModelProperty(value = "申请类型",required = true)
private String typeId;
/**
* 报销日期
*/
@NotNull(message = "报销日期不能为空")
@ApiModelProperty(value = "报销日期",required = true)
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date reportDate;
/**
* 申请说明
*/
@NotBlank(message = "申请说明不能为空")
@ApiModelProperty(value = "申请说明",required = true)
private String remarks;
/**
* 申请金额
*/
@NotNull(message = "申请金额不能为空")
@ApiModelProperty(value = "申请金额",required = true)
private BigDecimal price;
/**
* 附件
*/
@StringArrayConvert
@ApiModelProperty(value = "附件")
private String attachmentUrl;
}

View File

@ -0,0 +1,44 @@
package com.cpop.oam.business.bo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* @author DB
* @createTime 2023/09/26 23:35
* @description
*/
@Data
@ApiModel(value = "报销下款")
public class ReimbursePayBo implements Serializable {
/**
* 主键
*/
@NotBlank(message = "主键不能为空")
@ApiModelProperty(value = "主键",required = true)
private String id;
/**
* 下发金额
*/
@NotNull(message = "下发金额不能为空")
@ApiModelProperty(value = "下发金额",required = true)
private BigDecimal stageAmount;
/**
* 下款时间
*/
@NotNull(message = "下款时间不能为空")
@ApiModelProperty(value = "下款时间",required = true)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime paymentTime;
}

View File

@ -0,0 +1,32 @@
package com.cpop.oam.business.bo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @author DB
* @createTime 2023/09/26 23:02
* @description
*/
@Data
@ApiModel(value = "报销驳回")
public class ReimburseRejectBo implements Serializable {
/**
* 主键
*/
@NotBlank(message = "主键不能为空")
@ApiModelProperty(value = "主键")
private String id;
/**
* 驳回原因
*/
@NotBlank(message = "驳回原因不能为空")
@ApiModelProperty(value = "驳回原因")
private String rejectReason;
}

View File

@ -0,0 +1,28 @@
package com.cpop.oam.business.bo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotEmpty;
import java.io.Serializable;
import java.util.List;
/**
* @author DB
* @createTime 2023/09/20 17:46
* @description 报销状态bo
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "ReimburseStatusBo", description = "")
public class ReimburseStatusBo implements Serializable {
/**
* 更新状态ids
*/
@NotEmpty(message = "更新状态ids不能为空")
@ApiModelProperty(value = "更新状态ids", required = true)
private List<String> ids;
}

View File

@ -0,0 +1,29 @@
package com.cpop.oam.business.bo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @author DB
* @createTime 2023/09/25 11:27
* @description
*/
@Data
public class ReimburseTypeBo implements Serializable {
/**
* 主键
*/
@ApiModelProperty("主键")
private String id;
/**
* 报销类型
*/
@NotBlank(message = "报销类型不能为空")
@ApiModelProperty(value = "报销类型",required = true)
private String typeName;
}

View File

@ -0,0 +1,72 @@
package com.cpop.oam.business.bo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List;
/**
* 系统角色表Bo
*
* @author DB.lost
* @since 2023-05-10
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "SysRole对象", description = "系统角色表")
public class RoleBo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@ApiModelProperty("主键")
private String id;
/**
* 角色名称
*/
@NotBlank(message = "角色名称不能为空")
@ApiModelProperty("角色名称")
private String roleName;
/**
* 角色值
*/
@NotBlank(message = "角色值不能为空")
@ApiModelProperty("角色值")
private String roleValue;
/**
* 状态
*/
@NotNull(message = "状态不能为空")
@ApiModelProperty("状态")
private Boolean status;
/**
* 备注
*/
@ApiModelProperty("备注")
private String remark;
/**
* 排序
*/
@NotNull(message = "排序不能为空")
@ApiModelProperty("排序")
private Integer orderNo;
/**
* 菜单集合
*/
@ApiModelProperty("菜单集合")
private List<String> menuIds;
}

View File

@ -0,0 +1,34 @@
package com.cpop.oam.business.bo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* Description:
* date: 2023/5/9 13:58
*
* @Author DB
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "SysRole分页对象")
public class RolePageBo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 角色名称
*/
@ApiModelProperty("角色名称")
private String roleName;
/**
* 状态
*/
@ApiModelProperty("状态")
private Boolean status;
}

View File

@ -0,0 +1,38 @@
package com.cpop.oam.business.bo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* Description:
* date: 2023/5/9 14:12
*
* @Author DB
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "SysRole状态对象", description = "修改角色状态")
public class RoleStatusBo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@NotBlank(message = "id不能为空")
@ApiModelProperty(value = "主键",required = true)
private String id;
/**
* 状态
*/
@NotNull(message = "状态不能为空")
@ApiModelProperty(value = "状态", required = true)
private Boolean status;
}

View File

@ -0,0 +1,119 @@
package com.cpop.oam.business.bo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* 员工表Bo
*
* @author DB.lost
* @since 2023-05-11
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "Staff对象", description = "员工表")
public class StaffBo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@ApiModelProperty("主键")
private String id;
/**
* 姓名不能为空
*/
@NotBlank(message = "姓名不能为空")
@ApiModelProperty("姓名")
private String name;
/**
* 部门id
*/
@NotBlank(message = "部门不能为空")
@ApiModelProperty(value = "部门id",required = true)
private String deptId;
/**
* 用户id
*/
@ApiModelProperty("用户id")
private String userId;
/**
* 员工类型
*/
@NotNull(message = "员工类型不能为空")
@ApiModelProperty(value = "员工类型(0:技术人员;1:售后人员;2:管理人员)",required = true)
private Integer staffType;
/**
* 用户名
*/
@NotBlank(message = "用户名不能为空")
@ApiModelProperty(value = "用户名",required = true)
private String userName;
/**
* 密码
*/
@NotBlank(message = "密码不能为空")
@ApiModelProperty(value = "密码",required = true)
private String password;
/**
* 昵称
*/
@NotBlank(message = "昵称不能为空")
@ApiModelProperty(value = "昵称",required = true)
private String nickName;
/**
* 邮箱
*/
@ApiModelProperty(value = "邮箱")
private String email;
/**
* 手机号
*/
@NotBlank(message = "手机号不能为空")
@ApiModelProperty(value = "手机号",required = true)
private String phoneNumber;
/**
* 性别(0:;1:)
*/
@NotNull(message = "性别不能为空")
@ApiModelProperty(value = "性别(0:男;1:女)",required = true)
private Boolean sex;
/**
* 头像
*/
@ApiModelProperty(value = "头像")
private String avatar;
/**
* 状态(0:停用;1:启用)
*/
@NotNull(message = "状态不能为空")
@ApiModelProperty(value = "状态(0:停用;1:启用)",required = true)
private Boolean status;
/**
* 角色id
*/
@NotBlank(message = "角色id不能为空")
@ApiModelProperty(value = "角色id",required = true)
private String roleId;
}

View File

@ -0,0 +1,40 @@
package com.cpop.oam.business.bo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* Description:
* date: 2023/5/11 15:23
*
* @Author ST
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "系统用户", description = "系统用户(员工)")
public class StaffPageBo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 姓名
*/
@ApiModelProperty("姓名")
private String name;
/**
* 部门id
*/
@ApiModelProperty("部门id")
private String deptId;
/**
* 员工类型
*/
@ApiModelProperty("员工类型")
private Integer staffType;
}

View File

@ -0,0 +1,36 @@
package com.cpop.oam.business.bo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @author: DB
* @Date: 2023/07/07/16:53
* @Description:
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "SysConfigInfoBo对象", description = "系统配置信息")
public class SysConfigInfoBo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 任务审核员工手机号
*/
@NotBlank(message = "任务审核员工手机号不能为空")
@ApiModelProperty(value = "任务审核员工手机号",required = true)
private String auditStaffPhone;
/**
* 核销管理员工手机号
*/
@NotBlank(message = "核销管理员工手机号不能为空")
@ApiModelProperty(value = "核销管理员工手机号",required = true)
private String cancelAfterVerificationStaffPhone;
}

View File

@ -0,0 +1,65 @@
package com.cpop.oam.business.bo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @author: DB
* @date: 2022-10-18 15:04
* @Description:
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "SysUserLogeBo对象", description = "用户操作日志分页请求参数")
public class SysUserLogBo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 操作用户
*/
@ApiModelProperty("操作用户")
private String operationUserName;
/**
* 操作终端的IP地址
*/
@ApiModelProperty("操作终端的IP地址")
private String devIp;
/**
* 结果 -1:失败 1:成功
*/
@ApiModelProperty("结果 -1:失败 1:成功")
private Integer result;
/**
* 日志级别,0-提示1-一般2-危险3-高危
*/
@ApiModelProperty("日志级别,0-提示1-一般2-危险3-高危")
private Integer level;
/**
* 行为类别1-一般行为2-异常行为
*/
@ApiModelProperty("行为类别1-一般行为2-异常行为")
private Integer actionType;
/**
* 时间字段
*/
@ApiModelProperty("时间字段")
private String fieldTime;
/**
* 用户id
*/
@NotBlank(message = "用户id不能为空")
@ApiModelProperty(value = "用户id",required = true)
private String userId;
}

View File

@ -0,0 +1,59 @@
package com.cpop.oam.business.bo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.time.LocalDate;
/**
* Description:
* date: 2023/5/16 17:33
*
* @Author ST
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "TaskAudit对象", description = "任务审核对象")
public class TaskAuditCommentsBo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@NotBlank(message = "主键不能为空")
@ApiModelProperty(value = "主键",required = true)
private String id;
/**
* 备注
*/
@ApiModelProperty("备注")
private String remark;
/**
* 预期完成日期
*/
@ApiModelProperty("预期完成日期")
@JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
private LocalDate expectedCompletionDate;
/**
* 任务评级(0:A;1:B;2:C;3:D;4:E)
*/
@ApiModelProperty("任务评级(0:A;1:B;2:C;3:D;4:E)")
private Integer taskRating;
/**
* 任务状态(-1:驳回;0:待审核;1:待接受;2:进行中;3:已完成;4:逾期;)
*/
@NotNull(message = "任务状态不能为空")
@ApiModelProperty(value = "任务状态(-1:驳回;0:待审核;1:待接受;2:进行中;3:已完成;4:逾期;)",required = true)
private Integer taskStatus;
}

View File

@ -0,0 +1,73 @@
package com.cpop.oam.business.bo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.time.LocalDate;
/**
* OAM-任务表Bo
*
* @author DB.lost
* @since 2023-05-15
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "Task对象", description = "OAM-任务表")
public class TaskBo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@ApiModelProperty("主键")
private String id;
/**
* 任务名
*/
@NotBlank(message = "任务名不能为空")
@ApiModelProperty(value = "任务名",required = true)
private String taskName;
/**
* 任务类型(0:迭代;1:需求;2:投诉)
*/
@NotNull(message = "任务类型不能为空")
@ApiModelProperty(value = "任务类型(0:迭代;1:需求;2:投诉)",required = true)
private Integer taskType;
/**
* 任务内容
*/
@NotBlank(message = "任务内容不能为空")
@ApiModelProperty(value = "任务内容",required = true)
private String taskContent;
/**
* 附件地址
*/
@ApiModelProperty("附件地址")
private String attachmentUrl;
/**
* 备注
*/
@ApiModelProperty("备注")
private String remark;
/**
* 预期完成日期
*/
@ApiModelProperty("预期完成日期")
@JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
private LocalDate expectedCompletionDate;
}

View File

@ -0,0 +1,89 @@
package com.cpop.oam.business.bo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* OAM-任务-需求表Bo
*
* @author DB.lost
* @since 2023-05-30
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "TaskDemand对象", description = "OAM-任务-需求表")
public class TaskDemandBo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@ApiModelProperty("主键")
private String id;
/**
* 需求类型(0:;1:;2:;3:)
*/
@ApiModelProperty("需求类型(0:轻;1:缓;2:急;3:重)")
private Integer demandType;
/**
* 需求状态(0:待接收;1:处理中;2:已解决)
*/
@ApiModelProperty("需求状态(0:待接收;1:处理中;2:已解决)")
private Integer demandStatus;
/**
* 任务名
*/
@NotBlank(message = "任务名不能为空")
@ApiModelProperty("任务名")
private String taskName;
/**
* 任务类型(0:迭代;1:需求;2:投诉)
*/
@NotNull(message = "任务类型不能为空")
@ApiModelProperty("任务类型(0:迭代;1:需求;2:投诉)")
private Integer taskType;
/**
* 品牌id
*/
@NotBlank(message = "品牌不能为空")
@ApiModelProperty("品牌id")
private String brandId;
/**
* 校区id
*/
@NotBlank(message = "校区不能为空")
@ApiModelProperty("校区id")
private String campusId;
/**
* 任务内容
*/
@NotBlank(message = "任务内容不能为空")
@ApiModelProperty("任务内容")
private String taskContent;
/**
* 附件地址
*/
@ApiModelProperty("附件地址")
private String attachmentUrl;
/**
* 备注
*/
@ApiModelProperty("备注")
private String remark;
}

View File

@ -0,0 +1,41 @@
package com.cpop.oam.business.bo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* Description:
* date: 2023/5/30 15:44
*
* @Author ST
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "SysDept对象", description = "部门表")
public class TaskDemandPageBo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 任务名
*/
@ApiModelProperty("任务名")
private String taskName;
/**
* 校区名
*/
@ApiModelProperty("校区名")
private String campusName;
/**
* 任务状态
*/
@ApiModelProperty("任务状态")
private Integer taskStatus;
}

View File

@ -0,0 +1,38 @@
package com.cpop.oam.business.bo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* Description:
* date: 2023/5/29 14:56
*
* @Author ST
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "Task进度对象", description = "Task进度对象")
public class TaskItemBo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@NotBlank(message = "主键不能为空")
@ApiModelProperty(value = "主键",required = true)
private String id;
/**
* 任务项(0:待开发;1:待测试:2:待部署;3:已归档)
*/
@NotNull(message = "任务项不能为空")
@ApiModelProperty(value = "任务项(0:待开发;1:待测试:2:待部署;3:已归档)",required = true)
private Integer taskItem;
}

View File

@ -0,0 +1,34 @@
package com.cpop.oam.business.bo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* Description:
* date: 2023/5/15 16:21
*
* @Author ST
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "Task列表返回对象", description = "OAM-任务表")
public class TaskMonthStatisticsBo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主要负责员工id
*/
@ApiModelProperty("主要负责员工id")
private String responsibleStaffId;
/**
* 任务月份
*/
@ApiModelProperty("任务月份")
private String taskMoth;
}

View File

@ -0,0 +1,34 @@
package com.cpop.oam.business.bo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* Description:
* date: 2023/5/16 15:27
*
* @Author ST
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "Task分页列表对象", description = "OAM-任务管理")
public class TaskPageBo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 任务类型(0:迭代;1:需求;2:投诉)
*/
@ApiModelProperty("任务类型(0:迭代;1:需求;2:投诉)")
private Integer taskType;
/**
* 任务评级(0:A;1:B;2:C;3:D;4:E)
*/
@ApiModelProperty("任务评级(0:A;1:B;2:C;3:D;4:E)")
private Integer taskRating;
}

View File

@ -0,0 +1,54 @@
package com.cpop.oam.business.bo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* OAM-任务-关联员工任务组表Bo
*
* @author DB.lost
* @since 2023-05-22
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "TaskStaffGroup对象", description = "OAM-任务-关联员工任务组表")
public class TaskStaffGroupBo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@ApiModelProperty("主键")
private String id;
/**
* 任务id
*/
@NotBlank(message = "任务id不能为空")
@ApiModelProperty(value = "任务id", required = true)
private String taskId;
/**
* 员工id
*/
@NotBlank(message = "员工id不能为空")
@ApiModelProperty(value = "员工id", required = true)
private String staffId;
/**
* 绩点
*/
@Min(value = 0)
@NotNull(message = "绩点不能为空")
@ApiModelProperty(value = "绩点", required = true)
private Integer gradePoint;
}

View File

@ -0,0 +1,31 @@
package com.cpop.oam.business.bo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* OAM-任务-关联员工任务组表Bo
*
* @author DB.lost
* @since 2023-05-22
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "TaskStaffGroup对象", description = "OAM-任务-关联员工任务组表")
public class TaskStaffGroupListBo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@NotBlank(message = "不能为空")
@ApiModelProperty(value = "任务id",required = true)
private String taskId;
}

View File

@ -0,0 +1,84 @@
package com.cpop.oam.business.bo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* 任务-工单表Bo
*
* @author DB.lost
* @since 2023-07-10
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "TaskWorkOrder对象", description = "任务-工单表")
public class TaskWorkOrderBo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@ApiModelProperty("主键")
private String id;
/**
* 品牌id
*/
@NotBlank(message = "品牌id不能为空")
@ApiModelProperty(value = "品牌id",required = true)
private String brandId;
/**
* 校区id
*/
@NotBlank(message = "校区id不能为空")
@ApiModelProperty(value = "校区id",required = true)
private String campusId;
/**
* 工单名
*/
@NotBlank(message = "工单名不能为空")
@ApiModelProperty(value = "工单名",required = true)
private String taskName;
/**
* 工单内容
*/
@NotBlank(message = "工单内容不能为空")
@ApiModelProperty(value = "工单内容",required = true)
private String taskContent;
/**
* 任务类型(0:迭代;1:需求;2:工单)
*/
@NotNull(message = "任务类型不能为空")
@ApiModelProperty(value = "任务类型(0:迭代;1:需求;2:工单)",required = true)
private Integer taskType;
/**
* 问题手机号
*/
@ApiModelProperty("问题手机号")
private String phoneNumber;
/**
* 附件地址
*/
@ApiModelProperty("附件地址")
private String attachmentUrl;
/**
* 备注
*/
@ApiModelProperty("备注")
private String remark;
}

View File

@ -0,0 +1,40 @@
package com.cpop.oam.business.bo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.List;
/**
* @author: DB
* @Date: 2023/07/10/14:14
* @Description:
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "TaskWorkOrder对象", description = "任务-工单表")
public class TaskWorkOrderPageBo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 校区id
*/
@ApiModelProperty("校区id")
private String campusName;
/**
* 任务名
*/
@ApiModelProperty("任务名")
private String taskName;
/**
* 任务状态
*/
@ApiModelProperty("任务状态")
private List<Integer> taskStatus;
}

View File

@ -0,0 +1,44 @@
package com.cpop.oam.business.bo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* 任务-工单-记录表Bo
*
* @author DB.lost
* @since 2023-07-10
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "TaskWorkOrderRecord对象", description = "任务-工单-记录表")
public class TaskWorkOrderRecordBo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 任务工单id
*/
@NotBlank(message = "任务工单id不能为空")
@ApiModelProperty("任务工单id")
private String taskWorkOrderId;
/**
* 记录内容
*/
@NotBlank(message = "记录内容不能为空")
@ApiModelProperty("记录内容")
private String recordText;
/**
* 附件地址
*/
@ApiModelProperty("附件地址")
private String attachmentUrl;
}

View File

@ -0,0 +1,44 @@
package com.cpop.oam.business.bo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* Description:
* date: 2023/5/29 16:00
*
* @Author ST
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "Task转交对象", description = "Task转交对象")
public class TransferTaskBo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@NotBlank(message = "主键不能为空")
@ApiModelProperty(value = "主键",required = true)
private String id;
/**
* 原负责人
*/
@NotBlank(message = "原负责人不能为空")
@ApiModelProperty(value = "原负责人",required = true)
private String responsibleStaffId;
/**
* 新负责人
*/
@NotBlank(message = "新负责人不能为空")
@ApiModelProperty(value = "新负责人",required = true)
private String newResponsibleStaffId;
}

View File

@ -0,0 +1,95 @@
package com.cpop.oam.business.controller;
import com.cpop.oam.business.service.DeptService;
import com.cpop.oam.business.vo.DeptVo;
import com.cpop.core.annontation.OperationLog;
import com.cpop.core.base.R;
import com.cpop.core.base.enums.OperationLogEnum;
import com.cpop.oam.business.bo.DeptBo;
import com.cpop.oam.business.bo.DeptListBo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 部门表 控制层
*
* @author DB
* @since 2023-09-08
*/
@RestController
@Api(tags = "系统部门模块")
@RequestMapping("/dept")
public class DeptController {
@Autowired
private DeptService deptService;
/**
* @Description: 查询部门树列表
* @param bo 请求参数
* @return R<List<SysDeptVo>>
* @Author DB
* @Date: 2023/5/9 20:45
*/
@PreAuthorize("@aps.hasPermission('system:dept:list')")
@ApiOperation("查询部门树列表")
@GetMapping("/getDeptTreeList")
public R<List<DeptVo>> getDeptTreeList(DeptListBo bo) {
List<DeptVo> list = deptService.getDeptTreeList(bo);
return R.ok(list);
}
/**
* @Description: 新增部门
* @param bo 请求参数
* @return R<Void>
* @Author DB
* @Date: 2023/5/9 20:47
*/
@PreAuthorize("@aps.hasPermission('system:dept:insert')")
@OperationLog(operationLogEnumType = OperationLogEnum.INSERT_OAM_DEPT)
@ApiOperation("新增部门")
@PostMapping("/insertDept")
public R<Void> insertDept(@Validated @RequestBody DeptBo bo) {
deptService.insertDept(bo);
return R.ok();
}
/**
* @Description: 修改部门
* @param bo 请求参数
* @return R<Void>
* @Author DB
* @Date: 2023/5/9 20:47
*/
@PreAuthorize("@aps.hasPermission('system:dept:update')")
@OperationLog(operationLogEnumType = OperationLogEnum.UPDATE_OAM_DEPT)
@ApiOperation("修改部门")
@PutMapping("/updateDept")
public R<Void> updateDept(@Validated @RequestBody DeptBo bo) {
deptService.updateDept(bo);
return R.ok();
}
/**
* @Description: 删除部门
* @param id 主键
* @Author DB
* @Date: 2023/5/9 20:48
*/
@PreAuthorize("@aps.hasPermission('system:dept:remove')")
@OperationLog(operationLogEnumType = OperationLogEnum.REMOVE_OAM_DEPT)
@ApiOperation("删除部门")
@DeleteMapping("/removeDept/{id}")
public R<Void> removeDept(@PathVariable String id) {
deptService.removeDept(id);
return R.ok();
}
}

View File

@ -0,0 +1,111 @@
package com.cpop.oam.business.controller;
import com.cpop.core.annontation.OperationLog;
import com.cpop.core.base.R;
import com.cpop.core.base.enums.OperationLogEnum;
import com.cpop.oam.business.bo.DutyBo;
import com.cpop.oam.business.bo.DutyListBo;
import com.cpop.oam.business.service.DutyService;
import com.cpop.oam.business.service.StaffService;
import com.cpop.oam.business.vo.DutyListVo;
import com.cpop.oam.business.vo.StaffVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 值班表 控制层
*
* @author DB
* @since 2023-09-14
*/
@RestController
@Api(tags = "值班日历模块")
@RequestMapping("/duty")
public class DutyController {
@Autowired
private DutyService dutyService;
@Autowired
private StaffService staffService;
/**
* @Description: 查询值班列表(当月)
* @param bo 请求参数
* @return: R<List<DutyListVo>>
* @Author: DB
* @Date: 2023/5/11 16:39
**/
@PreAuthorize("@aps.hasPermission('dutyCalendar:duty:list')")
@ApiOperation("查询值班列表(当月)")
@GetMapping("/getDutyList")
public R<List<DutyListVo>> getDutyList(DutyListBo bo) {
List<DutyListVo> list = dutyService.getDutyList(bo);
return R.ok(list);
}
/**
* @Description: 新增值班
* @param bo 请求参数
* @return: R<Void>
* @Author: DB
* @Date: 2023/5/18 9:50
**/
@OperationLog(operationLogEnumType = OperationLogEnum.INSERT_OAM_DUTY)
@PreAuthorize("@aps.hasPermission('dutyCalendar:duty:insert')")
@ApiOperation("新增值班")
@PostMapping("/insertDuty")
public R<Void> insertDuty(@RequestBody @Validated DutyBo bo) {
dutyService.insertDuty(bo);
return R.ok();
}
/**
* @descriptions 删除值班信息
* @author DB
* @date 2023/09/14 18:16
* @param dutyDate 值班日期
* @return com.pupu.core.base.R<java.lang.Void>
*/
@OperationLog(operationLogEnumType = OperationLogEnum.REMOVE_OAM_DUTY)
@PreAuthorize("@aps.hasPermission('dutyCalendar:duty:remove')")
@ApiOperation("删除值班信息")
@DeleteMapping("/removeDutyByDate/{dutyDate}")
public R<Void> removeDutyByDate(@PathVariable String dutyDate) {
dutyService.removeDutyByDate(dutyDate);
return R.ok();
}
/**
* @Description: 查询服务员工列表
* @return: R<List<OamStaffVo>>
* @Author: DB
* @Date: 2023/5/11 17:49
**/
@ApiOperation("查询服务员工列表")
@GetMapping("/getServiceStaffList")
public R<List<StaffVo>> getServiceStaffList() {
List<StaffVo> list = staffService.getServiceStaffList();
return R.ok(list);
}
/**
* @Description: 查询技术员工列表
* @return: R<PageVo<StaffPageVo>>
* @Author: DB
* @Date: 2023/5/11 17:50
**/
@ApiOperation("查询技术员工列表")
@GetMapping("/getTechnologyStaffList")
public R<List<StaffVo>> getTechnologyStaffList() {
List<StaffVo> list = staffService.getTechnologyStaffList();
return R.ok(list);
}
}

View File

@ -0,0 +1,245 @@
package com.cpop.oam.business.controller;
import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.query.QueryWrapper;
import com.cpop.common.utils.bean.BeanUtils;
import com.cpop.core.annontation.OperationLog;
import com.cpop.core.base.R;
import com.cpop.core.base.enums.OperationLogEnum;
import com.cpop.oam.business.bo.*;
import com.cpop.oam.business.entity.FinanceReimburseType;
import com.cpop.oam.business.service.FinanceReimburseService;
import com.cpop.oam.business.service.FinanceReimburseStageService;
import com.cpop.oam.business.service.FinanceReimburseTypeService;
import com.cpop.oam.business.vo.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import static com.cpop.oam.business.entity.table.FinanceReimburseStageTableDef.FINANCE_REIMBURSE_STAGE;
import static com.cpop.oam.business.entity.table.FinanceReimburseTableDef.FINANCE_REIMBURSE;
/**
* 报销记录表 控制层
*
* @author DB
* @since 2023-09-20
*/
@RestController
@Api(tags = "财务报销模块")
@RequestMapping("/financeReimburse")
public class FinanceReimburseController {
@Autowired
private FinanceReimburseService financeReimburseService;
@Autowired
private FinanceReimburseTypeService financeReimburseTypeService;
@Autowired
private FinanceReimburseStageService financeReimburseStageService;
/**
* @Description: 财务报销模块-报销分页列表
* @param bo 请求参数
* @return: R<Page<FinanceReimbursePageVo>>
* @Author: DB
* @Date: 2023/5/30 15:44
**/
@PreAuthorize("@aps.hasPermission('financial:application:list')")
@ApiOperation("财务报销模块-报销申请分页列表")
@GetMapping("/getFinanceReimbursePage")
public R<Page<FinanceReimbursePageVo>> getFinanceReimbursePage(FinanceReimbursePageBo bo) {
Page<FinanceReimbursePageVo> pageVo = financeReimburseService.getFinanceReimbursePage(bo);
return R.ok(pageVo);
}
/**
* @Description: 财务报销模块-报销类型列表
* @return: R<Page<FinanceReimbursePageVo>>
* @Author: DB
* @Date: 2023/5/30 15:44
**/
@ApiOperation("财务报销模块-报销类型列表")
@GetMapping("/getFinanceReimburseTypeList")
public R<List<FinanceReimburseTypeListVo>> getFinanceReimburseTypeList() {
List<FinanceReimburseTypeListVo> list = financeReimburseTypeService.listAs(QueryWrapper.create(), FinanceReimburseTypeListVo.class);
return R.ok(list);
}
/**
* @descriptions 新增报销申请
* @author DB
* @date 2023/09/21 15:55
* @param bo 请求参数
* @return com.pupu.core.base.R<java.lang.Void>
*/
@ApiOperation("新增报销申请")
@PostMapping("/insertReimburseApplication")
public R<Void> insertReimburseApplication(@RequestBody @Validated ReimburseApplicationBo bo) {
financeReimburseService.insertReimburseApplication(bo);
return R.ok();
}
/**
* @Description: 财务报销模块-报销审核分页列表
* @param bo 请求参数
* @return: R<Page<FinanceReimbursePageVo>>
* @Author: DB
* @Date: 2023/5/30 15:44
**/
@PreAuthorize("@aps.hasPermission('financial:reimburseAudit:list')")
@ApiOperation("财务报销模块-报销审核分页列表")
@GetMapping("/getReimburseAuditPage")
public R<Page<FinanceReimburseAuditPageVo>> getReimburseAuditPage(FinanceReimburseAuditPageBo bo) {
Page<FinanceReimburseAuditPageVo> pageVo = financeReimburseService.getReimburseAuditPage(bo);
return R.ok(pageVo);
}
/**
* @Description: 修改报销状态
* @param bo 请求参数
* @Author: DB
* @Date: 2023/5/10 16:01
**/
@PreAuthorize("@aps.hasPermission('financial:reimburseAudit:update')")
@ApiOperation("修改报销状态")
@PutMapping("/updateReimburseStatus")
public R<Void> updateReimburseStatus(@RequestBody @Validated ReimburseStatusBo bo) {
financeReimburseService.updateReimburseStatus(bo);
return R.ok();
}
/**
* @descriptions 新增报销类型
* @author DB
* @date 2023/09/21 15:55
* @param bo 请求参数
* @return com.pupu.core.base.R<java.lang.Void>
*/
@OperationLog(operationLogEnumType = OperationLogEnum.INSERT_REIMBURSE_TYPE)
@PreAuthorize("@aps.hasPermission('financial:reimburseAudit:insert')")
@ApiOperation("新增报销类型")
@PostMapping("/insertReimburseType")
public R<Void> insertReimburseApplication(@RequestBody @Validated ReimburseTypeBo bo) {
financeReimburseTypeService.save(BeanUtils.mapToClass(bo, FinanceReimburseType.class));
return R.ok();
}
/**
* @descriptions 修改报销类型
* @author DB
* @date 2023/09/08 15:20
* @param bo 请求参数
* @return com.jambox.core.base.R<java.lang.Void>
*/
@PreAuthorize("@aps.hasPermission('financial:reimburseAudit:update')")
@OperationLog(operationLogEnumType= OperationLogEnum.UPDATE_REIMBURSE_TYPE)
@ApiOperation("修改报销类型")
@PutMapping("/updateReimburseType")
public R<Void> updateReimburseType(@RequestBody @Validated ReimburseTypeBo bo) {
financeReimburseTypeService.updateById(BeanUtils.mapToClass(bo, FinanceReimburseType.class));
return R.ok();
}
/**
* @descriptions 删除报销类型
* @author DB
* @date 2023/09/12 16:57
* @param id 主键
* @return com.jambox.core.base.R<java.lang.Void>
*/
@PreAuthorize("@aps.hasPermission('financial:reimburseAudit:remove')")
@OperationLog(operationLogEnumType= OperationLogEnum.REMOVE_REIMBURSE_TYPE)
@ApiOperation("删除报销类型")
@DeleteMapping("/removeReimburseTypeById/{id}")
public R<Void> removeReimburseTypeById(@PathVariable String id) {
financeReimburseTypeService.removeById(id);
return R.ok();
}
/**
* @Description: 财务报销模块-个人报销统计
* @return: R<Page<FinanceReimbursePageVo>>
* @Author: DB
* @Date: 2023/5/30 15:44
**/
@PreAuthorize("@aps.hasPermission('financial:application:list')")
@ApiOperation("财务报销模块-个人报销统计")
@GetMapping("/getPersonStatistic")
public R<ReimbursePersonStatisticVo> getPersonStatistic() {
return R.ok(financeReimburseService.getPersonStatistic());
}
/**
* @Description: 审核员工申请报销
* @Author: DB
* @Date: 2023/5/10 16:01
**/
@OperationLog(operationLogEnumType= OperationLogEnum.AUDIT_STAFF_APPLICATION)
@PreAuthorize("@aps.hasPermission('financial:reimburseAudit:update')")
@ApiOperation("审核员工申请报销")
@PutMapping("/auditReimburseApplication/{id}")
public R<Void> auditReimburseApplication(@PathVariable String id) {
financeReimburseService.updateChain().set(FINANCE_REIMBURSE.STATUS, 1).where(FINANCE_REIMBURSE.ID.eq(id)).update();
return R.ok();
}
/**
* @descriptions 报销驳回
* @author DB
* @date 2023/09/08 15:20
* @param bo 请求参数
* @return com.jambox.core.base.R<java.lang.Void>
*/
@PreAuthorize("@aps.hasPermission('financial:reimburseAudit:update')")
@OperationLog(operationLogEnumType= OperationLogEnum.REIMBURSE_REJECT)
@ApiOperation("报销驳回")
@PutMapping("/reimburseReject")
public R<Void> reimburseReject(@RequestBody @Validated ReimburseRejectBo bo) {
financeReimburseService.updateChain()
.set(FINANCE_REIMBURSE.STATUS,4)
.set(FINANCE_REIMBURSE.REJECT_REASON,bo.getRejectReason())
.where(FINANCE_REIMBURSE.ID.eq(bo.getId()))
.update();
return R.ok();
}
/**
* @descriptions 报销下款
* @author DB
* @date 2023/09/08 15:20
* @param bo 请求参数
* @return com.jambox.core.base.R<java.lang.Void>
*/
@PreAuthorize("@aps.hasPermission('financial:reimburseAudit:update')")
@OperationLog(operationLogEnumType= OperationLogEnum.REIMBURSE_PAY)
@ApiOperation("报销下款")
@PutMapping("/reimbursePay")
public R<Void> reimbursePay(@RequestBody @Validated ReimbursePayBo bo) {
financeReimburseService.reimbursePay(bo);
return R.ok();
}
/**
* @Description: 财务报销模块-报销分页列表
* @param id 报销主键
* @return: R<Page<FinanceReimbursePageVo>>
* @Author: DB
* @Date: 2023/5/30 15:44
**/
@PreAuthorize("@aps.hasPermission('financial:application:list')")
@ApiOperation("财务报销模块-报销详情记录列表")
@GetMapping("/getReimburseRecordList/{id}")
public R<List<FinanceReimburseRecordListVo>> getReimburseRecordList(@PathVariable String id) {
List<FinanceReimburseRecordListVo> list = financeReimburseStageService.listAs(QueryWrapper.create()
.where(FINANCE_REIMBURSE_STAGE.FINANCE_REIMBURSE_ID.eq(id))
, FinanceReimburseRecordListVo.class);
return R.ok(list);
}
}

View File

@ -0,0 +1,64 @@
package com.cpop.oam.business.controller;
import com.cpop.core.base.R;
import com.cpop.oam.business.service.LoginService;
import com.cpop.oam.business.vo.LoginUserInfoVo;
import com.cpop.oam.business.vo.MenuRouteVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @author DB
* @createTime 2023/09/10 11:13
* @description 系统登陆
*/
@Api(tags = "系统登录模块")
@RestController
public class LoginController {
@Autowired
private LoginService loginService;
/**
* @author LOST.yuan
* @Description 获取登录用户详情
* @date 14:52 2022/9/7
* @return {@link R< LoginUserInfoVo >}
**/
@GetMapping("/getUserInfo")
@ApiOperation("获取登录用户详情")
public R<LoginUserInfoVo> getUserInfo() {
return R.ok(loginService.getUserInfo());
}
/**
* @author LOST.yuan
* @Description 获取权限码
* @date 14:52 2022/9/7
* @return {@link List<String>}
**/
@ApiOperation("获取权限码")
@GetMapping("/getPermCode")
public R<List<String>> getPermCode(){
List<String> list = loginService.getPermCode();
return R.ok(list);
}
/**
* @author LOST.yuan
* @Description 获取菜单列表
* @date 14:52 2022/9/7
* @return {@link R<List< MenuRouteVo >>}
**/
@ApiOperation("获取菜单列表")
@GetMapping("/getMenuList")
public R<List<MenuRouteVo>> getMenuList(){
List<MenuRouteVo> list = loginService.getOamMenuList();
return R.ok(list);
}
}

View File

@ -0,0 +1,107 @@
package com.cpop.oam.business.controller;
import com.cpop.core.annontation.OperationLog;
import com.cpop.core.base.R;
import com.cpop.core.base.enums.OperationLogEnum;
import com.cpop.oam.business.bo.MenuBo;
import com.cpop.oam.business.bo.MenuListBo;
import com.cpop.oam.business.service.MenuService;
import com.cpop.oam.business.vo.MenuVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 系统菜单模块接口
*
* @author DB
* @since 2023-09-07
*/
@RestController
@Api(tags = "系统菜单模块")
@RequestMapping("/menu")
public class MenuController {
@Autowired
private MenuService menuService;
/**
* @descriptions 获取系统菜单树列表
* @author DB
* @date 2023/09/07 15:48
* @param bo 请求参数
* @return com.jambox.core.base.R<java.util.List<OamMenuVo>>
*/
@PreAuthorize("@aps.hasPermission('*:*:*')")
@ApiOperation("获取OAM菜单树列表")
@GetMapping("/getOamMenuTreeList")
public R<List<MenuVo>> getOamMenuTreeList(MenuListBo bo) {
List<MenuVo> list = menuService.getOamMenuTreeList(bo);
return R.ok(list);
}
/**
* @descriptions 获取目录与菜单树
* @author DB
* @date 2023/09/07 17:41
* @return com.jambox.core.base.R<java.util.List<com.jambox.oam.business.vo.OamMenuVo>>
*/
@ApiOperation("获取目录与菜单树")
@GetMapping("/getDirectoryAndMenuTreeList")
public R<List<MenuVo>> getDirectoryAndMenuTreeList() {
List<MenuVo> list = menuService.getDirectoryAndMenuTreeList();
return R.ok(list);
}
/**
* @descriptions 新增系统菜单
* @author DB
* @date 2023/09/07 17:45
* @param bo 请求参数
* @return com.jambox.core.base.R<java.lang.Void>
*/
@PreAuthorize("@aps.hasPermission('*:*:*')")
@OperationLog(operationLogEnumType = OperationLogEnum.INSERT_OAM_MENU)
@ApiOperation("新增OAM菜单")
@PostMapping("/insertOamMenu")
public R<Void> insertOamMenu(@RequestBody @Validated MenuBo bo) {
menuService.insertOamMenu(bo);
return R.ok();
}
/**
* @Description: 修改系统菜单表
* @param bo 请求参数
* @Author: DB
* @Date: 2023/5/10 16:01
**/
@PreAuthorize("@aps.hasPermission('*:*:*')")
@OperationLog(operationLogEnumType = OperationLogEnum.UPDATE_OAM_MENU)
@ApiOperation("修改OAM菜单")
@PutMapping("/updateOamMenu")
public R<Void> updateOamMenu(@RequestBody @Validated MenuBo bo) {
menuService.updateOamMenu(bo);
return R.ok();
}
/**
* @Description: 删除系统菜单表
* @param id 主键id
* @Author: DB
* @Date: 2023/5/10 16:01
**/
@PreAuthorize("@aps.hasPermission('*:*:*')")
@OperationLog(operationLogEnumType = OperationLogEnum.REMOVE_OAM_MENU)
@ApiOperation("删除OAM菜单")
@DeleteMapping("/removeOamMenu/{id}")
public R<Void> removeOamMenu(@PathVariable String id) {
menuService.removeOamMenu(id);
return R.ok();
}
}

View File

@ -0,0 +1,126 @@
package com.cpop.oam.business.controller;
import com.mybatisflex.core.paginate.Page;
import com.cpop.core.annontation.OperationLog;
import com.cpop.core.base.R;
import com.cpop.core.base.enums.OperationLogEnum;
import com.cpop.oam.business.bo.MenuListBo;
import com.cpop.oam.business.bo.RoleBo;
import com.cpop.oam.business.bo.RolePageBo;
import com.cpop.oam.business.bo.RoleStatusBo;
import com.cpop.oam.business.service.MenuService;
import com.cpop.oam.business.service.RoleService;
import com.cpop.oam.business.vo.MenuVo;
import com.cpop.oam.business.vo.RolePageVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 系统角色表 控制层
*
* @author DB
* @since 2023-09-08
*/
@RestController
@Api(tags = "系统角色模块")
@RequestMapping("/role")
public class RoleController {
@Autowired
private RoleService roleService;
@Autowired
private MenuService menuService;
/**
* @descriptions 查询系统角色分页列表
* @author DB
* @date 2023/09/10 16:51
* @param bo 请求参数
* @return R<PageVo<SysRolePageVo>>
*/
@PreAuthorize("@aps.hasPermission('system:role:list')")
@ApiOperation("查询系统角色分页列表")
@GetMapping("/getRolePageList")
public R<Page<RolePageVo>> getOamRolePageList(RolePageBo bo) {
Page<RolePageVo> pageVo = roleService.selectOamRolePageList(bo);
return R.ok(pageVo);
}
/**
* 新增系统角色表
*/
@PreAuthorize("@aps.hasPermission('system:role:insert')")
@OperationLog(operationLogEnumType = OperationLogEnum.INSERT_OAM_ROLE)
@ApiOperation("新增角色")
@PostMapping("/insertRole")
public R<Void> insertSysRole(@RequestBody @Validated RoleBo bo) {
roleService.insertOamRole(bo);
return R.ok();
}
/**
* @Description: 获取系统菜单树列表
* @param bo 请求参数
* @return: R<List<SysMenuVo>>
* @Author: DB
* @Date: 2023/5/10 14:39
**/
@PreAuthorize("@aps.hasPermission('system:role:insert')")
@ApiOperation("获取菜单树列表")
@GetMapping("/getMenuTreeList")
public R<List<MenuVo>> getMenuTreeList(MenuListBo bo) {
List<MenuVo> list = menuService.getOamMenuTreeList(bo);
return R.ok(list);
}
/**
* @descriptions 修改角色
* @author DB
* @date 2023/09/10 17:45
* @param bo 请求参数
* @return com.jambox.core.base.R<java.lang.Void>
*/
@PreAuthorize("@aps.hasPermission('system:role:update')")
@OperationLog(operationLogEnumType = OperationLogEnum.UPDATE_OAM_ROLE)
@ApiOperation("修改角色")
@PutMapping("/updateRole")
public R<Void> updateRole(@RequestBody @Validated RoleBo bo) {
roleService.updateOamRole(bo);
return R.ok();
}
/**
* 删除系统角色表
*/
@PreAuthorize("@aps.hasPermission('system:role:remove')")
@OperationLog(operationLogEnumType = OperationLogEnum.REMOVE_OAM_ROLE)
@ApiOperation("删除系统角色表")
@DeleteMapping("/removeRole/{id}")
public R<Void> removeRole(@PathVariable String id) {
roleService.removeOamRole(id);
return R.ok();
}
/**
* @Description: 设置角色状态
* @param bo 请求参数
* @return: R<Void>
* @Author: DB
* @Date: 2023/5/9 14:13
**/
@PreAuthorize("@aps.hasPermission('system:role:update')")
@OperationLog(operationLogEnumType = OperationLogEnum.UPDATE_OAM_ROLE)
@ApiOperation("设置角色状态")
@PutMapping("/setRoleStatus")
public R<Void> setOamRoleStatus(@RequestBody @Validated RoleStatusBo bo) {
roleService.setOamRoleStatus(bo);
return R.ok();
}
}

View File

@ -0,0 +1,193 @@
package com.cpop.oam.business.controller;
import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.query.QueryWrapper;
import com.cpop.common.constant.Constants;
import com.cpop.core.annontation.OperationLog;
import com.cpop.core.base.R;
import com.cpop.core.base.enums.OperationLogEnum;
import com.cpop.core.utils.SpringUtils;
import com.cpop.oam.business.bo.*;
import com.cpop.oam.business.service.DeptService;
import com.cpop.oam.business.service.RoleService;
import com.cpop.oam.business.service.StaffService;
import com.cpop.oam.business.vo.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import static com.cpop.oam.business.entity.table.RoleTableDef.ROLE;
/**
* 员工表 控制层
*
* @author DB
* @since 2023-09-07
*/
@RestController
@Api(tags = "员工账号管理模块")
@RequestMapping("/staff")
public class StaffController {
@Autowired
private StaffService staffService;
@Autowired
private DeptService deptService;
/**
* @descriptions 查询员工分页列表
* @author DB
* @date 2023/09/07 18:07
* @param bo 请求参数
* @return R<Page<SysStaffPageVo>>
*/
@PreAuthorize("@aps.hasPermission('system:account:list')")
@ApiOperation("查询员工分页列表")
@GetMapping("/getStaffPageList")
public R<Page<StaffPageVo>> getStaffPageList(StaffPageBo bo) {
Page<StaffPageVo> pageVo = staffService.getStaffPageList(bo);
return R.ok(pageVo);
}
/**
* @descriptions 新增员工
* @author DB
* @date 2023/09/08 14:04
* @param bo 请求参数
* @return com.jambox.core.base.R<java.lang.Void>
*/
@PreAuthorize("@aps.hasPermission('system:account:insert')")
@OperationLog(operationLogEnumType= OperationLogEnum.INSERT_OAM_STAFF)
@ApiOperation("新增员工")
@PostMapping("/insertStaff")
public R<Void> insertStaff(@RequestBody @Validated StaffBo bo) {
staffService.insertStaff(bo);
return R.ok();
}
/**
* @descriptions 修改员工
* @author DB
* @date 2023/09/08 15:20
* @param bo 请求参数
* @return com.jambox.core.base.R<java.lang.Void>
*/
@PreAuthorize("@aps.hasPermission('system:account:update')")
@OperationLog(operationLogEnumType= OperationLogEnum.UPDATE_OAM_STAFF)
@ApiOperation("修改员工")
@PutMapping("/updateStaff")
public R<Void> updateStaff(@RequestBody @Validated StaffBo bo) {
staffService.updateStaff(bo);
return R.ok();
}
/**
* @descriptions 删除员工
* @author DB
* @date 2023/09/12 16:57
* @param id 主键
* @return com.jambox.core.base.R<java.lang.Void>
*/
@PreAuthorize("@aps.hasPermission('system:account:remove')")
@OperationLog(operationLogEnumType= OperationLogEnum.REMOVE_OAM_STAFF)
@ApiOperation("删除员工")
@DeleteMapping("/removeStaffById/{id}")
public R<Void> removeStaffById(@PathVariable String id) {
staffService.removeStaffById(id);
return R.ok();
}
/**
* @descriptions 查询部门树列表
* @author DB
* @date 2023/09/08 18:19
* @param bo 请求参数
* @return com.jambox.core.base.R<List<DeptVo>>
*/
@ApiOperation("查询部门树列表")
@GetMapping("/getDeptTreeList")
public R<List<DeptVo>> getDeptTreeList(DeptListBo bo) {
List<DeptVo> list = deptService.getDeptTreeList(bo);
return R.ok(list);
}
/**
* 获取所有角色信息
*/
@ApiOperation("获取所有角色信息")
@GetMapping("/getAllRoleList")
public R<List<RoleVo>> getAllSysRoleList() {
List<RoleVo> list = SpringUtils.getBean(RoleService.class).listAs(QueryWrapper.create()
.where(ROLE.STATUS.eq(true))
.and(ROLE.ROLE_VALUE.ne(Constants.SUPER_ADMIN_VALUE))
.orderBy(ROLE.ORDER_NO.asc())
, RoleVo.class);
return R.ok(list);
}
/**
* @Description: 用户名是否存在
* @param username 用户名
* @param id 主键
* @return: R<Void>
* @Author: DB
* @Date: 2023/5/11 10:09
**/
@ApiOperation("用户名是否存在")
@GetMapping("/isAccountExist")
public R<Void> isAccountExist(String username, String id) {
staffService.isAccountExist(username, id);
return R.ok();
}
/**
* @Description: 获取员工信息
* @param id
* @return: R<StaffVo>
* @Author: DB
* @Date: 2023/5/17 10:33
**/
@PreAuthorize("@aps.hasPermission('system:account:info')")
@ApiOperation("获取员工信息")
@GetMapping("/getStaffInfo/{id}")
public R<StaffInfoVo> getStaffInfo(@PathVariable String id) {
StaffInfoVo staffInfo = staffService.getStaffInfo(id);
return R.ok(staffInfo);
}
/**
* @Description: 获取用户操作日志分页
* @param bo 请求参数
* @return: R<PageVo<SysOperationLogVo>>
* @Author: DB
* @Date: 2023/5/12 14:30
**/
@PreAuthorize("@aps.hasPermission('system:account:list')")
@ApiOperation("获取用户操作日志分页")
@GetMapping("/getUserLogList")
public R<Page<SysOperationLogVo>> getUserLogList(@Validated SysUserLogBo bo) {
Page<SysOperationLogVo> list = staffService.getUserLogList(bo);
return R.ok(list);
}
/**
* @Description: 修改系统用户密码
* @param bo 请求参数
* @return: AjaxResult<Void>
* @Author: DB
* @Date: 2023/5/12 16:00
**/
@PreAuthorize("@aps.hasPermission('system:account:update')")
@OperationLog(operationLogEnumType= OperationLogEnum.MODIFY_OAM_STAFF_PASSWORD)
@ApiOperation("修改系统用户密码")
@PutMapping("/modifyUserPassword")
public R<Void> modifyUserPassword(@Validated @RequestBody ModifyUserPasswordBo bo) {
staffService.modifyUserPassword(bo);
return R.ok();
}
}

View File

@ -0,0 +1,57 @@
package com.cpop.oam.business.controller;
import com.cpop.core.base.R;
import com.cpop.core.config.CpopConfig;
import com.cpop.core.config.ServerConfig;
import com.cpop.core.utils.file.FileUploadUtils;
import com.cpop.core.utils.file.FileUtils;
import com.cpop.oam.business.vo.SysFileVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
/**
* @author DB
* @createTime 2023/09/13 15:10
* @description 通用接口
*/
@Slf4j
@Api(tags = "通用接口")
@RestController
@RequestMapping("/sysCommon")
public class SysCommonController {
@Autowired
private ServerConfig serverConfig;
@Autowired
private CpopConfig cpopConfig;
/**
* 通用上传请求单个
*/
@ApiOperation("通用上传请求(单个)")
@PostMapping("/upload")
public R<SysFileVo> uploadFile(MultipartFile file) {
try {
// 上传文件路径
String filePath = cpopConfig.getUploadPath();
// 上传并返回新文件名称
String fileName = FileUploadUtils.getInstance().upload(filePath, file);
String url = serverConfig.getUrl() + fileName;
SysFileVo sysFileVo = new SysFileVo();
sysFileVo.setUrl(url)
.setFileName(fileName)
.setNewFileName(FileUtils.getInstance().getName(fileName))
.setOriginalFilename(file.getOriginalFilename());
return R.ok(sysFileVo);
} catch (Exception e) {
return R.fail(e.getMessage());
}
}
}

View File

@ -0,0 +1,52 @@
package com.cpop.oam.business.controller;
import com.cpop.core.base.R;
import com.cpop.oam.business.bo.SysConfigInfoBo;
import com.cpop.oam.business.service.CommonService;
import com.cpop.oam.business.vo.ConfigInfoVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
/**
* @author DB
* @createTime 2023/09/13 12:00
* @description
*/
@Api(tags = "系统配置模块")
@RestController
@RequestMapping("/sysConfig")
public class SysConfigController {
@Autowired
private CommonService commonService;
/**
* @Description: 获取系统配置信息
* @return R<OpenPlatformConfigVo>
* @author DB
* @Date: 2023/7/7 0007 16:27
*/
@ApiOperation("获取系统配置信息")
@GetMapping("/getSysConfigInfo")
public R<ConfigInfoVo> getSysConfigInfo() {
ConfigInfoVo vo = commonService.getSysConfigInfo();
return R.ok(vo);
}
/**
* @param bo 请求参数
* @Description: 设置系统配置信息
* @return: R<Void>
* @Author: DB
* @Date: 2023/5/11 15:48
**/
@ApiOperation("设置系统配置信息")
@PutMapping("/setSysConfigInfo")
public R<Void> setSysConfigInfo(@RequestBody @Validated SysConfigInfoBo bo) {
commonService.setSysConfigInfo(bo);
return R.ok();
}
}

View File

@ -0,0 +1,292 @@
package com.cpop.oam.business.controller;
import com.mybatisflex.core.paginate.Page;
import com.cpop.core.annontation.OperationLog;
import com.cpop.core.base.R;
import com.cpop.core.base.enums.OperationLogEnum;
import com.cpop.oam.business.bo.*;
import com.cpop.oam.business.service.StaffService;
import com.cpop.oam.business.service.TaskService;
import com.cpop.oam.business.service.TaskStaffGroupService;
import com.cpop.oam.business.vo.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* OAM-任务表 控制层
*
* @author DB
* @since 2023-09-15
*/
@RestController
@Api(tags = "任务管理模块")
@RequestMapping("/task")
public class TaskController {
@Autowired
private TaskService taskService;
@Autowired
private TaskStaffGroupService taskStaffGroupService;
@Autowired
private StaffService staffService;
/**
* @Description: 查询OAM-任务分页列表
* @param bo 请求参数
* @return: R<PageVo<PersonTaskPageListVo>>
* @Author: DB
* @Date: 2023/5/16 15:24
**/
@PreAuthorize("@aps.hasPermission('oamTask:task:list')")
@ApiOperation("任务分页列表")
@GetMapping("/getTaskPage")
public R<Page<TaskPageVo>> getTaskPage(TaskPageBo bo) {
Page<TaskPageVo> list = taskService.getTaskPage(bo);
return R.ok(list);
}
/**
* @Description: OAM-新增迭代任务
* @param bo 请求参数
* @return: R<Void>
* @Author: DB
* @Date: 2023/5/16 15:58
**/
@PreAuthorize("@aps.hasPermission('oamTask:task:insert')")
@OperationLog(operationLogEnumType = OperationLogEnum.INSERT_ITERATION_TASK)
@ApiOperation("新增迭代任务")
@PostMapping("/insertIterationTask")
public R<Void> insertIterationTask(@RequestBody @Validated TaskBo bo) {
taskService.insertTask(bo);
return R.ok();
}
/**
* @Description: 查询OAM-任务审核分页列表
* @return: R<Page<OamTaskAuditPageVo>>
* @Author: DB
* @Date: 2023/5/16 15:24
**/
@PreAuthorize("@aps.hasPermission('oamTask:taskAudit:list')")
@ApiOperation("任务审核分页列表")
@GetMapping("/getTaskAuditPage")
public R<Page<TaskAuditPageVo>> getTaskAuditPage() {
Page<TaskAuditPageVo> list = taskService.getTaskAuditPage();
return R.ok(list);
}
/**
* @Description: 设置任务审核意见
* @param bo 请求参数
* @return: R<Void>
* @Author: DB
* @Date: 2023/5/16 17:36
**/
@PreAuthorize("@aps.hasPermission('oamTask:taskAudit:update')")
@OperationLog(operationLogEnumType = OperationLogEnum.SET_TASK_AUDIT_COMMENTS)
@ApiOperation("设置任务审核意见")
@PutMapping("/setTaskAuditComments")
public R<Void> setTaskAuditComments(@RequestBody TaskAuditCommentsBo bo) {
taskService.setTaskAuditComments(bo);
return R.ok();
}
/**
* @Description: 查询OAM-任务审核驳回列表
* @return: R<Page<OamTaskAuditPageVo>>
* @Author: DB
* @Date: 2023/5/16 15:24
**/
@PreAuthorize("@aps.hasPermission('oamTask:taskAudit:list')")
@ApiOperation("任务审核驳回列表")
@GetMapping("/getTaskRejectPage")
public R<Page<TaskAuditPageVo>> getTaskRejectPage() {
Page<TaskAuditPageVo> list = taskService.getTaskRejectPage();
return R.ok(list);
}
/**
* @Description: 技术人员领取任务
* @param id 任务主键
* @return: R<Void>
* @Author: DB
* @Date: 2023/5/16 17:10
**/
@PreAuthorize("@aps.hasPermission('oamTask:task:update')")
@OperationLog(operationLogEnumType = OperationLogEnum.CLAIM_TASK)
@ApiOperation("技术人员领取任务")
@PutMapping("/claimTask/{id}")
public R<Void> claimTask(@PathVariable String id) {
taskService.claimTask(id);
return R.ok();
}
/**
* @Description: 删除任务
* @param id 主键
* @return: R<Void>
* @Author: DB
* @Date: 2023/5/19 18:03
**/
@PreAuthorize("@aps.hasPermission('oamTask:task:remove')")
@OperationLog(operationLogEnumType = OperationLogEnum.REMOVE_TASK)
@ApiOperation("删除任务")
@DeleteMapping("/removeTask/{id}")
public R<Void> removeTask(@PathVariable String id) {
taskService.removeById(id);
return R.ok();
}
/**
* @Description: 查询OAM-个人任务分页列表
* @return: R<PageVo<PersonTaskPageListVo>>
* @Author: DB
* @Date: 2023/5/16 15:24
**/
@PreAuthorize("@aps.hasPermission('oamTask:task:list')")
@ApiOperation("个人任务分页列表")
@GetMapping("/getPersonTaskPage")
public R<Page<PersonTaskPageVo>> getPersonTaskPage(PersonTaskPageBo bo) {
Page<PersonTaskPageVo> list = taskService.getPersonTaskPage(bo);
return R.ok(list);
}
/**
* @Description: 查询OAM-任务成员组列表
* @return: R<PageVo<PersonTaskPageListVo>>
* @Author: DB
* @Date: 2023/5/16 15:24
**/
@ApiOperation("任务成员组列表")
@GetMapping("/getTaskStaffGroupList")
public R<List<TaskStaffGroupVo>> getTaskStaffGroupList(@Validated TaskStaffGroupListBo bo) {
List<TaskStaffGroupVo> list = taskStaffGroupService.getTaskStaffGroupList(bo);
return R.ok(list);
}
/**
* @Description: 查询技术员工列表
* @return: R<PageVo<StaffPageVo>>
* @Author: DB
* @Date: 2023/5/11 17:50
**/
@ApiOperation("查询技术员工列表")
@GetMapping("/getTechnologyStaffList")
public R<List<StaffVo>> getTechnologyStaffList() {
List<StaffVo> list = staffService.getTechnologyStaffList();
return R.ok(list);
}
/**
* @Description: 新增任务员工组
* @param bo 请求参数
* @return: R<Void>
* @Author: DB
* @Date: 2023/5/16 15:58
**/
@OperationLog(operationLogEnumType = OperationLogEnum.INSERT_TASK_STAFF_GROUP)
@ApiOperation("新增任务小组成员")
@PostMapping("/insertTaskStaffGroup")
public R<Void> insertTaskStaffGroup(@RequestBody @Validated TaskStaffGroupBo bo) {
taskStaffGroupService.insertTaskStaffGroup(bo);
return R.ok();
}
/**
* @Description: 修改员工任务绩点
* @param bo 请求参数
* @return: R<Void>
* @Author: DB
* @Date: 2023/5/29 11:48
**/
@OperationLog(operationLogEnumType = OperationLogEnum.UPDATE_STAFF_GRADE_POINT)
@ApiOperation("修改员工任务绩点")
@PutMapping("/updateStaffGradePoint")
public R<Void> updateStaffGradePoint(@RequestBody @Validated TaskStaffGroupBo bo) {
taskStaffGroupService.updateStaffGradePoint(bo);
return R.ok();
}
/**
* @Description: 删除成员组
* @param id 主键
* @return: R<Void>
* @Author: DB
* @Date: 2023/5/29 14:18
**/
@OperationLog(operationLogEnumType = OperationLogEnum.REMOVE_TASK_STAFF_GROUP)
@ApiOperation("删除成员组")
@DeleteMapping("/removeTaskStaffGroup/{id}")
public R<Void> removeTaskStaffGroup(@PathVariable String id) {
taskStaffGroupService.removeTaskStaffGroupById(id);
return R.ok();
}
/**
* @Description: 修改任务进度
* @param bo 请求参数
* @return: R<Void>
* @Author: DB
* @Date: 2023/5/29 14:58
**/
@OperationLog(operationLogEnumType = OperationLogEnum.UPDATE_TASK_ITEM)
@ApiOperation("修改任务进度")
@PutMapping("/updateTaskItem")
public R<Void> updateTaskItem(@RequestBody @Validated TaskItemBo bo) {
taskService.updateTaskItem(bo);
return R.ok();
}
/**
* @Description: 修改任务负责人
* @param bo 请求参数
* @return: R<Void>
* @Author: DB
* @Date: 2023/5/29 14:58
**/
@OperationLog(operationLogEnumType = OperationLogEnum.UPDATE_TASK_RESPONSIBLE_STAFF)
@ApiOperation("修改任务负责人")
@PutMapping("/updateTaskResponsibleStaff")
public R<Void> updateTaskResponsibleStaff(@RequestBody @Validated TransferTaskBo bo) {
taskService.updateTaskResponsibleStaff(bo);
return R.ok();
}
/**
* @Description: 完成任务
* @param id 主键
* @return: R<Void>
* @Author: DB
* @Date: 2023/5/31 16:24
**/
@PreAuthorize("@aps.hasPermission('oamTask:task:update')")
@OperationLog(operationLogEnumType = OperationLogEnum.FINISH_TASK)
@ApiOperation("完成任务")
@PutMapping("/finishTask/{id}")
public R<Void> finishTask(@PathVariable String id) {
taskService.finishTask(id);
return R.ok();
}
/**
* @Description: 获取月度任务统计列表
* @param bo 请求参数
* @return: R<List<TaskListVo>>
* @Author: DB
* @Date: 2023/5/15 16:42
**/
@ApiOperation("获取月度任务统计列表")
@GetMapping("/getTaskMonthStatistics")
public R<TaskMonthStatisticsVo> getTaskMonthStatistics(TaskMonthStatisticsBo bo) {
return R.ok(taskService.getTaskMonthStatistics(bo));
}
}

View File

@ -0,0 +1,63 @@
package com.cpop.oam.business.controller;
import com.mybatisflex.core.paginate.Page;
import com.cpop.core.annontation.OperationLog;
import com.cpop.core.base.R;
import com.cpop.core.base.enums.OperationLogEnum;
import com.cpop.oam.business.bo.TaskDemandBo;
import com.cpop.oam.business.bo.TaskDemandPageBo;
import com.cpop.oam.business.service.TaskDemandService;
import com.cpop.oam.business.vo.TaskDemandPageVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
/**
* OAM-任务-需求表 控制层
*
* @author DB
* @since 2023-09-18
*/
@RestController
@Api(tags = "任务管理模块-需求任务")
@RequestMapping("/taskDemand")
public class TaskDemandController {
@Autowired
private TaskDemandService taskDemandService;
/**
* @Description: 任务管理-需求管理分页列表
* @param bo 请求参数
* @return: R<PageVo<DemandPageListVo>>
* @Author: DB
* @Date: 2023/5/30 15:44
**/
@PreAuthorize("@aps.hasPermission('oamTask:taskDemand:list')")
@ApiOperation("任务管理模块-需求任务分页列表")
@GetMapping("/getTaskDemandPage")
public R<Page<TaskDemandPageVo>> getTaskDemandPage(TaskDemandPageBo bo) {
Page<TaskDemandPageVo> pageVo = taskDemandService.getTaskDemandPage(bo);
return R.ok(pageVo);
}
/**
* @Description: 任务管理-需求管理-新增需求任务
* @param bo 请求参数
* @return: R<Void>
* @Author: DB
* @Date: 2023/5/30 16:53
**/
@OperationLog(operationLogEnumType = OperationLogEnum.INSERT_DEMAND_TASK)
@PreAuthorize("@aps.hasPermission('oamTask:taskDemand:insert')")
@ApiOperation("任务管理模块-新增需求任务")
@PostMapping("/insertDemandTask")
public R<Void> insertDemandTask(@RequestBody @Validated TaskDemandBo bo) {
taskDemandService.insertTaskDemand(bo);
return R.ok();
}
}

View File

@ -0,0 +1,128 @@
package com.cpop.oam.business.controller;
import com.mybatisflex.core.paginate.Page;
import com.cpop.core.annontation.OperationLog;
import com.cpop.core.base.R;
import com.cpop.core.base.enums.OperationLogEnum;
import com.cpop.oam.business.bo.PauseWorkOrderBo;
import com.cpop.oam.business.bo.TaskWorkOrderBo;
import com.cpop.oam.business.bo.TaskWorkOrderPageBo;
import com.cpop.oam.business.bo.TaskWorkOrderRecordBo;
import com.cpop.oam.business.service.TaskWorkOrderService;
import com.cpop.oam.business.vo.TaskWorkOrderPageVo;
import com.cpop.oam.business.vo.TaskWorkOrderRecordListVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 任务-工单表 控制层
*
* @author DB
* @since 2023-09-18
*/
@RestController
@Api(tags = "任务管理模块-工单管理")
@RequestMapping("/taskWorkOrder")
public class TaskWorkOrderController {
@Autowired
private TaskWorkOrderService taskWorkOrderService;
/**
* @Description: 任务管理-工单管理-新增工单
* @param bo 请求参数
* @return: R<Void>
* @Author: DB
* @Date: 2023/5/30 16:53
**/
@OperationLog(operationLogEnumType = OperationLogEnum.INSERT_WORK_ORDER)
@PreAuthorize("@aps.hasPermission('oamTask:workOrder:insert')")
@ApiOperation("任务管理模块-工单管理-新增工单")
@PostMapping("/insertWorkOrder")
public R<Void> insertWorkOrder(@RequestBody @Validated TaskWorkOrderBo bo) {
taskWorkOrderService.insertWorkOrder(bo);
return R.ok();
}
/**
* @descriptions 查询任务-工单-记录表列表
* @author DB
* @date 2023/09/18 17:18
* @param bo 请求参数
* @return com.cpop.core.base.R<com.mybatisflex.core.paginate.Page<com.cpop.oam.business.vo.TaskWorkOrderPageVo>>
*/
@ApiOperation("任务管理模块-工单-分页列表")
@PostMapping("/getWorkOrderPage")
public R<Page<TaskWorkOrderPageVo>> getWorkOrderPage(@RequestBody TaskWorkOrderPageBo bo) {
Page<TaskWorkOrderPageVo> pageVo = taskWorkOrderService.getWorkOrderPage(bo);
return R.ok(pageVo);
}
/**
* @descriptions 查询任务-工单记录-列表
* @author DB
* @date 2023/09/18 17:19
* @param workRecordId 工单记录id
* @return com.cpop.core.base.R<java.util.List<com.cpop.oam.business.vo.TaskWorkOrderRecordListVo>>
*/
@ApiOperation("任务管理模块-工单记录")
@GetMapping("/getWorkOrderRecordList/{workRecordId}")
public R<List<TaskWorkOrderRecordListVo>> getWorkOrderRecordList(@PathVariable String workRecordId) {
List<TaskWorkOrderRecordListVo> list = taskWorkOrderService.getWorkOrderRecordList(workRecordId);
return R.ok(list);
}
/**
* @Description: 任务管理-工单管理-新增工单记录
* @param bo 请求参数
* @return: R<Void>
* @Author: DB
* @Date: 2023/5/30 16:53
**/
@OperationLog(operationLogEnumType = OperationLogEnum.INSERT_WORK_ORDER_RECORD)
@ApiOperation("任务管理模块-工单管理-新增工单记录")
@PostMapping("/insertWorkOrderRecord")
public R<Void> insertWorkOrderRecord(@RequestBody @Validated TaskWorkOrderRecordBo bo) {
taskWorkOrderService.insertWorkOrderRecord(bo);
return R.ok();
}
/**
* @Description: 工单办结
* @param id 主键
* @return: R<Void>
* @Author: DB
* @Date: 2023/5/16 17:10
**/
@PreAuthorize("@aps.hasPermission('oamTask:workOrder:update')")
@OperationLog(operationLogEnumType = OperationLogEnum.CONCLUDE_WORK_ORDER)
@ApiOperation("工单办结")
@PutMapping("/concludeWorkOrder/{id}")
public R<Void> concludeWorkOrder(@PathVariable String id) {
taskWorkOrderService.concludeWorkOrder(id);
return R.ok();
}
/**
* @Description: 工单暂停
* @param bo 请求参数
* @return: R<Void>
* @Author: DB
* @Date: 2023/5/16 17:10
**/
@PreAuthorize("@aps.hasPermission('oamTask:workOrder:update')")
@OperationLog(operationLogEnumType = OperationLogEnum.PAUSE_WORK_ORDER)
@ApiOperation("工单暂停")
@PutMapping("/pauseWorkOrder")
public R<Void> pauseWorkOrder(@RequestBody PauseWorkOrderBo bo) {
taskWorkOrderService.pauseWorkOrder(bo);
return R.ok();
}
}

View File

@ -0,0 +1,50 @@
package com.cpop.oam.business.dto;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* 任务-工单-记录表Dto
*
* @author DB.lost
* @since 2023-07-10
*/
@Data
@Accessors(chain = true)
public class TaskWorkOrderRecordDto implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 任务工单id
*/
private String taskWorkOrderId;
/**
* 记录员工id
*/
private String recordStaffId;
/**
* 记录内容
*/
private String recordText;
/**
* 附件地址
*/
private String attachmentUrl;
/**
* 记录员工手机号
*/
private String recordStaffPhone;
/**
* 负责员工手机号
*/
private String responsibleStaffPhone;
}

View File

@ -0,0 +1,81 @@
package com.cpop.oam.business.entity;
import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.Table;
import com.cpop.core.base.entity.BaseEntity;
import com.cpop.core.base.entity.BaseInsertListener;
import com.cpop.core.base.entity.BaseUpdateListener;
import lombok.*;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* 部门表 实体类
*
* @author DB
* @since 2023-09-08
*/
@Data
@EqualsAndHashCode(callSuper=false)
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@Table(value = "cp_oam_dept", onInsert = BaseInsertListener.class, onUpdate = BaseUpdateListener.class, mapperGenerateEnable = false)
public class Dept extends BaseEntity implements Serializable {
/**
* 部门id
*/
@Id
private String id;
/**
* 父部门id
*/
private String parentId;
/**
* 部门名称
*/
private String name;
/**
* 排序
*/
private Integer orderNo;
/**
* 负责人
*/
private String leader;
/**
* 电话
*/
private String phone;
/**
* 邮箱
*/
private String email;
/**
* 部门状态:1正常,0停用
*/
private Boolean status;
/**
* 备注
*/
private String remark;
/**
* 逻辑删除(0否1是)
*/
@Column(isLogicDelete = true)
private Boolean isDelete;
}

View File

@ -0,0 +1,55 @@
package com.cpop.oam.business.entity;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.Table;
import com.cpop.core.base.entity.BaseEntity;
import com.cpop.core.base.entity.BaseInsertListener;
import com.cpop.core.base.entity.BaseUpdateListener;
import lombok.*;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.sql.Date;
/**
* 值班表 实体类
*
* @author DB
* @since 2023-09-14
*/
@Data
@EqualsAndHashCode(callSuper=false)
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@Table(value = "cp_oam_duty", onInsert = BaseInsertListener.class, onUpdate = BaseUpdateListener.class, mapperGenerateEnable = false)
public class Duty extends BaseEntity implements Serializable {
/**
* 主键
*/
@Id
private String id;
/**
* 服务员工id
*/
private String serviceStaffId;
/**
* 技术员工id
*/
private String technologyStaffId;
/**
* 值班日期
*/
private Date dutyDate;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,80 @@
package com.cpop.oam.business.entity;
import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.Table;
import com.cpop.core.base.entity.BaseEntity;
import com.cpop.core.base.entity.BaseInsertListener;
import com.cpop.core.base.entity.BaseUpdateListener;
import lombok.*;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.math.BigDecimal;
import java.sql.Date;
/**
* 报销记录表 实体类
*
* @author DB
* @since 2023-09-20
*/
@Data
@EqualsAndHashCode(callSuper=false)
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@Table(value = "cp_oam_finance_reimburse", onInsert = BaseInsertListener.class, onUpdate = BaseUpdateListener.class, mapperGenerateEnable = false)
public class FinanceReimburse extends BaseEntity implements Serializable {
@Id
private String id;
/**
* 提交人
*/
private String staffId;
/**
* 状态0:已提交;1:审批中;2:下款中;3:已下发;4:驳回
*/
private Integer status;
/**
* 申请类型
*/
private String typeId;
/**
* 报销日期
*/
private Date reportDate;
/**
* 申请说明
*/
private String remarks;
/**
* 申请金额
*/
private BigDecimal price;
/**
* 附件
*/
private String attachmentUrl;
/**
* 驳回原因
*/
private String rejectReason;
/**
* 逻辑删除
*/
@Column(isLogicDelete = true)
private Boolean isDelete;
}

View File

@ -0,0 +1,60 @@
package com.cpop.oam.business.entity;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.Table;
import com.cpop.core.base.entity.BaseEntity;
import com.cpop.core.base.entity.BaseInsertListener;
import com.cpop.core.base.entity.BaseUpdateListener;
import lombok.*;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* 报销阶段表 实体类
*
* @author DB
* @since 2023-09-26
*/
@Data
@EqualsAndHashCode(callSuper=false)
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@Table(value = "cp_oam_finance_reimburse_stage", onInsert = BaseInsertListener.class, onUpdate = BaseUpdateListener.class, mapperGenerateEnable = false)
public class FinanceReimburseStage extends BaseEntity implements Serializable {
/**
* 主键
*/
@Id
private String id;
/**
* 报销记录id
*/
private String financeReimburseId;
/**
* 阶段金额
*/
private BigDecimal stageAmount;
/**
* 下发时间
*/
private LocalDateTime paymentTime;
/**
* 逻辑删除1否0是
*/
private Boolean deleted;
}

View File

@ -0,0 +1,39 @@
package com.cpop.oam.business.entity;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.Table;
import com.cpop.core.base.entity.BaseEntity;
import com.cpop.core.base.entity.BaseInsertListener;
import com.cpop.core.base.entity.BaseUpdateListener;
import lombok.*;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* 报销类型表 实体类
*
* @author DB
* @since 2023-09-20
*/
@Data
@EqualsAndHashCode(callSuper=false)
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@Table(value = "cp_oam_finance_reimburse_type", onInsert = BaseInsertListener.class, onUpdate = BaseUpdateListener.class, mapperGenerateEnable = false)
public class FinanceReimburseType extends BaseEntity implements Serializable {
/**
* 主键
*/
@Id
private String id;
/**
* 报销类型
*/
private String typeName;
}

View File

@ -0,0 +1,94 @@
package com.cpop.oam.business.entity;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.Table;
import com.cpop.core.base.entity.BaseEntity;
import com.cpop.core.base.entity.BaseInsertListener;
import com.cpop.core.base.entity.BaseUpdateListener;
import lombok.*;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* 系统菜单表 实体类
*
* @author DB
* @since 2023-09-07
*/
@Data
@EqualsAndHashCode(callSuper=false)
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@Table(value = "cp_oam_menu", onInsert = BaseInsertListener.class, onUpdate = BaseUpdateListener.class, mapperGenerateEnable = false)
public class Menu extends BaseEntity implements Serializable {
/**
* 菜单ID
*/
@Id
private String id;
/**
* 父级菜单ID
*/
private String parentMenu;
/**
* 菜单名称
*/
private String name;
/**
* 菜单图标
*/
private String icon;
/**
* 菜单路由父菜单为空
*/
private String component;
/**
* 标记菜单的状态 0:禁用 1正常根据权限正常显示
*/
private Boolean status;
/**
* 菜单类型0:目录1:菜单2:按钮
*/
private Integer type;
/**
* 权限
*/
private String permission;
/**
* 重定向路径一级菜单有值
*/
private String redirect;
/**
* 排序值越小越靠前一级菜单有值
*/
private Integer orderNo;
/**
* 路由地址
*/
private String path;
/**
* 标题
*/
private String title;
/**
* 隐藏菜单
*/
private Boolean hideMenu;
}

View File

@ -0,0 +1,63 @@
package com.cpop.oam.business.entity;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.Table;
import com.cpop.core.base.entity.BaseEntity;
import com.cpop.core.base.entity.BaseInsertListener;
import com.cpop.core.base.entity.BaseUpdateListener;
import lombok.*;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* 系统角色表 实体类
*
* @author DB
* @since 2023-09-08
*/
@Data
@EqualsAndHashCode(callSuper=false)
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@Table(value = "cp_oam_role", onInsert = BaseInsertListener.class, onUpdate = BaseUpdateListener.class, mapperGenerateEnable = false)
public class Role extends BaseEntity implements Serializable {
/**
* 主键
*/
@Id
private String id;
/**
* 角色名称
*/
private String roleName;
/**
* 角色值
*/
private String roleValue;
/**
* 状态
*/
private Boolean status;
/**
* 备注
*/
private String remark;
/**
* 排序
*/
private Integer orderNo;
}

View File

@ -0,0 +1,37 @@
package com.cpop.oam.business.entity;
import com.mybatisflex.annotation.Table;
import com.cpop.core.base.entity.BaseEntity;
import com.cpop.core.base.entity.BaseInsertListener;
import com.cpop.core.base.entity.BaseUpdateListener;
import lombok.*;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* 系统-角色-菜单表 实体类
*
* @author DB
* @since 2023-09-10
*/
@Data
@EqualsAndHashCode(callSuper=false)
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@Table(value = "cp_oam_role_menu", onInsert = BaseInsertListener.class, onUpdate = BaseUpdateListener.class, mapperGenerateEnable = false)
public class RoleMenu extends BaseEntity implements Serializable {
/**
* 角色id
*/
private String roleId;
/**
* 菜单id
*/
private String menuId;
}

View File

@ -0,0 +1,66 @@
package com.cpop.oam.business.entity;
import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.Table;
import com.cpop.core.base.entity.BaseEntity;
import com.cpop.core.base.entity.BaseInsertListener;
import com.cpop.core.base.entity.BaseUpdateListener;
import lombok.*;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* 员工表 实体类
*
* @author DB
* @since 2023-09-07
*/
@Data
@EqualsAndHashCode(callSuper=false)
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@Table(value = "cp_oam_staff", onInsert = BaseInsertListener.class, onUpdate = BaseUpdateListener.class, mapperGenerateEnable = false)
public class Staff extends BaseEntity implements Serializable {
/**
* 主键
*/
@Id
private String id;
/**
* 姓名
*/
private String name;
/**
* 部门id
*/
private String deptId;
/**
* 用户id
*/
private String userId;
/**
* 员工类型(0:技术人员;1:售后人员;2:管理人员)
*/
private Integer staffType;
/**
* 角色id
*/
private String roleId;
/**
* 逻辑删除(0否1是)
*/
@Column(isLogicDelete = true)
private Boolean isDelete;
}

View File

@ -0,0 +1,108 @@
package com.cpop.oam.business.entity;
import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.Table;
import com.cpop.core.base.entity.BaseEntity;
import com.cpop.core.base.entity.BaseInsertListener;
import com.cpop.core.base.entity.BaseUpdateListener;
import lombok.*;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.sql.Date;
import java.time.LocalDateTime;
/**
* OAM-任务表 实体类
*
* @author DB
* @since 2023-09-15
*/
@Data
@EqualsAndHashCode(callSuper=false)
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@Table(value = "cp_oam_task", onInsert = BaseInsertListener.class, onUpdate = BaseUpdateListener.class, mapperGenerateEnable = false)
public class Task extends BaseEntity implements Serializable {
/**
* 主键
*/
@Id
private String id;
/**
* 任务名
*/
private String taskName;
/**
* 任务类型(0:迭代;1:需求;2:工单)
*/
private Integer taskType;
/**
* 主要负责员工id
*/
private String responsibleStaffId;
/**
* 任务状态(-1:失败;0:待审核;1:待接受;2:进行中;3:已完成;4:逾期;5:暂停;6:逾期完成)
*/
private Integer taskStatus;
/**
* 任务项(0:开发中;1:待测试:2:待部署;3:已归档)
*/
private Integer taskItem;
/**
* 任务内容
*/
private String taskContent;
/**
* 任务权重
*/
private Integer taskWeight;
/**
* 任务评级(0:A;1:B;2:C;3:D;4:E)
*/
private Integer taskRating;
/**
* 附件地址
*/
private String attachmentUrl;
/**
* 备注
*/
private String remark;
/**
* 预期完成日期
*/
private Date expectedCompletionDate;
/**
* 完成日期
*/
private Date completionDate;
/**
* 任务接收时间
*/
private LocalDateTime taskReceiptTime;
/**
* 是否删除(0否1是)
*/
@Column(isLogicDelete = true)
private Boolean isDelete;
}

View File

@ -0,0 +1,96 @@
package com.cpop.oam.business.entity;
import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.Table;
import com.cpop.core.base.entity.BaseEntity;
import com.cpop.core.base.entity.BaseInsertListener;
import com.cpop.core.base.entity.BaseUpdateListener;
import lombok.*;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* OAM-任务-需求表 实体类
*
* @author DB
* @since 2023-09-18
*/
@Data
@EqualsAndHashCode(callSuper=false)
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@Table(value = "cp_oam_task_demand", onInsert = BaseInsertListener.class, onUpdate = BaseUpdateListener.class, mapperGenerateEnable = false)
public class TaskDemand extends BaseEntity implements Serializable {
/**
* 主键
*/
@Id
private String id;
/**
* 任务id
*/
private String taskId;
/**
* 商户id
*/
private String mechanismId;
/**
* 品牌id
*/
private String brandId;
/**
* 校区id
*/
private String campusId;
/**
* 需求类型(0:;1:;2:;3:)
*/
private Integer demandType;
/**
* 记录员工id
*/
private String recordStaffId;
/**
* 签约图片
*/
private String signPic;
/**
* 签约二维码
*/
private String signUrl;
/**
* 预付款
*/
private BigDecimal prepayment;
/**
* 应付款
*/
private BigDecimal payable;
/**
* 是否删除(0否1是)
*/
@Column(isLogicDelete = true)
private Boolean isDelete;
}

View File

@ -0,0 +1,49 @@
package com.cpop.oam.business.entity;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.Table;
import com.cpop.core.base.entity.BaseEntity;
import com.cpop.core.base.entity.BaseInsertListener;
import com.cpop.core.base.entity.BaseUpdateListener;
import lombok.*;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* OAM-任务-关联员工任务组表 实体类
*
* @author DB
* @since 2023-09-18
*/
@Data
@EqualsAndHashCode(callSuper=false)
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@Table(value = "cp_oam_task_staff_group", onInsert = BaseInsertListener.class, onUpdate = BaseUpdateListener.class, mapperGenerateEnable = false)
public class TaskStaffGroup extends BaseEntity implements Serializable {
/**
* 主键
*/
@Id
private String id;
/**
* 任务id
*/
private String taskId;
/**
* 员工id
*/
private String staffId;
/**
* 绩点
*/
private Integer gradePoint;
}

View File

@ -0,0 +1,81 @@
package com.cpop.oam.business.entity;
import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.Table;
import com.cpop.core.base.entity.BaseEntity;
import com.cpop.core.base.entity.BaseInsertListener;
import com.cpop.core.base.entity.BaseUpdateListener;
import lombok.*;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* 任务-工单表 实体类
*
* @author DB
* @since 2023-09-18
*/
@Data
@EqualsAndHashCode(callSuper=false)
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@Table(value = "cp_oam_task_work_order", onInsert = BaseInsertListener.class, onUpdate = BaseUpdateListener.class, mapperGenerateEnable = false)
public class TaskWorkOrder extends BaseEntity implements Serializable {
/**
* 主键
*/
@Id
private String id;
/**
* 任务id
*/
private String taskId;
/**
* 品牌id
*/
private String brandId;
/**
* 校区id
*/
private String campusId;
/**
* 产品id
*/
private String productId;
/**
* 问题手机号
*/
private String phoneNumber;
/**
* 记录员工id
*/
private String recordStaffId;
/**
* 办结时间
*/
private LocalDateTime finishTime;
/**
* 是否删除(0否1是)
*/
@Column(isLogicDelete = true)
private Boolean isDelete;
}

View File

@ -0,0 +1,58 @@
package com.cpop.oam.business.entity;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.Table;
import com.cpop.core.base.entity.BaseEntity;
import com.cpop.core.base.entity.BaseInsertListener;
import com.cpop.core.base.entity.BaseUpdateListener;
import lombok.*;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* 任务-工单-记录表 实体类
*
* @author DB
* @since 2023-09-18
*/
@Data
@EqualsAndHashCode(callSuper=false)
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@Table(value = "cp_oam_task_work_order_record", onInsert = BaseInsertListener.class, onUpdate = BaseUpdateListener.class, mapperGenerateEnable = false)
public class TaskWorkOrderRecord extends BaseEntity implements Serializable {
/**
* 主键
*/
@Id
private String id;
/**
* 任务工单id
*/
private String taskWorkOrderId;
/**
* 记录员工id
*/
private String recordStaffId;
/**
* 记录内容
*/
private String recordText;
/**
* 附件地址
*/
private String attachmentUrl;
}

View File

@ -0,0 +1,14 @@
package com.cpop.oam.business.mapper;
import com.mybatisflex.core.BaseMapper;
import com.cpop.oam.business.entity.Dept;
/**
* 部门表 映射层
*
* @author DB
* @since 2023-09-08
*/
public interface DeptMapper extends BaseMapper<Dept> {
}

View File

@ -0,0 +1,14 @@
package com.cpop.oam.business.mapper;
import com.mybatisflex.core.BaseMapper;
import com.cpop.oam.business.entity.Duty;
/**
* 值班表 映射层
*
* @author DB
* @since 2023-09-14
*/
public interface DutyMapper extends BaseMapper<Duty> {
}

View File

@ -0,0 +1,14 @@
package com.cpop.oam.business.mapper;
import com.mybatisflex.core.BaseMapper;
import com.cpop.oam.business.entity.FinanceReimburse;
/**
* 报销记录表 映射层
*
* @author DB
* @since 2023-09-20
*/
public interface FinanceReimburseMapper extends BaseMapper<FinanceReimburse> {
}

View File

@ -0,0 +1,14 @@
package com.cpop.oam.business.mapper;
import com.mybatisflex.core.BaseMapper;
import com.cpop.oam.business.entity.FinanceReimburseStage;
/**
* 报销阶段表 映射层
*
* @author DB
* @since 2023-09-26
*/
public interface FinanceReimburseStageMapper extends BaseMapper<FinanceReimburseStage> {
}

View File

@ -0,0 +1,14 @@
package com.cpop.oam.business.mapper;
import com.mybatisflex.core.BaseMapper;
import com.cpop.oam.business.entity.FinanceReimburseType;
/**
* 报销类型表 映射层
*
* @author DB
* @since 2023-09-20
*/
public interface FinanceReimburseTypeMapper extends BaseMapper<FinanceReimburseType> {
}

View File

@ -0,0 +1,14 @@
package com.cpop.oam.business.mapper;
import com.mybatisflex.core.BaseMapper;
import com.cpop.oam.business.entity.Menu;
/**
* 系统菜单表 映射层
*
* @author DB
* @since 2023-09-07
*/
public interface MenuMapper extends BaseMapper<Menu> {
}

View File

@ -0,0 +1,14 @@
package com.cpop.oam.business.mapper;
import com.mybatisflex.core.BaseMapper;
import com.cpop.oam.business.entity.Role;
/**
* 系统角色表 映射层
*
* @author DB
* @since 2023-09-08
*/
public interface RoleMapper extends BaseMapper<Role> {
}

View File

@ -0,0 +1,14 @@
package com.cpop.oam.business.mapper;
import com.mybatisflex.core.BaseMapper;
import com.cpop.oam.business.entity.RoleMenu;
/**
* 系统-角色-菜单表 映射层
*
* @author DB
* @since 2023-09-10
*/
public interface RoleMenuMapper extends BaseMapper<RoleMenu> {
}

View File

@ -0,0 +1,14 @@
package com.cpop.oam.business.mapper;
import com.mybatisflex.core.BaseMapper;
import com.cpop.oam.business.entity.Staff;
/**
* 员工表 映射层
*
* @author DB
* @since 2023-09-07
*/
public interface StaffMapper extends BaseMapper<Staff> {
}

View File

@ -0,0 +1,14 @@
package com.cpop.oam.business.mapper;
import com.mybatisflex.core.BaseMapper;
import com.cpop.oam.business.entity.TaskDemand;
/**
* OAM-任务-需求表 映射层
*
* @author DB
* @since 2023-09-18
*/
public interface TaskDemandMapper extends BaseMapper<TaskDemand> {
}

View File

@ -0,0 +1,14 @@
package com.cpop.oam.business.mapper;
import com.mybatisflex.core.BaseMapper;
import com.cpop.oam.business.entity.Task;
/**
* OAM-任务表 映射层
*
* @author DB
* @since 2023-09-15
*/
public interface TaskMapper extends BaseMapper<Task> {
}

View File

@ -0,0 +1,14 @@
package com.cpop.oam.business.mapper;
import com.mybatisflex.core.BaseMapper;
import com.cpop.oam.business.entity.TaskStaffGroup;
/**
* OAM-任务-关联员工任务组表 映射层
*
* @author DB
* @since 2023-09-18
*/
public interface TaskStaffGroupMapper extends BaseMapper<TaskStaffGroup> {
}

View File

@ -0,0 +1,14 @@
package com.cpop.oam.business.mapper;
import com.mybatisflex.core.BaseMapper;
import com.cpop.oam.business.entity.TaskWorkOrder;
/**
* 任务-工单表 映射层
*
* @author DB
* @since 2023-09-18
*/
public interface TaskWorkOrderMapper extends BaseMapper<TaskWorkOrder> {
}

View File

@ -0,0 +1,14 @@
package com.cpop.oam.business.mapper;
import com.mybatisflex.core.BaseMapper;
import com.cpop.oam.business.entity.TaskWorkOrderRecord;
/**
* 任务-工单-记录表 映射层
*
* @author DB
* @since 2023-09-18
*/
public interface TaskWorkOrderRecordMapper extends BaseMapper<TaskWorkOrderRecord> {
}

View File

@ -0,0 +1,46 @@
package com.cpop.oam.business.service;
import com.cpop.oam.business.bo.SysConfigInfoBo;
import com.cpop.oam.business.vo.ConfigInfoVo;
/**
*
*/
public interface CommonService {
/**
* 加载参数缓存数据
*/
void loadingConfigCache();
/**
* @Description: 重置参数缓存数据
* @author DB
* @Date: 2023/6/7 0007 16:29
*/
void resetConfigCache();
/**
* @Description: 清空参数缓存数据
* @author DB
* @Date: 2023/6/7 0007 16:27
*/
void clearConfigCache();
/**
* @Description: 获取系统配置信息
* @return R<OpenPlatformConfigVo>
* @author DB
* @Date: 2023/7/7 0007 16:27
*/
ConfigInfoVo getSysConfigInfo();
/**
* @param bo 请求参数
* @Description: 设置系统配置信息
* @return: R<Void>
* @Author: DB
* @Date: 2023/5/11 15:48
**/
void setSysConfigInfo(SysConfigInfoBo bo);
}

View File

@ -0,0 +1,50 @@
package com.cpop.oam.business.service;
import com.mybatisflex.core.service.IService;
import com.cpop.oam.business.bo.DeptBo;
import com.cpop.oam.business.bo.DeptListBo;
import com.cpop.oam.business.entity.Dept;
import com.cpop.oam.business.vo.DeptVo;
import java.util.List;
/**
* 部门表 服务层
*
* @author DB
* @since 2023-09-08
*/
public interface DeptService extends IService<Dept> {
/**
* @descriptions 查询部门树列表
* @author DB
* @date 2023/09/08 18:25
* @param bo 查询参数
* @return java.util.List<com.jambox.system.business.vo.DeptVo>
*/
List<DeptVo> getDeptTreeList(DeptListBo bo);
/**
* 新增部门
*
* @param bo 请求参数
*/
void insertDept(DeptBo bo);
/**
* @Description: 修改部门
* @param bo 请求参数
* @Author DB
* @Date: 2023/5/9 20:47
*/
void updateDept(DeptBo bo);
/**
* @Description: 删除部门
* @param id 主键
* @Author DB
* @Date: 2023/5/9 20:48
*/
void removeDept(String id);
}

Some files were not shown because too many files have changed in this diff Show More