From 7a78cb97f96eea330dff3b222eff8d6dafc5e28a Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期四, 12 二月 2026 23:26:27 +0800
Subject: [PATCH] fix(task-order): 修复推单逻辑中的空指针异常问题

---
 xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java |    9 ++++++++-
 1 files changed, 8 insertions(+), 1 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 bd8e434..5794535 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
@@ -26,6 +26,7 @@
 import com.xiaopeng.operation.service.XpPointService;
 import com.xiaopeng.operation.utils.mango.VehiclePositionService;
 import com.xiaopeng.api.vo.operation.VehiclePositionVo;
+import lombok.SneakyThrows;
 import org.redisson.api.RLock;
 import org.redisson.api.RedissonClient;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -215,8 +216,12 @@
      * @param orderNo 订单号
      * @param xpTradingStrategy  规则
      */
+    @SneakyThrows
     private void processPushOrder(String quoteName, int count, String uid, String[] split, String orderNo, XpTradingStrategy xpTradingStrategy, String distance, String duration, String planRule) {
         System.out.println("进入推单环环节");
+        if(count==0){
+            count=1;
+        }
         // 订单状态
         R<XpOrder> xpOrderR = xpOrderClient.queryOrderByOrderNo(orderNo);
         if (xpOrderR.getCode() != 200) {
@@ -229,7 +234,8 @@
 
         // 找出围栏id
         Long xpElectronicFenceAreaId = xpOrder.getXpElectronicFenceAreaId();
-        XpElectronicFence xpElectronicFence = xpElectronicFenceMapper.selectById(xpElectronicFenceAreaId);
+        Long electronicId = xpElectronicFenceAreaService.getById(xpElectronicFenceAreaId).getElectronicId();
+        XpElectronicFence xpElectronicFence = xpElectronicFenceMapper.selectById(electronicId);
 
         for (int i = 0; i < count; i++) {
 
@@ -237,6 +243,7 @@
             // 根据距离找车
             // 车多则根据配置找具体车数量 根据距离最近
             // 更改 暂不限制数量
+
             List<VehiclePosition> positionList = vehiclePositionService.findAvailableVehiclesNearby(Double.parseDouble(split[0]), Double.parseDouble(split[1]), xpTradingStrategy.getOnePushDistance(), xpTradingStrategy.getSimultaneouslyOrderCount());
 
             // 获取车辆的区域信息

--
Gitblit v1.7.1