xuhy
2026-03-24 aa0ed00c220688e740540107f5d55f1e20fc7f90
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: