feat(REQ-2924) - 完善发起人主管的找超管的入参

This commit is contained in:
wangli 2024-09-24 17:52:17 +08:00
parent 3af8822bba
commit 3fcc1e5bbb

View File

@ -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);