feat(REQ-2924) - 指定审批人,会调用二方接口查询人员是否在职
This commit is contained in:
parent
333abc1cb4
commit
fb09025440
@ -1,16 +1,26 @@
|
||||
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.workflow.common.enums.ApproverSpecifyEnum;
|
||||
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;
|
||||
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.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 基于"固定人员"查询审批人
|
||||
@ -20,6 +30,9 @@ import java.util.List;
|
||||
*/
|
||||
@Component
|
||||
public class BasedFixedPersonTaskAssigneeSelector extends AbstractBpmnTaskAssigneeSelector {
|
||||
@Resource
|
||||
private OrganizationalNodeUserApi organizationalNodeUserApi;
|
||||
|
||||
@Override
|
||||
public String getType() {
|
||||
return ApproverSpecifyEnum.fixedPerson.getType();
|
||||
@ -39,7 +52,31 @@ public class BasedFixedPersonTaskAssigneeSelector extends AbstractBpmnTaskAssign
|
||||
}
|
||||
BpmnMetaParserHelper.getApproverSpecifyValue((UserTask) flowElement)
|
||||
.ifPresent(s -> assigners.addAll(JSON.parseArray(s, BpmnTaskDelegateAssigner.class)));
|
||||
return assigners;
|
||||
|
||||
Set<Long> workspaceIds = assigners.stream()
|
||||
.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());
|
||||
|
||||
OrganizationalNodeUserSearchReq searchReq = new OrganizationalNodeUserSearchReq();
|
||||
searchReq.setWorkspaceIds(workspaceIds);
|
||||
searchReq.setPersonIdList(personIds);
|
||||
List<OrganizationalNodeUserVO> onlineUsers = parseApiResult(() -> organizationalNodeUserApi.list(searchReq), "查询指定人员是否在职",
|
||||
"cn.axzo.maokai.api.client.OrganizationalNodeUserApi.list", searchReq);
|
||||
|
||||
// 只要有在职的人,不会走审批人为空
|
||||
if (ListUtils.emptyIfNull(onlineUsers).stream().anyMatch(i -> Objects.equals(i.getIsDelete(), 0L))) {
|
||||
return assigners;
|
||||
}
|
||||
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user