From 73427c7a74686bd2a16e00c2ac9c28cf1de40c4c Mon Sep 17 00:00:00 2001
From: “mitao” <“2763622819@qq.com”>
Date: 星期日, 01 三月 2026 07:41:05 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java |   25 +++++++++++++++----------
 1 files changed, 15 insertions(+), 10 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 8365f24..ebfdb4b 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
@@ -51,6 +51,7 @@
 import com.xiaopeng.api.vo.OrderType;
 import com.xiaopeng.api.vo.account.GetUserListByUidsVo;
 import com.xiaopeng.api.vo.account.UserCouponVo;
+import com.xiaopeng.api.vo.automaticPilot.VehiclePosition;
 import com.xiaopeng.api.vo.automaticPilot.proto.down.cloudOrderOperation.OrderOperationType;
 import com.xiaopeng.api.vo.operation.RouteVo;
 import com.xiaopeng.api.vo.order.*;
@@ -1051,7 +1052,7 @@
         // 消息推送
         Map<String, Object> params = new HashMap<>();
         Map<String, Object> content = new HashMap<>();
-        content.put("orderId", order.getId());
+        content.put("orderId", order.getId().toString());
         content.put("status", OrderStatusEnum.CANCELED.getCode());
         params.put("type", PushMessageTypeEnum.ORDER_STATUS.getDesc());
         params.put("content", com.alibaba.fastjson2.JSONObject.toJSONString(content));
@@ -1987,8 +1988,9 @@
         //乘客单处理逻辑
         if(OrderType.USER_ORDER.equals(orderType)){
             XpOrder order = this.getById(orderId);
+            Long appUserId = order.getAppUserId();
             //订单为待接单状态
-            if(order.getStatus() == 1){
+            if(order.getStatus() < 4){
                 AddTaxiPassengerVo addTaxiPassengerVo = new AddTaxiPassengerVo();
                 order.setAcceptanceTime(LocalDateTime.now());
                 R<XpVehicle> byVehicleVin = xpVehicleClient.findByVehicleVin(dto.getXpVehicleVin());
@@ -2008,8 +2010,7 @@
                 String[] split = popFirstElement.split("_");
                 xpGeoQueryEntity.setOrderId(split[0]);
                 // 存mongo数据
-                xpPricingClient.updateXpGeoQueryEntity(split[0]);
-                order.setAppUserId(null);
+                xpPricingClient.updateXpGeoQueryEntity(order.getId().toString());
 
 
                 // 修改车辆信息
@@ -2017,18 +2018,19 @@
                 xpVehicleClient.updateVehicleById(vehicle);
 
                 //绑定用户和车辆关系
-                addTaxiPassengerVo.setUid(order.getAppUserId().toString());
+                addTaxiPassengerVo.setUid(appUserId.toString());
 
+                order.setAppUserId(null);
                 this.updateById(order);
                 addTaxiPassengerVo.setOrderNo(order.getOrderNumber());
                 // TODO appid
                 addTaxiPassengerVo.setAppId("");
                 userVehicleClient.addTaxiPassenger(addTaxiPassengerVo);
                 //推送乘客车辆到达预约点的导航数据
-                sendRoute(order.getAppUserId().toString(), orderId, "ORDER_NAVIGATION_START_DATA");
+                sendRoute(addTaxiPassengerVo.getUid(), orderId, "ORDER_NAVIGATION_START_DATA", dto.getXpVehicleVin());
             }else{
                 //推送行起点到终点的驶轨迹给乘客端
-                sendRoute(order.getAppUserId().toString(), orderId, "ORDER_NAVIGATION_END_DATA");
+                sendRoute(appUserId.toString(), orderId, "ORDER_NAVIGATION_END_DATA", dto.getXpVehicleVin());
             }
         }
     }
@@ -2039,7 +2041,8 @@
      * @param appUserId
      * @param keyStr
      */
-    public void sendRoute(String appUserId, Long orderId, String keyStr){
+    public void sendRoute(String appUserId, Long orderId, String keyStr, String vin){
+        VehiclePosition vehiclePosition = mongoTemplate.findOne(new Query(Criteria.where("vin").is(vin)), VehiclePosition.class);
         Object cacheObject = redisService.getCacheObject(keyStr + ":" + appUserId);
         if(null != cacheObject){
             RouteVo routeVo = JSON.parseObject(cacheObject.toString(), RouteVo.class);
@@ -2047,8 +2050,9 @@
             jsonObject.put("type", "ORDER_ROUTE");
             jsonObject.put("timestamp", System.currentTimeMillis());
             JSONObject content = new JSONObject();
-            content.put("orderId", orderId);
+            content.put("orderId", orderId.toString());
             content.put("routeType", "ORDER_NAVIGATION_START_DATA".equals(keyStr) ? 1 : 2);
+            content.put("direction", null != vehiclePosition ? vehiclePosition.getCourse() : 90);
             JSONObject route = new JSONObject();
             route.put("distance", routeVo.getDistance());
             route.put("duration", routeVo.getDuration());
@@ -2061,12 +2065,13 @@
                 return point;
             }).collect(Collectors.toList());
 
-            route.put("polyline", collect);
+            route.put("polyline", JSON.toJSONString(collect));
             content.put("route", route.toJSONString());
             jsonObject.put("content", content.toJSONString());
             SendMessageDTO messageDTO = new SendMessageDTO();
             messageDTO.setAppUserId(appUserId);
             messageDTO.setMessage(jsonObject.toJSONString());
+            System.err.println(messageDTO);
             xpPushMessageClient.sendRoute(messageDTO);
         }
     }

--
Gitblit v1.7.1