From 38858c018592f9788ebc1bd642ceba22bf5cdfae Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期四, 12 二月 2026 18:50:14 +0800
Subject: [PATCH] 处理启动失败问题

---
 xp-robotaxi-automaticPilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java |  222 +++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 205 insertions(+), 17 deletions(-)

diff --git a/xp-robotaxi-automaticPilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java b/xp-robotaxi-automaticPilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java
index a1593f8..d598a8b 100644
--- a/xp-robotaxi-automaticPilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java
+++ b/xp-robotaxi-automaticPilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java
@@ -1,5 +1,16 @@
 package com.xiaopeng.automaticPilot.service;
 
+import com.alibaba.fastjson2.JSON;
+import com.xiaopeng.api.vo.automaticPilot.proto.up.MessageType;
+import com.xiaopeng.api.vo.automaticPilot.proto.up.MsgContent;
+import com.xiaopeng.api.vo.automaticPilot.proto.up.RTCmdType;
+import com.xiaopeng.api.vo.automaticPilot.proto.up.RtMsgHeader;
+import com.xiaopeng.api.vo.automaticPilot.proto.up.systemStatusXpu.RealtimePose;
+import com.xiaopeng.api.vo.automaticPilot.proto.up.systemStatusXpu.SystemRuntimeStatus;
+import com.xiaopeng.api.vo.automaticPilot.proto.up.systemStatusXpu.VehicleStaticInfo;
+import com.xiaopeng.api.vo.automaticPilot.proto.up.systemStatusXpu.Wgs;
+import com.xiaopeng.api.vo.automaticPilot.proto.up.xpuNavigationRequest.NavigationRequest;
+import com.xiaopeng.api.vo.automaticPilot.proto.up.xpuNavigationRequest.OrderPhase;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.kafka.annotation.KafkaListener;
 import org.springframework.stereotype.Service;
@@ -11,36 +22,213 @@
 @Service
 public class KafkaConsumerService {
 
+
+
+
     /**
      * 消费消息 - XPU上报Robotaxi云端的消息topic(高优先级)
      *
-     * @param message 消息内容
      */
-    @KafkaListener(topics = "topic-prod-robotaxi-xpu-high", groupId = "group-robotaxi-xpu")
-    public void consumeAutomaticPilotMessage(String message) {
-        try {
-            log.info("收到XPU上报高优先级主题消息: {}", message);
-        } catch (Exception e) {
-            log.error("处理XPU上报高优先级主题消息失败: {}", message, e);
-            throw e;
+    public void topicProdRobotaxiXpuHigh(String message) {
+        MsgContent msgContent = JSON.parseObject(message, MsgContent.class);
+        RtMsgHeader header = msgContent.getHeader();
+        MessageType type = header.getType();
+        //处理请求消息
+        if (MessageType.MESSAGE_TYPE_REQUEST == type) {
+            //区分业务类型
+            RTCmdType cmd = header.getCmd();
+            switch (cmd) {
+                case SYSTEM_STATUS_XPU:
+                    log.info("XPU发布系统运行状态 (XPU→云端):{}", message);
+                    break;
+                case XPU_NAVIGATION_REQUEST:
+                    log.info("XPU向云端请求导航 (XPU→云端):{}", message);
+                    xpuNavigationRequest(msgContent);
+                    break;
+                case TRIP_STATUS_UPDATE_EVENT:
+                    log.info("行程状态更新(XPU→云端)(XPU→座舱):{}", message);
+                    break;
+                case PULLOVER_STATUS_EVENT:
+                    log.info("靠边停车状态(XPU→云端)(XPU→座舱):{}", message);
+                    break;
+                case DRIVING_MODE_UPDATE_EVENT:
+                    log.info("驾驶模式变化(XPU→云端)(XPU→座舱):{}", message);
+                    break;
+                case SYSTEM_STATUS_UPDATE_EVENT:
+                    log.info("系统状态变化(XPU→云端)(XPU→座舱):{}", message);
+                    break;
+                case TASK_STATE_UPDATE_EVENT:
+                    log.info("任务状态变化(XPU→云端)(XPU→座舱):{}", message);
+                    break;
+                case ORDER_STATE_UPDATE_EVENT:
+                    log.info("订单状态变化(XPU→云端)(XPU→座舱):{}", message);
+                    break;
+                case POINT_ARRIVAL_STATUS_EVENT:
+                    log.info("到达目标点状态(XPU→云端)(XPU→座舱):{}", message);
+                    break;
+                case PICKUP_CONFIRMATION_EVENT:
+                    log.info("用户上车确认(XPU→云端)(XPU→座舱):{}", message);
+                    break;
+                case DROPOFF_INFO_EVENT:
+                    log.info("用户下车信息(XPU→云端):{}", message);
+                    break;
+                case NAVIGATION_DEVIATION_EVENT:
+                    log.info("导航偏航(XPU→云端):{}", message);
+                    break;
+                case EMERGENCY_STOP_EVENT:
+                    log.info("急停(XPU→云端)(XPU→座舱):{}", message);
+                    break;
+                case NAVIGATION_UPDATE_EVENT:
+                    log.info("导航信息变化(XPU→云端):{}", message);
+                    break;
+                case TASK_QUEUE_UPDATE_EVENT:
+                    log.info("XPU待执行任务队列(XPU→云端):{}", message);
+                    break;
+                case SYSTEM_STATE_ANAPSHOT_SYNC_EVENT:
+                    log.info("每次MQTT连接之后触发 (XPU→云端):{}", message);
+                    break;
+                case ORDER_STATE_UPDATE_TO_CDU_EVENT:
+                    log.info("更新订单状态到CDU (XPU→云端):{}", message);
+                    break;
+                default:
+                    log.info("消息不在处理范围内,忽略:{}", message);
+            }
+
+
+
         }
+
     }
 
     /**
      * 消费消息 - XPU上报Robotaxi云端的消息topic(低优先级)
-     *
-     * @param message 消息内容
      */
-    @KafkaListener(topics = "topic-prod-robotaxi-xpu-normal", groupId = "group-robotaxi-xpu")
-    public void consumeVehicleStatusMessage(String message) {
-        try {
-            log.info("收到XPU上报低优先级主题消息: {}", message);
+    public void topicProdRobotaxiXpuNormal(String message) {
+        MsgContent msgContent = JSON.parseObject(message, MsgContent.class);
+        RtMsgHeader header = msgContent.getHeader();
+        MessageType type = header.getType();
+        //处理请求消息
+        if (MessageType.MESSAGE_TYPE_REQUEST == type) {
+            //区分业务类型
+            RTCmdType cmd = header.getCmd();
+            switch (cmd) {
+                case SYSTEM_STATUS_XPU:
+                    log.info("XPU发布系统运行状态 (XPU→云端):{}", message);
+                    break;
+                case XPU_NAVIGATION_REQUEST:
+                    log.info("XPU向云端请求导航 (XPU→云端):{}", message);
+                    xpuNavigationRequest(msgContent);
+                    break;
+                case TRIP_STATUS_UPDATE_EVENT:
+                    log.info("行程状态更新(XPU→云端)(XPU→座舱):{}", message);
+                    break;
+                case PULLOVER_STATUS_EVENT:
+                    log.info("靠边停车状态(XPU→云端)(XPU→座舱):{}", message);
+                    break;
+                case DRIVING_MODE_UPDATE_EVENT:
+                    log.info("驾驶模式变化(XPU→云端)(XPU→座舱):{}", message);
+                    break;
+                case SYSTEM_STATUS_UPDATE_EVENT:
+                    log.info("系统状态变化(XPU→云端)(XPU→座舱):{}", message);
+                    break;
+                case TASK_STATE_UPDATE_EVENT:
+                    log.info("任务状态变化(XPU→云端)(XPU→座舱):{}", message);
+                    break;
+                case ORDER_STATE_UPDATE_EVENT:
+                    log.info("订单状态变化(XPU→云端)(XPU→座舱):{}", message);
+                    break;
+                case POINT_ARRIVAL_STATUS_EVENT:
+                    log.info("到达目标点状态(XPU→云端)(XPU→座舱):{}", message);
+                    break;
+                case PICKUP_CONFIRMATION_EVENT:
+                    log.info("用户上车确认(XPU→云端)(XPU→座舱):{}", message);
+                    break;
+                case DROPOFF_INFO_EVENT:
+                    log.info("用户下车信息(XPU→云端):{}", message);
+                    break;
+                case NAVIGATION_DEVIATION_EVENT:
+                    log.info("导航偏航(XPU→云端):{}", message);
+                    break;
+                case EMERGENCY_STOP_EVENT:
+                    log.info("急停(XPU→云端)(XPU→座舱):{}", message);
+                    break;
+                case NAVIGATION_UPDATE_EVENT:
+                    log.info("导航信息变化(XPU→云端):{}", message);
+                    break;
+                case TASK_QUEUE_UPDATE_EVENT:
+                    log.info("XPU待执行任务队列(XPU→云端):{}", message);
+                    break;
+                case SYSTEM_STATE_ANAPSHOT_SYNC_EVENT:
+                    log.info("每次MQTT连接之后触发 (XPU→云端):{}", message);
+                    break;
+                case ORDER_STATE_UPDATE_TO_CDU_EVENT:
+                    log.info("更新订单状态到CDU (XPU→云端):{}", message);
+                    break;
+                default:
+                    log.info("消息不在处理范围内,忽略:{}", message);
+            }
 
-        } catch (Exception e) {
-            log.error("处理XPU上报低优先级主题消息失败: {}", message, e);
-            throw e;
+
+        }
+
+    }
+
+
+    public void systemStatusXpu(MsgContent msgContent){
+        SystemRuntimeStatus systemRuntimeStatus = msgContent.getContent_detail().getObject("systemRuntimeStatus", SystemRuntimeStatus.class);
+        //获取实时位姿
+        RealtimePose pose = systemRuntimeStatus.getPose();
+        Wgs naviPose = pose.getNavi_pose();
+        Double latitude = naviPose.getLatitude();
+        Double longitude = naviPose.getLongitude();
+        Double course = naviPose.getCourse();
+        Float alt = naviPose.getAlt();
+        //获取车辆静态信息
+        VehicleStaticInfo staticInfo = systemRuntimeStatus.getVehicle_status().getStatic_info();
+        String vin = staticInfo.getVin();
+
+
+
+    }
+
+
+
+
+
+    /**
+     * XPU向云端请求导航
+     * @param msgContent
+     */
+    public void xpuNavigationRequest(MsgContent msgContent){
+        NavigationRequest naviRequest = msgContent.getContent_detail().getObject("naviRequest", NavigationRequest.class);
+        String orderId = naviRequest.getOrder_id();
+        String taskId = naviRequest.getTask_id();
+        OrderPhase orderPhase = naviRequest.getOrder_phase();
+        log.info("订单ID:{}", orderId);
+        log.info("任务ID:{}", taskId);
+        switch (orderPhase){
+            case IDLE:
+                log.info("订单的任务未开始执行");
+                break;
+            case ROUTE_TO_PICKUP:
+                log.info("驶往上车点的行程");
+
+                break;
+            case ROUTE_TO_DESTINATION:
+                log.info("驶往下车点的行程");
+                break;
+            case ROUTE_TO_CRUISE:
+                log.info("巡游阶段路线");
+                break;
         }
     }
 
 
+
+    public void c(MsgContent msgContent){
+
+
+
+    }
+
 }

--
Gitblit v1.7.1