puzhibing
2023-05-25 380c0e958fbc3f2b42a3e38ae5dc9af3254b8f5c
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderServiceImpl.java
@@ -483,19 +483,18 @@
        JSONArray chargeStandard = jsonObject.getJSONArray("ChargeStandard");
        JSONObject extraCost = jsonObject.getJSONObject("ExtraCost");
        Date date = new Date();
        for (int i = 0; i < chargeStandard.size(); i++) {
        boolean b = true;
        for (int i = 1; i < chargeStandard.size(); i++) {//各种时间段
            JSONObject jsonObject1 = chargeStandard.getJSONObject(i);
            String num1 = jsonObject1.getString("num1");
            String num2 = jsonObject1.getString("num2");
            Double num3 = jsonObject1.getDouble("num3");//起步里程
            Double num4 = jsonObject1.getDouble("num4");//起步价格
            Double num5 = jsonObject1.getDouble("num5");//超过公里
            Double num6 = jsonObject1.getDouble("num6");//超过num3每num5公里收取num6
            Double num7 = jsonObject1.getDouble("num7");//长途起始公里
            Double num8 = jsonObject1.getDouble("num8");//长途结束公里
            Double num9 = jsonObject1.getDouble("num9");//长途费
            Double num10 = jsonObject1.getDouble("num10");//超出长途里程每num10公里
            Double num11 = jsonObject1.getDouble("num11");//超过num8每num10公里收取num11
            JSONArray num3 = jsonObject1.getJSONArray("num3");//起步里程
            Double num4 = jsonObject1.getDouble("num4");//长途里程
            Double num5 = jsonObject1.getDouble("num5");//长途里程
            Double num6 = jsonObject1.getDouble("num6");//长途费
            Double num7 = jsonObject1.getDouble("num7");//超出长途里程每num10公里
            Double num8 = jsonObject1.getDouble("num8");//超过num8每num10公里收取num11
            String[] split = num1.split(":");
            Calendar s = Calendar.getInstance();
@@ -512,33 +511,81 @@
            e.set(Calendar.SECOND, 0);
            if(date.getTime() >= s.getTimeInMillis() && date.getTime() < e.getTimeInMillis()){
                if(num3.compareTo(distance) >= 0){//起步里程内
                b = false;
                Double dd = 0d;
                for (int j = 0; j < num3.size(); j++) {
                    JSONObject jsonObject2 = num3.getJSONObject(j);
                    Double num1_1 = jsonObject2.getDouble("num1");
                    Double num2_1 = jsonObject2.getDouble("num2");
                    Double num3_1 = jsonObject2.getDouble("num3");
                    if(num1_1.compareTo(distance) <= 0 && num2_1.compareTo(distance) > 0){
                    order.setStartDistance(distance);//起步里程
                    order.setStartPrice(new BigDecimal(num4));//起步价
                }else{
                    BigDecimal subtract = new BigDecimal(distance).subtract(new BigDecimal(num3));//超出起步里程
                    BigDecimal divide = subtract.divide(new BigDecimal(num5), new MathContext(2, RoundingMode.HALF_EVEN));
                    BigDecimal multiply = divide.multiply(new BigDecimal(num6));
                    order.setStartDistance(num3);//起步里程
                    order.setStartPrice(new BigDecimal(num4));//起步价
                    order.setOverDriveDistance(subtract.doubleValue());//超出起步里程
                    order.setOverDrivePrice(multiply);//超出起步里程费
                        order.setStartPrice(new BigDecimal(num3_1));//起步价
                    }
                    if(j == num3.size() - 1 && order.getStartPrice().doubleValue() == 0){
                        order.setStartDistance(num2_1);//起步里程
                        order.setStartPrice(new BigDecimal(num3_1));//起步价
                        dd = distance - num2_1;
                    }
                }
                if(dd != 0){
                    //计算长途费
                    if(distance.compareTo(num7) > 0){
                        order.setLongDistance(num7 + "-" + num8);//长途里程
                        order.setLongDistancePrice(new BigDecimal(num9));//长途费
                    if(distance.compareTo(num4) > 0){
                        order.setLongDistance(num4 + "-" + num5);//长途里程
                        order.setLongDistancePrice(new BigDecimal(num6));//长途费
                    }
                    //计算长途里程超出的部分
                    if(distance.compareTo(num8) > 0){
                        BigDecimal subtract1 = new BigDecimal(distance).subtract(new BigDecimal(num8));
                        BigDecimal divide1 = subtract1.divide(new BigDecimal(num10), new MathContext(2, RoundingMode.HALF_EVEN));
                        BigDecimal multiply1 = divide1.multiply(new BigDecimal(num11));
                    if(distance.compareTo(num5) > 0){
                        BigDecimal subtract1 = new BigDecimal(distance).subtract(new BigDecimal(num5));
                        BigDecimal divide1 = subtract1.divide(new BigDecimal(num7), new MathContext(2, RoundingMode.HALF_EVEN));
                        BigDecimal multiply1 = divide1.multiply(new BigDecimal(num8));
                        order.setOverLongDistance(subtract1.doubleValue());//超出长途里程
                        order.setOverLongDistancePrice(multiply1);//超出长途里程费
                    }
                }
                break;
            }
        }
        if(b){//默认配置
            JSONObject jsonObject1 = chargeStandard.getJSONObject(0);
            JSONArray num3 = jsonObject1.getJSONArray("num3");//起步里程
            Double num4 = jsonObject1.getDouble("num4");//长途里程
            Double num5 = jsonObject1.getDouble("num5");//长途里程
            Double num6 = jsonObject1.getDouble("num6");//长途费
            Double num7 = jsonObject1.getDouble("num7");//超出长途里程每num10公里
            Double num8 = jsonObject1.getDouble("num8");//超过num8每num10公里收取num11
            Double dd = 0d;
            for (int j = 0; j < num3.size(); j++) {
                JSONObject jsonObject2 = num3.getJSONObject(j);
                Double num1_1 = jsonObject2.getDouble("num1");
                Double num2_1 = jsonObject2.getDouble("num2");
                Double num3_1 = jsonObject2.getDouble("num3");
                if(num1_1.compareTo(distance) <= 0 && num2_1.compareTo(distance) > 0){
                    order.setStartDistance(distance);//起步里程
                    order.setStartPrice(new BigDecimal(num3_1));//起步价
                }
                if(j == num3.size() - 1 && order.getStartPrice().doubleValue() == 0){
                    order.setStartDistance(num2_1);//起步里程
                    order.setStartPrice(new BigDecimal(num3_1));//起步价
                    dd = distance - num2_1;
                }
            }
            if(dd != 0){
                //计算长途费
                if(distance.compareTo(num4) > 0){
                    order.setLongDistance(num4 + "-" + num5);//长途里程
                    order.setLongDistancePrice(new BigDecimal(num6));//长途费
                }
                //计算长途里程超出的部分
                if(distance.compareTo(num5) > 0){
                    BigDecimal subtract1 = new BigDecimal(distance).subtract(new BigDecimal(num5));
                    BigDecimal divide1 = subtract1.divide(new BigDecimal(num7), new MathContext(2, RoundingMode.HALF_EVEN));
                    BigDecimal multiply1 = divide1.multiply(new BigDecimal(num8));
                    order.setOverLongDistance(subtract1.doubleValue());//超出长途里程
                    order.setOverLongDistancePrice(multiply1);//超出长途里程费
                }
            }
        }
@@ -595,11 +642,6 @@
            }
        }
        //计算折扣
        if(null != order.getUserId()){
        }
        //计算总金额
        BigDecimal bigDecimal = order.getStartPrice().add(order.getOverDrivePrice()).add(order.getLongDistancePrice()).add(order.getOverLongDistancePrice())