xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/operation/FareVo.java
@@ -32,4 +32,9 @@ @ApiModelProperty(value = "优惠券id") private Long couponId; @ApiModelProperty("系统优惠金额") private Double systemDiscount; } xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/impl/XpPricingServiceImpl.java
@@ -349,10 +349,16 @@ if (userCouponVo != null) { fareVo.setDiscountAmount(userCouponVo.getMoney()); fareVo.setFinalFare(fareVo.getOriginalFare() - fareVo.getDiscountAmount()); if(fareVo.getFinalFare()>0){ fareVo.setSystemDiscount(fareVo.getFinalFare()); fareVo.setFinalFare(0.0); } fareVo.setCouponId(userCouponVo.getId()); } else { fareVo.setDiscountAmount(0.0); fareVo.setFinalFare(fareVo.getOriginalFare()); fareVo.setSystemDiscount(fareVo.getFinalFare()); fareVo.setFinalFare(0.0); } // 10. 检查等待时间 xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpMapController.java
@@ -60,22 +60,36 @@ List<String> operatingArea = xpGeoFencingPolygonService.findFencesContainingPoint(startPoint, "operating_area", "points"); String fenceId = operatingArea.get(0); List<Document> pointsInFence = xpGeoFencingPolygonService.findPointsByParentId(fenceId, "parentId", "prohibited_area"); List<Document> pointsInFence = xpGeoFencingPolygonService.findPointsByParentId(fenceId, "fenceId", "prohibited_area"); // 避让区域 ArrayList<String> pointStrParam = new ArrayList<>(); try { for (Document document : pointsInFence) { List<GeoPoint> points = document.getList("points", GeoPoint.class); // 一个区域的点位 ArrayList<String> pointStr = new ArrayList<>(); for (GeoPoint point : points) { pointStr.add( point.getLongitude()+","+point.getLatitude()); } if(!pointStr.isEmpty()){ pointStrParam.add(String.join(";", pointStr)); } // 获取points字段(它是GeoJSON对象) Document geoJsonDoc = document.get("points", Document.class); if (geoJsonDoc != null && "Polygon".equals(geoJsonDoc.getString("type"))) { // 获取coordinates数组 List<List<List<Double>>> coordinates = (List<List<List<Double>>>) geoJsonDoc.get("coordinates"); if (coordinates != null && !coordinates.isEmpty()) { // 获取第一个多边形环(通常只有一个) List<List<Double>> polygonPoints = coordinates.get(0); // 转换为经纬度字符串 ArrayList<String> pointStr = new ArrayList<>(); for (List<Double> point : polygonPoints) { if (point.size() >= 2) { pointStr.add(point.get(0) + "," + point.get(1)); } } if (!pointStr.isEmpty()) { pointStrParam.add(String.join(";", pointStr)); } } } } RouteVo routeVo = gdMapGeocodingUtil.getDistanceAndTime(dto.getOrigin(), dto.getDestination(), String.join("|", pointStrParam), fenceId,dto.getRoutePlanRule()); if(routeVo==null){ xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -859,6 +859,9 @@ List<XpHistoryStartPointsVo> data = r.getData(); for (XpHistoryStartPointsVo datum : data) { // 保留2位数小数 Double distance = datum.getDistance(); datum.setDistance(BigDecimal.valueOf(distance).setScale(2, RoundingMode.HALF_UP).doubleValue()); xpOrders.stream().filter(e->e.getEndPointId().equals(datum.getId())).findFirst().ifPresent( order->{ datum.setNum(order.getNum()); @@ -887,6 +890,9 @@ List<XpHistoryEndPointsVo> data = r.getData(); for (XpHistoryEndPointsVo datum : data) { // 保留2位数小数 Double distance = datum.getDistance(); datum.setDistance(BigDecimal.valueOf(distance).setScale(2, RoundingMode.HALF_UP).doubleValue()); xpOrders.stream().filter(e->e.getEndPointId().equals(datum.getId())).findFirst().ifPresent( order->{ datum.setNum(order.getNum());