From 623cd3f63889f3263ac13391c1885b669fec3d66 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期一, 23 三月 2026 19:16:15 +0800
Subject: [PATCH] 修改车辆状态和新增加测试demo功能接口

---
 xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java |   72 +++++++++++++++++++++++-------------
 1 files changed, 46 insertions(+), 26 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 421abeb..1d792a8 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
@@ -622,8 +622,10 @@
                 String vin = jsonObject.getString("vin");
                 XpVehicle vehicle = xpVehicleClient.findByVehicleVin(vin).getData();
                 if (null != vehicle && 0 != vehicle.getState()) {
-                    vehicle.setState(0);
-                    xpVehicleClient.updateVehicleById(vehicle);
+                    XpVehicle vehicle1 = new XpVehicle();
+                    vehicle1.setId(vehicle.getId());
+                    vehicle1.setState(0);
+                    xpVehicleClient.updateVehicleById(vehicle1);
                 }
             }
         }
@@ -731,8 +733,10 @@
 
             //还原车辆状态
             if(1 == xpVehicle.getState()){
-                xpVehicle.setState(0);
-                xpVehicleClient.updateVehicleById(xpVehicle);
+                XpVehicle vehicle1 = new XpVehicle();
+                vehicle1.setId(xpVehicle.getId());
+                vehicle1.setState(0);
+                xpVehicleClient.updateVehicleById(vehicle1);
             }
 
             // 下发命令
@@ -743,7 +747,7 @@
             orderMissionClient.cancelOrder(pushOrderDto);
             log.info("运营人员取消订单成功,开始执行巡游订单 {}", order.getId());
             //车辆继续巡游
-            addCruiseMission(xpVehicle);
+            addCruiseMission(xpVehicle.getId());
 
         } else {
             log.info("查询车辆信息失败,订单ID: {}, 下发取消订单命令失败", order.getId());
@@ -984,12 +988,15 @@
                     }
 
                     // 6.1.3 修改原车辆状态为空闲
-                    oldVehicle.setState(0);
-                    xpVehicleClient.updateVehicleById(oldVehicle);
+                    XpVehicle vehicle1 = new XpVehicle();
+                    vehicle1.setId(oldVehicle.getId());
+                    vehicle1.setState(0);
+                    xpVehicleClient.updateVehicleById(vehicle1);
                     log.info("已将原车辆状态设为空闲,车辆ID: {}", oldVehicleId);
 
                     // 6.1.4 为原车辆创建返程巡游订单
-                    createReturnCruiseOrder(oldVehicle, order);
+                    --------------
+                    createReturnCruiseOrder(oldVehicle.getId(), order);
                 } else {
                     log.warn("查询原车辆信息失败,车辆ID: {}", oldVehicleId);
                 }
@@ -1082,8 +1089,10 @@
             log.info("已下发订单到新车辆,订单ID: {}, VIN: {}", orderId, newVehicle.getVehicleVin());
 
             // 11.3 更新新车辆状态为已接单
-            newVehicle.setState(1);
-            xpVehicleClient.updateVehicleById(newVehicle);
+            XpVehicle vehicle1 = new XpVehicle();
+            vehicle1.setId(newVehicle.getId());
+            vehicle1.setState(1);
+            xpVehicleClient.updateVehicleById(vehicle1);
             log.info("已将新车辆状态设为已接单,车辆ID: {}", newVehicleId);
 
         } catch (Exception e) {
@@ -1101,10 +1110,10 @@
      * - 其他状态,默认返回原出发点
      * </p>
      *
-     * @param oldVehicle 原车辆信息
      * @param order      当前订单信息
      */
-    private void createReturnCruiseOrder(XpVehicle oldVehicle, XpOrder order) {
+    private void createReturnCruiseOrder(Long vehicleId, XpOrder order) {
+        XpVehicle oldVehicle = xpVehicleClient.queryById(vehicleId).getData();
         try {
             // 查询该车辆最新的一条巡游订单
             XpCruiseOrder lastCruise = xpCruiseOrderMapper.selectOne(
@@ -1374,8 +1383,10 @@
                 String vin = jsonObject.getString("vin");
                 XpVehicle vehicle = xpVehicleClient.findByVehicleVin(vin).getData();
                 if (null != vehicle && 0 != vehicle.getState()) {
-                    vehicle.setState(0);
-                    xpVehicleClient.updateVehicleById(vehicle);
+                    XpVehicle vehicle1 = new XpVehicle();
+                    vehicle1.setId(vehicle.getId());
+                    vehicle1.setState(0);
+                    xpVehicleClient.updateVehicleById(vehicle1);
                 }
             }
         }
@@ -1433,8 +1444,10 @@
 
             //还原车辆状态
             if (1 == xpVehicle.getState()) {
-                xpVehicle.setState(0);
-                xpVehicleClient.updateVehicleById(xpVehicle);
+                XpVehicle vehicle1 = new XpVehicle();
+                vehicle1.setId(xpVehicle.getId());
+                vehicle1.setState(0);
+                xpVehicleClient.updateVehicleById(vehicle1);
             }
 
             //下发XPU报文
@@ -1445,7 +1458,7 @@
             orderMissionClient.cancelOrder(pushOrderDto);
             log.info("用户取消订单成功,开始执行巡游订单 {}", order.getId());
             //车辆继续巡游
-            addCruiseMission(xpVehicle);
+            addCruiseMission(xpVehicle.getId());
         }
 
     }
@@ -2097,11 +2110,11 @@
     /**
      * 添加巡游任务下发命令
      *
-     * @param vehicle
      * @param order
      */
 
-    public void addCruiseMission(XpVehicle vehicle, XpOrder order) {
+    public void addCruiseMission(Long vehicleId, XpOrder order) {
+        XpVehicle vehicle = xpVehicleClient.queryById(vehicleId).getData();
         log.info("添加巡游订单 {}", vehicle.getPlateNumber());
         if (vehicle.getState() != 0 || vehicle.getOperatingStatus() != 1) {
             log.info("添加巡游单失败,车辆状态限制 {}", vehicle.getState());
@@ -2178,14 +2191,16 @@
         if(null != xpTaskRule){
             LocalTime vehicleCollectionTime = xpTaskRule.getVehicleCollectionTime();
             if (vehicleCollectionTime.isBefore(LocalTime.now())) {
-                vehicle.setOperatingStatus(3);
+                XpVehicle vehicle1 = new XpVehicle();
+                vehicle1.setId(vehicle.getId());
+                vehicle1.setOperatingStatus(3);
+                xpVehicleClient.updateVehicleById(vehicle1);
                 //找到车辆的收车点位 更新终点点位
                 R<XpCruiseOrder> returnCruisePoint = xpCruisePlanClient.findReturnCruisePoint(xpCruiseOrder);
                 xpCruiseOrder = returnCruisePoint.getData();
                 xpCruiseOrder.setOrderType(2);
                 xpCruiseOrder.setOrderReverse(1);
             }
-            xpVehicleClient.updateVehicleById(vehicle);
         }
         xpCruiseOrderMapper.insert(xpCruiseOrder);
         log.info("添加巡游单成功 {}", xpCruiseOrder.getId());
@@ -2208,7 +2223,8 @@
      * 取消订单后的继续巡游任务
      * @param vehicle
      */
-    public void addCruiseMission(XpVehicle vehicle) {
+    public void addCruiseMission(Long vehicleId) {
+        XpVehicle vehicle = xpVehicleClient.queryById(vehicleId).getData();
         if (vehicle.getState() != 0 || vehicle.getOperatingStatus() != 1) {
             return;
         }
@@ -2287,14 +2303,16 @@
         if(null != xpTaskRule){
             LocalTime vehicleCollectionTime = xpTaskRule.getVehicleCollectionTime();
             if (vehicleCollectionTime.isBefore(LocalTime.now())) {
-                vehicle.setOperatingStatus(3);
+                XpVehicle vehicle1 = new XpVehicle();
+                vehicle1.setId(vehicle.getId());
+                vehicle1.setOperatingStatus(3);
+                xpVehicleClient.updateVehicleById(vehicle1);
                 //找到车辆的收车点位 更新终点点位
                 R<XpCruiseOrder> returnCruisePoint = xpCruisePlanClient.findReturnCruisePoint(xpCruiseOrder);
                 xpCruiseOrder = returnCruisePoint.getData();
                 xpCruiseOrder.setOrderType(2);
                 xpCruiseOrder.setOrderReverse(1);
             }
-            xpVehicleClient.updateVehicleById(vehicle);
         }
 
         xpCruiseOrderMapper.insert(xpCruiseOrder);
@@ -2852,8 +2870,10 @@
                 // 存mongo数据
                 xpPricingClient.updateXpGeoQueryEntity(order.getId().toString());
                 // 修改车辆信息
-                vehicle.setState(1);
-                xpVehicleClient.updateVehicleById(vehicle);
+                XpVehicle vehicle1 = new XpVehicle();
+                vehicle1.setId(vehicle.getId());
+                vehicle1.setState(1);
+                xpVehicleClient.updateVehicleById(vehicle1);
 
                 //绑定用户和车辆关系
                 addTaxiPassengerVo.setUid(appUserId.toString());

--
Gitblit v1.7.1