refactor(dms): 优化故障报修工单审批流程

- 移除审批和确认方法的权限注解
- 优化工单状态更新逻辑,确保业务数据一致性
- 改进工作流推进过程,增加异常处理和日志记录
- 调整代码格式,提高可读性
master
zangchenhao 2 weeks ago
parent f464130fd3
commit 6f7abed094

@ -136,7 +136,7 @@ public class DmsBillsFaultInstanceController extends BaseController {
* @param approveStatus 2-3- * @param approveStatus 2-3-
* @param message * @param message
*/ */
@SaCheckPermission("dms:dmsBillsFaultInstance:approve") //@SaCheckPermission("dms:dmsBillsFaultInstance:approve")
@Log(title = "故障报修工单审批", businessType = BusinessType.UPDATE) @Log(title = "故障报修工单审批", businessType = BusinessType.UPDATE)
@PostMapping("/approve") @PostMapping("/approve")
public R<Void> approve(@RequestParam Long repairInstanceId, public R<Void> approve(@RequestParam Long repairInstanceId,
@ -151,7 +151,7 @@ public class DmsBillsFaultInstanceController extends BaseController {
* @param repairInstanceId ID * @param repairInstanceId ID
* @param confirmResult 1- * @param confirmResult 1-
*/ */
@SaCheckPermission("dms:dmsBillsFaultInstance:confirm") //@SaCheckPermission("dms:dmsBillsFaultInstance:confirm")
@Log(title = "故障报修工单确认", businessType = BusinessType.UPDATE) @Log(title = "故障报修工单确认", businessType = BusinessType.UPDATE)
@PostMapping("/confirm") @PostMapping("/confirm")
public R<Void> confirm(@RequestParam Long repairInstanceId, public R<Void> confirm(@RequestParam Long repairInstanceId,

@ -307,7 +307,7 @@ public class DmsBillsFaultInstanceServiceImpl implements IDmsBillsFaultInstanceS
throw new ServiceException("工单当前状态不允许审批"); throw new ServiceException("工单当前状态不允许审批");
} }
// 更新审批状态 // 更新审批状态和工单状态
workOrder.setApproveStatus(approveStatus); workOrder.setApproveStatus(approveStatus);
if (DmsConstants.DMS_BILLS_FAULT_INSTANCE_APPROVE_STATUS_APPROVED.equals(approveStatus)) { if (DmsConstants.DMS_BILLS_FAULT_INSTANCE_APPROVE_STATUS_APPROVED.equals(approveStatus)) {
@ -318,16 +318,24 @@ public class DmsBillsFaultInstanceServiceImpl implements IDmsBillsFaultInstanceS
workOrder.setBillsStatus(DmsConstants.DMS_BILLS_FAULT_INSTANCE_STATUS_FINISH); workOrder.setBillsStatus(DmsConstants.DMS_BILLS_FAULT_INSTANCE_STATUS_FINISH);
} }
// 更新工单状态 // 更新工单状态,确保业务数据一致性
boolean updateResult = baseMapper.updateById(workOrder) > 0; boolean updateResult = baseMapper.updateById(workOrder) > 0;
if (updateResult && workOrder.getWfDefinitionId() != null) { if (!updateResult) {
// 推进工作流 throw new ServiceException("工单状态更新失败");
}
// 业务状态更新成功后,再推进工作流
if (workOrder.getWfDefinitionId() != null) {
try {
// 获取当前任务ID
Long currentTaskId = remoteWorkflowService.getCurrentTaskIdByInstanceId(workOrder.getWfDefinitionId()); Long currentTaskId = remoteWorkflowService.getCurrentTaskIdByInstanceId(workOrder.getWfDefinitionId());
if (currentTaskId != null) { if (currentTaskId != null) {
RemoteCompleteTask remoteCompleteTask = new RemoteCompleteTask(); RemoteCompleteTask remoteCompleteTask = new RemoteCompleteTask();
remoteCompleteTask.setTaskId(currentTaskId); remoteCompleteTask.setTaskId(currentTaskId);
remoteCompleteTask.setMessage(message); remoteCompleteTask.setMessage(message != null ? message : "审批完成");
// 设置消息类型
List<String> messageTypes = new ArrayList<>(); List<String> messageTypes = new ArrayList<>();
messageTypes.add("system"); messageTypes.add("system");
remoteCompleteTask.setMessageType(messageTypes); remoteCompleteTask.setMessageType(messageTypes);
@ -335,9 +343,25 @@ public class DmsBillsFaultInstanceServiceImpl implements IDmsBillsFaultInstanceS
// 设置工作流变量 - approveStatus用于互斥网关判断 // 设置工作流变量 - approveStatus用于互斥网关判断
Map<String, Object> variables = new HashMap<>(); Map<String, Object> variables = new HashMap<>();
variables.put("approveStatus", approveStatus); variables.put("approveStatus", approveStatus);
variables.put("businessId", repairInstanceId.toString());
remoteCompleteTask.setVariables(variables); remoteCompleteTask.setVariables(variables);
remoteWorkflowService.completeTask(remoteCompleteTask);
// 推进工作流
boolean workflowResult = remoteWorkflowService.completeTask(remoteCompleteTask);
if (!workflowResult) {
log.warn("工作流推进失败但业务状态已更新成功repairInstanceId: {}, approveStatus: {}",
repairInstanceId, approveStatus);
// 工作流推进失败不影响业务操作的成功
} else {
log.info("审批工单成功repairInstanceId: {}, approveStatus: {}", repairInstanceId, approveStatus);
}
} else {
log.warn("未找到当前活跃任务跳过工作流推进repairInstanceId: {}", repairInstanceId);
}
} catch (Exception e) {
log.error("工作流推进异常repairInstanceId: {}, approveStatus: {}", repairInstanceId, approveStatus, e);
// 工作流推进失败不影响业务操作的成功,但需要记录日志
} }
} }

Loading…
Cancel
Save