From aa0ed00c220688e740540107f5d55f1e20fc7f90 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期二, 24 三月 2026 15:55:45 +0800
Subject: [PATCH] 埋点数据推送

---
 xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java |   73 ++++++++++++++++++++++++++++++++++++
 1 files changed, 72 insertions(+), 1 deletions(-)

diff --git a/xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java b/xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java
index 84206e9..80e2520 100644
--- a/xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java
+++ b/xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java
@@ -6,6 +6,7 @@
 import com.google.protobuf.InvalidProtocolBufferException;
 import com.google.protobuf.util.JsonFormat;
 import com.xiaopeng.api.dto.automaticPilot.MqttPublishDto;
+import com.xiaopeng.api.dto.automaticPilot.VehicleEventDTO;
 import com.xiaopeng.api.dto.map.OrderRouteAndFareDto;
 import com.xiaopeng.api.dto.operation.CruisePointDto;
 import com.xiaopeng.api.dto.operation.LonLatDto;
@@ -15,6 +16,7 @@
 import com.xiaopeng.api.dto.pushMessage.PushOrderRouteDTO;
 import com.xiaopeng.api.dto.pushMessage.SendMessageDTO;
 import com.xiaopeng.api.dto.vehicleConvoy.UpdateVehicleStateDto;
+import com.xiaopeng.api.feignClient.automaticPilot.VehicleBuriedPointClient;
 import com.xiaopeng.api.feignClient.maintenance.XpTaskClient;
 import com.xiaopeng.api.feignClient.map.XpMapClient;
 import com.xiaopeng.api.feignClient.operation.ReassignOrderClient;
@@ -111,6 +113,8 @@
 
     @Resource
     private XpTaskClient xpTaskClient;
+    @Resource
+    private VehicleBuriedPointClient vehicleBuriedPointClient;
 
     private static final JsonFormat.Printer jsonPrinter = JsonFormat.printer()
             .printingEnumsAsInts()
@@ -340,6 +344,7 @@
                 vehiclePosition.setCurrentElectricity(dynamicStatus.getBmsSocDisp());
                 vehiclePosition.setMileageRange(dynamicStatus.getDstBatDisp());
                 vehiclePosition.setOrderId(orderId);
+                vehiclePosition.setTotalOdometer(dynamicStatus.getTotalOdometer());
                 mongoTemplate.save(vehiclePosition);
             }else{
                 vehiclePosition.setOrderId(orderId);
@@ -351,7 +356,8 @@
                         .set("currentElectricity", dynamicStatus.getBmsSocDisp())
                         .set("mileageRange", dynamicStatus.getDstBatDisp())
                         .set("hasOrder", hasOrder)
-                        .set("orderId", orderId);
+                        .set("orderId", orderId)
+                        .set("totalOdometer", dynamicStatus.getTotalOdometer());
                 mongoTemplate.updateFirst(new Query(Criteria.where("vin").is(vin)), update, VehiclePosition.class);
             }
             //调用推送服务接口
@@ -874,6 +880,39 @@
                 case ORDER_COMPLETED:
                     //已完成
                     log.info("已完成,不做任何处理:{}", orderId);
+                    if(!orderId.contains("XU")){
+                        XpOrder xpOrder = xpOrderClient.queryOrderById(Long.valueOf(orderId)).getData();
+                        if (Objects.nonNull(xpOrder)){
+                            // 查询车辆
+                            XpVehicle xpVehicle = xpVehicleClient.queryById(xpOrder.getVehicleId()).getData();
+                            if (Objects.nonNull(xpVehicle)){
+                                String vin = xpVehicle.getVehicleVin();
+                                // 封装埋点消息实体
+                                VehicleEventDTO vehicleEventDTO = new VehicleEventDTO();
+                                vehicleEventDTO.setVin(vin);
+                                vehicleEventDTO.setXpuId("");
+                                vehicleEventDTO.setOrderId(orderId);
+                                vehicleEventDTO.setEventKey("RT_xpu_vehicle_trace_upload");
+                                vehicleEventDTO.setEventTime(System.currentTimeMillis());
+                                Map<String,Object> attributes = new HashMap<>();
+                                attributes.put("vin",vin);
+                                attributes.put("order_id",vehicleEventDTO.getOrderId());
+                                attributes.put("order_type","user_order");
+                                attributes.put("timestamp",vehicleEventDTO.getEventTime());
+                                attributes.put("current_main_status",OrderStatus.ORDER_COMPLETED);
+                                attributes.put("current_sub_status","");
+                                VehiclePosition vehiclePosition = mongoTemplate.findOne(new Query(Criteria.where("vin").is(vin)), 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("已完成,推送埋点:{}", orderId);
+                            }
+                        }
+                    }
                     break;
                 case ORDER_CANCELLED:
                     //已取消
@@ -895,6 +934,38 @@
                     //到达巡游终点
                     if(orderId.contains("XU")){
                         buildPushOrderStatus(orderId, OrderStatusEnum.COMPLETED, sequence);
+                        String cruiseOrderId = orderId.substring(2);
+                        XpCruiseOrder xpCruiseOrder = xpCruiseOrderClient.getCruiseOrder(Long.parseLong(cruiseOrderId)).getData();
+                        if (Objects.nonNull(xpCruiseOrder)){
+                            // 查询车辆
+                            XpVehicle xpVehicle = xpVehicleClient.queryById(xpCruiseOrder.getVehicleId()).getData();
+                            if (Objects.nonNull(xpVehicle)){
+                                String vin = xpVehicle.getVehicleVin();
+                                // 封装埋点消息实体
+                                VehicleEventDTO vehicleEventDTO = new VehicleEventDTO();
+                                vehicleEventDTO.setVin(vin);
+                                vehicleEventDTO.setXpuId("");
+                                vehicleEventDTO.setOrderId(cruiseOrderId);
+                                vehicleEventDTO.setEventKey("RT_xpu_vehicle_trace_upload");
+                                vehicleEventDTO.setEventTime(System.currentTimeMillis());
+                                Map<String,Object> attributes = new HashMap<>();
+                                attributes.put("vin",vin);
+                                attributes.put("order_id",vehicleEventDTO.getOrderId());
+                                attributes.put("order_type","cruise_order");
+                                attributes.put("timestamp",vehicleEventDTO.getEventTime());
+                                attributes.put("current_main_status",OrderStatus.ORDER_ARRIVED_AT_CRUISE_DESTINATION);
+                                attributes.put("current_sub_status","");
+                                VehiclePosition vehiclePosition = mongoTemplate.findOne(new Query(Criteria.where("vin").is(vin)), 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("到达巡游终点,推送埋点:{}", orderId);
+                            }
+                        }
                     }
                     break;
                 case ORDER_PAUSED:

--
Gitblit v1.7.1