Commit b9eb55a4 by 王志超

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

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