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 1 package cn.iocoder.yudao.module.bpm.controller.admin.task;
2 2  
  3 +import cn.hutool.core.collection.CollUtil;
3 4 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
4 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 6 import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceCopyCreateReqVO;
6 7 import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceCopyMyPageReqVO;
7 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 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 16 import io.swagger.v3.oas.annotations.Operation;
10 17 import io.swagger.v3.oas.annotations.tags.Tag;
11 18 import jakarta.annotation.Resource;
12 19 import jakarta.validation.Valid;
  20 +import org.springframework.context.annotation.Lazy;
13 21 import org.springframework.security.access.prepost.PreAuthorize;
14 22 import org.springframework.validation.annotation.Validated;
15 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 30 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
  31 +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
18 32 import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
19 33  
20 34 @Tag(name = "管理后台 - 流程实例抄送")
... ... @@ -25,6 +39,13 @@ public class BpmProcessInstanceCopyController {
25 39  
26 40 @Resource
27 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 50 @PostMapping("/create")
30 51 @Operation(summary = "抄送流程")
... ... @@ -38,7 +59,28 @@ public class BpmProcessInstanceCopyController {
38 59 @PreAuthorize("@ss.hasPermission('bpm:process-instance-cc:query')")
39 60 public CommonResult<PageResult<BpmProcessInstanceCopyPageItemRespVO>> getProcessInstanceCCPage(
40 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 4 import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceCopyCreateReqVO;
5 5 import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceCopyMyPageReqVO;
6 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 8 import cn.iocoder.yudao.module.bpm.service.candidate.BpmCandidateSourceInfo;
8 9  
9 10 /**
... ... @@ -35,6 +36,6 @@ public interface BpmProcessInstanceCopyService {
35 36 * @param pageReqVO 分页请求
36 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 62 @Lazy
63 63 private BpmTaskService bpmTaskService;
64 64  
65   - @Resource
66   - @Lazy // 解决循环依赖
67   - private BpmProcessInstanceService bpmProcessInstanceService;
68   - @Resource
69   - private AdminUserApi adminUserApi;
70   -
71 65 @Override
72 66 public boolean makeCopy(BpmCandidateSourceInfo sourceInfo) {
73 67 if (null == sourceInfo) {
... ... @@ -163,28 +157,9 @@ public class BpmProcessInstanceCopyServiceImpl implements BpmProcessInstanceCopy
163 157 }
164 158  
165 159 @Override
166   - public PageResult<BpmProcessInstanceCopyPageItemRespVO> getMyProcessInstanceCopyPage(Long loginUserId, BpmProcessInstanceCopyMyPageReqVO pageReqVO) {
  160 + public PageResult<BpmProcessInstanceCopyDO> getMyProcessInstanceCopyPage(Long loginUserId, BpmProcessInstanceCopyMyPageReqVO pageReqVO) {
167 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 }
... ...