From d2f2d372e03a81cdf2e44f02f1105cfb32dad88d Mon Sep 17 00:00:00 2001
From: yyy <1083599556@qq.com>
Date: 星期五, 08 五月 2026 20:47:50 +0800
Subject: [PATCH] 1.修改bug 路线,用户路线偏好,改派、车型

---
 xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/impl/XpPricingServiceImpl.java |   53 ++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 36 insertions(+), 17 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 395e77b..7aeafe3 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
@@ -1100,6 +1100,7 @@
         fareVo.setSystemDiscount(new BigDecimal(fareVo.getSystemDiscount() == null ? 0 : fareVo.getSystemDiscount()).setScale(2, RoundingMode.HALF_UP).doubleValue());
         routeAndFareVo.setFareEstimate(fareVo);
         routeAndFareVo.getXpPricingCard().setFinalFareStr(fareVo.getFinalFareStr());
+//        routeAndFareVo.setTrafficLights();//交通信号灯 todo 20260508 红绿灯功能还没有
         fareVo.setId(null);
         return routeAndFareVo;
     }
@@ -1129,7 +1130,7 @@
             throw new ServiceException("当前区域未开通服务", I18nKeyConstant.NO_CURRENT_REGION);
         }
 
-        StrategyPlanningConfig planningConfig = buildStrategyKindsForPlanning(userId, routeAndFareDto.getOpenCityId());
+        StrategyPlanningConfig planningConfig = this.buildStrategyKindsForPlanning(userId, routeAndFareDto.getOpenCityId());
         List<RouteStrategyKind> kinds = planningConfig.getKinds();
         Map<String, RouteVo> routeById = new LinkedHashMap<>();
         Map<String, Set<RouteStrategyKind>> strategiesById = new LinkedHashMap<>();
@@ -1179,6 +1180,7 @@
             opt.setStrategyLabels(labels);
             opt.setPrimaryStrategyLabel(resolveStrategyDisplayName(primary, planningConfig.getDisplayNames()));
             opt.setPrimaryRoutePlanRule(primary.getAmapStrategy());
+            opt.setPrimaryRoutePlanName(primary.getDisplayName());
             opt.setRoute(part.getRoute());
             opt.setFareEstimate(part.getFareEstimate());
             opt.setXpPricingCard(part.getXpPricingCard());
@@ -1186,9 +1188,17 @@
                 opt.setCouponMessage("当前路线不满足优惠券使用条件");
             }
             opt.setOperateFree(operateFree);
-            opt.setAmapStrategy(pricingDto.getRoutePlanRule());
             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));
@@ -1293,22 +1303,25 @@
     @Override
     public List<RoutePreferenceItemVo> listRoutePreferences(Long openCityId, String userId) {
         Set<String> enabledCodes = parseEnabledPreferenceCodes();
-        Optional<RouteStrategyKind> savedPref = resolveUserPreferredKind(userId);
-        Map<RouteStrategyKind, String> displayNames = buildStrategyKindsForPlanning(userId, openCityId).getDisplayNames();
+        Optional<RouteStrategyKind> savedPref = resolveUserPreferredKind(userId);//获取用户设置的路线偏好
+        List<XpRoutePlan> routePlans = findRoutePlans(openCityId);
+
         List<RoutePreferenceItemVo> list = new ArrayList<>();
-        int i = 0;
-        for (RouteStrategyKind k : RouteStrategyKind.orderedValues()) {
-            if (!enabledCodes.contains(k.name())) {
-                continue;
+        if(CollUtil.isNotEmpty(routePlans)){
+            int i = 0;
+            for (XpRoutePlan routePlan : routePlans) {
+                RoutePreferenceItemVo v = new RoutePreferenceItemVo();
+                RouteStrategyKind strategy = RouteStrategyKind.getStrategy(routePlan.getRoutePlanRule());
+                if(strategy != null){
+                    v.setCode(strategy.name());
+                }
+                v.setName(routePlan.getPlanName());
+                v.setEnabled(true);
+                v.setSortOrder(i++);
+                v.setAmapStrategy(routePlan.getRoutePlanRule());
+                v.setSelected(savedPref.isPresent() && strategy == savedPref.get());
+                list.add(v);
             }
-            RoutePreferenceItemVo v = new RoutePreferenceItemVo();
-            v.setCode(k.name());
-            v.setName(resolveStrategyDisplayName(k, displayNames));
-            v.setEnabled(true);
-            v.setSortOrder(i++);
-            v.setAmapStrategy(k.getAmapStrategy());
-            v.setSelected(savedPref.isPresent() && k == savedPref.get());
-            list.add(v);
         }
         return list;
     }
@@ -1340,11 +1353,17 @@
         return set;
     }
 
+    private List<XpRoutePlan> findRoutePlans (Long openCityId){
+        return xpRoutePlanMapper.selectList(new LambdaQueryWrapper<XpRoutePlan>().eq(XpRoutePlan::getOpenCityId, openCityId)
+                .eq(XpRoutePlan::getAuditStatus, 2));
+    }
+
     /**
      * 用户偏好策略优先请求,其余策略仍请求以便合并去重。
      */
     private StrategyPlanningConfig buildStrategyKindsForPlanning(String userId, Long openCityId) {
-        List<XpRoutePlan> xpRoutePlans = xpRoutePlanMapper.selectList(new LambdaQueryWrapper<XpRoutePlan>().eq(XpRoutePlan::getOpenCityId, openCityId));
+        List<XpRoutePlan> xpRoutePlans = xpRoutePlanMapper.selectList(new LambdaQueryWrapper<XpRoutePlan>().eq(XpRoutePlan::getOpenCityId, openCityId)
+                .eq(XpRoutePlan::getAuditStatus, 2));
         Map<RouteStrategyKind, String> displayNames = new LinkedHashMap<>();
         List<RouteStrategyKind> configuredKinds = new ArrayList<>();
         if (xpRoutePlans.isEmpty()) {

--
Gitblit v1.7.1