From b2ff9dd285dcc9ec6b91e69bb9222515c1208d12 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期一, 11 五月 2026 13:47:58 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/1.0' into 1.0

---
 xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/impl/XpPricingServiceImpl.java |   24 ++++++++++++++----------
 1 files changed, 14 insertions(+), 10 deletions(-)

diff --git a/xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/impl/XpPricingServiceImpl.java b/xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/impl/XpPricingServiceImpl.java
index 6aad12d..afde67e 100644
--- a/xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/impl/XpPricingServiceImpl.java
+++ b/xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/impl/XpPricingServiceImpl.java
@@ -15,6 +15,7 @@
 import com.xiaopeng.api.dto.map.RouteAndFareDto;
 import com.xiaopeng.api.dto.map.RouteStaleCheckDto;
 import com.xiaopeng.api.dto.map.SelectNavigationRouteDto;
+import com.xiaopeng.api.dto.operation.LonLatDto;
 import com.xiaopeng.api.enums.RouteStrategyKind;
 import com.xiaopeng.api.feignClient.account.UserResourcesClient;
 import com.xiaopeng.api.feignClient.account.UserRoutePlanRuleClient;
@@ -1141,7 +1142,10 @@
         List<RouteStrategyKind> kinds = planningConfig.getKinds();
         Map<String, RouteVo> routeById = new LinkedHashMap<>();
         Map<String, Set<RouteStrategyKind>> strategiesById = new LinkedHashMap<>();
-        for (RouteStrategyKind kind : kinds) {
+        Set<List<LonLatDto>> routePoints = new HashSet<>();
+
+
+        aa: for (RouteStrategyKind kind : kinds) {
             RouteAndFareDto copy = new RouteAndFareDto();
             copy.setOrigin(routeAndFareDto.getOrigin());
             copy.setDestination(routeAndFareDto.getDestination());
@@ -1150,10 +1154,19 @@
             if (r.getCode() != 200 || r.getData() == null || r.getData().getRouteID() == null) {
                 continue;
             }
+            if(CollUtil.isNotEmpty(routePoints)){
+                for (List<LonLatDto> routePoint : routePoints) {
+                    if(CollUtil.isEqualList(routePoint, r.getData().getPolyline())){
+                        continue aa;
+                    }
+                }
+            }
+            routePoints.add(r.getData().getPolyline());
             String fid = r.getData().getRouteID();
             routeById.putIfAbsent(fid, r.getData());
             strategiesById.computeIfAbsent(fid, k -> new LinkedHashSet<>()).add(kind);
         }
+
         if (routeById.isEmpty()) {
             throw new ServiceException("获取导肮信息失败", I18nKeyConstant.PATH_NOT_FOUND);
         }
@@ -1197,15 +1210,6 @@
             opt.setOperateFree(operateFree);
             options.add(opt);
         }
-
-        // 根据 pathFingerprint 去重,保留第一次出现的路线
-//        options = new ArrayList<>(options.stream()
-//                .collect(Collectors.toMap(
-//                        RouteOptionVo::getPathFingerprint,
-//                        option -> option,
-//                        (existing, replacement) -> existing,
-//                        LinkedHashMap::new
-//                )).values());
 
         RouteStrategyKind userPref = resolveUserPreferredKind(userId).orElse(RouteStrategyKind.SMART);
         options.sort((a, b) -> compareRouteOptionByUserPreference(a, b, userPref, strategiesById));

--
Gitblit v1.7.1