From 34f84e20bca7b2fa47c2b168ea73d754b232579a Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期三, 25 二月 2026 13:56:09 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java |   56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 54 insertions(+), 2 deletions(-)

diff --git a/xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java b/xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java
index d52dcaf..0c14fe8 100644
--- a/xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java
+++ b/xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java
@@ -1,8 +1,10 @@
 package com.xiaopeng.automaticPilot.service;
 
 import cn.hutool.core.lang.Snowflake;
+import cn.hutool.core.util.IdUtil;
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
+import com.xiaopeng.api.dto.automaticPilot.MqttPublishDto;
 import com.xiaopeng.api.dto.map.OrderRouteAndFareDto;
 import com.xiaopeng.api.dto.operation.LonLatDto;
 import com.xiaopeng.api.dto.operation.ReassignOrderDTO;
@@ -11,16 +13,21 @@
 import com.xiaopeng.api.dto.pushMessage.SendMessageDTO;
 import com.xiaopeng.api.feignClient.map.XpMapClient;
 import com.xiaopeng.api.feignClient.operation.ReassignOrderClient;
+import com.xiaopeng.api.feignClient.order.XpCruiseOrderClient;
 import com.xiaopeng.api.feignClient.order.XpOrderClient;
 import com.xiaopeng.api.feignClient.pushMessage.XpPushMessageClient;
 import com.xiaopeng.api.feignClient.vehicleConvoy.UserVehicleClient;
 import com.xiaopeng.api.feignClient.vehicleConvoy.XpVehicleClient;
+import com.xiaopeng.api.model.order.XpCruiseOrder;
 import com.xiaopeng.api.model.order.XpOrder;
 import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
 import com.xiaopeng.api.vo.automaticPilot.VehiclePosition;
 import com.xiaopeng.api.vo.automaticPilot.proto.down.GeoPoint;
 import com.xiaopeng.api.vo.automaticPilot.proto.down.ResponseMessage;
 import com.xiaopeng.api.vo.automaticPilot.proto.down.StatusCode;
+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.proto.down.cloudOrderOperation.*;
 import com.xiaopeng.api.vo.automaticPilot.proto.down.cloudPushNavigation.RestoreNavigationData;
 import com.xiaopeng.api.vo.automaticPilot.proto.up.MessageType;
@@ -41,6 +48,7 @@
 import com.xiaopeng.common.core.domain.R;
 import com.xiaopeng.common.core.enums.OrderStatusEnum;
 import com.xiaopeng.common.core.enums.PushMessageTypeEnum;
+import com.xiaopeng.common.core.utils.SnowFlake;
 import com.xiaopeng.common.core.utils.StringUtils;
 import com.xiaopeng.common.core.utils.uuid.UUID;
 import lombok.extern.slf4j.Slf4j;
@@ -89,6 +97,9 @@
 
     @Resource
     private UserVehicleClient userVehicleClient;
+
+    @Resource
+    private XpCruiseOrderClient xpCruiseOrderClient;
 
     @Resource
     private Snowflake snowflake;
@@ -249,7 +260,8 @@
         //车辆动态信息
         VehicleDynamicStatus dynamicStatus = vehicleStatus.getDynamic_status();
         dynamicStatus.setSpeed(dynamicStatus.getSpeed());
-        vehiclePosition.setCurrentElectricity(dynamicStatus.getBattery_level());
+        vehiclePosition.setCurrentElectricity(dynamicStatus.getBms_soc_disp());
+        vehiclePosition.setMileageRange(dynamicStatus.getDst_bat_disp());
         //订单信息
         OrderStatusInfo runningOrderStatusInfo = systemRuntimeStatus.getRunning_order_status_info();
         Long orderId = null;
@@ -687,7 +699,6 @@
         if(orderId.contains("XU")){
             //巡游单
             //响应消息
-            // TODO 1.处理结束当前巡游订单  2.创建新的巡游订单 返航  3.调用xpu车机接口  (判断是返航还是正常  返航需要存储之前的订单id)
             responseMessage(sequence, "");
             //前往目的地
             if(OrderStatusEnum.IN_SERVICE.equals(status)){
@@ -696,6 +707,47 @@
             //到达目的地
             if(OrderStatusEnum.COMPLETED.equals(status)){
 
+                    // 返程找到目前的订单 -》之前的订单 查询生成一个   正常巡游 找到下一个点位   若到达最后点位  则反向找点位  每次判断是否收车状态 是则不进行处理了
+                // 找到这个订单
+                R<XpCruiseOrder> cruiseOrder = xpCruiseOrderClient.getCruiseOrder(orderId);
+                if(cruiseOrder!=null){
+                    XpCruiseOrder xpCruiseOrder = cruiseOrder.getData();
+                    Long vehicleId = xpCruiseOrder.getVehicleId();
+
+                    // 关闭当前巡游单子
+                    xpCruiseOrderClient.updateCruiseOrder(xpCruiseOrder.getVehicleVin());
+                    R<XpVehicle> xpVehicleR = xpVehicleClient.queryById(vehicleId);
+                    XpVehicle xpVehicle = xpVehicleR.getData();
+                    // 运营中 继续执行
+                    if(xpVehicle.getOperatingStatus()==1 && xpVehicle.getState()==0){
+                        // 创建新的巡游单子  判断是否为返程单子
+                        if(xpCruiseOrder.getOrderType()==2){
+                            R<XpCruiseOrder> lastOrder = xpCruiseOrderClient.getCruiseOrder(xpCruiseOrder.getLastOrderId());
+                            XpCruiseOrder lastXpCruiseOrder = lastOrder.getData();
+
+                            // 修改一下id 加一个一样的巡游单子
+                            lastXpCruiseOrder.setId("XU"+ IdUtil.fastUUID());
+                            xpCruiseOrderClient.addCruiseOrder(lastXpCruiseOrder);
+
+
+                            RTTask task = new RTTask();
+                            task.setOrder_id(lastXpCruiseOrder.getId());
+                            task.setTask_id("MISSION_"+ IdUtil.fastUUID());
+                            task.setTask_type(TaskType.CRUISE);
+                            task.setStatus(TaskStatus.PENDING);
+                            SnowFlake snowFlake = new SnowFlake(0, 0);
+                            snowFlake.withStartTimestamp(1420041600000L);
+                            long sequence1 = snowFlake.nextId();
+                            xpuUtil.cloudCreateOrder(task, xpVehicle.getVehicleVin(),sequence1);
+                        }else if(xpCruiseOrder.getOrderType()==1){
+                           // 正常巡游 找到下一个点位   若到达最后点位  则反向找点位 TODO v
+
+
+                        }
+
+                    }
+
+                }
             }
         }else{
             //普通单

--
Gitblit v1.7.1