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