feat(REQ-2924) - 完善发起人主管的找超管的入参
This commit is contained in:
parent
3af8822bba
commit
3fcc1e5bbb
@ -11,6 +11,7 @@ import cn.axzo.workflow.core.deletage.approverscope.ApproverScopeDTO;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.google.common.collect.Lists;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.ListUtils;
|
||||
import org.flowable.bpmn.model.FlowElement;
|
||||
@ -27,6 +28,9 @@ import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_INITIATOR;
|
||||
import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_PROCESS_WORKSPACE_TYPE;
|
||||
|
||||
/**
|
||||
* 基于"转交给管理员"查询审批人
|
||||
*
|
||||
@ -59,6 +63,7 @@ public class TransferToAdminTaskAssigneeSelector extends AbstractBpmnTaskAssigne
|
||||
|
||||
Optional<ApproverScopeEnum> approverScope = BpmnMetaParserHelper.getApproverScope((UserTask) flowElement);
|
||||
Optional<ApproverSpecifyEnum> optSpecify = BpmnMetaParserHelper.getApproverSpecify((UserTask) flowElement);
|
||||
// 如果是项目部,且审批人指定的配法不是岗位或角色,则默认直接返回空集合,走转交管理员后为空的最终兜底逻辑
|
||||
if (optSpecify.isPresent() && approverScope.isPresent()
|
||||
&& Objects.equals(ApproverScopeEnum.projectWorkspace, approverScope.get())
|
||||
&& !Objects.equals(ApproverSpecifyEnum.position, optSpecify.get())
|
||||
@ -80,6 +85,12 @@ public class TransferToAdminTaskAssigneeSelector extends AbstractBpmnTaskAssigne
|
||||
ListFlowTaskAssignerReq req = builder.workspaceAdmin(false).build();
|
||||
req.setProcInstId(execution.getProcessInstanceId());
|
||||
req.setCooperateTypes(getCooperationTypes(flowElement));
|
||||
// 发起人主管找其超管时,需要将发起人的数据包装进 orgScope
|
||||
if (Objects.equals(ApproverSpecifyEnum.initiatorLeader, optSpecify.get())) {
|
||||
BpmnTaskDelegateAssigner initiator = BpmnTaskDelegateAssigner.toObjectCompatible(execution.getVariable(INTERNAL_INITIATOR, String.class));
|
||||
Integer workspaceType = execution.getVariable(INTERNAL_PROCESS_WORKSPACE_TYPE, Integer.class);
|
||||
req.setOrgScopes(Lists.newArrayList(new ListFlowTaskAssignerReq.OrgScope(workspaceType, Long.parseLong(initiator.getTenantId()), Long.parseLong(initiator.getOuId()), null)));
|
||||
}
|
||||
approverScope.ifPresent(i -> {
|
||||
if (Objects.equals(i, ApproverScopeEnum.projectWorkspace)) {
|
||||
req.setWorkspaceAdmin(true);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user