From c96fbe6b0aeb413a17c429133ee6d81d138144b9 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期二, 09 六月 2026 10:58:52 +0800
Subject: [PATCH] Merge branch '1.0' of http://120.76.84.145:10101/gitblit/r/java/Robotaxi into 1.0

---
 xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/schedule/VehicleCollectionScheduleTask.java |   39 ++++++++++++++++++++-------------------
 1 files changed, 20 insertions(+), 19 deletions(-)

diff --git a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/schedule/VehicleCollectionScheduleTask.java b/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/schedule/VehicleCollectionScheduleTask.java
index 146fc30..0cceeba 100644
--- a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/schedule/VehicleCollectionScheduleTask.java
+++ b/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/schedule/VehicleCollectionScheduleTask.java
@@ -1,8 +1,7 @@
 package com.xiaopeng.maintenance.schedule;
 
-import cn.hutool.core.util.IdUtil;
+import cn.hutool.core.lang.Snowflake;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.xiaopeng.api.dto.automaticPilot.PushOrderDto;
 import com.xiaopeng.api.feignClient.automaticPilot.OrderMissionClient;
 import com.xiaopeng.api.feignClient.operation.XpCruisePlanClient;
 import com.xiaopeng.api.feignClient.order.XpCruiseOrderClient;
@@ -10,9 +9,10 @@
 import com.xiaopeng.api.model.maintenance.XpTaskRule;
 import com.xiaopeng.api.model.order.XpCruiseOrder;
 import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
-import com.xiaopeng.api.vo.OrderType;
 import com.xiaopeng.api.vo.automaticPilot.VehiclePosition;
+import com.xiaopeng.api.vo.automaticPilot.protobuf.TaskActionType;
 import com.xiaopeng.common.core.domain.R;
+import com.xiaopeng.common.core.utils.SensitiveDataCryptoUtil;
 import com.xiaopeng.maintenance.mapper.XpTaskRuleMapper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -24,6 +24,7 @@
 import org.springframework.stereotype.Component;
 import org.springframework.util.CollectionUtils;
 
+import javax.annotation.Resource;
 import java.time.LocalTime;
 import java.util.Collections;
 import java.util.List;
@@ -65,6 +66,9 @@
 
     @Autowired
     private XpCruisePlanClient xpCruisePlanClient;
+
+    @Resource(name = "hutoolSnowflake")
+    private Snowflake snowflake;
 
     /**
      * 每分钟检查一次是否需要执行收车任务
@@ -200,11 +204,12 @@
      * @param xpVehicle 车辆信息
      */
     private void sendCollectionCommand(XpVehicle xpVehicle) {
+        String vin = SensitiveDataCryptoUtil.decryptIfPossible(xpVehicle.getVehicleVin());
         // 收车 关闭当前巡游单子 生成新的返程单子  找到收车站点
-        R<Long> r = xpCruiseOrderClient.updateCruiseOrder(xpVehicle.getVehicleVin());
+        XpCruiseOrder oldCruiseOrder = xpCruiseOrderClient.cancelCruiseOrderByVin(vin).getData();
 
         // mongodb 获取当前最新经纬度位置
-        VehiclePosition vehiclePosition = mongoTemplate.findOne(new Query(Criteria.where("vin").is(xpVehicle.getVehicleVin())), VehiclePosition.class);
+        VehiclePosition vehiclePosition = mongoTemplate.findOne(new Query(Criteria.where("vin").is(vin)), VehiclePosition.class);
         XpCruiseOrder xpCruiseOrder = new XpCruiseOrder();
         if(vehiclePosition!=null){
             double x = vehiclePosition.getPoint().getX();
@@ -218,23 +223,19 @@
         xpCruiseOrder.setOrderType(2);
         xpCruiseOrder.setStatus(1);
         xpCruiseOrder.setOrderReverse(1);
-        xpCruiseOrder.setLastOrderId(r.getData());
+        xpCruiseOrder.setLastOrderId(oldCruiseOrder.getId());
+        xpCruiseOrder.setOrderReverse(1);
+        xpCruiseOrder.setXpuTaskId(snowflake.nextId() + "");
 
         // 找到收车站点
         R<XpCruiseOrder> returnCruisePoint = xpCruisePlanClient.findReturnCruisePoint(xpCruiseOrder);
-        if (returnCruisePoint.getData() != null) {
-            xpCruiseOrderClient.addCruiseOrder(returnCruisePoint.getData());
-            // 下发命令
-            PushOrderDto pushOrderDto = new PushOrderDto();
-            pushOrderDto.setVin(returnCruisePoint.getData().getVehicleVin());
-            pushOrderDto.setOrderId("XU" + returnCruisePoint.getData().getId());
-            pushOrderDto.setStartLatitude(returnCruisePoint.getData().getStartLat());
-            pushOrderDto.setStartLongitude(returnCruisePoint.getData().getStartLon());
-            pushOrderDto.setEndLatitude(returnCruisePoint.getData().getEndLat());
-            pushOrderDto.setEndLongitude(returnCruisePoint.getData().getEndLon());
-            pushOrderDto.setOrderType(OrderType.CRUISE_ORDER);
-            pushOrderDto.setStage(2);
-            orderMissionClient.pushOrder(pushOrderDto);
+        if (returnCruisePoint.getData() != null && 200 == returnCruisePoint.getCode()) {
+            XpCruiseOrder cruiseOrder = returnCruisePoint.getData();
+            //不停车替换新任务
+            cruiseOrder.setLastOrderId1("XU" + oldCruiseOrder.getId());
+            cruiseOrder.setLastXpuTaskId(oldCruiseOrder.getXpuTaskId());
+            cruiseOrder.setTaskActionType(TaskActionType.kTerminateForNewTask);
+            xpCruiseOrderClient.addCruiseOrder(cruiseOrder);
         }
         log.info("向车辆[{}]发送收车指令", xpVehicle.getPlateNumber());
     }

--
Gitblit v1.7.1