Commit b4150cafa7d75d3d391d2056b20feaa3985a0017
1 parent
97d6aab4
refactor: 调整代码分装层次
Showing
3 changed files
with
48 additions
and
30 deletions
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 | } | ... | ... |