Commit 91c0c423c09e40005a3c3070e1b99361b6d7af93

Authored by jason
1 parent e969dbe8

修改 code review

yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/workflow/TaskController.java
1 1 package cn.iocoder.yudao.adminserver.modules.bpm.controller.workflow;
2 2  
3   -import cn.hutool.core.io.IoUtil;
4 3 import cn.iocoder.yudao.adminserver.modules.bpm.controller.workflow.vo.*;
5   -import cn.iocoder.yudao.adminserver.modules.bpm.service.workflow.TaskService;
  4 +import cn.iocoder.yudao.adminserver.modules.bpm.service.workflow.BpmTaskService;
6 5 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
7 6 import cn.iocoder.yudao.framework.common.pojo.PageResult;
8 7 import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils;
... ... @@ -25,40 +24,40 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
25 24 public class TaskController {
26 25  
27 26 @Resource
28   - private TaskService taskService;
  27 + private BpmTaskService bpmTaskService;
29 28  
30 29 @GetMapping("/todo/page")
31 30 @ApiOperation("获取待办任务分页")
32 31 public CommonResult<PageResult<TodoTaskRespVO>> getTodoTaskPage(@Valid TodoTaskPageReqVO pageVO) {
33   - return success(taskService.getTodoTaskPage(pageVO));
  32 + return success(bpmTaskService.getTodoTaskPage(pageVO));
34 33 }
35 34  
36 35 @GetMapping("/claim")
37 36 @ApiOperation("签收任务")
38 37 public CommonResult<Boolean> claimTask(@RequestParam("id") String taskId) {
39   - taskService.claimTask(taskId);
  38 + bpmTaskService.claimTask(taskId);
40 39 return success(true);
41 40 }
42 41  
43 42 @PostMapping("/task-steps")
44 43 public CommonResult<TaskHandleVO> getTaskSteps(@RequestBody TaskQueryReqVO taskQuery) {
45   - return success(taskService.getTaskSteps(taskQuery));
  44 + return success(bpmTaskService.getTaskSteps(taskQuery));
46 45 }
47 46  
48 47 @PostMapping("/formKey")
49 48 public CommonResult<TodoTaskRespVO> getTaskFormKey(@RequestBody TaskQueryReqVO taskQuery) {
50   - return success(taskService.getTaskFormKey(taskQuery));
  49 + return success(bpmTaskService.getTaskFormKey(taskQuery));
51 50 }
52 51  
53 52 @PostMapping("/complete")
54 53 public CommonResult<Boolean> complete(@RequestBody TaskReqVO taskReq) {
55   - taskService.completeTask(taskReq);
  54 + bpmTaskService.completeTask(taskReq);
56 55 return success(true);
57 56 }
58 57  
59 58 @GetMapping("/process/history-steps")
60 59 public CommonResult<List<TaskStepVO>> getHistorySteps(@RequestParam("id") String processInstanceId) {
61   - return success(taskService.getHistorySteps(processInstanceId));
  60 + return success(bpmTaskService.getHistorySteps(processInstanceId));
62 61 }
63 62  
64 63 // TODO @Li: 项目里,暂时不使用 path 路径参数,监控等麻烦
... ... @@ -68,7 +67,7 @@ public class TaskController {
68 67 */
69 68 @GetMapping("/process/highlight-img/{id}")
70 69 public void getHighlightImg(@PathVariable("id") String processInstanceId, HttpServletResponse response) throws IOException {
71   - FileResp fileResp = taskService.getHighlightImg(processInstanceId);
  70 + FileResp fileResp = bpmTaskService.getHighlightImg(processInstanceId);
72 71 ServletUtils.writeAttachment(response, fileResp.getFileName(), fileResp.getFileByte());
73 72 }
74 73  
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/convert/workflow/TaskConvert.java
... ... @@ -25,6 +25,10 @@ public interface TaskConvert {
25 25 })
26 26 TodoTaskRespVO convert(Task task, ProcessDefinition definition);
27 27  
  28 + @Mappings(value = {
  29 + @Mapping(source = "assignee", target = "status",qualifiedByName = "convertAssigneeToStatus")
  30 + })
  31 + TodoTaskRespVO convert(Task task);
28 32  
29 33 @Named("convertAssigneeToStatus")
30 34 default Integer convertAssigneeToStatus(String assignee) {
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/enums/oa/OAErrorCodeConstants.java renamed to yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/enums/BpmErrorCodeConstants.java
1   -package cn.iocoder.yudao.adminserver.modules.bpm.enums.oa;
  1 +package cn.iocoder.yudao.adminserver.modules.bpm.enums;
2 2  
3 3 import cn.iocoder.yudao.framework.common.exception.ErrorCode;
4 4  
5   -// TODO @jason:错误码整理下,和其它模块保持一致。包括前缀
6 5 /**
7   - * activiti 系统 错误码枚举类
  6 + * 工作流 错误码枚举类
8 7 *
9   - * 003 activiti
10   - * 001 oa
11   - * activiti 系统,使用 1-003-000-000 段
  8 + * 工作流系统,使用 1-003-000-000 段
12 9 */
13   -public interface OAErrorCodeConstants {
  10 +public interface BpmErrorCodeConstants {
14 11  
  12 + // ========== 通用流程处理 模块 1-003-000-000 ==========
  13 + ErrorCode PROCESS_INSTANCE_NOT_EXISTS = new ErrorCode(1003000001, "流程实例不存在");
  14 + ErrorCode HIGHLIGHT_IMG_ERROR = new ErrorCode(1003000002, "获取高亮流程图异常");
  15 +
  16 +
  17 + // ========== OA 流程模块 1-003-001-000 ==========
15 18 ErrorCode LEAVE_NOT_EXISTS = new ErrorCode(1003001001, "请假申请不存在");
16 19 ErrorCode PM_POST_NOT_EXISTS = new ErrorCode(1003001002, "项目经理岗位未设置");
17 20 ErrorCode DEPART_PM_POST_NOT_EXISTS = new ErrorCode(1003001003, "部门的项目经理不存在");
18 21 ErrorCode BM_POST_NOT_EXISTS = new ErrorCode(1003001004, "部门经理岗位未设置");
19 22 ErrorCode DEPART_BM_POST_NOT_EXISTS = new ErrorCode(1003001005, "部门的部门经理不存在");
20 23 ErrorCode HR_POST_NOT_EXISTS = new ErrorCode(1003001006, "HR岗位未设置");
21   - ErrorCode DAY_LEAVE_ERROR = new ErrorCode(1003001007, "请假天数必须大于0");
  24 + ErrorCode DAY_LEAVE_ERROR = new ErrorCode(1003001007, "请假天数必须>=1");
  25 +
22 26  
23   - ErrorCode PROCESS_INSTANCE_NOT_EXISTS = new ErrorCode(1003001008, "流程实例不存在");
24   - ErrorCode HIGHLIGHT_IMG_ERROR = new ErrorCode(1003001009, "获取高亮流程图异常");
25 27  
26 28 }
... ...
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;
28 28 import javax.annotation.Resource;
29 29 import java.util.*;
30 30  
31   -import static cn.iocoder.yudao.adminserver.modules.bpm.enums.oa.OAErrorCodeConstants.*;
  31 +import static cn.iocoder.yudao.adminserver.modules.bpm.enums.BpmErrorCodeConstants.*;
32 32 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
33 33  
34 34 /**
... ... @@ -164,12 +164,7 @@ public class OALeaveServiceImpl implements OALeaveService {
164 164 throw ServiceExceptionUtil.exception(PM_POST_NOT_EXISTS);
165 165 }
166 166 SysUserDO userDO = sysUserMapper.selectById(id);
167   - Set<Long> postIds = new HashSet<>(8);
168   - postIds.add( pmPostDO.getId());
169   - SysUserBaseVO baseVO = new SysUserBaseVO();
170   - baseVO.setDeptId(userDO.getDeptId())
171   - .setPostIds(postIds);
172   - final List<SysUserDO> pmUsers = sysUserMapper.selectListByBaseVO(baseVO);
  167 + final List<SysUserDO> pmUsers = sysUserMapper.selectListByDepartIdAndPostId(userDO.getDeptId(), pmPostDO.getId());
173 168 if (CollUtil.isEmpty(pmUsers)) {
174 169 throw ServiceExceptionUtil.exception(DEPART_PM_POST_NOT_EXISTS);
175 170 }
... ... @@ -179,13 +174,8 @@ public class OALeaveServiceImpl implements OALeaveService {
179 174 if (Objects.isNull(bmPostDO)) {
180 175 throw ServiceExceptionUtil.exception(BM_POST_NOT_EXISTS);
181 176 }
182   - userDO = sysUserMapper.selectById(id);
183   - postIds = new HashSet<>(8);
184   - postIds.add( bmPostDO.getId());
185   - baseVO = new SysUserBaseVO();
186   - baseVO.setDeptId(userDO.getDeptId())
187   - .setPostIds(postIds);
188   - final List<SysUserDO> bmUsers = sysUserMapper.selectListByBaseVO(baseVO);
  177 +
  178 + final List<SysUserDO> bmUsers = sysUserMapper.selectListByDepartIdAndPostId(userDO.getDeptId(), bmPostDO.getId());
189 179 if (CollUtil.isEmpty(bmUsers)) {
190 180 throw ServiceExceptionUtil.exception(DEPART_BM_POST_NOT_EXISTS);
191 181 }
... ... @@ -194,13 +184,7 @@ public class OALeaveServiceImpl implements OALeaveService {
194 184 if (Objects.isNull(hrPostDO)) {
195 185 throw ServiceExceptionUtil.exception(HR_POST_NOT_EXISTS);
196 186 }
197   - userDO = sysUserMapper.selectById(id);
198   - postIds = new HashSet<>(8);
199   - postIds.add( hrPostDO.getId());
200   - baseVO = new SysUserBaseVO();
201   - baseVO.setDeptId(userDO.getDeptId())
202   - .setPostIds(postIds);
203   - final List<SysUserDO> hrUsers = sysUserMapper.selectListByBaseVO(baseVO);
  187 + final List<SysUserDO> hrUsers = sysUserMapper.selectListByDepartIdAndPostId(userDO.getDeptId(), hrPostDO.getId());
204 188 if (CollUtil.isEmpty(hrUsers)) {
205 189 throw ServiceExceptionUtil.exception(DEPART_BM_POST_NOT_EXISTS);
206 190 }
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/workflow/TaskService.java renamed to 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;
6 6 import javax.servlet.http.HttpServletResponse;
7 7 import java.util.List;
8 8  
9   -// TODO @jason:前缀
10 9 /**
11   - * 用户任务服务接口
  10 + * 工作流用户任务服务接口
12 11 */
13   -public interface TaskService {
  12 +public interface BpmTaskService {
14 13  
15 14  
16 15 /**
... ... @@ -25,10 +24,11 @@ public interface TaskService {
25 24 */
26 25 void claimTask(String taskId);
27 26  
28   - // TODO @jason:可以把实现方法的注释,统一写到接口里
  27 +
29 28 /**
30   - * 办理完成用户任务
31   - * @param taskReq 任务参数, 包含任务的参数,和 评论
  29 + * 工作流,完成 userTask, 完成用户任务 一般传入参数 1。是否同意(variables). 2. 评论(comment)
  30 + * variables 变量名 和 评论 由前台传入
  31 + * @param taskReq 任务参数
32 32 */
33 33 void completeTask(TaskReqVO taskReq);
34 34  
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/workflow/impl/TaskServiceImpl.java renamed to 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;
4 4 import cn.hutool.core.io.IoUtil;
5 5 import cn.iocoder.yudao.adminserver.modules.bpm.controller.workflow.vo.*;
6 6 import cn.iocoder.yudao.adminserver.modules.bpm.convert.workflow.TaskConvert;
7   -import cn.iocoder.yudao.adminserver.modules.bpm.service.workflow.TaskService;
  7 +import cn.iocoder.yudao.adminserver.modules.bpm.service.workflow.BpmTaskService;
8 8 import cn.iocoder.yudao.framework.common.pojo.PageResult;
9 9 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
10 10 import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
... ... @@ -41,13 +41,13 @@ import java.util.Map;
41 41 import java.util.Optional;
42 42 import java.util.stream.Collectors;
43 43  
44   -import static cn.iocoder.yudao.adminserver.modules.bpm.enums.oa.OAErrorCodeConstants.HIGHLIGHT_IMG_ERROR;
45   -import static cn.iocoder.yudao.adminserver.modules.bpm.enums.oa.OAErrorCodeConstants.PROCESS_INSTANCE_NOT_EXISTS;
  44 +import static cn.iocoder.yudao.adminserver.modules.bpm.enums.BpmErrorCodeConstants.HIGHLIGHT_IMG_ERROR;
  45 +import static cn.iocoder.yudao.adminserver.modules.bpm.enums.BpmErrorCodeConstants.PROCESS_INSTANCE_NOT_EXISTS;
46 46 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
47 47  
48 48 @Slf4j
49 49 @Service
50   -public class TaskServiceImpl implements TaskService {
  50 +public class BpmTaskServiceImpl implements BpmTaskService {
51 51  
52 52 @Resource
53 53 private TaskRuntime taskRuntime;
... ... @@ -76,7 +76,6 @@ public class TaskServiceImpl implements TaskService {
76 76 List<Task> tasks = pageTasks.getContent();
77 77 final List<TodoTaskRespVO> respVOList = tasks.stream().map(task -> {
78 78 ProcessDefinition definition = repositoryService.getProcessDefinition(task.getProcessDefinitionId());
79   - definition.getId();
80 79 return TaskConvert.INSTANCE.convert(task, definition);
81 80 }).collect(Collectors.toList());
82 81 return new PageResult<>(respVOList, (long)totalItems);
... ... @@ -92,11 +91,7 @@ public class TaskServiceImpl implements TaskService {
92 91 }
93 92  
94 93  
95   - /**
96   - * 工作流,完成 userTask, 完成用户任务 一般传入参数 1。是否同意(variables). 2. 评论(comment)
97   - * variables 变量名 和 评论 由前台传入
98   - * @param taskReq 任务参数
99   - */
  94 +
100 95 @Override
101 96 @Transactional
102 97 public void completeTask(TaskReqVO taskReq) {
... ... @@ -166,13 +161,7 @@ public class TaskServiceImpl implements TaskService {
166 161 @Override
167 162 public TodoTaskRespVO getTaskFormKey(TaskQueryReqVO taskQuery) {
168 163 final Task task = taskRuntime.task(taskQuery.getTaskId());
169   - // 转换结果 TODO @jason:放到 convert 类里
170   - TodoTaskRespVO respVO = new TodoTaskRespVO();
171   - respVO.setFormKey(task.getFormKey());
172   - respVO.setBusinessKey(task.getBusinessKey());
173   - respVO.setId(task.getId());
174   - respVO.setProcessInstanceId(task.getProcessInstanceId());
175   - return respVO;
  164 + return TaskConvert.INSTANCE.convert(task);
176 165 }
177 166  
178 167 @Override
... ...
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;
15 15 import java.util.Collection;
16 16 import java.util.List;
17 17 import java.util.Optional;
  18 +import java.util.Set;
18 19  
19 20 @Mapper
20 21 public interface SysUserMapper extends BaseMapperX<SysUserDO> {
... ... @@ -56,13 +57,12 @@ public interface SysUserMapper extends BaseMapperX&lt;SysUserDO&gt; {
56 57 return selectList(new QueryWrapperX<SysUserDO>().like("username", username));
57 58 }
58 59  
59   - // TODO jason:变量平铺比较好
60   - default List<SysUserDO> selectListByBaseVO(SysUserBaseVO reqVO) {
61   - return selectList(new QueryWrapperX<SysUserDO>().likeIfPresent("username", reqVO.getUsername())
62   - .likeIfPresent("nickname", reqVO.getNickname())
  60 +
  61 + default List<SysUserDO> selectListByDepartIdAndPostId(Long departId, Long postId) {
  62 + return selectList(new QueryWrapperX<SysUserDO>()
63 63 .eq("status", CommonStatusEnum.ENABLE.getStatus())
64   - .eq("dept_id", reqVO.getDeptId())
65   - .likeIfPresent("post_ids", Optional.ofNullable(reqVO.getPostIds()).map(t -> Strings.join(t, ',')).orElse("")));
  64 + .eq("dept_id", departId)
  65 + .likeIfPresent("post_ids", Optional.ofNullable(postId).map(t -> String.valueOf(postId)).orElse("")));
66 66 }
67 67  
68 68 }
... ...
yudao-admin-server/src/main/resources/application.yaml
... ... @@ -73,5 +73,6 @@ yudao:
73 73 constants-class-list:
74 74 - cn.iocoder.yudao.adminserver.modules.infra.enums.InfErrorCodeConstants
75 75 - cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants
  76 + - cn.iocoder.yudao.adminserver.modules.bpm.enums.BpmErrorCodeConstants
76 77  
77 78 debug: false
... ...