| | |
| | | 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; |
| | | } |
| | |
| | | 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<>(); |
| | |
| | | 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()); |
| | |
| | | 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)); |
| | |
| | | @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; |
| | | } |
| | |
| | | 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()) { |