From b8d0dc0a294ba8e07e861b3b78e953d7d5ba480c Mon Sep 17 00:00:00 2001
From: zhouhn <zhouhn@xiaopeng.com>
Date: 星期六, 07 三月 2026 20:58:06 +0800
Subject: [PATCH] 完善云端导航信息下发的逻辑
---
xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/util/XPUUtil.java | 51 ++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 42 insertions(+), 9 deletions(-)
diff --git a/xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/util/XPUUtil.java b/xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/util/XPUUtil.java
index 0e1bc4d..68e872c 100644
--- a/xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/util/XPUUtil.java
+++ b/xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/util/XPUUtil.java
@@ -11,6 +11,7 @@
import com.xiaopeng.api.vo.automaticPilot.proto.down.*;
import com.xiaopeng.api.vo.automaticPilot.proto.down.cloudCreateOrder.RTTask;
import com.xiaopeng.api.vo.automaticPilot.proto.down.cloudOrderOperation.OrderOperation;
+import com.xiaopeng.api.vo.automaticPilot.proto.down.cloudPushNavigation.RestoreNavigationData;
import com.xiaopeng.common.core.utils.StringUtils;
import com.xiaopeng.common.core.utils.uuid.UUID;
import lombok.extern.slf4j.Slf4j;
@@ -59,13 +60,14 @@
header.setCmd(RTCmdType.CLOUD_CREATE_ORDER);
header.setSequence(sequence);
header.setType(MessageType.MESSAGE_TYPE_RESPONSE);
+ header.setSource(SourceType.CLOUD);
msgContent.setHeader(header);
// 消息内容
JSONObject jsonObject = new JSONObject();
jsonObject.put("task", task);
msgContent.setContent_detail(jsonObject);
MqttPublishVo vo = new MqttPublishVo();
- vo.setTopic(buildTopic(vin));
+ vo.setTopic(buildTopicByVin(vin));
vo.setPayload(JSON.toJSONString(msgContent));
log.info("云端-->XPU 创建订单:{}", vo);
@@ -81,7 +83,7 @@
* @return
*/
//TODO 处理feign调用的异常
- public MqttPublishDto cloudOrderOperation(OrderOperation operation, String vin,Long sequence) {
+ public MqttPublishDto cloudOrderOperation(OrderOperation operation, String vin, Long sequence) {
MsgContent msgContent = new MsgContent();
// 消息头
RtMsgHeader header = new RtMsgHeader();
@@ -90,21 +92,19 @@
header.setCmd(RTCmdType.CLOUD_ORDER_OPERATION);
header.setSequence(sequence);
header.setType(MessageType.MESSAGE_TYPE_REQUEST);
+ header.setSource(SourceType.CLOUD);
msgContent.setHeader(header);
// 消息内容
JSONObject jsonObject = new JSONObject();
jsonObject.put("operation", operation);
msgContent.setContent_detail(jsonObject);
MqttPublishVo vo = new MqttPublishVo();
- vo.setTopic(buildTopic(vin));
+ vo.setTopic(buildTopicByVin(vin));
vo.setPayload(JSON.toJSONString(msgContent));
log.info("云端-->XPU 修改订单:{}", vo);
return xpuClient.publish(vo);
}
-
-
-
/**
* 响应消息
@@ -122,20 +122,49 @@
Snowflake snowflake = IdUtil.getSnowflake(0, 0);
header.setSequence(snowflake.nextId());
header.setType(MessageType.MESSAGE_TYPE_RESPONSE);
+ header.setSource(SourceType.CLOUD);
msgContent.setHeader(header);
// 消息内容
JSONObject jsonObject = new JSONObject();
jsonObject.put("resposne", responseMessage);
msgContent.setContent_detail(jsonObject);
MqttPublishVo vo = new MqttPublishVo();
- vo.setTopic(buildTopic(vin));
+ vo.setTopic(buildTopicByVin(vin));
vo.setPayload(JSON.toJSONString(msgContent));
log.info("云端-->XPU 响应消息:{}", vo);
return xpuClient.publish(vo);
}
+ /**
+ * 下发导航地址到车端
+ *
+ * @param operation
+ * @return
+ */
+ //TODO 处理feign调用的异常
+ public MqttPublishDto cloudPushNavigation(RestoreNavigationData navigationData, String xpuId, Long sequence) {
+ MsgContent msgContent = new MsgContent();
+ // 消息头
+ RtMsgHeader header = new RtMsgHeader();
+ header.setMsg_id(UUID.randomUUID().toString());
+ header.setTimestamp(System.currentTimeMillis());
+ header.setCmd(RTCmdType.CLOUD_NAVIGATION_RESPONSE);
+ header.setSequence(sequence);
+ header.setType(MessageType.MESSAGE_TYPE_RESPONSE);
+ header.setSource(SourceType.CLOUD);
+ msgContent.setHeader(header);
+ // 消息内容
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put("navigationData", navigationData);
+ msgContent.setContent_detail(jsonObject);
+ MqttPublishVo vo = new MqttPublishVo();
+ vo.setTopic(buildTopicByXpuId(xpuId));
+ vo.setPayload(JSON.toJSONString(msgContent));
+ log.info("云端-->XPU 下发导航信息:{}", vo);
+ return xpuClient.publish(vo);
+ }
/**
@@ -153,12 +182,16 @@
return xpuIdMapping.get(XPU_ID_TYPE);
}
- private String buildTopic(String vin) {
+ private String buildTopicByVin(String vin) {
+ String xpuId = getXpuIdByVin(vin);
+ return this.buildTopicByXpuId(xpuId);
+ }
+
+ private String buildTopicByXpuId(String xpuId) {
String prefix = topicPrefix == null ? "" : topicPrefix;
if (!prefix.endsWith("/")) {
prefix = prefix + "/";
}
- String xpuId = getXpuIdByVin(vin);
String value = xpuId;
if (xpuId.length() > 10) {
int start = 10;
--
Gitblit v1.7.1