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 | 28 +++++++++++++++++++---------
1 files changed, 19 insertions(+), 9 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 faa7d93..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
@@ -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