Commit b4150cafa7d75d3d391d2056b20feaa3985a0017

Authored by kyle
1 parent 97d6aab4

refactor: 调整代码分装层次

yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/BpmProcessInstanceCopyController.java
1 package cn.iocoder.yudao.module.bpm.controller.admin.task; 1 package cn.iocoder.yudao.module.bpm.controller.admin.task;
2 2
  3 +import cn.hutool.core.collection.CollUtil;
3 import cn.iocoder.yudao.framework.common.pojo.CommonResult; 4 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
4 import cn.iocoder.yudao.framework.common.pojo.PageResult; 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceCopyCreateReqVO; 6 import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceCopyCreateReqVO;
6 import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceCopyMyPageReqVO; 7 import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceCopyMyPageReqVO;
7 import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceCopyPageItemRespVO; 8 import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceCopyPageItemRespVO;
  9 +import cn.iocoder.yudao.module.bpm.convert.cc.BpmProcessInstanceCopyConvert;
  10 +import cn.iocoder.yudao.module.bpm.dal.dataobject.cc.BpmProcessInstanceCopyDO;
  11 +import cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceService;
  12 +import cn.iocoder.yudao.module.bpm.service.task.BpmTaskService;
8 import cn.iocoder.yudao.module.bpm.service.task.cc.BpmProcessInstanceCopyService; 13 import cn.iocoder.yudao.module.bpm.service.task.cc.BpmProcessInstanceCopyService;
  14 +import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
  15 +import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
9 import io.swagger.v3.oas.annotations.Operation; 16 import io.swagger.v3.oas.annotations.Operation;
10 import io.swagger.v3.oas.annotations.tags.Tag; 17 import io.swagger.v3.oas.annotations.tags.Tag;
11 import jakarta.annotation.Resource; 18 import jakarta.annotation.Resource;
12 import jakarta.validation.Valid; 19 import jakarta.validation.Valid;
  20 +import org.springframework.context.annotation.Lazy;
13 import org.springframework.security.access.prepost.PreAuthorize; 21 import org.springframework.security.access.prepost.PreAuthorize;
14 import org.springframework.validation.annotation.Validated; 22 import org.springframework.validation.annotation.Validated;
15 import org.springframework.web.bind.annotation.*; 23 import org.springframework.web.bind.annotation.*;
16 24
  25 +import java.util.HashSet;
  26 +import java.util.Map;
  27 +import java.util.Set;
  28 +import java.util.stream.Collectors;
  29 +
17 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; 30 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
  31 +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
18 import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; 32 import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
19 33
20 @Tag(name = "管理后台 - 流程实例抄送") 34 @Tag(name = "管理后台 - 流程实例抄送")
@@ -25,6 +39,13 @@ public class BpmProcessInstanceCopyController { @@ -25,6 +39,13 @@ public class BpmProcessInstanceCopyController {
25 39
26 @Resource 40 @Resource
27 private BpmProcessInstanceCopyService processInstanceCopyService; 41 private BpmProcessInstanceCopyService processInstanceCopyService;
  42 + @Resource
  43 + private BpmProcessInstanceService bpmProcessInstanceService;
  44 + @Resource
  45 + private AdminUserApi adminUserApi;
  46 +
  47 + @Resource
  48 + private BpmTaskService bpmTaskService;
28 49
29 @PostMapping("/create") 50 @PostMapping("/create")
30 @Operation(summary = "抄送流程") 51 @Operation(summary = "抄送流程")
@@ -38,7 +59,28 @@ public class BpmProcessInstanceCopyController { @@ -38,7 +59,28 @@ public class BpmProcessInstanceCopyController {
38 @PreAuthorize("@ss.hasPermission('bpm:process-instance-cc:query')") 59 @PreAuthorize("@ss.hasPermission('bpm:process-instance-cc:query')")
39 public CommonResult<PageResult<BpmProcessInstanceCopyPageItemRespVO>> getProcessInstanceCCPage( 60 public CommonResult<PageResult<BpmProcessInstanceCopyPageItemRespVO>> getProcessInstanceCCPage(
40 @Valid BpmProcessInstanceCopyMyPageReqVO pageReqVO) { 61 @Valid BpmProcessInstanceCopyMyPageReqVO pageReqVO) {
41 - return success(processInstanceCopyService.getMyProcessInstanceCopyPage(getLoginUserId(), pageReqVO)); 62 + return success(getMyProcessInstanceCopyPage(getLoginUserId(), pageReqVO));
42 } 63 }
43 64
  65 + public PageResult<BpmProcessInstanceCopyPageItemRespVO> getMyProcessInstanceCopyPage(Long loginUserId, BpmProcessInstanceCopyMyPageReqVO pageReqVO) {
  66 + PageResult<BpmProcessInstanceCopyDO> pageResult = processInstanceCopyService.getMyProcessInstanceCopyPage(loginUserId, pageReqVO);
  67 + if (CollUtil.isEmpty(pageResult.getList())) {
  68 + return new PageResult<>(pageResult.getTotal());
  69 + }
  70 +
  71 + Map<String, String> taskNameByTaskIds = bpmTaskService.getTaskNameByTaskIds(convertSet(pageResult.getList(), BpmProcessInstanceCopyDO::getTaskId));
  72 + Map<String, String> processInstanceNameByProcessInstanceIds = bpmTaskService.getProcessInstanceNameByProcessInstanceIds(convertSet(pageResult.getList(), BpmProcessInstanceCopyDO::getProcessInstanceId));
  73 +
  74 + Set<Long/* userId */> userIds = new HashSet<>();
  75 + for (BpmProcessInstanceCopyDO doItem : pageResult.getList()) {
  76 + userIds.add(doItem.getStartUserId());
  77 + Long userId = Long.valueOf(doItem.getCreator());
  78 + userIds.add(userId);
  79 + }
  80 + Map<Long, String> userMap = adminUserApi.getUserList(userIds).stream().collect(Collectors.toMap(
  81 + AdminUserRespDTO::getId, AdminUserRespDTO::getNickname));
  82 +
  83 + // 转换返回
  84 + return BpmProcessInstanceCopyConvert.INSTANCE.convertPage(pageResult, taskNameByTaskIds, processInstanceNameByProcessInstanceIds, userMap);
  85 + }
44 } 86 }
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/cc/BpmProcessInstanceCopyService.java
@@ -4,6 +4,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; @@ -4,6 +4,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceCopyCreateReqVO; 4 import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceCopyCreateReqVO;
5 import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceCopyMyPageReqVO; 5 import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceCopyMyPageReqVO;
6 import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceCopyPageItemRespVO; 6 import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceCopyPageItemRespVO;
  7 +import cn.iocoder.yudao.module.bpm.dal.dataobject.cc.BpmProcessInstanceCopyDO;
7 import cn.iocoder.yudao.module.bpm.service.candidate.BpmCandidateSourceInfo; 8 import cn.iocoder.yudao.module.bpm.service.candidate.BpmCandidateSourceInfo;
8 9
9 /** 10 /**
@@ -35,6 +36,6 @@ public interface BpmProcessInstanceCopyService { @@ -35,6 +36,6 @@ public interface BpmProcessInstanceCopyService {
35 * @param pageReqVO 分页请求 36 * @param pageReqVO 分页请求
36 * @return 抄送的分页结果 37 * @return 抄送的分页结果
37 */ 38 */
38 - PageResult<BpmProcessInstanceCopyPageItemRespVO> getMyProcessInstanceCopyPage(Long loginUserId,  
39 - BpmProcessInstanceCopyMyPageReqVO pageReqVO); 39 + PageResult<BpmProcessInstanceCopyDO> getMyProcessInstanceCopyPage(Long loginUserId,
  40 + BpmProcessInstanceCopyMyPageReqVO pageReqVO);
40 } 41 }
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/cc/BpmProcessInstanceCopyServiceImpl.java
@@ -62,12 +62,6 @@ public class BpmProcessInstanceCopyServiceImpl implements BpmProcessInstanceCopy @@ -62,12 +62,6 @@ public class BpmProcessInstanceCopyServiceImpl implements BpmProcessInstanceCopy
62 @Lazy 62 @Lazy
63 private BpmTaskService bpmTaskService; 63 private BpmTaskService bpmTaskService;
64 64
65 - @Resource  
66 - @Lazy // 解决循环依赖  
67 - private BpmProcessInstanceService bpmProcessInstanceService;  
68 - @Resource  
69 - private AdminUserApi adminUserApi;  
70 -  
71 @Override 65 @Override
72 public boolean makeCopy(BpmCandidateSourceInfo sourceInfo) { 66 public boolean makeCopy(BpmCandidateSourceInfo sourceInfo) {
73 if (null == sourceInfo) { 67 if (null == sourceInfo) {
@@ -163,28 +157,9 @@ public class BpmProcessInstanceCopyServiceImpl implements BpmProcessInstanceCopy @@ -163,28 +157,9 @@ public class BpmProcessInstanceCopyServiceImpl implements BpmProcessInstanceCopy
163 } 157 }
164 158
165 @Override 159 @Override
166 - public PageResult<BpmProcessInstanceCopyPageItemRespVO> getMyProcessInstanceCopyPage(Long loginUserId, BpmProcessInstanceCopyMyPageReqVO pageReqVO) { 160 + public PageResult<BpmProcessInstanceCopyDO> getMyProcessInstanceCopyPage(Long loginUserId, BpmProcessInstanceCopyMyPageReqVO pageReqVO) {
167 // 通过 BpmProcessInstanceExtDO 表,先查询到对应的分页 161 // 通过 BpmProcessInstanceExtDO 表,先查询到对应的分页
168 - // TODO @kyle:一般读逻辑,Service 返回 PageResult<BpmProcessInstanceCopyDO> 即可。关联数据的查询和拼接,交给 Controller;目的是:保证 Service 聚焦写逻辑,清晰简洁;  
169 - PageResult<BpmProcessInstanceCopyDO> pageResult = processInstanceCopyMapper.selectPage(loginUserId, pageReqVO);  
170 - if (CollUtil.isEmpty(pageResult.getList())) {  
171 - return new PageResult<>(pageResult.getTotal());  
172 - }  
173 -  
174 - Map<String, String> taskNameByTaskIds = bpmTaskService.getTaskNameByTaskIds(convertSet(pageResult.getList(), BpmProcessInstanceCopyDO::getTaskId));  
175 - Map<String, String> processInstanceNameByProcessInstanceIds = bpmTaskService.getProcessInstanceNameByProcessInstanceIds(convertSet(pageResult.getList(), BpmProcessInstanceCopyDO::getProcessInstanceId));  
176 -  
177 - Set<Long/* userId */> userIds = new HashSet<>();  
178 - for (BpmProcessInstanceCopyDO doItem : pageResult.getList()) {  
179 - userIds.add(doItem.getStartUserId());  
180 - Long userId = Long.valueOf(doItem.getCreator());  
181 - userIds.add(userId);  
182 - }  
183 - Map<Long, String> userMap = adminUserApi.getUserList(userIds).stream().collect(Collectors.toMap(  
184 - AdminUserRespDTO::getId, AdminUserRespDTO::getNickname));  
185 -  
186 - // 转换返回  
187 - return BpmProcessInstanceCopyConvert.INSTANCE.convertPage(pageResult, taskNameByTaskIds, processInstanceNameByProcessInstanceIds, userMap); 162 + return processInstanceCopyMapper.selectPage(loginUserId, pageReqVO);
188 } 163 }
189 164
190 } 165 }