From 008e02a40663ccedb5916644911ab2dc639774cd Mon Sep 17 00:00:00 2001 From: gssong <1742057357@qq.com> Date: 星期五, 17 一月 2025 21:58:43 +0800 Subject: [PATCH] update 优化任务办理 --- ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java | 46 ++++++++++++++++++++++++++++------------------ 1 files changed, 28 insertions(+), 18 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java index fca38fb..f95821d 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java @@ -32,8 +32,8 @@ import org.dromara.warm.flow.orm.entity.*; import org.dromara.warm.flow.orm.mapper.FlowHisTaskMapper; import org.dromara.warm.flow.orm.mapper.FlowInstanceMapper; -import org.dromara.warm.flow.orm.mapper.FlowNodeMapper; import org.dromara.warm.flow.orm.mapper.FlowTaskMapper; +import org.dromara.workflow.common.ConditionalOnEnable; import org.dromara.workflow.common.enums.TaskAssigneeType; import org.dromara.workflow.common.enums.TaskStatusEnum; import org.dromara.workflow.domain.bo.*; @@ -59,6 +59,7 @@ * * @author may */ +@ConditionalOnEnable @Slf4j @RequiredArgsConstructor @Service @@ -66,17 +67,16 @@ private final TaskService taskService; private final InsService insService; - private final FlowInstanceMapper flowInstanceMapper; - private final FlwTaskMapper flwTaskMapper; - private final UserService userService; - private final FlowTaskMapper flowTaskMapper; - private final FlowHisTaskMapper flowHisTaskMapper; - private final FlowProcessEventHandler flowProcessEventHandler; private final DefService defService; private final HisTaskService hisTaskService; - private final IdentifierGenerator identifierGenerator; private final NodeService nodeService; - private final FlowNodeMapper flowNodeMapper; + private final FlowInstanceMapper flowInstanceMapper; + private final FlowTaskMapper flowTaskMapper; + private final FlowHisTaskMapper flowHisTaskMapper; + private final IdentifierGenerator identifierGenerator; + private final FlowProcessEventHandler flowProcessEventHandler; + private final UserService userService; + private final FlwTaskMapper flwTaskMapper; private final FlwCategoryMapper flwCategoryMapper; /** @@ -138,6 +138,9 @@ // 鑾峰彇鎶勯�佷汉 List<FlowCopyBo> flowCopyList = completeTaskBo.getFlowCopyList(); FlowTask flowTask = flowTaskMapper.selectById(taskId); + if (ObjectUtil.isNull(flowTask)) { + throw new ServiceException("娴佺▼浠诲姟涓嶅瓨鍦ㄦ垨浠诲姟宸插鎵癸紒"); + } Instance ins = insService.getById(flowTask.getInstanceId()); // 鑾峰彇娴佺▼瀹氫箟淇℃伅 Definition definition = defService.getById(flowTask.getDefinitionId()); @@ -180,23 +183,30 @@ this.setCopy(task, flowCopyList); // 鏍规嵁娴佺▼瀹炰緥ID鏌ヨ鎵�鏈夊叧鑱旂殑浠诲姟 List<FlowTask> flowTasks = this.selectByInstId(instance.getId()); + if (CollUtil.isEmpty(flowTasks)) { + return; + } + List<Long> taskIdList = StreamUtils.toList(flowTasks, FlowTask::getId); + // 鑾峰彇涓庡綋鍓嶄换鍔″叧鑱旂殑鐢ㄦ埛鍒楄〃 + List<User> associatedUsers = WorkflowUtils.getFlowUserService().getByAssociateds(taskIdList); + if (CollUtil.isEmpty(associatedUsers)) { + return; + } List<User> userList = new ArrayList<>(); // 閬嶅巻浠诲姟鍒楄〃锛屽鐞嗘瘡涓换鍔$殑鍔炵悊浜� for (FlowTask flowTask : flowTasks) { - // 鑾峰彇涓庡綋鍓嶄换鍔″叧鑱旂殑鐢ㄦ埛鍒楄〃 - List<User> associatedUsers = WorkflowUtils.getFlowUserService().getByAssociateds(Collections.singletonList(flowTask.getId())); - if (CollUtil.isNotEmpty(associatedUsers)) { - userList.addAll(WorkflowUtils.buildUser(associatedUsers, flowTask.getId())); + List<User> users = StreamUtils.filter(associatedUsers, user -> Objects.equals(user.getAssociated(), flowTask.getId())); + if (CollUtil.isNotEmpty(users)) { + userList.addAll(WorkflowUtils.buildUser(users, flowTask.getId())); } } // 鎵归噺鍒犻櫎鐜版湁浠诲姟鐨勫姙鐞嗕汉璁板綍 - if (CollUtil.isNotEmpty(flowTasks)) { - WorkflowUtils.getFlowUserService().deleteByTaskIds(StreamUtils.toList(flowTasks, FlowTask::getId)); - } + WorkflowUtils.getFlowUserService().deleteByTaskIds(taskIdList); // 纭繚瑕佷繚瀛樼殑 userList 涓嶄负绌� - if (CollUtil.isNotEmpty(userList)) { - WorkflowUtils.getFlowUserService().saveBatch(userList); + if (CollUtil.isEmpty(userList)) { + return; } + WorkflowUtils.getFlowUserService().saveBatch(userList); } /** -- Gitblit v1.9.3