REQ-2924-调整角色,管理员查询api

This commit is contained in:
yangqicheng 2024-09-19 11:53:51 +08:00
parent 969f5dc70b
commit fa66b6f4ec
2 changed files with 53 additions and 28 deletions

View File

@ -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<BpmnTaskDelegateAssigner> invokeService(FlowElement flowElement, DelegateExecution execution,
ApproverScopeDTO scopeDto) {
Set<Long> workspaceIdSet = ListUtils.emptyIfNull(scopeDto.getOrgScopes()).stream()
.map(OrgScope::getWorkspaceId)
.collect(Collectors.toSet());
// ouIdsworkspaceIds 只能传其中一个 然后代码过滤
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> categoryItemVO = categoryService.get(BPM_MODEL_CATEGORY, detailVO.getKey());
Map<String, Object> 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<SaasRoleUserDTO> flowTaskAssigners = parseApiResult(() -> tyrSaasRoleUserApi.roleUserList(param),
List<FlowTaskAssignerResp> 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());
}

View File

@ -70,9 +70,9 @@ public class TransferToAdminTaskAssigneeSelector extends AbstractBpmnTaskAssigne
}
});
List<FlowTaskAssignerResp> 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)) {