From 4fa033eaa1ddfd9ed4030b2db061cfeaf49c2897 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期二, 24 二月 2026 19:39:11 +0800
Subject: [PATCH] 修改分表分库框架和XPU对接逻辑
---
xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/map/XpMapClient.java | 11 +++++
xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/map/XpMapClientFallbackFactory.java | 7 +++
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpMapController.java | 10 ++++
xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java | 13 +++++-
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/utils/GDMapGeocodingUtil.java | 19 ++++++++-
xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/operation/RouteVo.java | 4 --
6 files changed, 55 insertions(+), 9 deletions(-)
diff --git a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/map/XpMapClientFallbackFactory.java b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/map/XpMapClientFallbackFactory.java
index 40f38a3..542531c 100644
--- a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/map/XpMapClientFallbackFactory.java
+++ b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/map/XpMapClientFallbackFactory.java
@@ -29,6 +29,13 @@
return R.fail("获取订单距离和时长失败,"+cause.getMessage());
}
+
+ @Override
+ public R<String> queryRouted(String routedID) {
+ log.error("根据导航ID获取车端需要的导航数据失败:{}", cause.getMessage());
+ return R.fail("根据导航ID获取车端需要的导航数据失败:" + cause.getMessage());
+ }
+
@Override
public R<Boolean> diagnosisArea(RouteAndFareDto dto) {
log.error("判断是否同一经营区域失败:{}", cause.getMessage());
diff --git a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/map/XpMapClient.java b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/map/XpMapClient.java
index c4df8de..483b9b0 100644
--- a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/map/XpMapClient.java
+++ b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/map/XpMapClient.java
@@ -12,6 +12,7 @@
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
@FeignClient(contextId = "XpMapClient", value = ServiceNameConstantsEnum.XP_MAP_SERVICE, fallbackFactory = XpMapClientFallbackFactory.class)
public interface XpMapClient {
@@ -33,6 +34,16 @@
/**
+ * 根据导航ID获取车端需要的导航数据
+ * @param routedID
+ * @return
+ */
+ @PostMapping("/base/v1/mini-program/map/queryRouted")
+ R<String> queryRouted(@RequestParam("routedID") String routedID);
+
+
+
+ /**
* 判断是否同一经营区域
* @param dto
* @return
diff --git a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/operation/RouteVo.java b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/operation/RouteVo.java
index 013bfda..d021012 100644
--- a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/operation/RouteVo.java
+++ b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/operation/RouteVo.java
@@ -18,8 +18,4 @@
private String routeID;
private List<LonLatDto> polyline;
- /**
- * 导航原始数据
- */
- private String routeDataContent;
}
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 0efb36b..a6de1a3 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
@@ -434,8 +434,13 @@
throw new RuntimeException("获取订单线路和运费失败");
}
RouteVo routeVo = routeVoR.getData();
+ R<String> stringR = xpMapClient.queryRouted(routeVo.getRouteID());
+ if (200 != stringR.getCode()) {
+ throw new RuntimeException("根据导航ID获取车端需要的导航数据失败");
+ }
+
//构建导航下发请求对象
- cloudPushNavigationInfo(requestId, routeVo.getRouteID(), routeVo.getRouteDataContent(), orderId, xpVehicle.getVehicleVin(), xpVehicle.getXpuId());
+ cloudPushNavigationInfo(requestId, routeVo.getRouteID(), stringR.getData(), orderId, xpVehicle.getVehicleVin(), xpVehicle.getXpuId());
}
}
}
@@ -504,8 +509,12 @@
}
XpVehicle xpVehicle = xpVehicleClient.queryById(xpOrder.getVehicleId()).getData();
RouteVo routeVo = routeVoR.getData();
+ R<String> stringR = xpMapClient.queryRouted(routeVo.getRouteID());
+ if (200 != stringR.getCode()) {
+ throw new RuntimeException("根据导航ID获取车端需要的导航数据失败");
+ }
//构建导航下发请求对象
- cloudPushNavigationInfo(requestId, routeVo.getRouteID(), routeVo.getRouteDataContent(), orderId, xpVehicle.getVehicleVin(), xpVehicle.getXpuId());
+ cloudPushNavigationInfo(requestId, routeVo.getRouteID(), stringR.getData(), orderId, xpVehicle.getVehicleVin(), xpVehicle.getXpuId());
}
}
diff --git a/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpMapController.java b/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpMapController.java
index bce0ecf..93bc0e9 100644
--- a/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpMapController.java
+++ b/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpMapController.java
@@ -119,7 +119,15 @@
return R.ok(routeVo);
}
-
+ /**
+ * 根据导航ID获取车端需要的导航数据
+ * @param routedID
+ * @return
+ */
+ @PostMapping("/map/queryRouted")
+ public R<String> getOrderDistanceAndDuration(@RequestParam("routedID") String routedID){
+ return R.ok(gdMapGeocodingUtil.routed(routedID));
+ }
/**
diff --git a/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/utils/GDMapGeocodingUtil.java b/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/utils/GDMapGeocodingUtil.java
index ea7dae5..cff811e 100644
--- a/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/utils/GDMapGeocodingUtil.java
+++ b/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/utils/GDMapGeocodingUtil.java
@@ -71,8 +71,6 @@
JSONObject jsonObject1 = JSON.parseObject(data);
String routeID = jsonObject1.getString("routeID");
JSONArray path = jsonObject1.getJSONArray("paths");
- JSONArray path = jsonObject1.getJSONArray("path");
- routeVo.setRouteDataContent(data);
for (Object o : path) {
JSONObject jsonObject2 = (JSONObject) o;
@@ -112,5 +110,22 @@
}
+ /**
+ * 线路还原接口
+ * 车端使用的数据
+ * @param routeID
+ * @return
+ */
+ public String routed(String routeID){
+ String url = "https://tsapi.amap.com/v1/route/query/routeid?key=" + key;
+ HashMap<String, Object> params = new HashMap<>();
+ params.put("routeID", routeID);
+ params.put("sdkVersion", "");
+ params.put("encoderVersion", "5.1");
+ String post = HttpUtils.post(url, JSON.toJSONString(params));
+ System.out.println("高德地图返回结果:"+ post);
+ JSONObject jsonObject = JSON.parseObject(post);
+ return jsonObject.getString("data");
+ }
}
--
Gitblit v1.7.1