无关风月
2026-02-13 56437e61ec9669bc8d2770cb03708eb9671fe9a6
bug修改,计算费用工具类
5个文件已修改
21 ■■■■■ 已修改文件
xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/operation/XpElectronicClientFallbackFactory.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpElectronicFenceAreaServiceImpl.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpElectronicFenceServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/utils/TaxiPricingDemoService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/operation/XpElectronicClientFallbackFactory.java
@@ -12,6 +12,7 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.Collection;
@@ -30,6 +31,7 @@
                return R.fail("获取电子围栏列表失败");
            }
            @PostMapping("/api/v1/electronicFence/add")
            @Override
            public R add(ElectronicFenceAddDto dto) {
                log.error("添加电子围栏失败:{}", cause.getMessage());
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpElectronicFenceAreaServiceImpl.java
@@ -194,10 +194,10 @@
                ArrayList<String> coordinates = new ArrayList<>();
                List<Point> points = polygon.getPoints().getPoints();
                for (Point point : points) {
                    coordinates.add( point.getY()+","+point.getX() );
                    coordinates.add( point.getX()+","+point.getY() );
                }
                String collect = coordinates.stream().collect(Collectors.joining(";"));
                if (ElectricFenceUtil.areaMonitoring(collect, dto.getLatitude()+","+dto.getLongitude())) {
                if (ElectricFenceUtil.areaMonitoring(collect, dto.getLongitude()+","+dto.getLatitude())) {
                    String fenceId = polygon.getFenceId();
                    XpElectronicFence xpElectronicFence = xpElectronicFenceMapper.selectById(fenceId);
                    if(xpElectronicFence!=null){
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpElectronicFenceServiceImpl.java
@@ -243,7 +243,7 @@
                }
            }
            if (dto.getStatus() == 2) {
            if (xpElectronicFence.getStatus() == 2) {
                for (XpElectronicFenceArea newElectronicFenceArea : newElectronicFenceAreas) {
                    if (newElectronicFenceArea.getAreaType() == 1
                            && newElectronicFenceArea.getAreaStatus() == 1) {
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -977,14 +977,11 @@
        System.err.println("应付总额: " + totalAmount + " 元");
        // 封装费用明细数据
        for (Map.Entry<String, BigDecimal> stringBigDecimalEntry : bill.entrySet()) {
            // 封装起步价
            FareBreakdownDetailVo startDetail = new FareBreakdownDetailVo();
            String key = stringBigDecimalEntry.getKey();
            if (key.contains("起步价")){
                startDetail.setTime(key.split("\\|")[1]);
//                startDetail.setMileage();
//                startDetail.setDuration();
                startDetail.setMoney(stringBigDecimalEntry.getValue());
                if (key.contains("普通时段")){
                    startDetail.setType(1);
@@ -995,7 +992,10 @@
                }else if (key.contains("节假")){
                    startDetail.setType(4);
                }
                startDetail.setDuration(Long.parseLong(key.split("=")[1]));
                startDetail.setMileage(new BigDecimal(key.split("&")[1]));
            }
            // 封装里程费
        }
//        // 计算实际价格
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/utils/TaxiPricingDemoService.java
@@ -41,7 +41,7 @@
            BigDecimal totalMileage = BigDecimal.valueOf(totalMileageKm);
            PricingRule baseRule = config.findMatchedRule(orderTime);
            result.put("起步价(" + baseRule.ruleName + ")"+"|"+baseRule.start+"-"+baseRule.end, baseRule.baseFare);
            result.put("起步价(" + baseRule.ruleName + ")"+"|"+baseRule.start+"-"+baseRule.end+"="+baseRule.baseMin+"&"+baseRule.baseKm, baseRule.baseFare);
            if (totalMileage.compareTo(baseRule.baseKm) <= 0) {
                return formatMap(result);
@@ -123,13 +123,12 @@
                }else{
                    BigDecimal exceedValue = bill.get(ruleName);
                    if(Objects.nonNull(exceedValue)){
                        result.put("time"+split[0], result.getOrDefault(split[0], BigDecimal.ZERO).add(exceedValue));
                        exceedValue = exceedValue.divide(new BigDecimal(60000), 2, RoundingMode.HALF_UP);
                    }else{
                        exceedValue = BigDecimal.ZERO;
                    }
                    BigDecimal exceedRate = activeRuleNameRate.get(ruleName);
                    result.put(split[0], result.getOrDefault(split[0], BigDecimal.ZERO).add(exceedValue.multiply(exceedRate)));
                    result.put("时长费"+split[0], result.getOrDefault(split[0], BigDecimal.ZERO).add(exceedValue.multiply(exceedRate)));
                }
            }
            // 2. 远途加价计算 (基于区间判定)