From fb09025440d72d63fe59daf095735d1757447104 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Tue, 24 Sep 2024 16:55:26 +0800 Subject: [PATCH] =?UTF-8?q?feat(REQ-2924)=20-=20=E6=8C=87=E5=AE=9A?= =?UTF-8?q?=E5=AE=A1=E6=89=B9=E4=BA=BA=EF=BC=8C=E4=BC=9A=E8=B0=83=E7=94=A8?= =?UTF-8?q?=E4=BA=8C=E6=96=B9=E6=8E=A5=E5=8F=A3=E6=9F=A5=E8=AF=A2=E4=BA=BA?= =?UTF-8?q?=E5=91=98=E6=98=AF=E5=90=A6=E5=9C=A8=E8=81=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BasedFixedPersonTaskAssigneeSelector.java | 39 ++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/BasedFixedPersonTaskAssigneeSelector.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/BasedFixedPersonTaskAssigneeSelector.java index 1934a672e..aba25252e 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/BasedFixedPersonTaskAssigneeSelector.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/BasedFixedPersonTaskAssigneeSelector.java @@ -1,16 +1,26 @@ package cn.axzo.workflow.server.controller.delegate; +import cn.axzo.maokai.api.client.OrganizationalNodeUserApi; +import cn.axzo.maokai.api.vo.request.OrganizationalNodeUserSearchReq; +import cn.axzo.maokai.api.vo.response.OrganizationalNodeUserVO; import cn.axzo.workflow.common.enums.ApproverSpecifyEnum; import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner; import cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper; import com.alibaba.fastjson.JSON; +import org.apache.commons.collections4.ListUtils; import org.flowable.bpmn.model.FlowElement; import org.flowable.bpmn.model.UserTask; import org.flowable.engine.delegate.DelegateExecution; import org.springframework.stereotype.Component; +import org.springframework.util.StringUtils; +import javax.annotation.Resource; import java.util.ArrayList; +import java.util.Collections; import java.util.List; +import java.util.Objects; +import java.util.Set; +import java.util.stream.Collectors; /** * 基于"固定人员"查询审批人 @@ -20,6 +30,9 @@ import java.util.List; */ @Component public class BasedFixedPersonTaskAssigneeSelector extends AbstractBpmnTaskAssigneeSelector { + @Resource + private OrganizationalNodeUserApi organizationalNodeUserApi; + @Override public String getType() { return ApproverSpecifyEnum.fixedPerson.getType(); @@ -39,7 +52,31 @@ public class BasedFixedPersonTaskAssigneeSelector extends AbstractBpmnTaskAssign } BpmnMetaParserHelper.getApproverSpecifyValue((UserTask) flowElement) .ifPresent(s -> assigners.addAll(JSON.parseArray(s, BpmnTaskDelegateAssigner.class))); - return assigners; + + Set workspaceIds = assigners.stream() + .map(BpmnTaskDelegateAssigner::getTenantId) + .filter(StringUtils::hasText) + .map(Long::parseLong) + .collect(Collectors.toSet()); + + List personIds = assigners.stream() + .map(BpmnTaskDelegateAssigner::getPersonId) + .filter(StringUtils::hasText) + .map(Long::parseLong) + .collect(Collectors.toList()); + + OrganizationalNodeUserSearchReq searchReq = new OrganizationalNodeUserSearchReq(); + searchReq.setWorkspaceIds(workspaceIds); + searchReq.setPersonIdList(personIds); + List onlineUsers = parseApiResult(() -> organizationalNodeUserApi.list(searchReq), "查询指定人员是否在职", + "cn.axzo.maokai.api.client.OrganizationalNodeUserApi.list", searchReq); + + // 只要有在职的人,不会走审批人为空 + if (ListUtils.emptyIfNull(onlineUsers).stream().anyMatch(i -> Objects.equals(i.getIsDelete(), 0L))) { + return assigners; + } + + return Collections.emptyList(); } }