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..52a4846a9 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,13 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService { } // 发送事件 processDeleteHandler(flowInstances); - return insService.remove(StreamUtils.toList(flowInstances, FlowInstance::getId)); + // 删除抄送 + List instanceIds = StreamUtils.toList(flowInstances, FlowInstance::getId); + List flowHisTaskList = flowHisTaskMapper.selectList(new LambdaQueryWrapper<>(FlowHisTask.class).eq(FlowHisTask::getFlowStatus, TaskStatusEnum.COPY.getStatus()).in(FlowHisTask::getInstanceId, instanceIds)); + if (CollUtil.isNotEmpty(flowHisTaskList)) { + FlowEngine.userService().deleteByTaskIds(StreamUtils.toList(flowHisTaskList, FlowHisTask::getTaskId)); + } + return insService.remove(instanceIds); } /** @@ -214,6 +220,11 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService { } // 发送事件 processDeleteHandler(flowInstances); + // 删除抄送 + List flowHisTaskList = flowHisTaskMapper.selectList(new LambdaQueryWrapper<>(FlowHisTask.class).eq(FlowHisTask::getFlowStatus, TaskStatusEnum.COPY.getStatus()).in(FlowHisTask::getInstanceId, instanceIds)); + if (CollUtil.isNotEmpty(flowHisTaskList)) { + FlowEngine.userService().deleteByTaskIds(StreamUtils.toList(flowHisTaskList, FlowHisTask::getTaskId)); + } // 删除实例 return insService.remove(instanceIds); } @@ -234,9 +245,11 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService { } // 发送事件 processDeleteHandler(flowInstances); + List flowHisTaskList = flowHisTaskMapper.selectList(new LambdaQueryWrapper<>(FlowHisTask.class).eq(FlowHisTask::getFlowStatus, TaskStatusEnum.COPY.getStatus()).in(FlowHisTask::getInstanceId, instanceIds)); List flowTaskList = flwTaskService.selectByInstIds(instanceIds); - if (CollUtil.isNotEmpty(flowTaskList)) { - FlowEngine.userService().deleteByTaskIds(StreamUtils.toList(flowTaskList, FlowTask::getId)); + List taskIdList = CollUtil.unionAll(StreamUtils.toList(flowTaskList, FlowTask::getId), StreamUtils.toList(flowHisTaskList, FlowHisTask::getTaskId)); + if (CollUtil.isNotEmpty(taskIdList)) { + FlowEngine.userService().deleteByTaskIds(taskIdList); } FlowEngine.taskService().deleteByInsIds(instanceIds); FlowEngine.hisTaskService().deleteByInsIds(instanceIds);