REQ-3282-人员查询迁移到新接口
This commit is contained in:
parent
15857ee7f3
commit
44b3e2c399
6
pom.xml
6
pom.xml
@ -19,6 +19,7 @@
|
||||
<revision>1.5.1-SNAPSHOT</revision>
|
||||
<axzo-bom.version>2.0.0-SNAPSHOT</axzo-bom.version>
|
||||
<axzo-dependencies.version>2.0.0-SNAPSHOT</axzo-dependencies.version>
|
||||
<axzo-dependencies.org.version>1.0.0-SNAPSHOT</axzo-dependencies.org.version>
|
||||
<feign-httpclient.version>11.8</feign-httpclient.version>
|
||||
<lombok.version>1.18.22</lombok.version>
|
||||
<mapstruct.version>1.4.2.Final</mapstruct.version>
|
||||
@ -155,6 +156,11 @@
|
||||
<artifactId>riven-api</artifactId>
|
||||
<version>${axzo-dependencies.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>cn.axzo.org</groupId>
|
||||
<artifactId>org-api</artifactId>
|
||||
<version>${axzo-dependencies.org.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</dependencyManagement>
|
||||
|
||||
|
||||
@ -142,6 +142,10 @@
|
||||
<groupId>cn.axzo</groupId>
|
||||
<artifactId>riven-api</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>cn.axzo.org</groupId>
|
||||
<artifactId>org-api</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
|
||||
@ -119,6 +119,37 @@ public abstract class AbstractBpmnTaskAssigneeSelector implements BpmnTaskAssign
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
protected final <T> T parseFoundationApiResult(Supplier<cn.axzo.foundation.result.ApiResult<T>> supplier, String operatorDesc,
|
||||
String extInfo, Object... param) {
|
||||
StopWatch stopWatch = new StopWatch(operatorDesc);
|
||||
log.info("{}-Param: {}", operatorDesc, JSONUtil.toJsonStr(param));
|
||||
stopWatch.start();
|
||||
cn.axzo.foundation.result.ApiResult<T> result = supplier.get();
|
||||
stopWatch.stop();
|
||||
log.info("{}-Cost:{}, Result: {}", operatorDesc,
|
||||
"API StopWatch '" + stopWatch.getId() + "': running time = " + stopWatch.getTotalTimeSeconds() + " 's",
|
||||
JSONUtil.toJsonStr(result));
|
||||
try {
|
||||
if (stopWatch.getTotalTimeSeconds() > refreshProperties.getApiTimeout() && Boolean.TRUE.equals(refreshProperties.getSendDingTalk())) {
|
||||
DingTalkUtils.sendDingTalkForSlowUrl(applicationContext.getEnvironment()
|
||||
.getProperty("spring.profiles.active"),
|
||||
stopWatch.getTotalTimeSeconds(),
|
||||
extInfo,
|
||||
param,
|
||||
result);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
// ignore
|
||||
}
|
||||
Assert.notNull(result, "服务调用异常");
|
||||
// 200自定义处理
|
||||
if (HttpStatus.HTTP_OK != result.getCode()) {
|
||||
throw new WorkflowEngineException(CALC_TASK_ASSIGNEE_ERROR, "[API:" + extInfo + "]" + result.getMsg());
|
||||
}
|
||||
return result.getData();
|
||||
}
|
||||
|
||||
|
||||
protected final <T> T parseApiResult(Supplier<ApiResult<T>> supplier, String operatorDesc,
|
||||
String extInfo, Object... param) {
|
||||
return parseApiResult(supplier, operatorDesc, extInfo, refreshProperties, applicationContext, param);
|
||||
|
||||
@ -1,11 +1,11 @@
|
||||
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.orggateway.api.nodeuser.OrgNodeUserApi;
|
||||
import cn.axzo.orggateway.api.nodeuser.req.ListOrgNodeUserReq;
|
||||
import cn.axzo.orggateway.api.nodeuser.resp.OrganizationalNodeUserDTO;
|
||||
import cn.axzo.workflow.common.enums.ApproverSpecifyEnum;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
|
||||
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 com.alibaba.fastjson.JSON;
|
||||
import org.apache.commons.collections4.ListUtils;
|
||||
@ -16,11 +16,7 @@ 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.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static cn.axzo.workflow.common.code.FlowableEngineRespCode.ENGINE_USER_TASK_CALC_ERROR;
|
||||
@ -34,7 +30,7 @@ import static cn.axzo.workflow.common.code.FlowableEngineRespCode.ENGINE_USER_TA
|
||||
@Component
|
||||
public class BasedFixedPersonTaskAssigneeSelector extends AbstractBpmnTaskAssigneeSelector {
|
||||
@Resource
|
||||
private OrganizationalNodeUserApi organizationalNodeUserApi;
|
||||
private OrgNodeUserApi orgNodeUserApi;
|
||||
|
||||
@Override
|
||||
public String getType() {
|
||||
@ -54,30 +50,30 @@ public class BasedFixedPersonTaskAssigneeSelector extends AbstractBpmnTaskAssign
|
||||
return super.select(flowElement, execution, throwException);
|
||||
}
|
||||
BpmnMetaParserHelper.getApproverSpecifyValue((UserTask) flowElement)
|
||||
.ifPresent(s -> assigners.addAll(JSON.parseArray(s, BpmnTaskDelegateAssigner.class)));
|
||||
.ifPresent(s -> assigners.addAll(JSON.parseArray(s, BpmnTaskDelegateAssigner.class)));
|
||||
|
||||
Set<Long> workspaceIds = assigners.stream()
|
||||
.map(BpmnTaskDelegateAssigner::getTenantId)
|
||||
.filter(StringUtils::hasText)
|
||||
.map(Long::parseLong)
|
||||
.collect(Collectors.toSet());
|
||||
.map(BpmnTaskDelegateAssigner::getTenantId)
|
||||
.filter(StringUtils::hasText)
|
||||
.map(Long::parseLong)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
List<Long> personIds = assigners.stream()
|
||||
.map(BpmnTaskDelegateAssigner::getPersonId)
|
||||
.filter(StringUtils::hasText)
|
||||
.map(Long::parseLong)
|
||||
.collect(Collectors.toList());
|
||||
List<OrganizationalNodeUserVO> onlineUsers = new ArrayList<>();
|
||||
.map(BpmnTaskDelegateAssigner::getPersonId)
|
||||
.filter(StringUtils::hasText)
|
||||
.map(Long::parseLong)
|
||||
.collect(Collectors.toList());
|
||||
List<OrganizationalNodeUserDTO> onlineUsers = new ArrayList<>();
|
||||
try {
|
||||
OrganizationalNodeUserSearchReq searchReq = new OrganizationalNodeUserSearchReq();
|
||||
ListOrgNodeUserReq searchReq = new ListOrgNodeUserReq();
|
||||
searchReq.setWorkspaceIds(workspaceIds);
|
||||
searchReq.setPersonIdList(personIds);
|
||||
onlineUsers = parseApiResult(() -> organizationalNodeUserApi.list(searchReq), "查询指定人员是否在职",
|
||||
"cn.axzo.maokai.api.client.OrganizationalNodeUserApi#list", searchReq);
|
||||
searchReq.setPersonIds(personIds);
|
||||
onlineUsers = parseFoundationApiResult(() -> orgNodeUserApi.list(searchReq), "查询指定人员是否在职",
|
||||
"cn.axzo.orggateway.api.nodeuser.OrgNodeUserApi.list", searchReq).getData();
|
||||
} catch (Exception e) {
|
||||
if (throwException) {
|
||||
throw new WorkflowEngineException(ENGINE_USER_TASK_CALC_ERROR, flowElement.getId(),
|
||||
this.getType(), e.getMessage());
|
||||
this.getType(), e.getMessage());
|
||||
} else {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
@ -85,8 +81,8 @@ public class BasedFixedPersonTaskAssigneeSelector extends AbstractBpmnTaskAssign
|
||||
|
||||
// 只要有在职的人,不会走审批人为空
|
||||
if (ListUtils.emptyIfNull(onlineUsers).stream().filter(i -> Objects.equals(i.getIsDelete(), 0L))
|
||||
.anyMatch(u -> assigners.stream().anyMatch(i -> Objects.equals(i.getPersonId(), String.valueOf(u.getPersonId()))
|
||||
&& Objects.equals(i.getOuId(), String.valueOf(u.getOrganizationalUnitId()))))) {
|
||||
.anyMatch(u -> assigners.stream().anyMatch(i -> Objects.equals(i.getPersonId(), String.valueOf(u.getPersonId()))
|
||||
&& Objects.equals(i.getOuId(), String.valueOf(u.getOrganizationalUnitId()))))) {
|
||||
return assigners;
|
||||
}
|
||||
|
||||
|
||||
@ -1,9 +1,8 @@
|
||||
package cn.axzo.workflow.server.controller.delegate;
|
||||
|
||||
import cn.axzo.maokai.api.client.OrganizationalNodeUserApi;
|
||||
import cn.axzo.maokai.api.vo.request.FlowTaskAssignerReq;
|
||||
import cn.axzo.maokai.api.vo.request.FlowTaskAssignerReq.IdentityPair;
|
||||
import cn.axzo.maokai.api.vo.response.FlowTaskAssigner;
|
||||
import cn.axzo.orggateway.api.nodeuser.OrgNodeUserApi;
|
||||
import cn.axzo.orggateway.api.nodeuser.req.FlowTaskAssignerReq;
|
||||
import cn.axzo.orggateway.api.nodeuser.resp.FlowTaskAssigner;
|
||||
import cn.axzo.workflow.common.enums.ApproverSpecifyEnum;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
|
||||
import cn.axzo.workflow.core.deletage.approverscope.ApproverScopeDTO;
|
||||
@ -33,7 +32,7 @@ import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_INITIATOR;
|
||||
public class BasedInitiatorLeaderTaskAssigneeSelector extends AbstractBpmnTaskAssigneeSelector {
|
||||
|
||||
@Resource
|
||||
private OrganizationalNodeUserApi organizationalNodeUserApi;
|
||||
private OrgNodeUserApi orgNodeUserApi;
|
||||
|
||||
@Override
|
||||
public String getType() {
|
||||
@ -64,15 +63,15 @@ public class BasedInitiatorLeaderTaskAssigneeSelector extends AbstractBpmnTaskAs
|
||||
.orgScopes(ListUtils.emptyIfNull(scopeDto.getOrgScopes()).stream()
|
||||
.map(e -> BeanUtil.copyProperties(e, FlowTaskAssignerReq.OrgScope.class))
|
||||
.collect(Collectors.toList()))
|
||||
.sponsor(IdentityPair.builder()
|
||||
.sponsor(FlowTaskAssignerReq.IdentityPair.builder()
|
||||
.identityId(Long.valueOf(initiator.getAssignee()))
|
||||
.identityType(Integer.valueOf(initiator.getAssigneeType())).build())
|
||||
.build();
|
||||
req.setProcInstId(execution.getProcessInstanceId());
|
||||
List<FlowTaskAssigner> flowTaskAssigners =
|
||||
parseApiResult(() -> organizationalNodeUserApi.listFlowTaskAssigner(req),
|
||||
parseFoundationApiResult(() -> orgNodeUserApi.listFlowTaskAssigner(req),
|
||||
"审批节点: " + flowElement.getId() + ", 通过发起人主管查询审批人",
|
||||
"cn.axzo.maokai.api.client.OrganizationalNodeUserApi#listFlowTaskAssigner", req);
|
||||
"cn.axzo.orggateway.api.nodeuser.OrgNodeUserApi.listFlowTaskAssigner", req);
|
||||
|
||||
if (CollUtil.isEmpty(flowTaskAssigners)) {
|
||||
return super.invokeService(flowElement, execution, scopeDto);
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
package cn.axzo.workflow.server.controller.delegate;
|
||||
|
||||
import cn.axzo.maokai.api.client.OrganizationalNodeUserApi;
|
||||
import cn.axzo.maokai.api.vo.request.FlowTaskAssignerReq;
|
||||
import cn.axzo.maokai.api.vo.response.FlowTaskAssigner;
|
||||
import cn.axzo.orggateway.api.nodeuser.OrgNodeUserApi;
|
||||
import cn.axzo.orggateway.api.nodeuser.req.FlowTaskAssignerReq;
|
||||
import cn.axzo.orggateway.api.nodeuser.resp.FlowTaskAssigner;
|
||||
import cn.axzo.workflow.common.enums.ApproverSpecifyEnum;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
|
||||
import cn.axzo.workflow.core.deletage.approverscope.ApproverScopeDTO;
|
||||
@ -29,7 +29,7 @@ import java.util.stream.Collectors;
|
||||
public class BasedPositionTaskAssigneeSelector extends AbstractBpmnTaskAssigneeSelector {
|
||||
|
||||
@Autowired
|
||||
private OrganizationalNodeUserApi organizationalNodeUserApi;
|
||||
private OrgNodeUserApi orgNodeUserApi;
|
||||
|
||||
@Override
|
||||
public String getType() {
|
||||
@ -62,9 +62,9 @@ public class BasedPositionTaskAssigneeSelector extends AbstractBpmnTaskAssigneeS
|
||||
req.getOrgScopes().addAll(workerTeamScopes);
|
||||
req.setProcInstId(execution.getProcessInstanceId());
|
||||
List<FlowTaskAssigner> flowTaskAssigners =
|
||||
parseApiResult(() -> organizationalNodeUserApi.listFlowTaskAssigner(req),
|
||||
parseFoundationApiResult(() -> orgNodeUserApi.listFlowTaskAssigner(req),
|
||||
"审批节点: " + flowElement.getId() + ", 通过岗位查询审批人",
|
||||
"cn.axzo.maokai.api.client.OrganizationalNodeUserApi#listFlowTaskAssigner", req);
|
||||
"cn.axzo.orggateway.api.nodeuser.OrgNodeUserApi.listFlowTaskAssigner", req);
|
||||
|
||||
if (CollUtil.isEmpty(flowTaskAssigners)) {
|
||||
return super.invokeService(flowElement, execution, scopeDto);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user