From ef32f6913325bb593d537b4ff433545f73ecb79a Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期三, 11 三月 2026 10:00:32 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/controller/OrderMissionController.java |   20 ++++++++++++--------
 1 files changed, 12 insertions(+), 8 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 8e493d9..6e12f34 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
@@ -19,9 +19,6 @@
 import com.xiaopeng.api.model.order.XpOrder;import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
 import com.xiaopeng.api.vo.SystemEventType;
 import com.xiaopeng.api.vo.automaticPilot.VehiclePosition;
-import com.xiaopeng.api.vo.automaticPilot.proto.down.cloudCreateOrder.RTTask;
-import com.xiaopeng.api.vo.automaticPilot.proto.down.cloudCreateOrder.TaskStatus;
-import com.xiaopeng.api.vo.automaticPilot.proto.down.cloudCreateOrder.TaskType;
 import com.xiaopeng.api.vo.automaticPilot.protobuf.*;
 import com.xiaopeng.api.vo.operation.RouteVo;
 import com.xiaopeng.api.vo.order.OrderTrajectoryVo;
@@ -66,9 +63,10 @@
     @PostMapping("/inner/pushOrder")
     public R<Boolean> pushOrder(@RequestBody PushOrderDto dto) {
         RtTask.Builder taskBuilder = RtTask.newBuilder();
-
+        SnowFlake snowFlake = new SnowFlake(0, 0);
+        snowFlake.withStartTimestamp(1420041600000L);
         taskBuilder.setOrderId(dto.getOrderId().toString());
-        taskBuilder.setTaskId("MISSION_"+ IdUtil.fastUUID());
+        taskBuilder.setTaskId(snowFlake.nextId() + "");
 
         if(dto.getOrderId().contains("XU")){
             taskBuilder.setTaskType(OrderType.ORDER_TYPE_CRUISE);
@@ -102,6 +100,7 @@
             pointBuilderEnd.setPoint(geoPointBuilder.build());
             taskBuilder.addPoints(pointBuilderEnd);
             taskBuilder.setSequence(1);
+            taskBuilder.addOrderPhase(OrderPhase.ROUTE_TO_CRUISE);
         }else{
             //用户订单
             if(dto.getStage() == 1){
@@ -127,6 +126,7 @@
                 pointBuilderEnd.setPoint(geoPointBuilder.build());
                 taskBuilder.addPoints(pointBuilderEnd);
                 taskBuilder.setSequence(1);
+                taskBuilder.addOrderPhase(OrderPhase.ROUTE_TO_PICKUP);
             }else{
                 //构建上车点位置信息
                 pointBuilderStart.setWaypointId(dto.getOrderId() + "-SD-001");
@@ -150,22 +150,26 @@
                 pointBuilderEnd.setPoint(geoPointBuilder.build());
                 taskBuilder.addPoints(pointBuilderEnd);
                 taskBuilder.setSequence(2);
+                taskBuilder.addOrderPhase(OrderPhase.ROUTE_TO_DESTINATION);
             }
         }
         RtTaskList.Builder taskListBuilder = RtTaskList.newBuilder();
         taskListBuilder.addTasks(taskBuilder.build());
 
-        SnowFlake snowFlake = new SnowFlake(0, 0);
-        snowFlake.withStartTimestamp(1420041600000L);
         long sequence = snowFlake.nextId();
         MqttPublishDto mqttPublishDto = xpuUtil.cloudCreateOrder(taskListBuilder.build(), dto.getVin(),sequence);
+        //先将车辆修改状态,防止在异步通知之前被其他订单选中
+        if (!dto.getOrderId().contains("XU") && mqttPublishDto.getCode()== 200) {
+            // 修改车子为接单状态
+            xpVehicleClient.updateVehicleStatus(new UpdateVehicleStateDto(dto.getVin(), 1));
+        }
         if(null != mqttPublishDto && mqttPublishDto.getCode() == 200){
             JSONObject jsonObject = new JSONObject();
             jsonObject.put("event", SystemEventType.CREATE_ORDER);
             jsonObject.put("orderType", dto.getOrderId().contains("XU") ? com.xiaopeng.api.vo.OrderType.CRUISE_ORDER : com.xiaopeng.api.vo.OrderType.USER_ORDER);
             jsonObject.put("orderId", dto.getOrderId());
             jsonObject.put("vin", dto.getVin());
-            redisTemplate.opsForValue().set("CREATE_ORDER:" + dto.getOrderId().toString(), jsonObject.toJSONString(),30, TimeUnit.MINUTES);
+            redisService.setCacheObject("CREATE_ORDER:" + dto.getOrderId().toString(), jsonObject.toJSONString(),30L, TimeUnit.MINUTES);
             return R.ok(true);
         }
         return R.ok(false);

--
Gitblit v1.7.1