| | |
| | | throw new ServiceException("当前城市未配置定价规则", I18nKeyConstant.ORDER_PRICING_NOT_EXISTS); |
| | | } |
| | | // 费用 |
| | | // // 查询订单轨迹 |
| | | // List<OrderTrajectory> trajectories = mongoTemplate.find( |
| | | // new Query(Criteria.where("orderId").is(orderId)) |
| | | // .with(Sort.by(Sort.Direction.ASC, "locatetime")), |
| | | // OrderTrajectory.class |
| | | // ); |
| | | // List<TaxiPricingDemoService.GpsPoint> gpsPoints = new ArrayList<>(); |
| | | // for (OrderTrajectory trajectory : trajectories) { |
| | | // TaxiPricingDemoService.GpsPoint point = new TaxiPricingDemoService.GpsPoint(trajectory.getDistance(), trajectory.getLocatetime()); |
| | | // gpsPoints.add(point); |
| | | // } |
| | | // 查询订单轨迹 |
| | | List<OrderTrajectory> trajectories = mongoTemplate.find( |
| | | new Query(Criteria.where("orderId").is(orderId)) |
| | | .with(Sort.by(Sort.Direction.ASC, "locatetime")), |
| | | OrderTrajectory.class |
| | | ); |
| | | List<TaxiPricingDemoService.GpsPoint> gpsPoints = new ArrayList<>(); |
| | | for (OrderTrajectory trajectory : trajectories) { |
| | | TaxiPricingDemoService.GpsPoint point = new TaxiPricingDemoService.GpsPoint(trajectory.getDistance(), trajectory.getLocatetime()); |
| | | gpsPoints.add(point); |
| | | } |
| | | // 补充临时轨迹数据 |
| | | List<TaxiPricingDemoService.GpsPoint> gpsPoints = TaxiPricingDemoService.createMockGpsPoints(DateUtils.toDate(order.getCreateTime())); |
| | | // List<TaxiPricingDemoService.GpsPoint> gpsPoints = TaxiPricingDemoService.createMockGpsPoints(DateUtils.toDate(order.getCreateTime())); |
| | | |
| | | |
| | | TaxiPricingDemoService.PricingConfig config = new TaxiPricingDemoService.PricingConfig(); |
| | |
| | | paramNum5 = jsonObject.getDouble("num5"); |
| | | break; |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | //一口价 |
| | | if(pricing.getPricingType() == 2){ |
| | | JSONObject basicPricingJson = JSONObject.parseObject(pricing.getBasicPricingJson()); |
| | | String num1 = "00:00"; |
| | | String num2 = "23:59"; |
| | | String num3 = basicPricingJson.getString("num1"); |
| | | String num4 = basicPricingJson.getString("num2"); |
| | | String num5 = basicPricingJson.getString("num3"); |
| | | String num6 = basicPricingJson.getString("num4"); |
| | | String num7 = basicPricingJson.getString("num5"); |
| | | config.normals.add(new TaxiPricingDemoService.PricingRule("普通时段", num1, num2, Double.parseDouble(num3), Double.parseDouble(num4), Double.parseDouble(num5), Double.parseDouble(num6), Double.parseDouble(num7))); |
| | | paramNum4 = basicPricingJson.getDouble("num2"); |
| | | paramNum5 = basicPricingJson.getDouble("num3"); |
| | | } |
| | | |
| | | |
| | | //动态计费 |
| | | if (pricing.getPricingType() == 1) { |
| | | 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("num23")),paramNum4, paramNum5, Double.parseDouble(basicPricingJson.getString("num24")), Double.parseDouble(basicPricingJson.getString("num25")))); |
| | |
| | | |
| | | |
| | | TaxiPricingDemoService.TaxiPricingService service = new TaxiPricingDemoService.TaxiPricingService(); |
| | | |
| | | Integer holidayToday = holidayUtil.isHolidayToday(); |
| | | |
| | | |
| | | Map<String, BigDecimal> bill = service.calculateOrderPrice(DateUtils.toDate(order.getBoardingTime()), order.getMileageKilometers(), gpsPoints, config,holidayToday); |
| | | System.err.println("======= 订单计费账单 ======="); |
| | | bill.forEach((detail, price) -> System.err.println(detail + ": " + price + " 元")); |
| | | log.info("======= 订单计费账单 ======="); |
| | | bill.forEach((detail, price) -> log.info(detail + ": " + price + " 元")); |
| | | |
| | | BigDecimal totalAmount = bill.values().stream().reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | System.err.println("--------------------------"); |
| | | System.err.println("应付总额: " + totalAmount + " 元"); |
| | | log.info("--------------------------"); |
| | | log.info("应付总额: " + totalAmount + " 元"); |
| | | BigDecimal startMoney = BigDecimal.ZERO; |
| | | // 默认费率1 |
| | | double priceRate = 1; |
| | |
| | | if (vehicle != null) { |
| | | // 修改车辆状态 |
| | | vehicle.setState(0); |
| | | |
| | | |
| | | //发送巡游订单 |
| | | addCruiseMission(vehicle, order); |
| | | // // 获取配置 根据配置判断是否该收车 如果是则找到收车点位进行收车操作 |
| | | // R<XpTaskRule> xpTaskRuleR = xpTaskRuleClient.queryDetail(); |