From 3fcc1e5bbb7681e0f1a07fdc91ec50fe84a5e174 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Tue, 24 Sep 2024 17:52:17 +0800 Subject: [PATCH] =?UTF-8?q?feat(REQ-2924)=20-=20=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E5=8F=91=E8=B5=B7=E4=BA=BA=E4=B8=BB=E7=AE=A1=E7=9A=84=E6=89=BE?= =?UTF-8?q?=E8=B6=85=E7=AE=A1=E7=9A=84=E5=85=A5=E5=8F=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../delegate/TransferToAdminTaskAssigneeSelector.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/TransferToAdminTaskAssigneeSelector.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/TransferToAdminTaskAssigneeSelector.java index d39497a57..1db454aa7 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/TransferToAdminTaskAssigneeSelector.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/TransferToAdminTaskAssigneeSelector.java @@ -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 approverScope = BpmnMetaParserHelper.getApproverScope((UserTask) flowElement); Optional 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);