From c29ecbd8473bd3961c20d910c28d0b4d57a2b3b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Mon, 20 Jul 2026 11:48:08 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E6=B5=81=E7=A8=8B=E5=AE=9E=E4=BE=8B=E5=90=8C=E6=97=B6?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=8A=84=E9=80=81=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/FlwInstanceServiceImpl.java | 64 ++++++++++++++++--- 1 file changed, 55 insertions(+), 9 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java index 48147364a..edf9ee280 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java @@ -195,7 +195,10 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService { } // 发送事件 processDeleteHandler(flowInstances); - return insService.remove(StreamUtils.toList(flowInstances, FlowInstance::getId)); + List instanceIds = StreamUtils.toList(flowInstances, FlowInstance::getId); + // 删除抄送任务关联的用户记录 + deleteCopyTaskUsers(instanceIds); + return insService.remove(instanceIds); } /** @@ -214,8 +217,11 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService { } // 发送事件 processDeleteHandler(flowInstances); + List validInstanceIds = StreamUtils.toList(flowInstances, FlowInstance::getId); + // 删除抄送任务关联的用户记录 + deleteCopyTaskUsers(validInstanceIds); // 删除实例 - return insService.remove(instanceIds); + return insService.remove(validInstanceIds); } /** @@ -234,16 +240,56 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService { } // 发送事件 processDeleteHandler(flowInstances); - List flowTaskList = flwTaskService.selectByInstIds(instanceIds); - if (CollUtil.isNotEmpty(flowTaskList)) { - FlowEngine.userService().deleteByTaskIds(StreamUtils.toList(flowTaskList, FlowTask::getId)); - } - FlowEngine.taskService().deleteByInsIds(instanceIds); - FlowEngine.hisTaskService().deleteByInsIds(instanceIds); - FlowEngine.insService().removeByIds(instanceIds); + List validInstanceIds = StreamUtils.toList(flowInstances, FlowInstance::getId); + List flowTaskList = flwTaskService.selectByInstIds(validInstanceIds); + List taskIds = new ArrayList<>(StreamUtils.toList(flowTaskList, FlowTask::getId)); + taskIds.addAll(selectCopyTaskIds(validInstanceIds)); + deleteTaskUsers(taskIds); + FlowEngine.taskService().deleteByInsIds(validInstanceIds); + FlowEngine.hisTaskService().deleteByInsIds(validInstanceIds); + FlowEngine.insService().removeByIds(validInstanceIds); return true; } + /** + * 查询流程实例下的抄送任务id + * + * @param instanceIds 流程实例id + * @return 抄送任务id + */ + private List selectCopyTaskIds(List instanceIds) { + if (CollUtil.isEmpty(instanceIds)) { + return Collections.emptyList(); + } + List copyTaskList = flowHisTaskMapper.selectList( + new LambdaQueryWrapper<>(FlowHisTask.class) + .select(FlowHisTask::getTaskId) + .eq(FlowHisTask::getFlowStatus, TaskStatusEnum.COPY.getStatus()) + .in(FlowHisTask::getInstanceId, instanceIds) + ); + return StreamUtils.toList(copyTaskList, FlowHisTask::getTaskId); + } + + /** + * 删除抄送任务关联的用户记录 + * + * @param instanceIds 流程实例id + */ + private void deleteCopyTaskUsers(List instanceIds) { + deleteTaskUsers(selectCopyTaskIds(instanceIds)); + } + + /** + * 删除任务关联的用户记录 + * + * @param taskIds 任务id + */ + private void deleteTaskUsers(List taskIds) { + if (CollUtil.isNotEmpty(taskIds)) { + FlowEngine.userService().deleteByTaskIds(taskIds); + } + } + private void processDeleteHandler(List flowInstances) {