From 8ee550a8bc2ca7e57665f3955378b6428f820945 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期五, 06 三月 2026 19:00:19 +0800
Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/Robotaxi
---
xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/util/XPUUtil.java | 120 ++++++++++++++++++++++++++++++++++++++++++------------------
1 files changed, 84 insertions(+), 36 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 603e7ab..0644763 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
@@ -48,7 +48,6 @@
* @param taskList
* @return
*/
- //TODO 处理feign调用的异常
public MqttPublishDto cloudCreateOrder(RtTaskList taskList, String vin, Long sequence) {
MsgContent.Builder msgContentBuilder = MsgContent.newBuilder();
MsgHeader.Builder headerBuilder = MsgHeader.newBuilder();
@@ -70,8 +69,17 @@
log.error("Protobuf转JSON失败", e);
throw new RuntimeException("Protobuf转JSON失败", e);
}
- log.info("云端-->XPU 创建订单:{}", vo);
- return xpuClient.publish(vo);
+ log.info("云端-->XPU 创建订单:{}", JSON.toJSONString(vo));
+ try {
+ MqttPublishDto dto = xpuClient.publish(vo);
+ log.info("XPU返回:{}", JSON.toJSONString(dto));
+ if(200 != dto.getCode()){
+ dto = againPushMessage(vo);
+ }
+ return dto;
+ }catch (Exception e){
+ throw new RuntimeException("云端-->XPU 创建订单失败:", e);
+ }
}
@@ -80,7 +88,6 @@
* @param operation
* @return
*/
- //TODO 处理feign调用的异常
public MqttPublishDto cloudOrderOperation(OrderOperation operation, String vin, Long sequence) {
MsgContent.Builder msgContentBuilder = MsgContent.newBuilder();
MsgHeader.Builder headerBuilder = MsgHeader.newBuilder();
@@ -103,9 +110,59 @@
throw new RuntimeException("Protobuf转JSON失败", e);
}
log.info("云端-->XPU 修改订单:{}", vo);
- return xpuClient.publish(vo);
+ try {
+ MqttPublishDto dto = xpuClient.publish(vo);
+ log.info("XPU返回:{}", JSON.toJSONString(dto));
+ if(200 != dto.getCode()){
+ dto = againPushMessage(vo);
+ }
+ return dto;
+ }catch (Exception e){
+ throw new RuntimeException("云端-->XPU 修改订单失败:", e);
+ }
}
+
+
+
+ /**
+ * 下发导航地址到车端
+ *
+ * @param navigationData
+ * @return
+ */
+ public MqttPublishDto cloudPushNavigation(RestoreNavigationData navigationData, String xpuId, Long sequence) {
+ MsgContent.Builder msgContentBuilder = MsgContent.newBuilder();
+ MsgHeader.Builder headerBuilder = MsgHeader.newBuilder();
+ headerBuilder.setMsgId(UUID.randomUUID().toString());
+ headerBuilder.setTimestamp(System.currentTimeMillis());
+ headerBuilder.setCmd(RTCmdType.CLOUD_NAVIGATION_RESPONSE.getValue());
+ headerBuilder.setSequence(sequence);
+ headerBuilder.setType(MessageType.MESSAGE_TYPE_RESPONSE);
+ headerBuilder.setSource(SourceType.CLOUD);
+ msgContentBuilder.setHeader(headerBuilder.build());
+
+ msgContentBuilder.setRestoreNavigationData(navigationData);
+ MqttPublishVo vo = new MqttPublishVo();
+ vo.setTopic(buildTopicByXpuId(xpuId));
+ try {
+ vo.setPayload(jsonPrinter.print(msgContentBuilder.build()));
+ } catch (Exception e) {
+ log.error("Protobuf转JSON失败", e);
+ throw new RuntimeException("Protobuf转JSON失败", e);
+ }
+ log.info("云端-->XPU 下发导航信息:{}", vo);
+ try {
+ MqttPublishDto dto = xpuClient.publish(vo);
+ log.info("XPU返回:{}", JSON.toJSONString(dto));
+ if(200 != dto.getCode()){
+ dto = againPushMessage(vo);
+ }
+ return dto;
+ }catch (Exception e){
+ throw new RuntimeException("云端-->XPU 下发导航信息失败:", e);
+ }
+ }
@@ -139,38 +196,7 @@
return xpuClient.publish(vo);
}
- /**
- * 下发导航地址到车端
- *
- * @param navigationData
- * @return
- */
- //TODO 处理feign调用的异常
- public MqttPublishDto cloudPushNavigation(RestoreNavigationData navigationData, String xpuId, Long sequence) {
- MsgContent.Builder msgContentBuilder = MsgContent.newBuilder();
- MsgHeader.Builder headerBuilder = MsgHeader.newBuilder();
- headerBuilder.setMsgId(UUID.randomUUID().toString());
- headerBuilder.setTimestamp(System.currentTimeMillis());
- headerBuilder.setCmd(RTCmdType.CLOUD_NAVIGATION_RESPONSE.getValue());
- headerBuilder.setSequence(sequence);
- headerBuilder.setType(MessageType.MESSAGE_TYPE_RESPONSE);
- headerBuilder.setSource(SourceType.CLOUD);
- msgContentBuilder.setHeader(headerBuilder.build());
- msgContentBuilder.setRestoreNavigationData(navigationData);
- MqttPublishVo vo = new MqttPublishVo();
- vo.setTopic(buildTopicByXpuId(xpuId));
- try {
- vo.setPayload(jsonPrinter.print(msgContentBuilder.build()));
- } catch (Exception e) {
- log.error("Protobuf转JSON失败", e);
- throw new RuntimeException("Protobuf转JSON失败", e);
- }
-
-
- log.info("云端-->XPU 下发导航信息:{}", vo);
- return xpuClient.publish(vo);
- }
/**
@@ -207,4 +233,26 @@
return prefix + value + "00000000";
}
+
+ /**
+ * 消息下发XPU重试机制
+ * @param message
+ * @return
+ */
+ public MqttPublishDto againPushMessage(MqttPublishVo message) {
+ log.info("云端-->XPU 消息重试:{}", message);
+ MqttPublishDto dto = null;
+ for (int i = 0; i < 3; i++) {
+ try {
+ dto = xpuClient.publish(message);
+ log.info("云端-->XPU 消息重试{}次:{}", (i+1), message);
+ if (dto.getCode() == 200) {
+ break;
+ }
+ }catch (Exception e){
+ log.error("云端-->XPU 推送失败:{}", message);
+ }
+ }
+ return dto;
+ }
}
--
Gitblit v1.7.1