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:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user