From 008e02a40663ccedb5916644911ab2dc639774cd Mon Sep 17 00:00:00 2001 From: gssong <1742057357@qq.com> Date: Fri, 17 Jan 2025 21:58:43 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E5=8A=9E=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/FlwTaskServiceImpl.java | 28 +++++++++++++------ 1 file 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 faa7d9394..f95821d32 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 @@ public class FlwTaskServiceImpl implements IFlwTaskService { // 获取抄送人 List 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 @@ public class FlwTaskServiceImpl implements IFlwTaskService { this.setCopy(task, flowCopyList); // 根据流程实例ID查询所有关联的任务 List flowTasks = this.selectByInstId(instance.getId()); + if (CollUtil.isEmpty(flowTasks)) { + return; + } + List taskIdList = StreamUtils.toList(flowTasks, FlowTask::getId); + // 获取与当前任务关联的用户列表 + List associatedUsers = WorkflowUtils.getFlowUserService().getByAssociateds(taskIdList); + if (CollUtil.isEmpty(associatedUsers)) { + return; + } List userList = new ArrayList<>(); // 遍历任务列表,处理每个任务的办理人 for (FlowTask flowTask : flowTasks) { - // 获取与当前任务关联的用户列表 - List associatedUsers = WorkflowUtils.getFlowUserService().getByAssociateds(Collections.singletonList(flowTask.getId())); - if (CollUtil.isNotEmpty(associatedUsers)) { - userList.addAll(WorkflowUtils.buildUser(associatedUsers, flowTask.getId())); + List 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); } /**