diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/BasedRoleTaskAssigneeSelector.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/BasedRoleTaskAssigneeSelector.java index 8e3968943..ff959fc20 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/BasedRoleTaskAssigneeSelector.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/BasedRoleTaskAssigneeSelector.java @@ -1,24 +1,30 @@ package cn.axzo.workflow.server.controller.delegate; -import cn.axzo.tyr.client.feign.TyrSaasRoleUserApi; -import cn.axzo.tyr.client.model.roleuser.dto.SaasRoleUserDTO; -import cn.axzo.tyr.client.model.roleuser.req.RoleUserParam; +import cn.axzo.karma.client.feign.FlowSupportApi; +import cn.axzo.karma.client.model.request.ListFlowTaskAssignerReq; +import cn.axzo.karma.client.model.response.FlowTaskAssignerResp; import cn.axzo.workflow.common.enums.ApproverSpecifyEnum; -import cn.axzo.workflow.common.model.dto.CooperationOrgDTO.OrgScope; import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner; +import cn.axzo.workflow.common.model.response.bpmn.model.BpmnModelDetailVO; +import cn.axzo.workflow.common.model.response.category.CategoryItemVO; import cn.axzo.workflow.core.deletage.approverscope.ApproverScopeDTO; +import cn.axzo.workflow.core.service.BpmnProcessModelService; +import cn.axzo.workflow.core.service.CategoryService; import cn.hutool.core.collection.CollUtil; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections4.ListUtils; import org.flowable.bpmn.model.FlowElement; import org.flowable.engine.delegate.DelegateExecution; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.List; -import java.util.Set; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; import java.util.stream.Collectors; +import static cn.axzo.workflow.common.constant.BpmnConstants.BPM_MODEL_CATEGORY; + /** * 基于"角色"查询审批人 * @@ -30,7 +36,13 @@ import java.util.stream.Collectors; public class BasedRoleTaskAssigneeSelector extends AbstractBpmnTaskAssigneeSelector { @Autowired - private TyrSaasRoleUserApi tyrSaasRoleUserApi; + private FlowSupportApi flowSupportApi; + + @Autowired + private CategoryService categoryService; + + @Autowired + private BpmnProcessModelService bpmnProcessModelService; @Override public String getType() { @@ -51,33 +63,46 @@ public class BasedRoleTaskAssigneeSelector extends AbstractBpmnTaskAssigneeSelec @Override protected List invokeService(FlowElement flowElement, DelegateExecution execution, ApproverScopeDTO scopeDto) { - Set workspaceIdSet = ListUtils.emptyIfNull(scopeDto.getOrgScopes()).stream() - .map(OrgScope::getWorkspaceId) - .collect(Collectors.toSet()); - - - // ouIds、workspaceIds 只能传其中一个 然后代码过滤 - RoleUserParam param = RoleUserParam.builder() - .roleIds(super.getTypes(flowElement).stream().map(Long::valueOf).collect(Collectors.toSet())) - .ouIds(ListUtils.emptyIfNull(scopeDto.getOrgScopes()).stream() - .map(OrgScope::getOuId) + BpmnModelDetailVO detailVO = bpmnProcessModelService.getById(execution.getProcessDefinitionId(), null); + Optional categoryItemVO = categoryService.get(BPM_MODEL_CATEGORY, detailVO.getKey()); + Map variables = execution.getVariables(); + ListFlowTaskAssignerReq req = ListFlowTaskAssignerReq.builder() + .procInstId(execution.getProcessInstanceId()) + .procInstType(Integer.valueOf(Objects.requireNonNull(categoryItemVO.map(CategoryItemVO::getWorkspaceTypeCode).orElse(null)))) + .orgScopes(scopeDto.getOrgScopes().stream() + .map(os -> ListFlowTaskAssignerReq.OrgScope.builder() + .ouId(os.getOuId()) + .nodeId(os.getNodeId()) + .workspaceId(os.getWorkspaceId()) + .workspaceType(os.getWorkspaceType()) + .build()) .collect(Collectors.toList())) + .workerTeamScopes(scopeDto.getWorkerTeamScopes().stream() + .map(ot -> ListFlowTaskAssignerReq.OrgScope.builder() + .workspaceId(ot.getWorkspaceId()) + .ouId(ot.getOuId()) + .nodeId(ot.getNodeId()) + .workspaceType(ot.getWorkspaceType()) + .build()) + .collect(Collectors.toList())) + .roleIds(super.getTypes(flowElement).stream().map(Long::valueOf).collect(Collectors.toList())) + .variables(variables) .build(); - List flowTaskAssigners = parseApiResult(() -> tyrSaasRoleUserApi.roleUserList(param), + + List flowTaskAssigners = parseApiResult(() -> flowSupportApi.listTaskAssignerByRoles(req), "审批节点: " + flowElement.getId() + ", 通过角色查询审批人", - "cn.axzo.tyr.client.feign.TyrSaasRoleUserApi.roleUserList", param) - .stream().filter(f -> workspaceIdSet.contains(f.getWorkspaceId())) - .collect(Collectors.toList()); + "cn.axzo.karma.client.feign.FlowSupportApi.listTaskAssignerByRoles", req); if (CollUtil.isEmpty(flowTaskAssigners)) { return super.invokeService(flowElement, execution, scopeDto); } - return flowTaskAssigners.stream().map(u -> BpmnTaskDelegateAssigner.builder() - .assignee(String.valueOf(u.getIdentityId())) - .assigneeType(String.valueOf(u.getIdentityType())) - .tenantId(String.valueOf(u.getWorkspaceId())) + return flowTaskAssigners.stream() + .map(u -> BpmnTaskDelegateAssigner.builder() + .assignee(String.valueOf(u.getAssignee())) + .assigneeType(String.valueOf(u.getAssigneeType())) + .tenantId(String.valueOf(u.getTenantId())) .ouId(String.valueOf(u.getOuId())) - .personId(String.valueOf(u.getNaturalPersonId())) + .personId(String.valueOf(u.getPersonId())) .build()) .collect(Collectors.toList()); } 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 62e47c22c..a282e55c5 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 @@ -70,9 +70,9 @@ public class TransferToAdminTaskAssigneeSelector extends AbstractBpmnTaskAssigne } }); List flowTaskAssigners = - parseApiResult(() -> flowSupportApi.listTaskAssignerAdmin(req), + parseApiResult(() -> flowSupportApi.listTaskAssignerAdminV2(req), "审批节点: " + flowElement.getId() + ", 通过管理员查询审批人", - "cn.axzo.karma.client.feign.FlowSupportApi.listTaskAssignerAdmin", req); + "cn.axzo.karma.client.feign.FlowSupportApi.listTaskAssignerAdminV2", req); if (CollUtil.isEmpty(flowTaskAssigners)) {