puzhibing
2023-06-24 36695821ea10197d7758babc7bc2b5dfb66dd88e
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());