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>
|
<revision>1.5.1-SNAPSHOT</revision>
|
||||||
<axzo-bom.version>2.0.0-SNAPSHOT</axzo-bom.version>
|
<axzo-bom.version>2.0.0-SNAPSHOT</axzo-bom.version>
|
||||||
<axzo-dependencies.version>2.0.0-SNAPSHOT</axzo-dependencies.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>
|
<feign-httpclient.version>11.8</feign-httpclient.version>
|
||||||
<lombok.version>1.18.22</lombok.version>
|
<lombok.version>1.18.22</lombok.version>
|
||||||
<mapstruct.version>1.4.2.Final</mapstruct.version>
|
<mapstruct.version>1.4.2.Final</mapstruct.version>
|
||||||
@ -155,6 +156,11 @@
|
|||||||
<artifactId>riven-api</artifactId>
|
<artifactId>riven-api</artifactId>
|
||||||
<version>${axzo-dependencies.version}</version>
|
<version>${axzo-dependencies.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>cn.axzo.org</groupId>
|
||||||
|
<artifactId>org-api</artifactId>
|
||||||
|
<version>${axzo-dependencies.org.version}</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</dependencyManagement>
|
</dependencyManagement>
|
||||||
|
|
||||||
|
|||||||
@ -142,6 +142,10 @@
|
|||||||
<groupId>cn.axzo</groupId>
|
<groupId>cn.axzo</groupId>
|
||||||
<artifactId>riven-api</artifactId>
|
<artifactId>riven-api</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>cn.axzo.org</groupId>
|
||||||
|
<artifactId>org-api</artifactId>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
|
|||||||
@ -119,6 +119,37 @@ public abstract class AbstractBpmnTaskAssigneeSelector implements BpmnTaskAssign
|
|||||||
return Collections.emptyList();
|
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,
|
protected final <T> T parseApiResult(Supplier<ApiResult<T>> supplier, String operatorDesc,
|
||||||
String extInfo, Object... param) {
|
String extInfo, Object... param) {
|
||||||
return parseApiResult(supplier, operatorDesc, extInfo, refreshProperties, applicationContext, param);
|
return parseApiResult(supplier, operatorDesc, extInfo, refreshProperties, applicationContext, param);
|
||||||
|
|||||||
@ -1,11 +1,11 @@
|
|||||||
package cn.axzo.workflow.server.controller.delegate;
|
package cn.axzo.workflow.server.controller.delegate;
|
||||||
|
|
||||||
import cn.axzo.maokai.api.client.OrganizationalNodeUserApi;
|
import cn.axzo.orggateway.api.nodeuser.OrgNodeUserApi;
|
||||||
import cn.axzo.maokai.api.vo.request.OrganizationalNodeUserSearchReq;
|
import cn.axzo.orggateway.api.nodeuser.req.ListOrgNodeUserReq;
|
||||||
import cn.axzo.maokai.api.vo.response.OrganizationalNodeUserVO;
|
import cn.axzo.orggateway.api.nodeuser.resp.OrganizationalNodeUserDTO;
|
||||||
import cn.axzo.workflow.common.enums.ApproverSpecifyEnum;
|
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.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.common.utils.BpmnMetaParserHelper;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import org.apache.commons.collections4.ListUtils;
|
import org.apache.commons.collections4.ListUtils;
|
||||||
@ -16,11 +16,7 @@ import org.springframework.stereotype.Component;
|
|||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import static cn.axzo.workflow.common.code.FlowableEngineRespCode.ENGINE_USER_TASK_CALC_ERROR;
|
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
|
@Component
|
||||||
public class BasedFixedPersonTaskAssigneeSelector extends AbstractBpmnTaskAssigneeSelector {
|
public class BasedFixedPersonTaskAssigneeSelector extends AbstractBpmnTaskAssigneeSelector {
|
||||||
@Resource
|
@Resource
|
||||||
private OrganizationalNodeUserApi organizationalNodeUserApi;
|
private OrgNodeUserApi orgNodeUserApi;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getType() {
|
public String getType() {
|
||||||
@ -54,30 +50,30 @@ public class BasedFixedPersonTaskAssigneeSelector extends AbstractBpmnTaskAssign
|
|||||||
return super.select(flowElement, execution, throwException);
|
return super.select(flowElement, execution, throwException);
|
||||||
}
|
}
|
||||||
BpmnMetaParserHelper.getApproverSpecifyValue((UserTask) flowElement)
|
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()
|
Set<Long> workspaceIds = assigners.stream()
|
||||||
.map(BpmnTaskDelegateAssigner::getTenantId)
|
.map(BpmnTaskDelegateAssigner::getTenantId)
|
||||||
.filter(StringUtils::hasText)
|
.filter(StringUtils::hasText)
|
||||||
.map(Long::parseLong)
|
.map(Long::parseLong)
|
||||||
.collect(Collectors.toSet());
|
.collect(Collectors.toSet());
|
||||||
|
|
||||||
List<Long> personIds = assigners.stream()
|
List<Long> personIds = assigners.stream()
|
||||||
.map(BpmnTaskDelegateAssigner::getPersonId)
|
.map(BpmnTaskDelegateAssigner::getPersonId)
|
||||||
.filter(StringUtils::hasText)
|
.filter(StringUtils::hasText)
|
||||||
.map(Long::parseLong)
|
.map(Long::parseLong)
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
List<OrganizationalNodeUserVO> onlineUsers = new ArrayList<>();
|
List<OrganizationalNodeUserDTO> onlineUsers = new ArrayList<>();
|
||||||
try {
|
try {
|
||||||
OrganizationalNodeUserSearchReq searchReq = new OrganizationalNodeUserSearchReq();
|
ListOrgNodeUserReq searchReq = new ListOrgNodeUserReq();
|
||||||
searchReq.setWorkspaceIds(workspaceIds);
|
searchReq.setWorkspaceIds(workspaceIds);
|
||||||
searchReq.setPersonIdList(personIds);
|
searchReq.setPersonIds(personIds);
|
||||||
onlineUsers = parseApiResult(() -> organizationalNodeUserApi.list(searchReq), "查询指定人员是否在职",
|
onlineUsers = parseFoundationApiResult(() -> orgNodeUserApi.list(searchReq), "查询指定人员是否在职",
|
||||||
"cn.axzo.maokai.api.client.OrganizationalNodeUserApi#list", searchReq);
|
"cn.axzo.orggateway.api.nodeuser.OrgNodeUserApi.list", searchReq).getData();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
if (throwException) {
|
if (throwException) {
|
||||||
throw new WorkflowEngineException(ENGINE_USER_TASK_CALC_ERROR, flowElement.getId(),
|
throw new WorkflowEngineException(ENGINE_USER_TASK_CALC_ERROR, flowElement.getId(),
|
||||||
this.getType(), e.getMessage());
|
this.getType(), e.getMessage());
|
||||||
} else {
|
} else {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
@ -85,8 +81,8 @@ public class BasedFixedPersonTaskAssigneeSelector extends AbstractBpmnTaskAssign
|
|||||||
|
|
||||||
// 只要有在职的人,不会走审批人为空
|
// 只要有在职的人,不会走审批人为空
|
||||||
if (ListUtils.emptyIfNull(onlineUsers).stream().filter(i -> Objects.equals(i.getIsDelete(), 0L))
|
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()))
|
.anyMatch(u -> assigners.stream().anyMatch(i -> Objects.equals(i.getPersonId(), String.valueOf(u.getPersonId()))
|
||||||
&& Objects.equals(i.getOuId(), String.valueOf(u.getOrganizationalUnitId()))))) {
|
&& Objects.equals(i.getOuId(), String.valueOf(u.getOrganizationalUnitId()))))) {
|
||||||
return assigners;
|
return assigners;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,9 +1,8 @@
|
|||||||
package cn.axzo.workflow.server.controller.delegate;
|
package cn.axzo.workflow.server.controller.delegate;
|
||||||
|
|
||||||
import cn.axzo.maokai.api.client.OrganizationalNodeUserApi;
|
import cn.axzo.orggateway.api.nodeuser.OrgNodeUserApi;
|
||||||
import cn.axzo.maokai.api.vo.request.FlowTaskAssignerReq;
|
import cn.axzo.orggateway.api.nodeuser.req.FlowTaskAssignerReq;
|
||||||
import cn.axzo.maokai.api.vo.request.FlowTaskAssignerReq.IdentityPair;
|
import cn.axzo.orggateway.api.nodeuser.resp.FlowTaskAssigner;
|
||||||
import cn.axzo.maokai.api.vo.response.FlowTaskAssigner;
|
|
||||||
import cn.axzo.workflow.common.enums.ApproverSpecifyEnum;
|
import cn.axzo.workflow.common.enums.ApproverSpecifyEnum;
|
||||||
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
|
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
|
||||||
import cn.axzo.workflow.core.deletage.approverscope.ApproverScopeDTO;
|
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 {
|
public class BasedInitiatorLeaderTaskAssigneeSelector extends AbstractBpmnTaskAssigneeSelector {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private OrganizationalNodeUserApi organizationalNodeUserApi;
|
private OrgNodeUserApi orgNodeUserApi;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getType() {
|
public String getType() {
|
||||||
@ -64,15 +63,15 @@ public class BasedInitiatorLeaderTaskAssigneeSelector extends AbstractBpmnTaskAs
|
|||||||
.orgScopes(ListUtils.emptyIfNull(scopeDto.getOrgScopes()).stream()
|
.orgScopes(ListUtils.emptyIfNull(scopeDto.getOrgScopes()).stream()
|
||||||
.map(e -> BeanUtil.copyProperties(e, FlowTaskAssignerReq.OrgScope.class))
|
.map(e -> BeanUtil.copyProperties(e, FlowTaskAssignerReq.OrgScope.class))
|
||||||
.collect(Collectors.toList()))
|
.collect(Collectors.toList()))
|
||||||
.sponsor(IdentityPair.builder()
|
.sponsor(FlowTaskAssignerReq.IdentityPair.builder()
|
||||||
.identityId(Long.valueOf(initiator.getAssignee()))
|
.identityId(Long.valueOf(initiator.getAssignee()))
|
||||||
.identityType(Integer.valueOf(initiator.getAssigneeType())).build())
|
.identityType(Integer.valueOf(initiator.getAssigneeType())).build())
|
||||||
.build();
|
.build();
|
||||||
req.setProcInstId(execution.getProcessInstanceId());
|
req.setProcInstId(execution.getProcessInstanceId());
|
||||||
List<FlowTaskAssigner> flowTaskAssigners =
|
List<FlowTaskAssigner> flowTaskAssigners =
|
||||||
parseApiResult(() -> organizationalNodeUserApi.listFlowTaskAssigner(req),
|
parseFoundationApiResult(() -> orgNodeUserApi.listFlowTaskAssigner(req),
|
||||||
"审批节点: " + flowElement.getId() + ", 通过发起人主管查询审批人",
|
"审批节点: " + flowElement.getId() + ", 通过发起人主管查询审批人",
|
||||||
"cn.axzo.maokai.api.client.OrganizationalNodeUserApi#listFlowTaskAssigner", req);
|
"cn.axzo.orggateway.api.nodeuser.OrgNodeUserApi.listFlowTaskAssigner", req);
|
||||||
|
|
||||||
if (CollUtil.isEmpty(flowTaskAssigners)) {
|
if (CollUtil.isEmpty(flowTaskAssigners)) {
|
||||||
return super.invokeService(flowElement, execution, scopeDto);
|
return super.invokeService(flowElement, execution, scopeDto);
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
package cn.axzo.workflow.server.controller.delegate;
|
package cn.axzo.workflow.server.controller.delegate;
|
||||||
|
|
||||||
import cn.axzo.maokai.api.client.OrganizationalNodeUserApi;
|
import cn.axzo.orggateway.api.nodeuser.OrgNodeUserApi;
|
||||||
import cn.axzo.maokai.api.vo.request.FlowTaskAssignerReq;
|
import cn.axzo.orggateway.api.nodeuser.req.FlowTaskAssignerReq;
|
||||||
import cn.axzo.maokai.api.vo.response.FlowTaskAssigner;
|
import cn.axzo.orggateway.api.nodeuser.resp.FlowTaskAssigner;
|
||||||
import cn.axzo.workflow.common.enums.ApproverSpecifyEnum;
|
import cn.axzo.workflow.common.enums.ApproverSpecifyEnum;
|
||||||
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
|
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
|
||||||
import cn.axzo.workflow.core.deletage.approverscope.ApproverScopeDTO;
|
import cn.axzo.workflow.core.deletage.approverscope.ApproverScopeDTO;
|
||||||
@ -29,7 +29,7 @@ import java.util.stream.Collectors;
|
|||||||
public class BasedPositionTaskAssigneeSelector extends AbstractBpmnTaskAssigneeSelector {
|
public class BasedPositionTaskAssigneeSelector extends AbstractBpmnTaskAssigneeSelector {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private OrganizationalNodeUserApi organizationalNodeUserApi;
|
private OrgNodeUserApi orgNodeUserApi;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getType() {
|
public String getType() {
|
||||||
@ -62,9 +62,9 @@ public class BasedPositionTaskAssigneeSelector extends AbstractBpmnTaskAssigneeS
|
|||||||
req.getOrgScopes().addAll(workerTeamScopes);
|
req.getOrgScopes().addAll(workerTeamScopes);
|
||||||
req.setProcInstId(execution.getProcessInstanceId());
|
req.setProcInstId(execution.getProcessInstanceId());
|
||||||
List<FlowTaskAssigner> flowTaskAssigners =
|
List<FlowTaskAssigner> flowTaskAssigners =
|
||||||
parseApiResult(() -> organizationalNodeUserApi.listFlowTaskAssigner(req),
|
parseFoundationApiResult(() -> orgNodeUserApi.listFlowTaskAssigner(req),
|
||||||
"审批节点: " + flowElement.getId() + ", 通过岗位查询审批人",
|
"审批节点: " + flowElement.getId() + ", 通过岗位查询审批人",
|
||||||
"cn.axzo.maokai.api.client.OrganizationalNodeUserApi#listFlowTaskAssigner", req);
|
"cn.axzo.orggateway.api.nodeuser.OrgNodeUserApi.listFlowTaskAssigner", req);
|
||||||
|
|
||||||
if (CollUtil.isEmpty(flowTaskAssigners)) {
|
if (CollUtil.isEmpty(flowTaskAssigners)) {
|
||||||
return super.invokeService(flowElement, execution, scopeDto);
|
return super.invokeService(flowElement, execution, scopeDto);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user