From ac0fec61b2147126dd12e672175e26b17a2a6897 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期五, 06 三月 2026 17:07:08 +0800
Subject: [PATCH] 修改bug

---
 xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpCruiseOrderServiceImpl.java                |   15 ++++++++++++++-
 xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java                          |   19 ++++++++++++++++---
 xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/controller/OrderMissionController.java |   14 +++++++++++---
 3 files changed, 41 insertions(+), 7 deletions(-)

diff --git a/xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/controller/OrderMissionController.java b/xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/controller/OrderMissionController.java
index b111ff7..3780fb2 100644
--- a/xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/controller/OrderMissionController.java
+++ b/xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/controller/OrderMissionController.java
@@ -143,9 +143,17 @@
         SnowFlake snowFlake = new SnowFlake(0, 0);
         snowFlake.withStartTimestamp(1420041600000L);
         long sequence = snowFlake.nextId();
-        xpuUtil.cloudOrderOperation(operationBuilder.build(), dto.getVin(), sequence);
-        redisService.setCacheObject(String.valueOf(sequence), "cancelOrder_" + dto.getOrderId() + "_" + dto.getVin(), 30l, TimeUnit.MINUTES);
-        return R.ok(true);
+        MqttPublishDto mqttPublishDto = xpuUtil.cloudOrderOperation(operationBuilder.build(), dto.getVin(), sequence);
+
+        if (mqttPublishDto.getCode() == 200) {
+            if(!dto.getOrderId().contains("XU")){
+                // 正常订单处理
+                redisService.setCacheObject(String.valueOf(sequence), "cancelOrder_" + dto.getOrderId() + "_" + dto.getVin(), 30l, TimeUnit.MINUTES);
+            }
+            return R.ok(true);
+        }
+
+        return R.ok(false);
 
 
     }
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 bf7424f..ce7dc72 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
@@ -784,7 +784,11 @@
                             continue;
                         }
                         //  关闭巡游单子
-                        xpCruiseOrderClient.updateCruiseOrder(vehiclePosition.getVehicleVin());
+                        R<String> stringR = xpCruiseOrderClient.updateCruiseOrder(vehiclePosition.getVehicleVin());
+                        if(stringR ==null || stringR.getData()==null){
+                            log.info("关闭巡游单子失败");
+                            continue;
+                        }
 
                         // 下发命令
                         PushOrderDto pushOrderDto = new PushOrderDto();
@@ -830,7 +834,12 @@
                             continue;
                         }
                         //  关闭巡游单子
-                        xpCruiseOrderClient.updateCruiseOrder(vehicleId1.getVehicleVin());
+                        R<String> stringR = xpCruiseOrderClient.updateCruiseOrder(vehicleId1.getVehicleVin());
+                        if(stringR ==null || stringR.getData()==null){
+                            log.info("关闭巡游单子失败");
+                            continue;
+                        }
+
 
                         PushOrderDto pushOrderDto = new PushOrderDto();
                         pushOrderDto.setVin(vehiclePosition.getVin());
@@ -910,7 +919,11 @@
                     continue;
                 }
                 //  关闭巡游单子
-                xpCruiseOrderClient.updateCruiseOrder(vehicleId1.getVehicleVin());
+                R<String> stringR = xpCruiseOrderClient.updateCruiseOrder(vehicleId1.getVehicleVin());
+                if(stringR ==null || stringR.getData()==null){
+                    log.info("关闭巡游单子失败");
+                    continue;
+                }
 
                 PushOrderDto pushOrderDto = new PushOrderDto();
                 pushOrderDto.setVin(vehiclePosition.getVin());
diff --git a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpCruiseOrderServiceImpl.java b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpCruiseOrderServiceImpl.java
index ab89fcf..bd63f6b 100644
--- a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpCruiseOrderServiceImpl.java
+++ b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpCruiseOrderServiceImpl.java
@@ -118,7 +118,7 @@
     private final XpVehicleClient xpVehicleClient;
     private final XpFleetVehicleClient xpFleetVehicleClient;
     private final XpFleetClient xpFleetClient;
-
+    private final OrderMissionClient orderMissionClient;
     /**
      * 关闭当前巡游单子
      * @param vin
@@ -131,6 +131,19 @@
             xpCruiseOrder.setStatus(2);
             this.update(xpCruiseOrder, wrapper);
             // todo 给XPU下发订单取消报文,如果取消不成功需要重试。两次不成功,则需要换车
+            PushOrderDto pushOrderDto = new PushOrderDto();
+            pushOrderDto.setVin(vin);
+            pushOrderDto.setOrderId(xpCruiseOrder.getId());
+            pushOrderDto.setOperation_type(OrderOperationType.VEHICLE_CANCEL_ORDER);
+            R<Boolean> booleanR = orderMissionClient.cancelOrder(pushOrderDto);
+            if(booleanR==null || !booleanR.getData()){
+                log.error("下发失败重试一次");
+                R<Boolean> booleanR1 = orderMissionClient.cancelOrder(pushOrderDto);
+                if(booleanR1==null || !booleanR1.getData()){
+                    log.error("换车");
+                    return null;
+                }
+            }
 
             return xpCruiseOrder.getId();
         }

--
Gitblit v1.7.1