REQ-3282 调整代码结构

This commit is contained in:
yangqicheng 2024-12-26 16:38:35 +08:00
parent b32e287fc9
commit f15b6abb67

View File

@ -5,23 +5,25 @@ import cn.axzo.orggateway.api.nodeuser.OrgNodeUserApi;
import cn.axzo.orggateway.api.nodeuser.dto.OrgNodeUserDTO;
import cn.axzo.orggateway.api.nodeuser.req.ListOrgNodeUserReq;
import cn.axzo.workflow.common.enums.ApproverEmptyHandleTypeEnum;
import cn.axzo.workflow.common.exception.WorkflowEngineException;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
import cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper;
import cn.axzo.workflow.core.deletage.approverscope.ApproverScopeDTO;
import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.ListUtils;
import org.apache.commons.lang3.math.NumberUtils;
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.*;
import java.util.stream.Collectors;
import static cn.axzo.workflow.common.code.FlowableEngineRespCode.ENGINE_USER_TASK_CALC_ERROR;
/**
* 转交指定人查询人
*/
@ -43,7 +45,7 @@ public class SpecifyAssigneeTaskAssigneeSelector extends AbstractBpmnTaskAssigne
}
@Override
protected List<BpmnTaskDelegateAssigner> invokeService(FlowElement flowElement, DelegateExecution execution, ApproverScopeDTO scopeDto) {
public List<BpmnTaskDelegateAssigner> select(FlowElement flowElement, DelegateExecution execution, Boolean throwException) {
if (!(flowElement instanceof UserTask)) {
return Collections.emptyList();
}
@ -55,37 +57,45 @@ public class SpecifyAssigneeTaskAssigneeSelector extends AbstractBpmnTaskAssigne
if (CollectionUtils.isEmpty(emptyAssignees)) {
return Collections.emptyList();
}
List<OrgNodeUserDTO> onlineUsers = new ArrayList<>();
Set<Long> workspaceIds = emptyAssignees.stream()
.map(BpmnTaskDelegateAssigner::getTenantId)
.filter(StringUtils::hasText)
.map(Long::parseLong)
.collect(Collectors.toSet());
try {
List<OrgNodeUserDTO> onlineUsers = new ArrayList<>();
Set<Long> workspaceIds = emptyAssignees.stream()
.map(BpmnTaskDelegateAssigner::getTenantId)
.filter(NumberUtils::isDigits)
.map(Long::parseLong)
.collect(Collectors.toSet());
List<Long> personIds = emptyAssignees.stream()
.map(BpmnTaskDelegateAssigner::getPersonId)
.filter(StringUtils::hasText)
.map(Long::parseLong)
.collect(Collectors.toList());
ListOrgNodeUserReq searchReq = new ListOrgNodeUserReq();
searchReq.setWorkspaceIds(workspaceIds);
searchReq.setPersonIds(personIds);
searchReq.setPage(1);
searchReq.setPageSize(personIds.size());
PageResp<OrgNodeUserDTO> pageResp = parseFoundationApiResult(() -> orgNodeUserApi.list(searchReq), "查询指定人员是否在职",
"cn.axzo.orggateway.api.nodeuser.OrgNodeUserApi.list", searchReq);
if (pageResp != null) {
onlineUsers = pageResp.getData();
List<Long> personIds = emptyAssignees.stream()
.map(BpmnTaskDelegateAssigner::getPersonId)
.filter(NumberUtils::isDigits)
.map(Long::parseLong)
.collect(Collectors.toList());
ListOrgNodeUserReq searchReq = new ListOrgNodeUserReq();
searchReq.setWorkspaceIds(workspaceIds);
searchReq.setPersonIds(personIds);
searchReq.setPage(1);
searchReq.setPageSize(personIds.size());
PageResp<OrgNodeUserDTO> pageResp = parseFoundationApiResult(() -> orgNodeUserApi.list(searchReq), "SpecifyAssigneeTaskAssigneeSelector#查询指定人员是否在职",
"cn.axzo.orggateway.api.nodeuser.OrgNodeUserApi.list", searchReq);
if (pageResp != null) {
onlineUsers = pageResp.getData();
}
// 只要有在职的人不会走审批人为空
if (ListUtils.emptyIfNull(onlineUsers).stream()
.filter(i -> Objects.equals(i.getIsDelete(), 0L))
.anyMatch(u -> emptyAssignees.stream()
.anyMatch(i -> Objects.equals(i.getPersonId(), String.valueOf(u.getPersonId()))
&& Objects.equals(i.getOuId(), String.valueOf(u.getOrganizationalUnitId()))))) {
return emptyAssignees;
}
return Collections.emptyList();
} catch (Exception e) {
if (Boolean.TRUE.equals(throwException)) {
throw new WorkflowEngineException(ENGINE_USER_TASK_CALC_ERROR, flowElement.getId(),
this.getType(), e.getMessage());
} else {
return Collections.emptyList();
}
}
// 只要有在职的人不会走审批人为空
if (ListUtils.emptyIfNull(onlineUsers).stream()
.filter(i -> Objects.equals(i.getIsDelete(), 0L))
.anyMatch(u -> emptyAssignees.stream()
.anyMatch(i -> Objects.equals(i.getPersonId(), String.valueOf(u.getPersonId()))
&& Objects.equals(i.getOuId(), String.valueOf(u.getOrganizationalUnitId()))))) {
return emptyAssignees;
}
return Collections.emptyList();
}
}