From b39d6b4ad22a37a2a4a4d589748b29bf4a9da812 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期四, 12 二月 2026 19:10:58 +0800
Subject: [PATCH] 小程序接口

---
 xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java |   32 +++++++++++++++++++++++++-------
 1 files changed, 25 insertions(+), 7 deletions(-)

diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java
index 5e710ef..9f18319 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java
@@ -3,10 +3,13 @@
 import cn.hutool.core.bean.BeanUtil;
 import com.xiaopeng.api.dto.map.RouteAndFareDto;
 import com.xiaopeng.api.dto.operation.LonLatDto;
+import com.xiaopeng.api.dto.operation.VehiclePositionByVinDto;
 import com.xiaopeng.api.dto.vehicleConvoy.BaseVehicleUserDto;
 import com.xiaopeng.api.feignClient.map.XpMapClient;
 import com.xiaopeng.api.feignClient.order.XpOrderClient;
 import com.xiaopeng.api.feignClient.vehicleConvoy.UserVehicleClient;
+import com.xiaopeng.api.feignClient.vehicleConvoy.VehicleControlClient;
+import com.xiaopeng.api.feignClient.vehicleConvoy.XpVehicleClient;
 import com.xiaopeng.api.model.operation.XpTradingStrategy;
 import com.xiaopeng.api.model.order.XpOrder;
 import com.xiaopeng.api.vo.automaticPilot.VehiclePosition;
@@ -19,14 +22,10 @@
 import com.xiaopeng.operation.service.IXpTradingStrategyService;
 import com.xiaopeng.operation.service.XpPointService;
 import com.xiaopeng.operation.utils.mango.VehiclePositionService;
-import com.xiaopeng.operation.utils.map.FastDistanceCalculator;
-import com.xiaopeng.operation.vo.RouterVo;
-import com.xiaopeng.operation.vo.VehiclePositionVo;
-import org.redisson.Redisson;
+import com.xiaopeng.api.vo.operation.VehiclePositionVo;
 import org.redisson.api.RLock;
 import org.redisson.api.RedissonClient;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 import org.springframework.stereotype.Component;
@@ -60,6 +59,9 @@
 
     @Autowired
     private UserVehicleClient userVehicleClient;
+
+    @Autowired
+    private XpVehicleClient xpVehicleClient;
 
     @Autowired
     private RedissonClient redissonClient;
@@ -191,7 +193,7 @@
         processPushOrder(quoteName, count, uid, split, orderNo, xpTradingStrategy, distance, duration, planRule);
 
         // 最终没找到车
-        redisService.popFirstElement(quoteName);
+//        redisService.popFirstElement(quoteName);
         // 取消订单
         xpOrderClient.cancelOrder(orderId);
 
@@ -217,16 +219,29 @@
         if (xpOrderR.getData().getStatus() != 1) {
             return;
         }
+        XpOrder xpOrder = xpOrderR.getData();
 
         for (int i = 0; i < count; i++) {
 
             System.out.println("进入找车环节");
             // 根据距离找车
             // 车多则根据配置找具体车数量 根据距离最近
+            // 更改 暂不限制数量
             List<VehiclePosition> positionList = vehiclePositionService.findAvailableVehiclesNearby(Double.parseDouble(split[0]), Double.parseDouble(split[1]), xpTradingStrategy.getOnePushDistance(), xpTradingStrategy.getSimultaneouslyOrderCount());
 
+            // 获取车辆的区域信息
+            if(positionList.isEmpty()){
+                continue;
+            }
+            List<String> vinList = positionList.stream().map(VehiclePosition::getVin).collect(Collectors.toList());
 
-            List<VehiclePositionVo> availableVehiclesNearby = BeanUtil.copyToList(positionList, VehiclePositionVo.class);
+            // 获取车辆的信息 筛选出可用车辆
+            R<List<VehiclePositionVo>> vehiclePositionVos = xpVehicleClient.queryVehiclePositionByVin(new VehiclePositionByVinDto(xpOrder.getXpElectronicFenceAreaId(), vinList,  xpTradingStrategy.getSimultaneouslyOrderCount()));
+            if(vehiclePositionVos.getCode()!=200){
+                continue;
+            }
+
+            List<VehiclePositionVo> availableVehiclesNearby =vehiclePositionVos.getData();
 
             if (!availableVehiclesNearby.isEmpty()) {
                 if (availableVehiclesNearby.size() > 1) {
@@ -590,6 +605,9 @@
                         addTaxiPassengerVo.setOrderNo(orderNo);
                         // TODO appid
                         addTaxiPassengerVo.setAppId("");
+
+
+
                         BaseVehicleUserDto baseVehicleUserDto = userVehicleClient.addTaxiPassenger(addTaxiPassengerVo);
                         if (baseVehicleUserDto.getCode() == 200) {
 

--
Gitblit v1.7.1