From 446d588f6983d2f9e7bb18546a961fa4c14c99a0 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期二, 19 五月 2026 03:58:31 +0800
Subject: [PATCH] 合并代码

---
 xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java |  162 ++++++++++++++++++++++++++---------------------------
 1 files changed, 80 insertions(+), 82 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 af2bc5a..ab355d4 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
@@ -1086,9 +1086,7 @@
                         XpVehicle vehiclePosition = vehiclePositionR.getData();
                         log.info("符合条件的车辆 {} ,直接推单XPU。单号 {}", vehiclePosition.getPlateNumber(), orderNo);
                         log.info("当前车辆状态 {} 单号 {}", vehiclePosition.getStatus(), orderNo);
-                        if (vehiclePosition.getOperatingStatus() != 1 || vehiclePosition.getState() != 0 || vehiclePosition.getVehicleType() == 1) {
-                            continue;
-                        }
+
                         String vin = SensitiveDataCryptoUtil.decryptIfPossible(vehiclePosition.getVehicleVin());
                         // 再次查询一下订单 看是否取消
                         xpOrderR = xpOrderClient.queryOrderByOrderNo(orderNo);
@@ -1099,45 +1097,47 @@
                         if (xpOrder.getStatus() != 1) {
                             continue;
                         }
-
-                        //非合作商的车辆需要处理巡游单
-                        if(null != vehiclePosition.getOfficialPartnerId()){
-                            //  关闭巡游单子
-                            R<XpCruiseOrder> stringR = xpCruiseOrderClient.cancelCruiseOrderByVin(vin);
-                            if (stringR == null || stringR.getCode() != 200) {
-                                log.info("关闭巡游单子失败 车牌号 {}", vehiclePosition.getPlateNumber());
-                                continue;
+                        //所有条件满足,走正常派单,不满足走后面的连环派单
+                        if (vehiclePosition.getOperatingStatus() == 1 && vehiclePosition.getState() == 0 && vehiclePosition.getVehicleType() == 2) {
+                            //非合作商的车辆需要处理巡游单
+                            if(null == vehiclePosition.getOfficialPartnerId()){
+                                //  关闭巡游单子
+                                R<XpCruiseOrder> stringR = xpCruiseOrderClient.cancelCruiseOrderByVin(vin);
+                                if (stringR == null || stringR.getCode() != 200) {
+                                    log.info("关闭巡游单子失败 车牌号 {}", vehiclePosition.getPlateNumber());
+                                    continue;
+                                }
+                                log.info("关闭巡游单成功 {} {}", vehiclePosition.getPlateNumber(), orderNo);
+                                XpCruiseOrder cruiseOrder = stringR.getData();
+                                // 下发命令
+                                PushOrderDto pushOrderDto = new PushOrderDto();
+                                pushOrderDto.setVin(vin);
+                                pushOrderDto.setOrderId(xpOrder.getId().toString());
+                                pushOrderDto.setStartWaypointId(xpOrder.getStartPointId());
+                                pushOrderDto.setEndWaypointId(xpOrder.getEndPointId());
+                                pushOrderDto.setStartLatitude(xpOrder.getStartLat());
+                                pushOrderDto.setStartLongitude(xpOrder.getStartLon());
+                                pushOrderDto.setEndLatitude(xpOrder.getEndLat());
+                                pushOrderDto.setEndLongitude(xpOrder.getEndLon());
+                                pushOrderDto.setEndPoiName(xpOrder.getEndPointName());
+                                pushOrderDto.setOrderType(OrderType.USER_ORDER);
+                                pushOrderDto.setStage(1);
+                                if(null != cruiseOrder){
+                                    pushOrderDto.setLastOrderId("XU" + cruiseOrder.getId());
+                                    pushOrderDto.setLastXpuTaskId(cruiseOrder.getXpuTaskId());
+                                }
+                                pushOrderDto.setTaskActionType(TaskActionType.kTerminateForNewTask);
+                                // 调用推送服务  orderId + carVin
+                                orderMissionClient.pushOrder(pushOrderDto);
+                                log.info("开始推送 {} 订单到XPU。单号 {}", xpOrder.getOrderNumber(), orderNo);
+                            }else {
+                                //流量接入-接单推送 合作商的车辆需要调用合作商的订单通知接口
+                                officialPartnerUtil.pushNewOrder(vehiclePosition.getOfficialPartnerId(), xpOrder);
                             }
-                            log.info("关闭巡游单成功 {} {}", vehiclePosition.getPlateNumber(), orderNo);
-                            XpCruiseOrder cruiseOrder = stringR.getData();
-                            // 下发命令
-                            PushOrderDto pushOrderDto = new PushOrderDto();
-                            pushOrderDto.setVin(vin);
-                            pushOrderDto.setOrderId(xpOrder.getId().toString());
-                            pushOrderDto.setStartWaypointId(xpOrder.getStartPointId());
-                            pushOrderDto.setEndWaypointId(xpOrder.getEndPointId());
-                            pushOrderDto.setStartLatitude(xpOrder.getStartLat());
-                            pushOrderDto.setStartLongitude(xpOrder.getStartLon());
-                            pushOrderDto.setEndLatitude(xpOrder.getEndLat());
-                            pushOrderDto.setEndLongitude(xpOrder.getEndLon());
-                            pushOrderDto.setEndPoiName(xpOrder.getEndPointName());
-                            pushOrderDto.setOrderType(OrderType.USER_ORDER);
-                            pushOrderDto.setStage(1);
-                            if(null != cruiseOrder){
-                                pushOrderDto.setLastOrderId("XU" + cruiseOrder.getId());
-                                pushOrderDto.setLastXpuTaskId(cruiseOrder.getXpuTaskId());
-                            }
-                            pushOrderDto.setTaskActionType(TaskActionType.kTerminateForNewTask);
-                            // 调用推送服务  orderId + carVin
-                            orderMissionClient.pushOrder(pushOrderDto);
-                            log.info("开始推送 {} 订单到XPU。单号 {}", xpOrder.getOrderNumber(), orderNo);
-                        }else {
-                            //流量接入-接单推送 合作商的车辆需要调用合作商的订单通知接口
-                            officialPartnerUtil.pushNewOrder(vehiclePosition.getOfficialPartnerId(), xpOrder);
+                            redisService.removeByPattern(quoteName,xpOrder.getOrderNumber());
+                            log.info("将订单 {} 从队列 {} 弹出去", orderNo, quoteName);
+                            return true;
                         }
-                        redisService.removeByPattern(quoteName,xpOrder.getOrderNumber());
-                        log.info("将订单 {} 从队列 {} 弹出去", orderNo, quoteName);
-                        return true;
                     } catch (Exception e) {
                         e.printStackTrace();
                     } finally {
@@ -1160,10 +1160,6 @@
                         XpVehicle vehicleId1 = vehicleR.getData();
                         log.info("附近只有一个车辆 {} ,直接推单XPU。单号 {}", vehicleId1.getPlateNumber(), orderNo);
                         log.info("当前车辆状态 运营状态 {} 单号 {}", vehicleId1.getState(), orderNo);
-                        if (vehicleId1.getOperatingStatus() != 1 || vehicleId1.getState() != 0 || vehicleId1.getVehicleType() == 1) {
-                            continue;
-                        }
-
 
                         // 再次查询一下订单 看是否取消
                         xpOrderR = xpOrderClient.queryOrderByOrderNo(orderNo);
@@ -1175,49 +1171,51 @@
                             continue;
                         }
 
-                        if(null == vehicleId1.getOfficialPartnerId()){
-                            //  关闭巡游单子
-                            String vin = SensitiveDataCryptoUtil.decryptIfPossible(vehicleId1.getVehicleVin());
-                            R<XpCruiseOrder> stringR = xpCruiseOrderClient.cancelCruiseOrderByVin(vin);
-                            if (stringR == null || stringR.getCode() != 200) {
-                                log.info("关闭巡游单子失败 车牌号 {}", vehicleId1.getPlateNumber());
-                                continue;
+                        // 所有条件满足走正常派单,不满足走循环派单
+                        if (vehicleId1.getOperatingStatus() == 1 && vehicleId1.getState() == 0 && vehicleId1.getVehicleType() == 2) {
+                            if(null == vehicleId1.getOfficialPartnerId()){
+                                //  关闭巡游单子
+                                String vin = SensitiveDataCryptoUtil.decryptIfPossible(vehicleId1.getVehicleVin());
+                                R<XpCruiseOrder> stringR = xpCruiseOrderClient.cancelCruiseOrderByVin(vin);
+                                if (stringR == null || stringR.getCode() != 200) {
+                                    log.info("关闭巡游单子失败 车牌号 {}", vehicleId1.getPlateNumber());
+                                    continue;
+                                }
+                                log.info("关闭巡游单成功 {} {}", vehicleId1.getPlateNumber(), orderNo);
+                                XpCruiseOrder cruiseOrder = stringR.getData();
+                                PushOrderDto pushOrderDto = new PushOrderDto();
+                                pushOrderDto.setVin(vehiclePosition.getVin());
+                                pushOrderDto.setOrderId(xpOrder.getId().toString());
+                                pushOrderDto.setStartWaypointId(xpOrder.getStartPointId());
+                                pushOrderDto.setEndWaypointId(xpOrder.getEndPointId());
+                                pushOrderDto.setStartLatitude(xpOrder.getStartLat());
+                                pushOrderDto.setStartLongitude(xpOrder.getStartLon());
+                                pushOrderDto.setEndLatitude(xpOrder.getEndLat());
+                                pushOrderDto.setEndLongitude(xpOrder.getEndLon());
+                                pushOrderDto.setEndPoiName(xpOrder.getEndPointName());
+                                pushOrderDto.setOrderType(OrderType.USER_ORDER);
+                                pushOrderDto.setStage(1);
+                                if(null != cruiseOrder){
+                                    pushOrderDto.setLastOrderId("XU" + cruiseOrder.getId());
+                                    pushOrderDto.setLastXpuTaskId(cruiseOrder.getXpuTaskId());
+                                }
+                                pushOrderDto.setTaskActionType(TaskActionType.kTerminateForNewTask);
+                                // 调用推送服务  orderId + carVin
+                                orderMissionClient.pushOrder(pushOrderDto);
+                            }else {
+                                //流量接入-接单推送 合作商的车辆需要调用合作商的订单通知接口
+                                officialPartnerUtil.pushNewOrder(vehicleId1.getOfficialPartnerId(), xpOrder);
                             }
-                            log.info("关闭巡游单成功 {} {}", vehicleId1.getPlateNumber(), orderNo);
-                            XpCruiseOrder cruiseOrder = stringR.getData();
-                            PushOrderDto pushOrderDto = new PushOrderDto();
-                            pushOrderDto.setVin(vehiclePosition.getVin());
-                            pushOrderDto.setOrderId(xpOrder.getId().toString());
-                            pushOrderDto.setStartWaypointId(xpOrder.getStartPointId());
-                            pushOrderDto.setEndWaypointId(xpOrder.getEndPointId());
-                            pushOrderDto.setStartLatitude(xpOrder.getStartLat());
-                            pushOrderDto.setStartLongitude(xpOrder.getStartLon());
-                            pushOrderDto.setEndLatitude(xpOrder.getEndLat());
-                            pushOrderDto.setEndLongitude(xpOrder.getEndLon());
-                            pushOrderDto.setEndPoiName(xpOrder.getEndPointName());
-                            pushOrderDto.setOrderType(OrderType.USER_ORDER);
-                            pushOrderDto.setStage(1);
-                            if(null != cruiseOrder){
-                                pushOrderDto.setLastOrderId("XU" + cruiseOrder.getId());
-                                pushOrderDto.setLastXpuTaskId(cruiseOrder.getXpuTaskId());
-                            }
-                            pushOrderDto.setTaskActionType(TaskActionType.kTerminateForNewTask);
-                            // 调用推送服务  orderId + carVin
-                            orderMissionClient.pushOrder(pushOrderDto);
-                        }else {
-                            //流量接入-接单推送 合作商的车辆需要调用合作商的订单通知接口
-                            officialPartnerUtil.pushNewOrder(vehicleId1.getOfficialPartnerId(), xpOrder);
+                            log.info("开始推送 {} 订单到XPU", xpOrder.getOrderNumber());
+                            redisService.popFirstElement(quoteName);
+                            log.info("将订单 {} 从队列 {} 弹出去", orderNo, quoteName);
+                            return true;
                         }
-                        log.info("开始推送 {} 订单到XPU", xpOrder.getOrderNumber());
-                        redisService.popFirstElement(quoteName);
-                        log.info("将订单 {} 从队列 {} 弹出去", orderNo, quoteName);
-                        return true;
                     } catch (Exception e) {
                         e.printStackTrace();
                     } finally {
                         lock.unlock();
                     }
-
                 }
             }
 
@@ -1230,10 +1228,10 @@
             log.info("连环派单查询车辆结果 {} {}", orderNo, JSON.toJSONString(servingVehicles.getData()));
             if(!isTargetedService){
                 servingVehicles.getData().removeAll(vehicleVinByTargetedService);
-                log.info("剔除定向服务车辆后的结果 {} 单号 {}", JSON.toJSONString(servingVehicles), orderNo);
+                log.info("连环派单剔除定向服务车辆后的结果 {} 单号 {}", JSON.toJSONString(servingVehicles), orderNo);
             }else{
                 servingVehicles.setData(vehicleVinByTargetedService);
-                log.info("查找定向服务车辆后的结果 {} 单号 {}", JSON.toJSONString(servingVehicles), orderNo);
+                log.info("连环派单查找定向服务车辆后的结果 {} 单号 {}", JSON.toJSONString(servingVehicles), orderNo);
             }
 
             XpTradingStrategyDetailVO strategyDetailVO = tradingStrategyClient.queryById().getData();

--
Gitblit v1.7.1