无关风月
2026-02-13 e4e8a1a96de8dc5efb965bea8e98581e2b41ac82
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -941,22 +941,23 @@
            gpsPoints.add(point);
        }
        TaxiPricingDemoService.PricingConfig config = new TaxiPricingDemoService.PricingConfig();
        config.peaks.add(new TaxiPricingDemoService.PricingRule("高峰期", "14:40", "14:46", 15.0, 3.0, 5.0, 3.0, 0.8));
        config.peaks.add(new TaxiPricingDemoService.PricingRule("高峰期", "18:40", "19:46", 15.0, 3.0, 5.0, 3.0, 0.8));
        config.night = new TaxiPricingDemoService.PricingRule("夜间行驶", "14:47", "14:48", 18.0, 3.0, 5.0, 3.5, 1.0);
        config.holiday = new TaxiPricingDemoService.PricingRule("节假日", "18:47", "18:48", 18.0, 3.0, 5.0, 4, 2.0);
        config.normals.add(new TaxiPricingDemoService.PricingRule("普通时段", "14:46", "14:47", 10.0, 3.0, 5.0, 2.4, 0.5));
        JSONArray StartingFareJsonArray = JSONArray.parseArray(pricing.getStartingFareJson());
        for (Object o : StartingFareJsonArray) {
        JSONArray startingFareJsonArray = JSONArray.parseArray(pricing.getStartingFareJson());
        JSONObject basicPricingJson = JSONObject.parseObject(pricing.getBasicPricingJson());
        config.peaks.add(new TaxiPricingDemoService.PricingRule("高峰期", basicPricingJson.getString("num21").split("-")[0], basicPricingJson.getString("num21").split("-")[1], Double.parseDouble(basicPricingJson.getString("num24")), Double.parseDouble(basicPricingJson.getString("num25")), Double.parseDouble(basicPricingJson.getString("num26")), Double.parseDouble(basicPricingJson.getString("num27")), Double.parseDouble(basicPricingJson.getString("num28"))));
        config.peaks.add(new TaxiPricingDemoService.PricingRule("高峰期", basicPricingJson.getString("num22").split("-")[0], basicPricingJson.getString("num22").split("-")[1], Double.parseDouble(basicPricingJson.getString("num24")), Double.parseDouble(basicPricingJson.getString("num25")), Double.parseDouble(basicPricingJson.getString("num26")), Double.parseDouble(basicPricingJson.getString("num27")), Double.parseDouble(basicPricingJson.getString("num28"))));
        config.night = new TaxiPricingDemoService.PricingRule("夜间行驶",    basicPricingJson.getString("num14").split("-")[0], basicPricingJson.getString("num14").split("-")[1], Double.parseDouble(basicPricingJson.getString("num16")), Double.parseDouble(basicPricingJson.getString("num17")), Double.parseDouble(basicPricingJson.getString("num18")), Double.parseDouble(basicPricingJson.getString("num19")), Double.parseDouble(basicPricingJson.getString("num20")));
        config.holiday = new TaxiPricingDemoService.PricingRule("节假日",   "00:00", "23:59", Double.parseDouble(basicPricingJson.getString("num30")), Double.parseDouble(basicPricingJson.getString("num31")), Double.parseDouble(basicPricingJson.getString("num32")), Double.parseDouble(basicPricingJson.getString("num33")), Double.parseDouble(basicPricingJson.getString("num234")));
        for (Object o : startingFareJsonArray) {
            // 转化为jsonObject
            JSONObject jsonObject = (JSONObject) o;
            String num1 =jsonObject.getString("num1");
            String num2 =jsonObject.getString("num2");
            String num3 =jsonObject.getString("num3");
            String num4 =jsonObject.getString("num4");
            String num5 =jsonObject.getString("num5");
            String num6 =jsonObject.getString("num6");
            String num7 =jsonObject.getString("num7");
            String num1 = jsonObject.getString("num1");
            String num2 = jsonObject.getString("num2");
            String num3 = jsonObject.getString("num3");
            String num4 = jsonObject.getString("num4");
            String num5 = jsonObject.getString("num5");
            String num6 = jsonObject.getString("num6");
            String num7 = jsonObject.getString("num7");
            config.normals.add(new TaxiPricingDemoService.PricingRule("普通时段", num1, num2, Double.parseDouble(num3), Double.parseDouble(num4), Double.parseDouble(num5), Double.parseDouble(num6), Double.parseDouble(num7)));
        }
        // --- 远途加价区间配置 (关键修改) ---
@@ -980,22 +981,78 @@
            // 封装起步价
            FareBreakdownDetailVo startDetail = new FareBreakdownDetailVo();
            String key = stringBigDecimalEntry.getKey();
            if (key.contains("起步价")){
            if (key.contains("起步价")) {
                startDetail.setTime(key.split("\\|")[1]);
                startDetail.setMoney(stringBigDecimalEntry.getValue());
                if (key.contains("普通时段")){
                if (key.contains("普通时段")) {
                    startDetail.setType(1);
                }else if (key.contains("夜间")){
                } else if (key.contains("夜间")) {
                    startDetail.setType(2);
                }else if (key.contains("高峰")){
                } else if (key.contains("高峰")) {
                    startDetail.setType(3);
                }else if (key.contains("节假")){
                } else if (key.contains("节假")) {
                    startDetail.setType(4);
                }
                startDetail.setDuration(Long.parseLong(key.split("=")[1]));
                startDetail.setMileage(new BigDecimal(key.split("&")[1]));
                start.add(startDetail);
            }
            // 封装里程费
            if (!key.contains("起步")&&!key.contains("时长")&&!key.contains("远途")&&!key.contains("distance")) {
                FareBreakdownDetailVo mileageDetail = new FareBreakdownDetailVo();
                if (key.contains("普通时段")){
                    mileageDetail.setType(1);
                    String key1 = "distance普通时段"+key.split("\\|")[1];
                    String key2 = "普通时段"+key.split("\\|")[1];
                    BigDecimal distance = bill.get(key1);
                    BigDecimal money = bill.get(key2);
                    mileageDetail.setMileage(distance);
                    mileageDetail.setMoney(money);
                }else if (key.contains("夜间行驶")){
                    mileageDetail.setType(2);
                    String key1 = "distance夜间行驶"+key.split("\\|")[1];
                    String key2 = "夜间行驶"+key.split("\\|")[1];
                    BigDecimal distance = bill.get(key1);
                    BigDecimal money = bill.get(key2);
                    mileageDetail.setMileage(distance);
                    mileageDetail.setMoney(money);
                }
                else if (key.contains("高峰期")){
                    mileageDetail.setType(3);
                    String key1 = "distance高峰期"+key.split("\\|")[1];
                    String key2 = "高峰期"+key.split("\\|")[1];
                    BigDecimal distance = bill.get(key1);
                    BigDecimal money = bill.get(key2);
                    mileageDetail.setMileage(distance);
                    mileageDetail.setMoney(money);
                }
                else if (key.contains("节假")){
                    mileageDetail.setType(4);
                    String key1 = "distance节假日"+key.split("\\|")[1];
                    String key2 = "节假日"+key.split("\\|")[1];
                    BigDecimal distance = bill.get(key1);
                    BigDecimal money = bill.get(key2);
                    mileageDetail.setMileage(distance);
                    mileageDetail.setMoney(money);
                }
            }
            // 封装时长费
            FareBreakdownDetailVo timeDetail = new FareBreakdownDetailVo();
            if (key.contains("时长费")) {
                timeDetail.setType(startDetail.getType());
                timeDetail.setMoney(stringBigDecimalEntry.getValue());
                timeDetail.setDuration(Long.parseLong(key.split("&")[1]));
                duration.add(timeDetail);
            }
            // 封装远途费
            FareBreakdownDetailVo longDetail = new FareBreakdownDetailVo();
            if (key.contains("远途费")) {
                longDetail.setType(startDetail.getType());
                longDetail.setMoney(stringBigDecimalEntry.getValue());
                longDetail.setMileage(new BigDecimal(key.split("&")[1]));
                longDistance.add(longDetail);
            }
        }
//        // 计算实际价格