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-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/controller/OrderMissionController.java |   69 ++++++++++++++++++++++++++++------
 1 files changed, 57 insertions(+), 12 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 60299bc..7f20de2 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
@@ -32,6 +32,7 @@
 import com.xiaopeng.common.redis.service.RedisService;
 import io.swagger.annotations.Api;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.data.geo.Point;
 import org.springframework.data.mongodb.core.MongoTemplate;
 import org.springframework.data.mongodb.core.geo.GeoJsonPoint;
 import org.springframework.data.mongodb.core.query.Criteria;
@@ -46,6 +47,7 @@
 import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.ThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
 
 @Slf4j
 @RestController
@@ -170,7 +172,7 @@
         }
         RouteVo routeVo = routeVoR.getData();
         //缓存数据,用于后续推给乘客导航线路
-        redisService.setCacheObject("ORDER_NAVIGATION_START_DATA:" + xpOrder.getAppUserId(), com.alibaba.fastjson.JSON.toJSONString(routeVo), 24L, TimeUnit.HOURS);
+        redisService.setCacheObject("ORDER_NAVIGATION_START_DATA:" + xpOrder.getAppUserId(), JSON.toJSONString(routeVo), 24L, TimeUnit.HOURS);
 
         PopOrderDto dto1 = new PopOrderDto();
         dto1.setOrderId(Long.valueOf(orderId));
@@ -181,7 +183,7 @@
         //构建推送消息
         Map<String, Object> params = new HashMap<>();
         Map<String, Object> content = new HashMap<>();
-        content.put("orderId", orderId);
+        content.put("orderId", orderId.toString());
         content.put("status", 3);
         params.put("type", PushMessageTypeEnum.ORDER_STATUS.getDesc());
         params.put("content", JSONObject.toJSONString(content));
@@ -196,6 +198,17 @@
             log.error("推送消息失败:{}", stringR.getMsg());
         }
         xpOrderClient.updateOrderStatus(orderId, OrderStatusEnum.PICK_UP.getCode());
+
+//        PushOrderRouteDTO dto3 = new PushOrderRouteDTO();
+//        dto3.setOrderId(orderId);
+//        dto3.setRouteType(1);
+//        dto3.setLongitude(startLon);
+//        dto3.setLatitude(startLat);
+//        dto3.setDuration(10);
+//        dto3.setDistance(2);
+//        dto3.setDirection(60);
+//        xpPushMessageClient.pushOrderRoute(dto3);
+
         return r;
     }
 
@@ -228,7 +241,7 @@
                 Double longitude = lonLatDto.getLongitude();
 
                 //保存车辆实时位置到redis
-                redisTemplate.opsForGeo().add("vehiclePosition:" + vin, new GeoJsonPoint(longitude, latitude), vin);
+                redisTemplate.opsForGeo().add("vehiclePosition:" + vin, new Point(longitude, latitude), vin);
 
                 //保存车辆实时信息到mongodb
                 VehiclePosition vehiclePosition = mongoTemplate.findOne(new Query(Criteria.where("vin").is(vin)), VehiclePosition.class);
@@ -254,10 +267,11 @@
                     dto.setLatitude(latitude);
                     dto.setDuration(10);
                     dto.setDistance(2);
+                    dto.setDirection(60);
                     xpPushMessageClient.pushOrderRoute(dto);
                 }
 
-                //5秒钟循环一次
+                //2秒钟循环一次
                 try {
                     Thread.sleep(2000);
                 } catch (InterruptedException e) {
@@ -268,7 +282,7 @@
             //构建推送消息
             Map<String, Object> params = new HashMap<>();
             Map<String, Object> content = new HashMap<>();
-            content.put("orderId", orderId);
+            content.put("orderId", orderId.toString());
             content.put("status", 4);
             params.put("type", PushMessageTypeEnum.ORDER_STATUS.getDesc());
             params.put("content", JSONObject.toJSONString(content));
@@ -299,7 +313,7 @@
         //构建推送消息
         Map<String, Object> params = new HashMap<>();
         Map<String, Object> content = new HashMap<>();
-        content.put("orderId", orderId);
+        content.put("orderId", orderId.toString());
         content.put("status", status);
         params.put("type", PushMessageTypeEnum.ORDER_STATUS.getDesc());
         params.put("content", JSONObject.toJSONString(content));
@@ -313,6 +327,36 @@
             log.error("推送消息失败:{}", stringR.getMsg());
         }
         xpOrderClient.updateOrderStatus(orderId, status);
+        if(5 == status){
+            //主动推一次全程轨迹
+            Object cacheObject = redisService.getCacheObject("ORDER_NAVIGATION_END_DATA:" + xpOrder.getAppUserId());
+            RouteVo routeVo = JSON.parseObject(cacheObject.toString(), RouteVo.class);
+            com.alibaba.fastjson2.JSONObject jsonObject = new com.alibaba.fastjson2.JSONObject();
+            jsonObject.put("type", "ORDER_ROUTE");
+            jsonObject.put("timestamp", System.currentTimeMillis());
+            com.alibaba.fastjson2.JSONObject content1 = new com.alibaba.fastjson2.JSONObject();
+            content1.put("orderId", orderId.toString());
+            content1.put("routeType", 1);
+            com.alibaba.fastjson2.JSONObject route = new com.alibaba.fastjson2.JSONObject();
+            route.put("distance", routeVo.getDistance());
+            route.put("duration", routeVo.getDuration());
+            route.put("routeID", routeVo.getRouteID());
+
+            List<com.alibaba.fastjson2.JSONObject> collect = routeVo.getPolyline().stream().map(item -> {
+                com.alibaba.fastjson2.JSONObject point = new com.alibaba.fastjson2.JSONObject();
+                point.put("latitude", item.getLatitude());
+                point.put("longitude", item.getLongitude());
+                return point;
+            }).collect(Collectors.toList());
+
+            route.put("polyline", JSON.toJSONString(collect));
+            content1.put("route", route.toJSONString());
+            jsonObject.put("content", content1.toJSONString());
+            SendMessageDTO messageDTO = new SendMessageDTO();
+            messageDTO.setAppUserId(xpOrder.getAppUserId().toString());
+            messageDTO.setMessage(jsonObject.toJSONString());
+            xpPushMessageClient.sendRoute(messageDTO);
+        }
         return R.ok();
     }
 
@@ -346,7 +390,7 @@
                 Double longitude = lonLatDto.getLongitude();
 
                 //保存车辆实时位置到redis
-                redisTemplate.opsForGeo().add("vehiclePosition:" + vin, new GeoJsonPoint(longitude, latitude), vin);
+                redisTemplate.opsForGeo().add("vehiclePosition:" + vin, new Point(longitude, latitude), vin);
 
                 //保存车辆实时信息到mongodb
                 VehiclePosition vehiclePosition = mongoTemplate.findOne(new Query(Criteria.where("vin").is(vin)), VehiclePosition.class);
@@ -367,17 +411,18 @@
                 if (null != orderId) {
                     PushOrderRouteDTO dto = new PushOrderRouteDTO();
                     dto.setOrderId(orderId);
-                    dto.setRouteType(2);
+                    dto.setRouteType(1);
                     dto.setLongitude(longitude);
                     dto.setLatitude(latitude);
                     dto.setDuration(20);
                     dto.setDistance(10);
+                    dto.setDirection(60);
                     xpPushMessageClient.pushOrderRoute(dto);
                 }
 
                 //5秒钟循环一次
                 try {
-                    Thread.sleep(2000);
+                    Thread.sleep(500);
                 } catch (InterruptedException e) {
                     throw new RuntimeException(e);
                 }
@@ -386,8 +431,8 @@
             //构建推送消息
             Map<String, Object> params = new HashMap<>();
             Map<String, Object> content = new HashMap<>();
-            content.put("orderId", orderId);
-            content.put("status", 4);
+            content.put("orderId", orderId.toString());
+            content.put("status", 7);
             params.put("type", PushMessageTypeEnum.ORDER_STATUS.getDesc());
             params.put("content", JSONObject.toJSONString(content));
             params.put("timestamp", System.currentTimeMillis() + "");
@@ -399,7 +444,7 @@
             if (R.isError(stringR)) {
                 log.error("推送消息失败:{}", stringR.getMsg());
             }
-            xpOrderClient.updateOrderStatus(orderId, OrderStatusEnum.PICK_UP_GUESTS.getCode());
+            xpOrderClient.updateOrderStatus(orderId, OrderStatusEnum.SEE_OFF_GUESTS.getCode());
         });
     }
 

--
Gitblit v1.7.1