From 4763caf2ccb10d9f86c96852eb2a3af2f1317a1d Mon Sep 17 00:00:00 2001 From: lzh Date: Thu, 26 Mar 2026 16:09:58 +0800 Subject: [PATCH] =?UTF-8?q?fix(ops):=20=E7=A7=BB=E9=99=A4=20OrderLifecycle?= =?UTF-8?q?Manager=20=E4=B8=AD=E9=87=8D=E5=A4=8D=E7=9A=84=E4=B8=9A?= =?UTF-8?q?=E5=8A=A1=E6=97=A5=E5=BF=97=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit LifecycleManager 是通用层,业务日志统一由各业务线 EventListener 负责。 移除 cancelOrder、completeOrder(ADMIN)、pauseOrder、resumeOrder 中的 eventLogRecorder 调用,避免与 SecurityOrderEventListener 等监听器产生 重复日志记录。保留 interruptOrder 的日志(P0 打断是通用机制)。 Co-Authored-By: Claude Opus 4.6 (1M context) --- .../lifecycle/OrderLifecycleManagerImpl.java | 69 ++----------------- 1 file changed, 4 insertions(+), 65 deletions(-) diff --git a/viewsh-module-ops/viewsh-module-ops-biz/src/main/java/com/viewsh/module/ops/core/lifecycle/OrderLifecycleManagerImpl.java b/viewsh-module-ops/viewsh-module-ops-biz/src/main/java/com/viewsh/module/ops/core/lifecycle/OrderLifecycleManagerImpl.java index d593d05..3864f49 100644 --- a/viewsh-module-ops/viewsh-module-ops-biz/src/main/java/com/viewsh/module/ops/core/lifecycle/OrderLifecycleManagerImpl.java +++ b/viewsh-module-ops/viewsh-module-ops-biz/src/main/java/com/viewsh/module/ops/core/lifecycle/OrderLifecycleManagerImpl.java @@ -180,9 +180,7 @@ public class OrderLifecycleManagerImpl implements OrderLifecycleManager { if (!result.isSuccess()) { throw new IllegalStateException("暂停工单失败: " + result.getMessage()); } - - // 记录业务日志 - recordStatusChangeLog(orderId, result, LogType.ORDER_PAUSED.getCode(), "工单暂停"); + // 业务日志由各业务线 EventListener 统一记录 } @Override @@ -205,9 +203,7 @@ public class OrderLifecycleManagerImpl implements OrderLifecycleManager { if (!result.isSuccess()) { throw new IllegalStateException("恢复工单失败: " + result.getMessage()); } - - // 记录业务日志 - recordStatusChangeLog(orderId, result, LogType.ORDER_RESUMED.getCode(), "工单恢复"); + // 业务日志由各业务线 EventListener 统一记录 } // ==================== 打断/恢复 ==================== @@ -295,11 +291,7 @@ public class OrderLifecycleManagerImpl implements OrderLifecycleManager { throw new IllegalStateException("完成工单失败: " + result.getMessage()); } - // 注意:IoT 触发的自动完成在 CleanOrderCompleteEventHandler 中记录日志 - // 管理员手动完成时记录日志 - if (operatorType == OperatorTypeEnum.ADMIN) { - recordStatusChangeLog(orderId, result, LogType.ORDER_COMPLETED.getCode(), "工单手动完成"); - } + // 业务日志由各业务线 EventListener 统一记录 } @Override @@ -327,23 +319,7 @@ public class OrderLifecycleManagerImpl implements OrderLifecycleManager { if (!result.isSuccess()) { throw new IllegalStateException("取消工单失败: " + result.getMessage()); } - - // 记录业务日志 - Map extra = new HashMap<>(); - extra.put("cancelReason", reason); - extra.put("operatorType", operatorType != null ? operatorType.getType() : "SYSTEM"); - - eventLogRecorder.record(EventLogRecord.builder() - .module(LogModule.fromOrderType(order != null ? order.getOrderType() : null)) - .domain(EventDomain.SYSTEM) - .eventType(LogType.ORDER_CANCELLED.getCode()) - .message("工单已取消: " + reason) - .targetId(orderId) - .targetType("order") - .deviceId(order != null ? order.getAssigneeDeviceId() : null) - .personId(order != null ? order.getAssigneeId() : null) - .payload(extra) - .build()); + // 业务日志由各业务线 EventListener 统一记录 } @Override @@ -433,41 +409,4 @@ public class OrderLifecycleManagerImpl implements OrderLifecycleManager { || WorkOrderStatusEnum.ARRIVED == status; } - /** - * 记录状态变更业务日志 - * - * @param orderId 工单ID - * @param result 状态转换结果 - * @param eventType 事件类型 - * @param message 日志消息 - */ - private void recordStatusChangeLog(Long orderId, OrderTransitionResult result, - String eventType, String message) { - try { - OpsOrderDO order = opsOrderMapper.selectById(orderId); - if (order == null) { - return; - } - - Map extra = new HashMap<>(); - extra.put("oldStatus", result.getOldStatus() != null ? result.getOldStatus().getStatus() : null); - extra.put("newStatus", result.getNewStatus() != null ? result.getNewStatus().getStatus() : null); - - eventLogRecorder.record(EventLogRecord.builder() - .module(LogModule.fromOrderType(order.getOrderType())) - .domain(EventDomain.DISPATCH) - .eventType(eventType) - .message(message) - .targetId(orderId) - .targetType("order") - .deviceId(order.getAssigneeDeviceId()) - .personId(order.getAssigneeId()) - .payload(extra) - .build()); - - } catch (Exception e) { - log.warn("[OrderLifecycleManager] 记录状态变更日志失败: orderId={}, eventType={}", - orderId, eventType, e); - } - } }