From 6f7abed0948150344c384d46a1df7ebc8b314878 Mon Sep 17 00:00:00 2001 From: zangchenhao Date: Thu, 3 Jul 2025 21:29:22 +0800 Subject: [PATCH] =?UTF-8?q?refactor(dms):=20=E4=BC=98=E5=8C=96=E6=95=85?= =?UTF-8?q?=E9=9A=9C=E6=8A=A5=E4=BF=AE=E5=B7=A5=E5=8D=95=E5=AE=A1=E6=89=B9?= =?UTF-8?q?=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除审批和确认方法的权限注解 - 优化工单状态更新逻辑,确保业务数据一致性 - 改进工作流推进过程,增加异常处理和日志记录 - 调整代码格式,提高可读性 --- .../DmsBillsFaultInstanceController.java | 10 +-- .../DmsBillsFaultInstanceServiceImpl.java | 62 +++++++++++++------ 2 files changed, 48 insertions(+), 24 deletions(-) diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsBillsFaultInstanceController.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsBillsFaultInstanceController.java index 84bf47c..98bde88 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsBillsFaultInstanceController.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsBillsFaultInstanceController.java @@ -136,11 +136,11 @@ public class DmsBillsFaultInstanceController extends BaseController { * @param approveStatus 审批状态(2-审批成功,3-审批失败) * @param message 审批意见 */ - @SaCheckPermission("dms:dmsBillsFaultInstance:approve") + //@SaCheckPermission("dms:dmsBillsFaultInstance:approve") @Log(title = "故障报修工单审批", businessType = BusinessType.UPDATE) @PostMapping("/approve") - public R approve(@RequestParam Long repairInstanceId, - @RequestParam String approveStatus, + public R approve(@RequestParam Long repairInstanceId, + @RequestParam String approveStatus, @RequestParam(required = false) String message) { return toAjax(dmsBillsFaultInstanceService.approveWorkOrder(repairInstanceId, approveStatus, message)); } @@ -151,10 +151,10 @@ public class DmsBillsFaultInstanceController extends BaseController { * @param repairInstanceId 工单ID * @param confirmResult 确认结果(1-确认完成) */ - @SaCheckPermission("dms:dmsBillsFaultInstance:confirm") + //@SaCheckPermission("dms:dmsBillsFaultInstance:confirm") @Log(title = "故障报修工单确认", businessType = BusinessType.UPDATE) @PostMapping("/confirm") - public R confirm(@RequestParam Long repairInstanceId, + public R confirm(@RequestParam Long repairInstanceId, @RequestParam String confirmResult) { String confirmUser = LoginHelper.getUsername(); return toAjax(dmsBillsFaultInstanceService.confirmRepairResult(repairInstanceId, confirmResult, confirmUser)); diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsFaultInstanceServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsFaultInstanceServiceImpl.java index d36f962..7eb322c 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsFaultInstanceServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsFaultInstanceServiceImpl.java @@ -307,7 +307,7 @@ public class DmsBillsFaultInstanceServiceImpl implements IDmsBillsFaultInstanceS throw new ServiceException("工单当前状态不允许审批"); } - // 更新审批状态 + // 更新审批状态和工单状态 workOrder.setApproveStatus(approveStatus); if (DmsConstants.DMS_BILLS_FAULT_INSTANCE_APPROVE_STATUS_APPROVED.equals(approveStatus)) { @@ -318,26 +318,50 @@ public class DmsBillsFaultInstanceServiceImpl implements IDmsBillsFaultInstanceS workOrder.setBillsStatus(DmsConstants.DMS_BILLS_FAULT_INSTANCE_STATUS_FINISH); } - // 更新工单状态 + // 先更新工单状态,确保业务数据一致性 boolean updateResult = baseMapper.updateById(workOrder) > 0; + + if (!updateResult) { + throw new ServiceException("工单状态更新失败"); + } - if (updateResult && workOrder.getWfDefinitionId() != null) { - // 推进工作流 - Long currentTaskId = remoteWorkflowService.getCurrentTaskIdByInstanceId(workOrder.getWfDefinitionId()); - if (currentTaskId != null) { - RemoteCompleteTask remoteCompleteTask = new RemoteCompleteTask(); - remoteCompleteTask.setTaskId(currentTaskId); - remoteCompleteTask.setMessage(message); - List messageTypes = new ArrayList<>(); - messageTypes.add("system"); - remoteCompleteTask.setMessageType(messageTypes); - - // 设置工作流变量 - approveStatus用于互斥网关判断 - Map variables = new HashMap<>(); - variables.put("approveStatus", approveStatus); - - remoteCompleteTask.setVariables(variables); - remoteWorkflowService.completeTask(remoteCompleteTask); + // 业务状态更新成功后,再推进工作流 + if (workOrder.getWfDefinitionId() != null) { + try { + // 获取当前任务ID + Long currentTaskId = remoteWorkflowService.getCurrentTaskIdByInstanceId(workOrder.getWfDefinitionId()); + if (currentTaskId != null) { + RemoteCompleteTask remoteCompleteTask = new RemoteCompleteTask(); + remoteCompleteTask.setTaskId(currentTaskId); + remoteCompleteTask.setMessage(message != null ? message : "审批完成"); + + // 设置消息类型 + List messageTypes = new ArrayList<>(); + messageTypes.add("system"); + remoteCompleteTask.setMessageType(messageTypes); + + // 设置工作流变量 - approveStatus用于互斥网关判断 + Map variables = new HashMap<>(); + variables.put("approveStatus", approveStatus); + variables.put("businessId", repairInstanceId.toString()); + + remoteCompleteTask.setVariables(variables); + + // 推进工作流 + 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); + // 工作流推进失败不影响业务操作的成功,但需要记录日志 } }