From 0da19d473d89bb812610501809481fdf6c2c4756 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期二, 24 三月 2026 20:53:13 +0800
Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/Robotaxi

---
 xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java |  104 ++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 92 insertions(+), 12 deletions(-)

diff --git a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
index 1d792a8..ea3d41d 100644
--- a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
+++ b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -15,6 +15,7 @@
 import com.xiaopeng.api.dto.account.UcUserInfo;
 import com.xiaopeng.api.dto.account.UseUserCouponDto;
 import com.xiaopeng.api.dto.automaticPilot.PushOrderDto;
+import com.xiaopeng.api.dto.automaticPilot.VehicleEventDTO;
 import com.xiaopeng.api.dto.operation.CruisePointDto;
 import com.xiaopeng.api.dto.operation.LonLatDto;
 import com.xiaopeng.api.dto.order.GetOrderNumDto;
@@ -31,6 +32,7 @@
 import com.xiaopeng.api.feignClient.account.UserResourcesClient;
 import com.xiaopeng.api.feignClient.account.XpAppUserCouponClient;
 import com.xiaopeng.api.feignClient.automaticPilot.OrderMissionClient;
+import com.xiaopeng.api.feignClient.automaticPilot.VehicleBuriedPointClient;
 import com.xiaopeng.api.feignClient.maintenance.XpTaskRuleClient;
 import com.xiaopeng.api.feignClient.operation.XpCruisePlanClient;
 import com.xiaopeng.api.feignClient.operation.XpPointClient;
@@ -83,10 +85,7 @@
 import com.xiaopeng.order.model.query.XpOrderExcelQuery;
 import com.xiaopeng.order.model.query.XpOrderPageQuery;
 import com.xiaopeng.order.model.vo.*;
-import com.xiaopeng.order.service.IXpOrderCancelService;
-import com.xiaopeng.order.service.IXpOrderEvaluateService;
-import com.xiaopeng.order.service.IXpOrderReassignService;
-import com.xiaopeng.order.service.IXpOrderService;
+import com.xiaopeng.order.service.*;
 import com.xiaopeng.order.utils.GDMapGeocodingUtil;
 import com.xiaopeng.order.utils.TaxiPricingDemoService;
 import com.xiaopeng.order.utils.RegionCodeFilterUtil;
@@ -156,6 +155,8 @@
     private final XpCruisePlanClient xpCruisePlanClient;
     private final XpPricingUtil xpPricingUtil;
     private final GDMapGeocodingUtil gdMapGeocodingUtil;
+    private final VehicleBuriedPointClient vehicleBuriedPointClient;
+    private final IXpTestOrderService xpTestOrderService;
 
 
     @Autowired
@@ -995,7 +996,6 @@
                     log.info("已将原车辆状态设为空闲,车辆ID: {}", oldVehicleId);
 
                     // 6.1.4 为原车辆创建返程巡游订单
-                    --------------
                     createReturnCruiseOrder(oldVehicle.getId(), order);
                 } else {
                     log.warn("查询原车辆信息失败,车辆ID: {}", oldVehicleId);
@@ -2197,9 +2197,11 @@
                 xpVehicleClient.updateVehicleById(vehicle1);
                 //找到车辆的收车点位 更新终点点位
                 R<XpCruiseOrder> returnCruisePoint = xpCruisePlanClient.findReturnCruisePoint(xpCruiseOrder);
-                xpCruiseOrder = returnCruisePoint.getData();
-                xpCruiseOrder.setOrderType(2);
-                xpCruiseOrder.setOrderReverse(1);
+                if(200 != returnCruisePoint.getCode()){
+                    xpCruiseOrder = returnCruisePoint.getData();
+                    xpCruiseOrder.setOrderType(2);
+                    xpCruiseOrder.setOrderReverse(1);
+                }
             }
         }
         xpCruiseOrderMapper.insert(xpCruiseOrder);
@@ -2221,7 +2223,7 @@
 
     /**
      * 取消订单后的继续巡游任务
-     * @param vehicle
+     * @param vehicleId
      */
     public void addCruiseMission(Long vehicleId) {
         XpVehicle vehicle = xpVehicleClient.queryById(vehicleId).getData();
@@ -2309,9 +2311,11 @@
                 xpVehicleClient.updateVehicleById(vehicle1);
                 //找到车辆的收车点位 更新终点点位
                 R<XpCruiseOrder> returnCruisePoint = xpCruisePlanClient.findReturnCruisePoint(xpCruiseOrder);
-                xpCruiseOrder = returnCruisePoint.getData();
-                xpCruiseOrder.setOrderType(2);
-                xpCruiseOrder.setOrderReverse(1);
+                if(200 != returnCruisePoint.getCode()){
+                    xpCruiseOrder = returnCruisePoint.getData();
+                    xpCruiseOrder.setOrderType(2);
+                    xpCruiseOrder.setOrderReverse(1);
+                }
             }
         }
 
@@ -2840,6 +2844,29 @@
                 xpCruiseOrder.setVehicleId(null);
                 xpCruiseOrderMapper.updateById(xpCruiseOrder);
                 log.info("修改巡游单状态,开始执行巡游单 {}", dto.getOrderId());
+                // 封装埋点消息实体
+                VehicleEventDTO vehicleEventDTO = new VehicleEventDTO();
+                vehicleEventDTO.setVin(dto.getXpVehicleVin());
+                vehicleEventDTO.setXpuId("");
+                vehicleEventDTO.setOrderId(String.valueOf(dto.getOrderId()));
+                vehicleEventDTO.setEventKey("RT_xpu_vehicle_trace_upload");
+                vehicleEventDTO.setEventTime(System.currentTimeMillis());
+                Map<String,Object> attributes = new HashMap<>();
+                attributes.put("vin",vehicleEventDTO.getVin());
+                attributes.put("order_id",vehicleEventDTO.getOrderId());
+                attributes.put("order_type","cruise_order");
+                attributes.put("timestamp",vehicleEventDTO.getEventTime());
+                attributes.put("current_main_status",OrderStatus.ORDER_STARTED);
+                attributes.put("current_sub_status","");
+                VehiclePosition vehiclePosition = mongoTemplate.findOne(new Query(Criteria.where("vin").is(dto.getXpVehicleVin())), VehiclePosition.class);
+                if(Objects.nonNull(vehiclePosition)){
+                    attributes.put("odometer_km",vehiclePosition.getTotalOdometer());
+                }else {
+                    attributes.put("odometer_km","");
+                }
+                vehicleEventDTO.setAttributes(attributes);
+                vehicleBuriedPointClient.sendVehicleEvent(vehicleEventDTO);
+                log.info("巡游单埋点消息,开始执行推送: {}", dto.getOrderId());
             }
         }
         //乘客单处理逻辑
@@ -2921,6 +2948,59 @@
                 //推送乘客车辆到达预约点的导航数据
                 sendRoute(addTaxiPassengerVo.getUid(), orderId, "ORDER_NAVIGATION_START_DATA", dto.getXpVehicleVin());
             }
+
+            if(order.getStatus() == 2){
+                // 封装埋点消息实体
+                VehicleEventDTO vehicleEventDTO = new VehicleEventDTO();
+                vehicleEventDTO.setVin(dto.getXpVehicleVin());
+                vehicleEventDTO.setXpuId("");
+                vehicleEventDTO.setOrderId(String.valueOf(dto.getOrderId()));
+                vehicleEventDTO.setEventKey("RT_xpu_vehicle_trace_upload");
+                vehicleEventDTO.setEventTime(System.currentTimeMillis());
+                Map<String,Object> attributes = new HashMap<>();
+                attributes.put("vin",vehicleEventDTO.getVin());
+                attributes.put("order_id",vehicleEventDTO.getOrderId());
+                attributes.put("order_type","user_order");
+                attributes.put("timestamp",vehicleEventDTO.getEventTime());
+                attributes.put("current_main_status",OrderStatus.ORDER_EN_ROUTE_TO_PICKUP);
+                attributes.put("current_sub_status","");
+                VehiclePosition vehiclePosition = mongoTemplate.findOne(new Query(Criteria.where("vin").is(dto.getXpVehicleVin())), VehiclePosition.class);
+                if(Objects.nonNull(vehiclePosition)){
+                    attributes.put("odometer_km",vehiclePosition.getTotalOdometer());
+                }else {
+                    attributes.put("odometer_km","");
+                }
+                vehicleEventDTO.setAttributes(attributes);
+                vehicleBuriedPointClient.sendVehicleEvent(vehicleEventDTO);
+                log.info("用户单埋点消息,开始执行推送: {}", dto.getOrderId());
+            }
+
+        }
+        //测试订单
+        if (OrderType.TEST_ORDER.equals(orderType)) {
+            XpTestOrder xpTestOrder = xpTestOrderService.getById(orderId);
+            //订单为待接单状态
+            if (xpTestOrder.getStatus() < 4) {
+                xpTestOrder.setAcceptanceTime(LocalDateTime.now());
+                R<XpVehicle> byVehicleVin = xpVehicleClient.findByVehicleVin(dto.getXpVehicleVin());
+                XpVehicle vehicle = null;
+                if (byVehicleVin.getCode() == 200) {
+                    vehicle = byVehicleVin.getData();
+                    xpTestOrder.setVehicleId(vehicle.getId());
+                    xpTestOrder.setFleetId(vehicle.getFleetId());
+                }
+                xpTestOrder.setStatus(2);
+
+                // 修改车辆信息
+                XpVehicle vehicle1 = new XpVehicle();
+                vehicle1.setId(vehicle.getId());
+                vehicle1.setState(1);
+                xpVehicleClient.updateVehicleById(vehicle1);
+
+                xpTestOrder.setVehicleId(null);
+                xpTestOrderService.updateById(xpTestOrder);
+                redisService.setCacheObject("ORDER_STATUS:" + xpTestOrder.getId(), 2, 24L, TimeUnit.HOURS);
+            }
         }
     }
 

--
Gitblit v1.7.1