feat(REQ-2924) - 指定审批人,会调用二方接口查询人员是否在职

This commit is contained in:
wangli 2024-09-24 16:55:26 +08:00
parent 333abc1cb4
commit fb09025440

View File

@ -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();
}
}