From 0bc5e07b24c08c41f14b066597d693026ec5fb89 Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期六, 24 六月 2023 09:28:40 +0800 Subject: [PATCH] 修改bug --- user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java | 22 +++++++++++----------- 1 files changed, 11 insertions(+), 11 deletions(-) diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java index 79c6575..a3c0648 100644 --- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java +++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java @@ -202,8 +202,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){ @@ -263,12 +261,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());//超出起步里程费 //计算长途费(超出长途起始公里,费用开始按照长途规则计算。) @@ -283,10 +283,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());//超出长途里程费 } } @@ -310,7 +310,7 @@ 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());//等待时长超出费用 @@ -869,7 +869,7 @@ OrderPriceInfoWarpper orderPriceWarpper = new OrderPriceInfoWarpper(); orderPriceWarpper.setStartTime(order.getArrivalTimeAtTheAppointmentPoint().getTime()); orderPriceWarpper.setEndTime(order.getGetoffTime().getTime()); - orderPriceWarpper.setActualMileage(Double.valueOf(order.getActualMileage() / 1000)); + orderPriceWarpper.setActualMileage(new BigDecimal(order.getActualMileage() / 1000).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); if(null != order.getStartPrice() && 0 != order.getStartPrice()){ orderPriceWarpper.setStartPrice(order.getStartPrice()); orderPriceWarpper.setStartDistance(order.getStartDistance()); -- Gitblit v1.7.1