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 | 62 ++++++++++++++---------------- 1 files changed, 29 insertions(+), 33 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 11f83ed..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.*; @@ -45,7 +45,6 @@ import org.dromara.workflow.mapper.FlwTaskMapper; import org.dromara.workflow.service.IFlwTaskService; import org.dromara.workflow.utils.WorkflowUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -60,36 +59,23 @@ * * @author may */ +@ConditionalOnEnable @Slf4j @RequiredArgsConstructor @Service public class FlwTaskServiceImpl implements IFlwTaskService { - @Autowired(required = false) - private TaskService taskService; - @Autowired(required = false) - private InsService insService; - @Autowired(required = false) - private DefService defService; - @Autowired(required = false) - private HisTaskService hisTaskService; - @Autowired(required = false) - private NodeService nodeService; - - @Autowired(required = false) - private FlowInstanceMapper flowInstanceMapper; - @Autowired(required = false) - private FlowTaskMapper flowTaskMapper; - @Autowired(required = false) - private FlowHisTaskMapper flowHisTaskMapper; - @Autowired(required = false) - private FlowNodeMapper flowNodeMapper; - + private final TaskService taskService; + private final InsService insService; + private final DefService defService; + private final HisTaskService hisTaskService; + private final NodeService nodeService; + 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; @@ -152,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()); @@ -194,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