mirror of
https://github.com/dromara/RuoYi-Vue-Plus.git
synced 2026-07-24 05:26:22 +00:00
update 优化 删除流程实例同时删除抄送内容
This commit is contained in:
+29
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user