From 100f2d185dd0dabcfb2e7a0cd81aef840324238d Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期五, 20 三月 2026 17:56:57 +0800
Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/Robotaxi
---
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java | 179 ++++++++++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 158 insertions(+), 21 deletions(-)
diff --git a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
index 3bfca24..1c768a9 100644
--- a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
+++ b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -54,6 +54,7 @@
import com.xiaopeng.api.vo.vehicleConvoy.AddTaxiPassengerVo;
import com.xiaopeng.api.vo.vehicleConvoy.CancelTaxiPassengerVo;
import com.xiaopeng.common.core.constant.CacheConstants;
+import com.xiaopeng.common.core.constant.Constants;
import com.xiaopeng.common.core.constant.HttpStatus;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.enums.OrderStatusEnum;
@@ -114,6 +115,8 @@
import java.text.SimpleDateFormat;
import java.time.*;
import java.util.*;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.function.Function;
import java.util.stream.Collectors;
@@ -641,7 +644,27 @@
SendMessageDTO sendMessageDTO = new SendMessageDTO();
sendMessageDTO.setMessage(message);
sendMessageDTO.setAppUserId(String.valueOf(userId));
- xpPushMessageClient.sendStatus(sendMessageDTO);
+ R<String> stringR = xpPushMessageClient.sendStatus(sendMessageDTO);
+
+ //推送失败,重试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(sendMessageDTO);
+ if(stringR1.getCode() == Constants.SUCCESS){
+ break;
+ }
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ log.info("运维人员取消订单推送订单状态消息失败:{} {} {}", stringR1.getMsg(), JSON.toJSONString(sendMessageDTO), xpOrder.getOrderNumber());
+ }
+ });
+ }
+
return;
}
// 1. 更新订单状态为已取消(0)
@@ -667,7 +690,25 @@
SendMessageDTO sendMessageDTO = new SendMessageDTO();
sendMessageDTO.setMessage(message);
sendMessageDTO.setAppUserId(String.valueOf(userId));
- xpPushMessageClient.sendStatus(sendMessageDTO);
+ R<String> stringR = xpPushMessageClient.sendStatus(sendMessageDTO);
+ //推送失败,重试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(sendMessageDTO);
+ if(stringR1.getCode() == Constants.SUCCESS){
+ break;
+ }
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ log.info("运维人员取消订单推送订单状态消息失败:{} {} {}", stringR1.getMsg(), JSON.toJSONString(sendMessageDTO), xpOrder.getOrderNumber());
+ }
+ });
+ }
log.info("运营人员取消订单成功,推送乘客消息完成");
//查询车辆信息
@@ -730,8 +771,25 @@
SendMessageDTO sendMessageDTO = new SendMessageDTO();
sendMessageDTO.setMessage(message);
sendMessageDTO.setAppUserId(String.valueOf(order.getAppUserId()));
- xpPushMessageClient.sendStatus(sendMessageDTO);
- log.info("运营人员取消订单成功,推送乘客消息完成");
+ R<String> stringR = xpPushMessageClient.sendStatus(sendMessageDTO);
+ //推送失败,重试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(sendMessageDTO);
+ if(stringR1.getCode() == Constants.SUCCESS){
+ break;
+ }
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ log.info("运维人员关闭订单推送订单状态消息失败:{} {} {}", stringR1.getMsg(), JSON.toJSONString(sendMessageDTO), xpOrder.getOrderNumber());
+ }
+ });
+ }
log.info("订单关闭成功,订单ID: {}, 操作人: {}", order.getId(), SecurityUtils.getUsername());
}
@@ -1330,7 +1388,27 @@
SendMessageDTO sendMessageDTO = new SendMessageDTO();
sendMessageDTO.setMessage(message);
sendMessageDTO.setAppUserId(String.valueOf(appUserId));
- xpPushMessageClient.sendStatus(sendMessageDTO);
+ R<String> stringR = xpPushMessageClient.sendStatus(sendMessageDTO);
+ //推送失败,重试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(sendMessageDTO);
+ if(stringR1.getCode() == Constants.SUCCESS){
+ break;
+ }
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ log.info("定时任务取消订单推送订单状态消息失败:{} {} {}", stringR1.getMsg(), JSON.toJSONString(sendMessageDTO), xpOrder.getOrderNumber());
+ }
+ });
+ }
+
+
log.info("定时任务取消订单推送消息完毕");
// 移除mongo数据
@@ -1425,6 +1503,39 @@
xpOrder.setTripBegin(LocalDateTime.now());
break;
case 7:
+ // 推送倒计时消息
+ Map<String, Object> params = new HashMap<>();
+ Map<String, Object> content = new HashMap<>();
+ content.put("orderId", xpOrder.getId().toString());
+ content.put("isOpen", 1);
+ params.put("type", PushMessageTypeEnum.OPEN_TRUNK.getDesc());
+ params.put("content", JSONObject.toJSONString(content));
+ params.put("timestamp", new Date().getTime() + "");
+ String message = JSONObject.toJSONString(params);
+ SendMessageDTO sendMessageDTO = new SendMessageDTO();
+ sendMessageDTO.setMessage(message);
+ sendMessageDTO.setAppUserId(String.valueOf(xpOrder.getAppUserId()));
+ R<String> stringR = xpPushMessageClient.sendStatus(sendMessageDTO);
+ //推送失败,重试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(sendMessageDTO);
+ if(stringR1.getCode() == Constants.SUCCESS){
+ break;
+ }
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ log.info("推送倒计时消息失败:{} {} {}", stringR1.getMsg(), JSON.toJSONString(sendMessageDTO), xpOrder.getOrderNumber());
+ }
+ });
+ }
+
+ //创建定时结束订单和等待结束后下发巡游单的定时任务
Integer arriveTime = xpSystemSettingClient.getOrderFinishTime().getData();
// 添加自动结束行程定时任务job
Map<String, ? extends Object> endTripJobMaps =
@@ -1454,19 +1565,6 @@
DateUtils.localDateTimeToDate(LocalDateTime.now().plusMinutes(point.getParkingTimeLimit())),
jobMaps
);
- // 推送倒计时消息
- Map<String, Object> params = new HashMap<>();
- Map<String, Object> content = new HashMap<>();
- content.put("orderId", xpOrder.getId().toString());
- content.put("isOpen", 1);
- params.put("type", PushMessageTypeEnum.OPEN_TRUNK.getDesc());
- params.put("content", JSONObject.toJSONString(content));
- params.put("timestamp", new Date().getTime() + "");
- String message = JSONObject.toJSONString(params);
- SendMessageDTO sendMessageDTO = new SendMessageDTO();
- sendMessageDTO.setMessage(message);
- sendMessageDTO.setAppUserId(String.valueOf(xpOrder.getAppUserId()));
- xpPushMessageClient.sendStatus(sendMessageDTO);
break;
}
xpOrder.setStatus(status);
@@ -2433,6 +2531,9 @@
public void saveVehicleLocation(OrderTrajectory orderTrajectory) {
// 查询订单信息
XpOrder xpOrder = this.getById(orderTrajectory.getOrderId());
+ if(xpOrder.getStatus() != 6){
+ return;
+ }
// 计算距离
// 获取上一次定位
@@ -2715,8 +2816,26 @@
SendMessageDTO messageDTO = new SendMessageDTO();
messageDTO.setAppUserId(appUserId);
messageDTO.setMessage(jsonObject.toJSONString());
- System.err.println(messageDTO);
- xpPushMessageClient.sendRoute(messageDTO);
+ R<String> stringR = xpPushMessageClient.sendRoute(messageDTO);
+ XpOrder xpOrder = this.getById(orderId);
+ //推送失败,重试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(messageDTO);
+ if(stringR1.getCode() == Constants.SUCCESS){
+ break;
+ }
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ log.info("推送乘客端导航数据消息失败:{} {} {}", stringR1.getMsg(), JSON.toJSONString(messageDTO), xpOrder.getOrderNumber());
+ }
+ });
+ }
}
}
@@ -2819,7 +2938,25 @@
SendMessageDTO sendMessageDTO = new SendMessageDTO();
sendMessageDTO.setMessage(message);
sendMessageDTO.setAppUserId(String.valueOf(appUserId));
- xpPushMessageClient.sendStatus(sendMessageDTO);
+ R<String> stringR = xpPushMessageClient.sendStatus(sendMessageDTO);
+ //推送失败,重试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(sendMessageDTO);
+ if(stringR1.getCode() == Constants.SUCCESS){
+ break;
+ }
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ log.info("运维人员修改订单价格推送订单状态消息失败:{} {} {}", stringR1.getMsg(), JSON.toJSONString(sendMessageDTO), xpOrder.getOrderNumber());
+ }
+ });
+ }
log.info("订单修改价格推送消息完毕");
}
}
--
Gitblit v1.7.1