From d6760f93d5cfe96e0c189f6ec0bb3943c67b8028 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:49:24 +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 --- .../InstanceDeleteExecuteComponent.java | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/instance/InstanceDeleteExecuteComponent.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/instance/InstanceDeleteExecuteComponent.java index 8622950b9..8e27a47e1 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/instance/InstanceDeleteExecuteComponent.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/liteflow/instance/InstanceDeleteExecuteComponent.java @@ -8,12 +8,16 @@ import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.mybatis.core.query.QueryBuilder; import org.dromara.warm.flow.core.FlowEngine; import org.dromara.warm.flow.core.service.InsService; +import org.dromara.warm.flow.orm.entity.FlowHisTask; import org.dromara.warm.flow.orm.entity.FlowTask; +import org.dromara.warm.flow.orm.mapper.FlowHisTaskMapper; import org.dromara.warm.flow.orm.mapper.FlowTaskMapper; import org.dromara.workflow.common.ConditionalOnEnable; +import org.dromara.workflow.common.enums.TaskStatusEnum; import org.dromara.workflow.domain.context.InstanceDeleteContext; import java.util.List; +import java.util.Objects; /** * 执行流程实例删除。 @@ -26,11 +30,13 @@ import java.util.List; public class InstanceDeleteExecuteComponent extends NodeComponent { private final InsService insService; + private final FlowHisTaskMapper flowHisTaskMapper; private final FlowTaskMapper flowTaskMapper; @Override public void process() { InstanceDeleteContext context = getContextBean(InstanceDeleteContext.class); + deleteCopyUsers(context.getDeleteInstanceIds()); if (!context.isHistory()) { context.setResult(insService.remove(context.getDeleteInstanceIds())); return; @@ -47,4 +53,27 @@ public class InstanceDeleteExecuteComponent extends NodeComponent { context.setResult(true); } + /** + * 删除流程实例产生的抄送人员关联。 + * + * @param instanceIds 流程实例 ID 集合 + */ + private void deleteCopyUsers(List instanceIds) { + List copyTasks = flowHisTaskMapper.selectList(QueryBuilder.lambda(FlowHisTask.class) + .in(FlowHisTask::getInstanceId, instanceIds) + .eq(FlowHisTask::getFlowStatus, TaskStatusEnum.COPY.getStatus()) + .build()); + if (CollUtil.isEmpty(copyTasks)) { + return; + } + List copyTaskIds = copyTasks.stream() + .map(FlowHisTask::getTaskId) + .filter(Objects::nonNull) + .distinct() + .toList(); + if (CollUtil.isNotEmpty(copyTaskIds)) { + FlowEngine.userService().deleteByTaskIds(copyTaskIds); + } + } + }