Commit b9eb55a4 by 王志超

feat: 主单审批,驳回选定的行动工单

parent 8476e93e
Pipeline #86577 passed with stages
in 1 minute 31 seconds
......@@ -1687,7 +1687,7 @@ public class ChangeFlowBiz {
changeFlowService.updateRecord(changeRecord);
// 重置被驳回的子单(已过滤,直接重置并流转工单)
int resetCount = resetRejectedSubFlows(subFlowsToReject, rejectReason);
int resetCount = resetRejectedSubFlows(subFlowsToReject, node.getName(), rejectReason);
// 发送审批不通过邮件通知
// sendMainFlowRejectEmail(changeRecord, node.getName(), rejectReason, resetCount);
......@@ -1916,17 +1916,18 @@ public class ChangeFlowBiz {
* 将子单状态和节点重置到初始状态,保留流程记录
*
* @param subFlowsToReject 要驳回的子单列表(已过滤,直接处理)
* @param rejectNodeName 驳回节点名称(用于记录是哪个审批节点驳回的)
* @param rejectReason 驳回原因
* @return 实际重置的子单数量
*/
private int resetRejectedSubFlows(List<ChangeSubFlowRecord> subFlowsToReject, String rejectReason) {
private int resetRejectedSubFlows(List<ChangeSubFlowRecord> subFlowsToReject, String rejectNodeName, String rejectReason) {
if (CollectionUtils.isEmpty(subFlowsToReject)) {
log.info("[resetRejectedSubFlows] 未指定要驳回的子单");
log.info("[resetRejectedSubFlows] 未指定要驳回的子单,驳回节点:{}", rejectNodeName);
return 0;
}
log.info("[resetRejectedSubFlows] 开始重置被驳回的子单,待重置数量:{}, 驳回原因:{}",
subFlowsToReject.size(), rejectReason);
log.info("[resetRejectedSubFlows] 开始重置被驳回的子单,驳回节点:{}, 待重置数量:{}, 驳回原因:{}",
rejectNodeName, subFlowsToReject.size(), rejectReason);
int resetCount = 0;
int skippedCount = 0;
......@@ -1955,18 +1956,18 @@ public class ChangeFlowBiz {
}
// 构建提交内容
Map<String, Object> subFlowContent = new HashMap<>(CommonConstants.INIT_HASH_MAP_SIZE);
subFlowContent.put("updateTime", System.currentTimeMillis());
subFlowContent.put(CommonConstants.FLOW_OPERATION_KEY, FlowOperationTypeEnum.PASS.getValue());
String currentUid = RequestLocalBean.getUid();
Map<String, Object> subFlowContent = buildFlowContent(currentUid);
// 使用 paramMap 流转子单工单(type=2 回到初始节点)
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("type", FlowTransitionType.TYPE_REJECTED);
String operateDesc = String.format("变更工单,%s审批不通过,驳回行动工单", rejectNodeName);
String startNodeId = flowService.submitFlowWithParamMap(subFlowId, subFlowDataDTO,
RequestLocalBean.getUid(), ChangeFlowEnum.CHANGE_SUB_FLOW.getTopoId(),
currentUid, ChangeFlowEnum.CHANGE_SUB_FLOW.getTopoId(),
JSON.toJSONString(subFlowContent), paramMap,
FlowxOperationEnum.SUBMIT.getName(), "主单审批不通过,驳回行动工单", subFlowRecord.getCreateTime());
FlowxOperationEnum.SUBMIT.getName(), operateDesc, subFlowRecord.getCreateTime());
// 重置子单记录到初始状态
subFlowRecord.setSubFlowNode(startNodeId);
......@@ -1981,8 +1982,8 @@ public class ChangeFlowBiz {
changeSubFlowRecordService.update(subFlowRecord);
resetCount++;
log.info("[resetRejectedSubFlows] 子单已驳回并重置到初始状态, subFlowId:{}, 原节点:{}, 新节点:{}, status:{}",
subFlowId, oldNodeId, startNodeId, ChangeSubFlowStatusEnum.WAIT_CONFIRM_ACTION_PLAN.getStatus());
log.info("[resetRejectedSubFlows] 子单已驳回并重置到初始状态, subFlowId:{}, 驳回节点:{}, 原节点:{}, 新节点:{}, status:{}",
subFlowId, rejectNodeName, oldNodeId, startNodeId, ChangeSubFlowStatusEnum.WAIT_CONFIRM_ACTION_PLAN.getStatus());
} catch (Exception e) {
log.error("[resetRejectedSubFlows] 重置子单失败, subFlowId:{}, error:{}", subFlowId, e.getMessage(), e);
......@@ -1990,8 +1991,8 @@ public class ChangeFlowBiz {
}
}
log.info("[resetRejectedSubFlows] 子单重置完成,待重置数:{}, 已重置:{}, 跳过:{}",
subFlowsToReject.size(), resetCount, skippedCount);
log.info("[resetRejectedSubFlows] 子单重置完成,驳回节点:{}, 待重置数:{}, 已重置:{}, 跳过:{}",
rejectNodeName, subFlowsToReject.size(), resetCount, skippedCount);
return resetCount;
}
......
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