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.common.mybatis.core.query.QueryBuilder;
|
||||||
import org.dromara.warm.flow.core.FlowEngine;
|
import org.dromara.warm.flow.core.FlowEngine;
|
||||||
import org.dromara.warm.flow.core.service.InsService;
|
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.entity.FlowTask;
|
||||||
|
import org.dromara.warm.flow.orm.mapper.FlowHisTaskMapper;
|
||||||
import org.dromara.warm.flow.orm.mapper.FlowTaskMapper;
|
import org.dromara.warm.flow.orm.mapper.FlowTaskMapper;
|
||||||
import org.dromara.workflow.common.ConditionalOnEnable;
|
import org.dromara.workflow.common.ConditionalOnEnable;
|
||||||
|
import org.dromara.workflow.common.enums.TaskStatusEnum;
|
||||||
import org.dromara.workflow.domain.context.InstanceDeleteContext;
|
import org.dromara.workflow.domain.context.InstanceDeleteContext;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 执行流程实例删除。
|
* 执行流程实例删除。
|
||||||
@@ -26,11 +30,13 @@ import java.util.List;
|
|||||||
public class InstanceDeleteExecuteComponent extends NodeComponent {
|
public class InstanceDeleteExecuteComponent extends NodeComponent {
|
||||||
|
|
||||||
private final InsService insService;
|
private final InsService insService;
|
||||||
|
private final FlowHisTaskMapper flowHisTaskMapper;
|
||||||
private final FlowTaskMapper flowTaskMapper;
|
private final FlowTaskMapper flowTaskMapper;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void process() {
|
public void process() {
|
||||||
InstanceDeleteContext context = getContextBean(InstanceDeleteContext.class);
|
InstanceDeleteContext context = getContextBean(InstanceDeleteContext.class);
|
||||||
|
deleteCopyUsers(context.getDeleteInstanceIds());
|
||||||
if (!context.isHistory()) {
|
if (!context.isHistory()) {
|
||||||
context.setResult(insService.remove(context.getDeleteInstanceIds()));
|
context.setResult(insService.remove(context.getDeleteInstanceIds()));
|
||||||
return;
|
return;
|
||||||
@@ -47,4 +53,27 @@ public class InstanceDeleteExecuteComponent extends NodeComponent {
|
|||||||
context.setResult(true);
|
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