Commit fa660769 by 王志超

feat: 确认变更结果

parent 5b9a9e28
Pipeline #86815 passed with stages
in 1 minute 27 seconds
......@@ -760,57 +760,38 @@ public class ChangeFlowBiz {
throw ExceptionFactory.createBiz(ResponseCode.BAD_REQUEST,
"该节点不允许主动提交,需等待所有行动工单执行变更方案后自动流转");
case NEW_CHANGE_FLOW_CONFIRM:
// 确认变更结果节点:由变更负责人进行确认,支持「确认」和「取消」
// 确认变更结果节点:由变更负责人进行确认,流转到结束节点
// 校验操作人必须是变更负责人
String changeCommander = changeRecord.getChangeCommander();
if (!uid.equals(changeCommander)) {
throw ExceptionFactory.createBiz(ResponseCode.NO_AUTH, "只有变更负责人可以确认变更结果");
}
// 校验审批结果
Boolean confirmed = changeFlowSubmitReq.getApproved();
if (confirmed == null) {
throw ExceptionFactory.createBiz(ResponseCode.BAD_REQUEST, "确认结果不能为空");
// 校验审批结果必须为确认(true)
Boolean approved = changeFlowSubmitReq.getApproved();
if (approved == null || !approved) {
throw ExceptionFactory.createBiz(ResponseCode.BAD_REQUEST, "确认变更结果节点只支持确认操作,取消请使用取消接口");
}
// 构建提交内容(不管确认还是取消,都流转到结束节点)
Map<String, Object> confirmContent = buildFlowContent(
confirmed ? FlowOperationTypeEnum.PASS : FlowOperationTypeEnum.REFUSE);
String operationDesc = confirmed ? "确认变更结果" : "取消变更结果";
// 构建提交内容
Map<String, Object> confirmContent = buildFlowContent(FlowOperationTypeEnum.PASS);
// 流转到结束节点(确认和取消都走到结束节点)
// 流转到结束节点
String endNodeId = flowService.submitFlow(flowId.toString(), flowDataDTO, uid,
ChangeFlowEnum.NEW_CHANGE_FLOW.getTopoId(), JSON.toJSONString(confirmContent), true,
FlowxOperationEnum.SUBMIT.getName(), operationDesc, changeRecord.getCreateTime());
FlowxOperationEnum.SUBMIT.getName(), "确认变更结果", changeRecord.getCreateTime());
// 更新主工单节点和状态
// 更新主工单节点和状态为"已完结"
changeRecord.setFlowNode(endNodeId);
changeRecord.setState(ChangeStatusEnum.FINISHED.getStatus());
changeRecord.setUpdateTime(DateUtils.getCurrentTime());
changeFlowService.updateRecord(changeRecord);
if (confirmed) {
// 点击「确认」:状态更新为"已完结"
changeRecord.setState(ChangeStatusEnum.FINISHED.getStatus());
log.info("[NEW_CHANGE_FLOW_CONFIRM] 主工单确认变更结果完成,flowId:{}, endNodeId:{}, state:{}",
flowId, endNodeId, ChangeStatusEnum.FINISHED.getStatus());
// todo: 发送完结邮件通知(待业务确认邮件内容)
// buildAndSendEmail.sendConfirmResultFinishEmail(changeRecord);
} else {
// 点击「取消」:状态更新为"已取消"
changeRecord.setState(ChangeStatusEnum.CANCELLED.getStatus());
// 如果有取消原因,保存;没有则不保存
if (StringUtils.isNotBlank(changeFlowSubmitReq.getCancelReason())) {
changeRecord.setCancelReason(changeFlowSubmitReq.getCancelReason());
}
log.info("[NEW_CHANGE_FLOW_CONFIRM] 主工单取消变更结果,flowId:{}, endNodeId:{}, state:{}",
flowId, endNodeId, ChangeStatusEnum.CANCELLED.getStatus());
// todo: 发送取消邮件通知(待业务确认邮件内容)
// buildAndSendEmail.sendConfirmResultCancelEmail(changeRecord, changeFlowSubmitReq.getCancelReason());
}
log.info("[NEW_CHANGE_FLOW_CONFIRM] 主工单确认变更结果完成,flowId:{}, endNodeId:{}, state:{}",
flowId, endNodeId, ChangeStatusEnum.FINISHED.getStatus());
changeFlowService.updateRecord(changeRecord);
// todo: 发送完结邮件通知(待业务确认邮件内容)
// buildAndSendEmail.sendConfirmResultFinishEmail(changeRecord);
return endNodeId;
......
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