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