fix(ops): 移除 OrderLifecycleManager 中重复的业务日志记录

LifecycleManager 是通用层,业务日志统一由各业务线 EventListener 负责。
移除 cancelOrder、completeOrder(ADMIN)、pauseOrder、resumeOrder 中的
eventLogRecorder 调用,避免与 SecurityOrderEventListener 等监听器产生
重复日志记录。保留 interruptOrder 的日志(P0 打断是通用机制)。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
lzh
2026-03-26 16:09:58 +08:00
parent bde680c188
commit 4763caf2cc

View File

@@ -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<String, Object> 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<String, Object> 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);
}
}
}