update 优化 删除流程实例同时删除抄送内容

This commit is contained in:
疯狂的狮子Li
2026-07-20 11:49:24 +08:00
parent da5f30cae2
commit d6760f93d5
@@ -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<Long> instanceIds) {
List<FlowHisTask> copyTasks = flowHisTaskMapper.selectList(QueryBuilder.lambda(FlowHisTask.class)
.in(FlowHisTask::getInstanceId, instanceIds)
.eq(FlowHisTask::getFlowStatus, TaskStatusEnum.COPY.getStatus())
.build());
if (CollUtil.isEmpty(copyTasks)) {
return;
}
List<Long> copyTaskIds = copyTasks.stream()
.map(FlowHisTask::getTaskId)
.filter(Objects::nonNull)
.distinct()
.toList();
if (CollUtil.isNotEmpty(copyTaskIds)) {
FlowEngine.userService().deleteByTaskIds(copyTaskIds);
}
}
}