REQ-3290-转交去掉任务重复校验

This commit is contained in:
yangqicheng 2024-11-20 19:48:12 +08:00
parent 22862fe24f
commit f9cf430c75

View File

@ -2,7 +2,6 @@ package cn.axzo.workflow.core.engine.cmd;
import cn.axzo.workflow.common.model.request.bpmn.task.AttachmentDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
import cn.axzo.workflow.core.common.exception.WorkflowEngineException;
import com.alibaba.fastjson.JSON;
import com.google.common.collect.Lists;
import org.apache.commons.lang3.StringUtils;
@ -23,7 +22,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors;
import static cn.axzo.workflow.common.constant.BpmnConstants.COMMENT_TYPE_ADVICE;
import static cn.axzo.workflow.common.constant.BpmnConstants.COMMENT_TYPE_OPERATION_DESC;
@ -32,7 +31,6 @@ import static cn.axzo.workflow.common.constant.BpmnConstants.TASK_ASSIGNEE_SKIP_
import static cn.axzo.workflow.common.constant.BpmnConstants.TASK_COMPLETE_OPERATION_TYPE;
import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.TRANSFER;
import static cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner.buildDummyAssigner;
import static cn.axzo.workflow.core.common.code.BpmnTaskRespCode.ASSIGNEE_HAS_BEEN_EXISTS;
import static cn.axzo.workflow.core.engine.cmd.helper.CustomTaskHelper.addComment;
import static cn.axzo.workflow.core.engine.cmd.helper.CustomTaskHelper.addMultiTask;
import static cn.axzo.workflow.core.engine.cmd.helper.CustomTaskHelper.batchAddAttachment;
@ -132,22 +130,21 @@ public class CustomTransferUserTaskCmd extends AbstractCommand<Void> implements
RuntimeService runtimeService = processEngineConfiguration.getRuntimeService();
List<BpmnTaskDelegateAssigner> originAssingeeList = runtimeService.getVariable(task.getProcessInstanceId(),
INTERNAL_ACTIVITY_RELATION_ASSIGNEE_LIST_INFO_SNAPSHOT + task.getTaskDefinitionKey(), List.class);
Optional<BpmnTaskDelegateAssigner> exists = originAssingeeList.stream()
.filter(i -> Objects.equals(i.buildAssigneeId(), targetTaskAssignee.buildAssigneeId())).findAny();
if (exists.isPresent()) {
throw new WorkflowEngineException(ASSIGNEE_HAS_BEEN_EXISTS);
}
List<String> duplicateAssignerIds = originAssingeeList.stream()
.map(BpmnTaskDelegateAssigner::buildAssigneeId)
.filter(a -> Objects.equals(a, targetTaskAssignee.buildAssigneeId()))
.collect(Collectors.toList());
duplicateAssignerIds.add(originTaskAssignee.buildAssigneeId());
List<BpmnTaskDelegateAssigner> resultList = new ArrayList<>();
resultList.add(targetTaskAssignee);
for (BpmnTaskDelegateAssigner assigner : originAssingeeList) {
if (Objects.equals(assigner.buildAssigneeId(), originTaskAssignee.buildAssigneeId())) {
originAssingeeList.remove(assigner);
break;
if (!duplicateAssignerIds.contains(assigner.buildAssigneeId())) {
resultList.add(assigner);
}
}
originAssingeeList.add(targetTaskAssignee);
runtimeService.setVariable(task.getProcessInstanceId(),
INTERNAL_ACTIVITY_RELATION_ASSIGNEE_LIST_INFO_SNAPSHOT + task.getTaskDefinitionKey(),
originAssingeeList);
resultList);
}
}