From 36695821ea10197d7758babc7bc2b5dfb66dd88e Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期六, 24 六月 2023 09:30:26 +0800 Subject: [PATCH] 修改bug --- driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java | 29 ++++++++++++++++------------- 1 files changed, 16 insertions(+), 13 deletions(-) diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java index d9ceaf8..a87c1fc 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java @@ -228,8 +228,6 @@ * @return */ public Order getOrderPrice(Integer type, Double distance, Integer waitTime, Order order, String city){ - distance = new BigDecimal(distance).setScale(0, BigDecimal.ROUND_UP).doubleValue(); - waitTime = new BigDecimal(waitTime).setScale(0, BigDecimal.ROUND_UP).intValue(); order = getOrderInitialPrice(order); SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 5)); if(null == systemConfig){ @@ -289,12 +287,14 @@ order.setStartDistance(distance);//起步里程 order.setStartPrice(num4);//起步价 }else{ - BigDecimal subtract = new BigDecimal(distance).subtract(new BigDecimal(num3)).setScale(2, BigDecimal.ROUND_HALF_EVEN);//超出起步里程 - BigDecimal divide = subtract.divide(new BigDecimal(num5), 2, BigDecimal.ROUND_HALF_EVEN); - BigDecimal multiply = divide.multiply(new BigDecimal(num6)); + Double distance1 = distance;//原始里程 order.setStartDistance(num3);//起步里程 order.setStartPrice(num4);//起步价 - order.setOverDriveDistance(subtract.doubleValue());//超出起步里程 + order.setOverDriveDistance(new BigDecimal(distance1 - num3).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());//超出起步里程 + + distance = new BigDecimal(distance).setScale(0, RoundingMode.UP).doubleValue();//向上取整 + BigDecimal divide = new BigDecimal(distance - num3).divide(new BigDecimal(num5), 2, BigDecimal.ROUND_HALF_EVEN); + BigDecimal multiply = divide.multiply(new BigDecimal(num6)); order.setOverDrivePrice(multiply.doubleValue());//超出起步里程费 //计算长途费(超出长途起始公里,费用开始按照长途规则计算。) @@ -309,10 +309,10 @@ } //计算长途里程超出的部分 if(distance.compareTo(num8) > 0){ - BigDecimal subtract1 = new BigDecimal(distance).subtract(new BigDecimal(num8)).setScale(2, BigDecimal.ROUND_HALF_EVEN); - BigDecimal divide1 = subtract1.divide(new BigDecimal(num10), 2, BigDecimal.ROUND_HALF_EVEN); + order.setOverLongDistance(new BigDecimal(distance1 - num8).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());//超出长途里程 + + BigDecimal divide1 = new BigDecimal(distance - num8).divide(new BigDecimal(num10), 2, BigDecimal.ROUND_HALF_EVEN); BigDecimal multiply1 = divide1.multiply(new BigDecimal(num11)); - order.setOverLongDistance(subtract1.doubleValue());//超出长途里程 order.setOverLongDistancePrice(multiply1.doubleValue());//超出长途里程费 } } @@ -333,10 +333,10 @@ //等待费用 if(waitTime.compareTo(num1 * 60) >= 0){ - order.setWaitTime(num1);//等待时长 + order.setWaitTime(num1 * 60);//等待时长 order.setWaitTimePrice(num2);//等待费用 - Integer w = waitTime - (num3 * 60); + Integer w = waitTime - (num1 * 60); BigDecimal multiply = new BigDecimal(w).divide(new BigDecimal(60), 0, RoundingMode.UP).multiply(new BigDecimal(num4)); order.setOutWaitTime(w);//等待时长超出分钟 order.setOutWaitTimePrice(multiply.doubleValue());//等待时长超出费用 @@ -858,6 +858,9 @@ } + + + /** * 获取订单详情 * @param orderId @@ -876,7 +879,7 @@ int m = Double.valueOf(wait / 60).intValue(); orderInfoWarpper.setWaitTime((m < 10 ? ("0" + m) : m) + ":" + (s < 10 ? ("0" + s) : s)); Double actualMileage = orderInfoWarpper.getActualMileage(); - orderInfoWarpper.setActualMileage(new BigDecimal(actualMileage).divide(new BigDecimal(1000), 2, RoundingMode.HALF_EVEN).doubleValue()); + orderInfoWarpper.setActualMileage(new BigDecimal(actualMileage / 1000).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); if(orderInfoWarpper.getTravelTime() == null){ orderInfoWarpper.setTravelTime(0); @@ -956,7 +959,7 @@ .where("'" + geocode.getCity() + "' like CONCAT('%', city, '%') and '" + geocode.getDistrict() + "' like CONCAT('%', district, '%') ")); city = null != weatherCity ? weatherCity.getId().toString() : ""; } - order = getOrderPrice(2, Double.valueOf(order.getActualMileage() / 1000), order.getWaitTime(), order, city); + order = getOrderPrice(2, Double.valueOf(order.getActualMileage()) / 1000, order.getWaitTime(), order, city); //修改司机状态和积分 Driver driver = driverService.selectById(order.getDriverId()); -- Gitblit v1.7.1