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. 远途加价计算 (基于区间判定)