Commit 7a30c6a9 by 王志超

feat: 子执行项绑定topo工单

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