From 7f72660c56e84b76db4781d02d10ae1c83c16f18 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期六, 28 二月 2026 11:14:32 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java |   40 +++++++++++++++++++++++++++++++++++-----
 1 files changed, 35 insertions(+), 5 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 6c98b1e..bbd4aee 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
@@ -1238,7 +1238,7 @@
             useUserCouponDto.setUserCouponId(order.getCouponId());
             xpAppUserCouponClient.useUserCoupon(useUserCouponDto);
         }
-// 计算完价格后 挑选优惠券
+       // 计算完价格后 挑选优惠券
         GetUserCouponDto getUserCouponDto = new GetUserCouponDto();
         getUserCouponDto.setUserId(Long.valueOf(uid));
         getUserCouponDto.setTotalAmount(order.getOrderMoney().doubleValue());
@@ -1250,10 +1250,31 @@
         }
         order.setAppUserId(null);
         baseMapper.updateById(order);
+
+
+
+
+
         // 结束后的车辆操作
         if(vehicle!=null){
+            // 修改车辆状态
+            vehicle.setState(0);
+            xpVehicleClient.updateVehicleById(vehicle);
+
+
+            // 修改mongodb车辆状态
+
+
+
+
             // 生成新的巡游单子 回到最新巡游的初始起点位置
             XpCruiseOrder xpCruiseOrders = xpCruiseOrderMapper.selectOne(new LambdaQueryWrapper<XpCruiseOrder>().eq(XpCruiseOrder::getVehicleId, vehicle.getId()).eq(XpCruiseOrder::getStatus, 2).orderByDesc(BaseModel::getCreateTime).last("limit 1"));
+            int temp=0;
+            if(xpCruiseOrders==null){
+                temp=1;
+                //特殊情况 可能没有产生终止的订单  (到站点就被正常接单了)所以找正常订单
+                xpCruiseOrders=xpCruiseOrderMapper.selectOne(new LambdaQueryWrapper<XpCruiseOrder>().eq(XpCruiseOrder::getVehicleId, vehicle.getId()).eq(XpCruiseOrder::getStatus, 3).orderByDesc(BaseModel::getCreateTime).last("limit 1"));
+            }
             XpCruiseOrder xpCruiseOrder = new XpCruiseOrder();
             xpCruiseOrder.setVehicleId(vehicle.getId());
             xpCruiseOrder.setFleetId(vehicle.getFleetId());
@@ -1265,10 +1286,19 @@
             xpCruiseOrder.setStartLon(order.getEndLon());
             xpCruiseOrder.setStartLat(order.getEndLat());
 
-            xpCruiseOrder.setEndPointId(xpCruiseOrders.getStartPointId());
-            xpCruiseOrder.setEndPointName(xpCruiseOrders.getStartPointName());
-            xpCruiseOrder.setEndLon(xpCruiseOrders.getStartLon());
-            xpCruiseOrder.setEndLat(xpCruiseOrders.getStartLat());
+            // 完成的直接走终点   终止的走起点
+            if(temp==0){
+                xpCruiseOrder.setEndPointId(xpCruiseOrders.getStartPointId());
+                xpCruiseOrder.setEndPointName(xpCruiseOrders.getStartPointName());
+                xpCruiseOrder.setEndLon(xpCruiseOrders.getStartLon());
+                xpCruiseOrder.setEndLat(xpCruiseOrders.getStartLat());
+            }else {
+                xpCruiseOrder.setEndPointId(xpCruiseOrders.getEndPointId());
+                xpCruiseOrder.setEndPointName(xpCruiseOrders.getEndPointName());
+                xpCruiseOrder.setEndLon(xpCruiseOrders.getEndLon());
+                xpCruiseOrder.setEndLat(xpCruiseOrders.getEndLat());
+            }
+
 
             xpCruiseOrder.setStatus(1);
             xpCruiseOrder.setLastOrderId(xpCruiseOrders.getId());

--
Gitblit v1.7.1