REQ-3290-转交去掉任务重复校验
This commit is contained in:
parent
22862fe24f
commit
f9cf430c75
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user