From 4dbdb4bc373f0cb20c7aa374d8cbcadfa7c56c97 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期三, 01 四月 2026 14:59:15 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java | 41 +++++++++++++++++++++++++++++++++++++++++
1 files changed, 41 insertions(+), 0 deletions(-)
diff --git a/xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java b/xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java
index 59f1290..b79d9e2 100644
--- a/xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java
+++ b/xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java
@@ -42,6 +42,7 @@
import com.xiaopeng.common.core.constant.CacheConstants;
import com.xiaopeng.common.core.constant.Constants;
import com.xiaopeng.common.core.domain.R;
+import com.xiaopeng.common.core.enums.CancelOrderSceneEnum;
import com.xiaopeng.common.core.enums.OrderStatusEnum;
import com.xiaopeng.common.core.enums.PushMessageTypeEnum;
import com.xiaopeng.common.core.utils.StringUtils;
@@ -71,6 +72,8 @@
@Slf4j
@Service
public class KafkaConsumerService {
+ private static final String CANCEL_ORDER_CONTEXT_PREFIX = "CANCEL_ORDER_CONTEXT:";
+
@Resource
private XpMapClient xpMapClient;
@@ -1162,6 +1165,15 @@
case ORDER_CANCELLED:
//已取消
if(!orderId.contains("XU")){
+ String taskId = orderStatusInfo.getTaskId();
+ JSONObject cancelContext = getCancelOrderContext(taskId);
+ if (shouldSkipCancelForReassign(cancelContext)) {
+ log.info("改派旧车取消回调,跳过订单取消处理,orderId: {}, taskId: {}, cancelScene: {}, context: {}",
+ orderId, taskId, cancelContext.getString("cancelScene"), cancelContext);
+ //响应消息
+ responseMessage(sequence, cancelContext.getString("vin"));
+ return;
+ }
if(orderId.contains("TEST")){
//判断订单状态,已经取消的不作处理
Object cacheObject = redisService.getCacheObject("TEST_ORDER_STATUS:" + orderId.substring(4));
@@ -1370,6 +1382,35 @@
}
/**
+ * 根据taskId获取订单取消的上下文信息
+ * @param taskId
+ * @return
+ */
+ private JSONObject getCancelOrderContext(String taskId) {
+ if (StringUtils.isEmpty(taskId)) {
+ return null;
+ }
+ Object cacheObject = redisService.getCacheObject(CANCEL_ORDER_CONTEXT_PREFIX + taskId);
+ if (cacheObject == null) {
+ return null;
+ }
+ return JSON.parseObject(cacheObject.toString());
+ }
+
+ /**
+ * 判断是否是改派旧车取消回调,是则跳过订单取消处理
+ * @param cancelContext
+ * @return
+ */
+ private boolean shouldSkipCancelForReassign(JSONObject cancelContext) {
+ if (cancelContext == null) {
+ return false;
+ }
+ return CancelOrderSceneEnum.REASSIGN_OLD_VEHICLE == CancelOrderSceneEnum.fromCode(
+ cancelContext.getString("cancelScene"));
+ }
+
+ /**
* 云端下发导航到XPU
* @param requestId XPU请求id
* @param routeId 高德导航id
--
Gitblit v1.7.1