Commit a9b05b95 by 王志超

feat: 获取节点审核人

parent 3d78c38a
Pipeline #87057 passed with stages
in 2 minutes 15 seconds
......@@ -51,6 +51,9 @@ import com.netease.mail.yanxuan.change.integration.flow.UserQueryDTO;
import com.netease.mail.yanxuan.change.integration.flow.ius.rsp.IusUserInfoRsp;
import com.netease.yanxuan.flowx.sdk.meta.controller.communal.AjaxResponse;
import com.netease.yanxuan.flowx.sdk.meta.dto.base.FlowDataDTO;
import com.netease.yanxuan.flowx.sdk.meta.dto.base.UserReachDTO;
import com.netease.yanxuan.flowx.sdk.meta.dto.exec.InterfaceInputDTO;
import com.netease.yanxuan.flowx.sdk.meta.dto.exec.UserBaseContainerDTO;
import com.netease.yanxuan.flowx.sdk.meta.dto.flow.FlowCreateReqDTO;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
......@@ -87,6 +90,50 @@ public class ChangeSubFlowBiz {
private final ChangeSubFlowFileService changeSubFlowFileService;
private final SupplierSendService sendSupplierEmail;
public UserBaseContainerDTO getOperator(InterfaceInputDTO interfaceInput) {
log.info("[getOperator] interfaceInput:{}", JSON.toJSONString(interfaceInput));
// 根据工单subFlowId获取审批人,创建工单时设置,唯一
String subFlowId = interfaceInput.getPublicFieldDTO().getFlowMeta().getFlowId();
String nodeId = interfaceInput.getPublicFieldDTO().getFlowMeta().getCurrNodeDataList().get(0).getNodeId();
log.info("[getOperator] subFlowId:{}, nodeId:{}", subFlowId, nodeId);
ChangeSubFlowRecord changeSubFlowRecord;
changeSubFlowRecord = changeSubFlowRecordService.getBySubFlowId(subFlowId);
log.info("[getOperator] first time get changeSubFlowRecord:{}", changeSubFlowRecord);
// 创建工单后落库,此时审批人还未落库,工单平台无法查询到审批人,方法休眠500ms
if (changeSubFlowRecord == null) {
try {
Thread.sleep(500);
changeSubFlowRecord = changeSubFlowRecordService.getBySubFlowId(subFlowId);
log.info("[getOperator] second time get changeSubFlowRecord:{}", changeSubFlowRecord);
} catch (Exception e) {
log.info("[getOperator] subFlowId:{}, nodeId:{}, e={}", subFlowId, nodeId, e);
}
}
// 从approver字段获取审批人列表,反序列化JSON字符串
String approverJson = changeSubFlowRecord.getApprover();
List<UserReachDTO> totalUserList = new ArrayList<>();
if (StringUtils.isNotBlank(approverJson)) {
List<String> approvers = JSON.parseArray(approverJson, String.class);
if (CollectionUtils.isNotEmpty(approvers)) {
for (String approver : approvers) {
UserReachDTO userReachDTO = new UserReachDTO();
// 查询邮箱对应的名字
IusUserInfoRsp user = iusService.queryUserInfo(approver);
// 流程拓扑图,如果没查询到名字,以邮箱兜底
userReachDTO.setUserName(
user == null || StringUtils.isBlank(user.getName()) ? approver : user.getName());
userReachDTO.setUid(approver);
totalUserList.add(userReachDTO);
}
}
}
UserBaseContainerDTO userBaseContainer = new UserBaseContainerDTO();
userBaseContainer.setUserList(totalUserList);
return userBaseContainer;
}
//public String createAndSubmit(@Valid ChangeSubFlowCreateReq changeSubFlowCreateReq) {
// String uid = RequestLocalBean.getUid();
......
......@@ -8,12 +8,12 @@ package com.netease.mail.yanxuan.change.web.controller;
import com.netease.mail.yanxuan.change.biz.biz.ChangeSubFlowBiz;
import com.netease.mail.yanxuan.change.common.bean.AjaxResult;
import com.netease.mail.yanxuan.change.dal.entity.ChangeExecRecord;
import com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeSubFlowCreateReq;
import com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeSubFlowListQueryReq;
import com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeSubFlowSubmitReq;
import com.netease.mail.yanxuan.change.dal.meta.model.vo.ChangeFlowVO;
import com.netease.mail.yanxuan.change.dal.meta.model.vo.ChangeSubFlowListVO;
import com.netease.yanxuan.flowx.sdk.meta.dto.exec.InterfaceInputDTO;
import com.netease.yanxuan.flowx.sdk.meta.dto.exec.UserBaseContainerDTO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
......@@ -98,4 +98,14 @@ public class ChangeSubFlowController {
public AjaxResult<String> submit(@RequestBody @Valid ChangeSubFlowSubmitReq changeSubFlowSubmitReq) {
return AjaxResult.success(changeSubFlowBiz.submitSubFlow(changeSubFlowSubmitReq));
}
/**
* 获取审批人
* @param interfaceInput 接口输入参数
* @return 审批人列表
*/
@PostMapping("/getOperator")
public AjaxResult<UserBaseContainerDTO> getOperator(@RequestBody InterfaceInputDTO interfaceInput) {
return AjaxResult.success(changeSubFlowBiz.getOperator(interfaceInput));
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment