From 1ee6637e101e539b7e327c779087d81de9d8b129 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期四, 30 四月 2026 17:33:14 +0800
Subject: [PATCH] 开发优惠券发放逻辑

---
 xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java |   92 ++++++++++++++++++++++++++--------------------
 1 files changed, 52 insertions(+), 40 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 e8ab585..822488c 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
@@ -126,6 +126,9 @@
     @Resource
     private  XpAppUserCouponClient xpAppUserCouponClient;
 
+    @Resource
+    private OfficialPartnerUtil officialPartnerUtil;
+
 
     // 自定义线程池
     private static final ThreadPoolTaskExecutor threadPoolTaskExecutor = new ThreadPoolTaskExecutor();
@@ -1075,29 +1078,33 @@
                             continue;
                         }
 
-
-                        //  关闭巡游单子
-                        R stringR = xpCruiseOrderClient.cancelCruiseOrderByVin(vehiclePosition.getVehicleVin());
-                        if (stringR == null || stringR.getCode() != 200) {
-                            log.info("关闭巡游单子失败 车牌号 {}", vehiclePosition.getPlateNumber());
-                            continue;
+                        //非合作商的车辆需要处理巡游单
+                        if(null != vehiclePosition.getOfficialPartnerId()){
+                            //  关闭巡游单子
+                            R stringR = xpCruiseOrderClient.cancelCruiseOrderByVin(vehiclePosition.getVehicleVin());
+                            if (stringR == null || stringR.getCode() != 200) {
+                                log.info("关闭巡游单子失败 车牌号 {}", vehiclePosition.getPlateNumber());
+                                continue;
+                            }
+                            log.info("关闭巡游单成功 {} {}", vehiclePosition.getPlateNumber(), orderNo);
+                            // 下发命令
+                            PushOrderDto pushOrderDto = new PushOrderDto();
+                            pushOrderDto.setVin(vehiclePosition.getVehicleVin());
+                            pushOrderDto.setOrderId(xpOrder.getId().toString());
+                            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);
+                            // 调用推送服务  orderId + carVin
+                            orderMissionClient.pushOrder(pushOrderDto);
+                            log.info("开始推送 {} 订单到XPU。单号 {}", xpOrder.getOrderNumber(), orderNo);
+                        }else {
+                            //合作商的车辆需要调用合作商的订单通知接口
+                            officialPartnerUtil.pusNewOrder(vehiclePosition.getOfficialPartnerId(), xpOrder);
                         }
-                        log.info("关闭巡游单成功 {} {}", vehiclePosition.getPlateNumber(), orderNo);
-                        // 下发命令
-                        PushOrderDto pushOrderDto = new PushOrderDto();
-                        pushOrderDto.setVin(vehiclePosition.getVehicleVin());
-                        pushOrderDto.setOrderId(xpOrder.getId().toString());
-                        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);
-                        // 调用推送服务  orderId + carVin
-                        orderMissionClient.pushOrder(pushOrderDto);
-                        log.info("开始推送 {} 订单到XPU。单号 {}", xpOrder.getOrderNumber(), orderNo);
-
                         redisService.removeByPattern(quoteName,xpOrder.getOrderNumber());
                         log.info("将订单 {} 从队列 {} 弹出去", orderNo, quoteName);
                         return true;
@@ -1138,25 +1145,30 @@
                             continue;
                         }
 
-                        //  关闭巡游单子
-                        R<?> stringR = xpCruiseOrderClient.cancelCruiseOrderByVin(vehicleId1.getVehicleVin());
-                        if (stringR == null || stringR.getCode() != 200) {
-                            log.info("关闭巡游单子失败 车牌号 {}", vehicleId1.getPlateNumber());
-                            continue;
+                        if(null == vehicleId1.getOfficialPartnerId()){
+                            //  关闭巡游单子
+                            R<?> stringR = xpCruiseOrderClient.cancelCruiseOrderByVin(vehicleId1.getVehicleVin());
+                            if (stringR == null || stringR.getCode() != 200) {
+                                log.info("关闭巡游单子失败 车牌号 {}", vehicleId1.getPlateNumber());
+                                continue;
+                            }
+                            log.info("关闭巡游单成功 {} {}", vehicleId1.getPlateNumber(), orderNo);
+                            PushOrderDto pushOrderDto = new PushOrderDto();
+                            pushOrderDto.setVin(vehiclePosition.getVin());
+                            pushOrderDto.setOrderId(xpOrder.getId().toString());
+                            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);
+                            // 调用推送服务  orderId + carVin
+                            orderMissionClient.pushOrder(pushOrderDto);
+                        }else {
+                            //合作商的车辆需要调用合作商的订单通知接口
+                            officialPartnerUtil.pusNewOrder(vehicleId1.getOfficialPartnerId(), xpOrder);
                         }
-                        log.info("关闭巡游单成功 {} {}", vehicleId1.getPlateNumber(), orderNo);
-                        PushOrderDto pushOrderDto = new PushOrderDto();
-                        pushOrderDto.setVin(vehiclePosition.getVin());
-                        pushOrderDto.setOrderId(xpOrder.getId().toString());
-                        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);
-                        // 调用推送服务  orderId + carVin
-                        orderMissionClient.pushOrder(pushOrderDto);
                         log.info("开始推送 {} 订单到XPU", xpOrder.getOrderNumber());
                         redisService.popFirstElement(quoteName);
                         log.info("将订单 {} 从队列 {} 弹出去", orderNo, quoteName);

--
Gitblit v1.7.1