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