From 01fb3942136929b10d1fd704330f9d400b38bfb0 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期四, 23 十月 2025 18:09:19 +0800
Subject: [PATCH] 修改bug
---
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ServerCarModelServiceImpl.java | 75 +++++++++++++++++++++++++++----------
1 files changed, 54 insertions(+), 21 deletions(-)
diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ServerCarModelServiceImpl.java b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ServerCarModelServiceImpl.java
index cf75e07..a42183a 100644
--- a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ServerCarModelServiceImpl.java
+++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ServerCarModelServiceImpl.java
@@ -22,6 +22,7 @@
import javax.annotation.Resource;
import java.math.BigDecimal;
+import java.math.RoundingMode;
import java.util.*;
@@ -234,7 +235,6 @@
String num6 = jsonObject.getString("num6");
Double num7 = jsonObject.getDouble("num7");
Double num8 = jsonObject.getDouble("num8");
- Double num9 = jsonObject.getDouble("num9");
String[] split = num6.split(" - ");
Integer time1 = Integer.valueOf(split[0].replace(":", ""));
@@ -279,7 +279,34 @@
BigDecimal multiply = BigDecimal.ZERO;
BigDecimal yt = BigDecimal.ZERO;
if (d > num8) {
- multiply = new BigDecimal(d).subtract(new BigDecimal(num8)).multiply(new BigDecimal(num9));
+
+ if(null != mileageList){
+ List<MileageObject> list = new ArrayList<>();
+ for (int i = 0; i < mileageList.size(); i++) {
+ MileageObject mileageObject = mileageList.getObject(i, MileageObject.class);
+ list.add(mileageObject);
+ }
+ //根据配置的里程倒序排序
+ list.sort(new Comparator<MileageObject>() {
+ @Override
+ public int compare(MileageObject o1, MileageObject o2) {
+ return o1.getMileage().compareTo(o2.getMileage()) * -1;
+ }
+ });
+ //计算每个阶段的增加费用
+ Double last = new BigDecimal(d).setScale(0, RoundingMode.DOWN).doubleValue();
+ for (int i = 0; i < list.size(); i++) {
+ Double mileage = list.get(i).getMileage();
+ Double price = list.get(i).getPrice();
+ if(d > mileage){
+ if(last <= num2){
+ break;
+ }
+ multiply = multiply.add((new BigDecimal(last).subtract(new BigDecimal(mileage))).multiply(new BigDecimal(price)));
+ last = mileage;
+ }
+ }
+ }
if (d > num4) {
yt = new BigDecimal(d).subtract(new BigDecimal(num4)).multiply(new BigDecimal(num5));
}
@@ -294,28 +321,34 @@
BigDecimal multiply = BigDecimal.ZERO;
BigDecimal yt = BigDecimal.ZERO;
if (d > num2) {
- List<MileageObject> list = new ArrayList<>();
- for (int i = 0; i < mileageList.size(); i++) {
- MileageObject mileageObject = mileageList.getObject(i, MileageObject.class);
- list.add(mileageObject);
- }
- //根据配置的里程倒序排序
- list.sort(new Comparator<MileageObject>() {
- @Override
- public int compare(MileageObject o1, MileageObject o2) {
- return o1.getMileage().compareTo(o2.getMileage()) * -1;
+ if(null != mileageList){
+ List<MileageObject> list = new ArrayList<>();
+ for (int i = 0; i < mileageList.size(); i++) {
+ MileageObject mileageObject = mileageList.getObject(i, MileageObject.class);
+ list.add(mileageObject);
}
- });
- //计算每个阶段的增加费用
- Double last = d;
- for (int i = 0; i < list.size(); i++) {
- Double mileage = list.get(i).getMileage();
- Double price = list.get(i).getPrice();
- if(d > mileage){
- multiply = new BigDecimal(last).subtract(new BigDecimal(mileage)).multiply(new BigDecimal(price));
- last = mileage;
+ //根据配置的里程倒序排序
+ list.sort(new Comparator<MileageObject>() {
+ @Override
+ public int compare(MileageObject o1, MileageObject o2) {
+ return o1.getMileage().compareTo(o2.getMileage()) * -1;
+ }
+ });
+ //计算每个阶段的增加费用
+ Double last = new BigDecimal(d).setScale(0, RoundingMode.DOWN).doubleValue();
+ for (int i = 0; i < list.size(); i++) {
+ Double mileage = list.get(i).getMileage();
+ Double price = list.get(i).getPrice();
+ if(d > mileage){
+ if(last <= num2){
+ break;
+ }
+ multiply = multiply.add((new BigDecimal(last).subtract(new BigDecimal(mileage))).multiply(new BigDecimal(price)));
+ last = mileage;
+ }
}
}
+
if (d > num4) {
yt = new BigDecimal(d).subtract(new BigDecimal(num4)).multiply(new BigDecimal(num5));
}
--
Gitblit v1.7.1