REQ-3282 调整代码结构
This commit is contained in:
parent
b32e287fc9
commit
f15b6abb67
@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user