feat(REQ-4418) - 新增抄送节点“前序节点”找人实现
This commit is contained in:
parent
1daacaf4b9
commit
0526c6d18e
@ -33,10 +33,13 @@ import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
|
||||
import static cn.axzo.workflow.common.constant.BpmnConstants.CARBON_ASSIGNER_LIMIT_NUMBER;
|
||||
import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_ACTIVITY_RELATION_ASSIGNEE_LIST_INFO_SNAPSHOT;
|
||||
import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getActivitySignature;
|
||||
import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getApproverSpecify;
|
||||
import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getNoticeConfig;
|
||||
import static cn.axzo.workflow.core.engine.cmd.helper.CustomTaskHelper.getLimitedElementList;
|
||||
import static cn.axzo.workflow.core.engine.cmd.helper.CustomTaskHelper.removeDuplicateByPersonId;
|
||||
import static cn.axzo.workflow.core.listener.AbstractBpmnEventListener.parseProcessDefinitionKey;
|
||||
|
||||
/**
|
||||
@ -75,13 +78,15 @@ public class EngineCarbonCopyV2EventListener implements JavaDelegate {
|
||||
carbonUsers.addAll(engineExecutionStartListener.approverSelect(specify.getType(), serviceTask, execution, false));
|
||||
});
|
||||
|
||||
List<BpmnTaskDelegateAssigner> limitedAssigners = getLimitedElementList(removeDuplicateByPersonId(carbonUsers), CARBON_ASSIGNER_LIMIT_NUMBER);
|
||||
|
||||
RuntimeService runtimeService =
|
||||
springProcessEngineConfiguration.getProcessEngineConfiguration().getRuntimeService();
|
||||
runtimeService.setVariable(processInstanceId,
|
||||
INTERNAL_ACTIVITY_RELATION_ASSIGNEE_LIST_INFO_SNAPSHOT + currentActivityId, carbonUsers);
|
||||
INTERNAL_ACTIVITY_RELATION_ASSIGNEE_LIST_INFO_SNAPSHOT + currentActivityId, limitedAssigners);
|
||||
|
||||
// 发送抄送事件
|
||||
invokeCarbonCopy(carbonUsers, getNoticeConfig(mainProcess), getActivitySignature(serviceTask), execution);
|
||||
invokeCarbonCopy(limitedAssigners, getNoticeConfig(mainProcess), getActivitySignature(serviceTask), execution);
|
||||
}
|
||||
|
||||
private void invokeCarbonCopy(List<BpmnTaskDelegateAssigner> carbonUsers,
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package cn.axzo.workflow.server.controller.delegate;
|
||||
|
||||
import cn.axzo.workflow.common.enums.ApproverSpecifyEnum;
|
||||
import cn.axzo.workflow.common.enums.BpmnFlowNodeType;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
|
||||
import cn.axzo.workflow.core.repository.entity.ExtAxProcessLog;
|
||||
import cn.axzo.workflow.core.service.ExtAxProcessLogService;
|
||||
@ -13,9 +14,12 @@ import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import static cn.axzo.workflow.common.enums.BpmnFlowNodeType.NODE_CARBON_COPY;
|
||||
|
||||
/**
|
||||
* 基于前序节点的任务审批人选择器(除非抄送节点)
|
||||
*
|
||||
@ -30,22 +34,20 @@ public class BasedPreAllNodeTaskAssigneeSelector extends AbstractBpmnTaskAssigne
|
||||
|
||||
@Override
|
||||
public String getType() {
|
||||
return ApproverSpecifyEnum.pre_all_node_approver_v2.getType();
|
||||
return ApproverSpecifyEnum.preAllNodApprover_v2.getType();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<BpmnTaskDelegateAssigner> select(FlowElement flowElement, DelegateExecution execution, Boolean throwException) {
|
||||
// NODE_CARBON_COPY
|
||||
ExtAxProcessLog query = new ExtAxProcessLog();
|
||||
query.setProcessInstanceId(execution.getProcessInstanceId());
|
||||
List<ExtAxProcessLog> logs = processLogService.genericQuery(query);
|
||||
if (CollectionUtils.isEmpty(logs)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
List<BpmnTaskDelegateAssigner> allAssignees = logs.stream()
|
||||
return logs.stream()
|
||||
.filter(i -> !Objects.equals(BpmnFlowNodeType.valueOfType(i.getNodeType()), NODE_CARBON_COPY))
|
||||
.flatMap(log -> !CollectionUtils.isEmpty(log.getAssigneeFull()) ? log.getAssigneeFull().stream() : Stream.empty())
|
||||
.collect(Collectors.toList());
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user