Commit 7a30c6a9 by 王志超

feat: 子执行项绑定topo工单

parent e2a37b73
Pipeline #85889 passed with stages
in 1 minute 30 seconds
......@@ -287,7 +287,7 @@ public class ChangeFlowBiz {
if (changeCommander.equals(uid)) {
submitToExecutionNode(flowId, flowDataDTO, uid, content, changeRecord);
// 创建子流程并绑定
createAndBindSubFlows(changeRecord, uid, name, flowName);
createAndBindSubFlows(changeRecord, flowName);
buildAndSendEmail.buildAndSendEmailCreate(changeRecord, changeExecRecords, changeType, changeCommander, changeFlowCreateReq);
} else {
// 如果发起人≠变更负责人,只发送邮件(不提交节点,不创建子流程)
......@@ -320,11 +320,9 @@ public class ChangeFlowBiz {
* 创建子流程并绑定到执行记录
*
* @param changeRecord 主流程记录
* @param uid 创建人
* @param name 创建人姓名
* @param flowName 主流程名称
*/
private void createAndBindSubFlows(ChangeRecord changeRecord, String uid, String name, String flowName) {
private void createAndBindSubFlows(ChangeRecord changeRecord, String flowName) {
// 从数据库查询执行记录列表
List<ChangeExecRecord> execRecords = changeFlowExecService.getChangeExecRecordList(changeRecord.getId());
if (CollectionUtils.isEmpty(execRecords)) {
......@@ -333,8 +331,21 @@ public class ChangeFlowBiz {
}
for (ChangeExecRecord execRecord : execRecords) {
// 子流程使用行动人作为创建人和审批人
String execUserEmail = execRecord.getChangeExecUserEmail();
if (StringUtils.isBlank(execUserEmail)) {
log.warn("[createAndBindSubFlows] 行动人邮箱为空, execRecordId:{}, changeRecordId:{}",
execRecord.getId(), changeRecord.getId());
continue;
}
// 查询行动人名称
IusUserInfoRsp execUser = iusService.queryUserInfo(execUserEmail);
String execUserName = execUser == null || StringUtils.isBlank(execUser.getName())
? execUserEmail : execUser.getName();
// 构建子流程工单内容
Map<String, Object> subFlowContent = buildFlowContent(uid);
Map<String, Object> subFlowContent = buildFlowContent(execUserEmail);
// 构建子流程工单名称:主流程名称 + 行动项内容(截取前100字符)
String subFlowName = flowName + "-" + execRecord.getChangeExecProject();
......@@ -342,15 +353,16 @@ public class ChangeFlowBiz {
subFlowName = subFlowName.substring(0, 100) + "...";
}
FlowCreateReqDTO subFlowCreateReqDTO = buildFlowCreateReqDTO(ChangeFlowEnum.CHANGE_SUB_FLOW.getTopoId(), uid,
JSON.toJSONString(subFlowContent), FlowxOperationEnum.CREATE.getName(), name, subFlowName);
FlowCreateReqDTO subFlowCreateReqDTO = buildFlowCreateReqDTO(ChangeFlowEnum.CHANGE_SUB_FLOW.getTopoId(),
execUserEmail, JSON.toJSONString(subFlowContent), FlowxOperationEnum.CREATE.getName(),
execUserName, subFlowName);
String subFlowId = flowService.createFlow(subFlowCreateReqDTO);
// 查询工单详情
FlowDataDTO subFlowDataDTO = flowService.flowDetail(subFlowId);
// 获取流程节点ID
String subNodeId = subFlowDataDTO.getFlowMeta().getCurrNodeDataList().get(0).getNodeId();
log.info("[createAndBindSubFlows] changeRecordId:{}, subFlowId:{}, nodeId:{}",
changeRecord.getId(), subFlowId, subNodeId);
log.info("[createAndBindSubFlows] changeRecordId:{}, subFlowId:{}, nodeId:{}, execUserEmail:{}",
changeRecord.getId(), subFlowId, subNodeId, execUserEmail);
// 更新执行记录,绑定子流程
execRecord.setSubFlowId(subFlowId);
......@@ -666,6 +678,10 @@ public class ChangeFlowBiz {
}
log.debug("[NEW_CHANGE_FLOW_START] changeFiles:{}, uploadFiles:{}, allFiles:{}", JSON.toJSONString(changeFiles),
JSON.toJSONString(uploadFiles), JSON.toJSONString(allFiles));
// 创建子流程并绑定(使用行动人作为创建人和审批人)
String flowName = flowDataDTO.getFlowMeta() != null && StringUtils.isNotBlank(flowDataDTO.getFlowMeta().getFlowName())
? flowDataDTO.getFlowMeta().getFlowName() : "";
createAndBindSubFlows(changeRecord, flowName);
buildAndSendEmail.buildAndSendEmailSubmit(changeRecord, changeExecRecords);
return submitNode;
case CHANGE_FLOW_CONFIRM:
......
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