From e23f8cafc890bdd23dc13435de6de5569e829bd5 Mon Sep 17 00:00:00 2001
From: “mitao” <“2763622819@qq.com”>
Date: 星期五, 20 三月 2026 17:08:44 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java |   23 ++++++++++++++++++++++-
 1 files changed, 22 insertions(+), 1 deletions(-)

diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java
index e195114..6cd1259 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java
@@ -25,6 +25,7 @@
 import com.xiaopeng.api.vo.operation.VehiclePositionVo;
 import com.xiaopeng.api.vo.vehicleConvoy.AddTaxiPassengerVo;
 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.redis.service.RedisService;
 import com.xiaopeng.operation.mapper.XpElectronicFenceMapper;
@@ -43,6 +44,8 @@
 
 import javax.annotation.Resource;
 import java.util.*;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.ThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
@@ -218,7 +221,25 @@
                 SendMessageDTO dto = new SendMessageDTO();
                 dto.setAppUserId(xpOrder.getAppUserId().toString());
                 dto.setMessage("{\"type\":\"ORDER_STATUS\",\"content\":\"{\\\"orderId\\\":\\\"" + orderId + "\\\",\\\"status\\\":0}\",\"timestamp\":\"" + System.currentTimeMillis() + "\"}");
-                xpPushMessageClient.sendStatus(dto);
+                R<String> stringR = xpPushMessageClient.sendStatus(dto);
+                //推送失败,重试3次
+                if(stringR.getCode() != Constants.SUCCESS){
+                    ThreadPoolExecutor executor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>());
+                    executor.execute(() -> {
+                        for (int i = 0; i < 3; i++) {
+                            R<String> stringR1 = xpPushMessageClient.sendStatus(dto);
+                            if(stringR1.getCode() == Constants.SUCCESS){
+                                break;
+                            }
+                            try {
+                                Thread.sleep(1000);
+                            } catch (InterruptedException e) {
+                                throw new RuntimeException(e);
+                            }
+                            log.info("五轮推单结束后,无车辆接单,推送取消消息失败:{} {} {}", stringR1.getMsg(), JSON.toJSONString(dto), xpOrder.getOrderNumber());
+                        }
+                    });
+                }
                 //将订单从队列中移除
                 log.info("五轮推单结束,无车辆接单,执行队列移除订单 {}", orderNo);
                 redisService.popFirstElement(quoteName);

--
Gitblit v1.7.1