From 91c0c423c09e40005a3c3070e1b99361b6d7af93 Mon Sep 17 00:00:00 2001 From: jason <2667446@qq.com> Date: Fri, 12 Nov 2021 20:37:27 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=20code=20review?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/workflow/TaskController.java | 19 +++++++------- .../bpm/convert/workflow/TaskConvert.java | 4 +++ ...stants.java => BpmErrorCodeConstants.java} | 22 +++++++++------- .../service/oa/impl/OALeaveServiceImpl.java | 26 ++++--------------- .../{TaskService.java => BpmTaskService.java} | 12 ++++----- ...rviceImpl.java => BpmTaskServiceImpl.java} | 23 +++++----------- .../system/dal/mysql/user/SysUserMapper.java | 12 ++++----- .../src/main/resources/application.yaml | 1 + 8 files changed, 49 insertions(+), 70 deletions(-) rename yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/enums/{oa/OAErrorCodeConstants.java => BpmErrorCodeConstants.java} (65%) rename yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/workflow/{TaskService.java => BpmTaskService.java} (83%) rename yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/workflow/impl/{TaskServiceImpl.java => BpmTaskServiceImpl.java} (93%) diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/workflow/TaskController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/workflow/TaskController.java index a379332e..45ef6c9c 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/workflow/TaskController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/workflow/TaskController.java @@ -1,8 +1,7 @@ package cn.iocoder.yudao.adminserver.modules.bpm.controller.workflow; -import cn.hutool.core.io.IoUtil; import cn.iocoder.yudao.adminserver.modules.bpm.controller.workflow.vo.*; -import cn.iocoder.yudao.adminserver.modules.bpm.service.workflow.TaskService; +import cn.iocoder.yudao.adminserver.modules.bpm.service.workflow.BpmTaskService; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils; @@ -25,40 +24,40 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; public class TaskController { @Resource - private TaskService taskService; + private BpmTaskService bpmTaskService; @GetMapping("/todo/page") @ApiOperation("获取待办任务分页") public CommonResult> getTodoTaskPage(@Valid TodoTaskPageReqVO pageVO) { - return success(taskService.getTodoTaskPage(pageVO)); + return success(bpmTaskService.getTodoTaskPage(pageVO)); } @GetMapping("/claim") @ApiOperation("签收任务") public CommonResult claimTask(@RequestParam("id") String taskId) { - taskService.claimTask(taskId); + bpmTaskService.claimTask(taskId); return success(true); } @PostMapping("/task-steps") public CommonResult getTaskSteps(@RequestBody TaskQueryReqVO taskQuery) { - return success(taskService.getTaskSteps(taskQuery)); + return success(bpmTaskService.getTaskSteps(taskQuery)); } @PostMapping("/formKey") public CommonResult getTaskFormKey(@RequestBody TaskQueryReqVO taskQuery) { - return success(taskService.getTaskFormKey(taskQuery)); + return success(bpmTaskService.getTaskFormKey(taskQuery)); } @PostMapping("/complete") public CommonResult complete(@RequestBody TaskReqVO taskReq) { - taskService.completeTask(taskReq); + bpmTaskService.completeTask(taskReq); return success(true); } @GetMapping("/process/history-steps") public CommonResult> getHistorySteps(@RequestParam("id") String processInstanceId) { - return success(taskService.getHistorySteps(processInstanceId)); + return success(bpmTaskService.getHistorySteps(processInstanceId)); } // TODO @Li: 项目里,暂时不使用 path 路径参数,监控等麻烦 @@ -68,7 +67,7 @@ public class TaskController { */ @GetMapping("/process/highlight-img/{id}") public void getHighlightImg(@PathVariable("id") String processInstanceId, HttpServletResponse response) throws IOException { - FileResp fileResp = taskService.getHighlightImg(processInstanceId); + FileResp fileResp = bpmTaskService.getHighlightImg(processInstanceId); ServletUtils.writeAttachment(response, fileResp.getFileName(), fileResp.getFileByte()); } diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/convert/workflow/TaskConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/convert/workflow/TaskConvert.java index 8d2bd639..bcbb1372 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/convert/workflow/TaskConvert.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/convert/workflow/TaskConvert.java @@ -25,6 +25,10 @@ public interface TaskConvert { }) TodoTaskRespVO convert(Task task, ProcessDefinition definition); + @Mappings(value = { + @Mapping(source = "assignee", target = "status",qualifiedByName = "convertAssigneeToStatus") + }) + TodoTaskRespVO convert(Task task); @Named("convertAssigneeToStatus") default Integer convertAssigneeToStatus(String assignee) { diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/enums/oa/OAErrorCodeConstants.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/enums/BpmErrorCodeConstants.java similarity index 65% rename from yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/enums/oa/OAErrorCodeConstants.java rename to yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/enums/BpmErrorCodeConstants.java index 6790edd5..8891abda 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/enums/oa/OAErrorCodeConstants.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/enums/BpmErrorCodeConstants.java @@ -1,26 +1,28 @@ -package cn.iocoder.yudao.adminserver.modules.bpm.enums.oa; +package cn.iocoder.yudao.adminserver.modules.bpm.enums; import cn.iocoder.yudao.framework.common.exception.ErrorCode; -// TODO @jason:错误码整理下,和其它模块保持一致。包括前缀 /** - * activiti 系统 错误码枚举类 + * 工作流 错误码枚举类 * - * 003 activiti - * 001 oa - * activiti 系统,使用 1-003-000-000 段 + * 工作流系统,使用 1-003-000-000 段 */ -public interface OAErrorCodeConstants { +public interface BpmErrorCodeConstants { + // ========== 通用流程处理 模块 1-003-000-000 ========== + ErrorCode PROCESS_INSTANCE_NOT_EXISTS = new ErrorCode(1003000001, "流程实例不存在"); + ErrorCode HIGHLIGHT_IMG_ERROR = new ErrorCode(1003000002, "获取高亮流程图异常"); + + + // ========== OA 流程模块 1-003-001-000 ========== ErrorCode LEAVE_NOT_EXISTS = new ErrorCode(1003001001, "请假申请不存在"); ErrorCode PM_POST_NOT_EXISTS = new ErrorCode(1003001002, "项目经理岗位未设置"); ErrorCode DEPART_PM_POST_NOT_EXISTS = new ErrorCode(1003001003, "部门的项目经理不存在"); ErrorCode BM_POST_NOT_EXISTS = new ErrorCode(1003001004, "部门经理岗位未设置"); ErrorCode DEPART_BM_POST_NOT_EXISTS = new ErrorCode(1003001005, "部门的部门经理不存在"); ErrorCode HR_POST_NOT_EXISTS = new ErrorCode(1003001006, "HR岗位未设置"); - ErrorCode DAY_LEAVE_ERROR = new ErrorCode(1003001007, "请假天数必须大于0"); + ErrorCode DAY_LEAVE_ERROR = new ErrorCode(1003001007, "请假天数必须>=1"); + - ErrorCode PROCESS_INSTANCE_NOT_EXISTS = new ErrorCode(1003001008, "流程实例不存在"); - ErrorCode HIGHLIGHT_IMG_ERROR = new ErrorCode(1003001009, "获取高亮流程图异常"); } diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/oa/impl/OALeaveServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/oa/impl/OALeaveServiceImpl.java index 9ccc281d..243b8f81 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/oa/impl/OALeaveServiceImpl.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/oa/impl/OALeaveServiceImpl.java @@ -28,7 +28,7 @@ import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; import java.util.*; -import static cn.iocoder.yudao.adminserver.modules.bpm.enums.oa.OAErrorCodeConstants.*; +import static cn.iocoder.yudao.adminserver.modules.bpm.enums.BpmErrorCodeConstants.*; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; /** @@ -164,12 +164,7 @@ public class OALeaveServiceImpl implements OALeaveService { throw ServiceExceptionUtil.exception(PM_POST_NOT_EXISTS); } SysUserDO userDO = sysUserMapper.selectById(id); - Set postIds = new HashSet<>(8); - postIds.add( pmPostDO.getId()); - SysUserBaseVO baseVO = new SysUserBaseVO(); - baseVO.setDeptId(userDO.getDeptId()) - .setPostIds(postIds); - final List pmUsers = sysUserMapper.selectListByBaseVO(baseVO); + final List pmUsers = sysUserMapper.selectListByDepartIdAndPostId(userDO.getDeptId(), pmPostDO.getId()); if (CollUtil.isEmpty(pmUsers)) { throw ServiceExceptionUtil.exception(DEPART_PM_POST_NOT_EXISTS); } @@ -179,13 +174,8 @@ public class OALeaveServiceImpl implements OALeaveService { if (Objects.isNull(bmPostDO)) { throw ServiceExceptionUtil.exception(BM_POST_NOT_EXISTS); } - userDO = sysUserMapper.selectById(id); - postIds = new HashSet<>(8); - postIds.add( bmPostDO.getId()); - baseVO = new SysUserBaseVO(); - baseVO.setDeptId(userDO.getDeptId()) - .setPostIds(postIds); - final List bmUsers = sysUserMapper.selectListByBaseVO(baseVO); + + final List bmUsers = sysUserMapper.selectListByDepartIdAndPostId(userDO.getDeptId(), bmPostDO.getId()); if (CollUtil.isEmpty(bmUsers)) { throw ServiceExceptionUtil.exception(DEPART_BM_POST_NOT_EXISTS); } @@ -194,13 +184,7 @@ public class OALeaveServiceImpl implements OALeaveService { if (Objects.isNull(hrPostDO)) { throw ServiceExceptionUtil.exception(HR_POST_NOT_EXISTS); } - userDO = sysUserMapper.selectById(id); - postIds = new HashSet<>(8); - postIds.add( hrPostDO.getId()); - baseVO = new SysUserBaseVO(); - baseVO.setDeptId(userDO.getDeptId()) - .setPostIds(postIds); - final List hrUsers = sysUserMapper.selectListByBaseVO(baseVO); + final List hrUsers = sysUserMapper.selectListByDepartIdAndPostId(userDO.getDeptId(), hrPostDO.getId()); if (CollUtil.isEmpty(hrUsers)) { throw ServiceExceptionUtil.exception(DEPART_BM_POST_NOT_EXISTS); } diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/workflow/TaskService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/workflow/BpmTaskService.java similarity index 83% rename from yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/workflow/TaskService.java rename to yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/workflow/BpmTaskService.java index 6d131d18..b13db067 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/workflow/TaskService.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/workflow/BpmTaskService.java @@ -6,11 +6,10 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; import javax.servlet.http.HttpServletResponse; import java.util.List; -// TODO @jason:前缀 /** - * 用户任务服务接口 + * 工作流用户任务服务接口 */ -public interface TaskService { +public interface BpmTaskService { /** @@ -25,10 +24,11 @@ public interface TaskService { */ void claimTask(String taskId); - // TODO @jason:可以把实现方法的注释,统一写到接口里 + /** - * 办理完成用户任务 - * @param taskReq 任务参数, 包含任务的参数,和 评论 + * 工作流,完成 userTask, 完成用户任务 一般传入参数 1。是否同意(variables). 2. 评论(comment) + * variables 变量名 和 评论 由前台传入 + * @param taskReq 任务参数 */ void completeTask(TaskReqVO taskReq); diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/workflow/impl/TaskServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/workflow/impl/BpmTaskServiceImpl.java similarity index 93% rename from yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/workflow/impl/TaskServiceImpl.java rename to yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/workflow/impl/BpmTaskServiceImpl.java index ac10c45c..973f929f 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/workflow/impl/TaskServiceImpl.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/workflow/impl/BpmTaskServiceImpl.java @@ -4,7 +4,7 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.io.IoUtil; import cn.iocoder.yudao.adminserver.modules.bpm.controller.workflow.vo.*; import cn.iocoder.yudao.adminserver.modules.bpm.convert.workflow.TaskConvert; -import cn.iocoder.yudao.adminserver.modules.bpm.service.workflow.TaskService; +import cn.iocoder.yudao.adminserver.modules.bpm.service.workflow.BpmTaskService; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; @@ -41,13 +41,13 @@ import java.util.Map; import java.util.Optional; import java.util.stream.Collectors; -import static cn.iocoder.yudao.adminserver.modules.bpm.enums.oa.OAErrorCodeConstants.HIGHLIGHT_IMG_ERROR; -import static cn.iocoder.yudao.adminserver.modules.bpm.enums.oa.OAErrorCodeConstants.PROCESS_INSTANCE_NOT_EXISTS; +import static cn.iocoder.yudao.adminserver.modules.bpm.enums.BpmErrorCodeConstants.HIGHLIGHT_IMG_ERROR; +import static cn.iocoder.yudao.adminserver.modules.bpm.enums.BpmErrorCodeConstants.PROCESS_INSTANCE_NOT_EXISTS; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; @Slf4j @Service -public class TaskServiceImpl implements TaskService { +public class BpmTaskServiceImpl implements BpmTaskService { @Resource private TaskRuntime taskRuntime; @@ -76,7 +76,6 @@ public class TaskServiceImpl implements TaskService { List tasks = pageTasks.getContent(); final List respVOList = tasks.stream().map(task -> { ProcessDefinition definition = repositoryService.getProcessDefinition(task.getProcessDefinitionId()); - definition.getId(); return TaskConvert.INSTANCE.convert(task, definition); }).collect(Collectors.toList()); return new PageResult<>(respVOList, (long)totalItems); @@ -92,11 +91,7 @@ public class TaskServiceImpl implements TaskService { } - /** - * 工作流,完成 userTask, 完成用户任务 一般传入参数 1。是否同意(variables). 2. 评论(comment) - * variables 变量名 和 评论 由前台传入 - * @param taskReq 任务参数 - */ + @Override @Transactional public void completeTask(TaskReqVO taskReq) { @@ -166,13 +161,7 @@ public class TaskServiceImpl implements TaskService { @Override public TodoTaskRespVO getTaskFormKey(TaskQueryReqVO taskQuery) { final Task task = taskRuntime.task(taskQuery.getTaskId()); - // 转换结果 TODO @jason:放到 convert 类里 - TodoTaskRespVO respVO = new TodoTaskRespVO(); - respVO.setFormKey(task.getFormKey()); - respVO.setBusinessKey(task.getBusinessKey()); - respVO.setId(task.getId()); - respVO.setProcessInstanceId(task.getProcessInstanceId()); - return respVO; + return TaskConvert.INSTANCE.convert(task); } @Override diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/user/SysUserMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/user/SysUserMapper.java index 85f7b5fa..ee5969ae 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/user/SysUserMapper.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/user/SysUserMapper.java @@ -15,6 +15,7 @@ import org.apache.logging.log4j.util.Strings; import java.util.Collection; import java.util.List; import java.util.Optional; +import java.util.Set; @Mapper public interface SysUserMapper extends BaseMapperX { @@ -56,13 +57,12 @@ public interface SysUserMapper extends BaseMapperX { return selectList(new QueryWrapperX().like("username", username)); } - // TODO jason:变量平铺比较好 - default List selectListByBaseVO(SysUserBaseVO reqVO) { - return selectList(new QueryWrapperX().likeIfPresent("username", reqVO.getUsername()) - .likeIfPresent("nickname", reqVO.getNickname()) + + default List selectListByDepartIdAndPostId(Long departId, Long postId) { + return selectList(new QueryWrapperX() .eq("status", CommonStatusEnum.ENABLE.getStatus()) - .eq("dept_id", reqVO.getDeptId()) - .likeIfPresent("post_ids", Optional.ofNullable(reqVO.getPostIds()).map(t -> Strings.join(t, ',')).orElse(""))); + .eq("dept_id", departId) + .likeIfPresent("post_ids", Optional.ofNullable(postId).map(t -> String.valueOf(postId)).orElse(""))); } } diff --git a/yudao-admin-server/src/main/resources/application.yaml b/yudao-admin-server/src/main/resources/application.yaml index 8674452c..39a2e9f6 100644 --- a/yudao-admin-server/src/main/resources/application.yaml +++ b/yudao-admin-server/src/main/resources/application.yaml @@ -73,5 +73,6 @@ yudao: constants-class-list: - cn.iocoder.yudao.adminserver.modules.infra.enums.InfErrorCodeConstants - cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants + - cn.iocoder.yudao.adminserver.modules.bpm.enums.BpmErrorCodeConstants debug: false -- GitLab