From ee974ae0aff4f71fce7dde80172159d991754623 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期二, 13 六月 2023 16:52:03 +0800
Subject: [PATCH] 修改bug

---
 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java |   33 ++++++++++++++++++++++++++-------
 1 files changed, 26 insertions(+), 7 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 14fdd15..6132161 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
@@ -187,6 +187,8 @@
 
 
 
+
+
     /**
      * 获取订单价格
      * @param type          计算类型(1=预估价,2=订单费)
@@ -197,6 +199,7 @@
      * @return
      */
     public Order getOrderPrice(Integer type, Double distance, Integer waitTime, Order order, String city){
+        distance = new BigDecimal(distance).setScale(0, BigDecimal.ROUND_UP).doubleValue();
         order = getOrderInitialPrice(order);
         SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 5));
         if(null == systemConfig){
@@ -212,7 +215,7 @@
         JSONArray chargeStandard = jsonObject.getJSONArray("ChargeStandard");
         JSONObject extraCost = jsonObject.getJSONObject("ExtraCost");
         Date date = new Date();
-        for (int i = 0; i < chargeStandard.size(); i++) {
+        for (int i = 0; i < chargeStandard.size(); i++) {//计算各个时段
             JSONObject jsonObject1 = chargeStandard.getJSONObject(i);
             String num1 = jsonObject1.getString("num1");
             String num2 = jsonObject1.getString("num2");
@@ -227,18 +230,29 @@
             Double num11 = jsonObject1.getDouble("num11");//超过num8每num10公里收取num11
 
             String[] split = num1.split(":");
+            Integer hour1 = Integer.valueOf(split[0]);
+            String[] split1 = num2.split(":");
+            Integer hour2 = Integer.valueOf(split1[0]);
+
             Calendar s = Calendar.getInstance();
             s.setTime(date);
-            s.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split[0]));
+            s.set(Calendar.HOUR_OF_DAY, hour1);
             s.set(Calendar.MINUTE, Integer.valueOf(split[1]));
             s.set(Calendar.SECOND, 0);
 
-            split = num2.split(":");
             Calendar e = Calendar.getInstance();
             e.setTime(date);
-            e.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split[0]));
-            e.set(Calendar.MINUTE, Integer.valueOf(split[1]));
+            e.set(Calendar.HOUR_OF_DAY, hour2);
+            e.set(Calendar.MINUTE, Integer.valueOf(split1[1]));
             e.set(Calendar.SECOND, 0);
+
+            if(hour1 > hour2){
+                if(s.getTimeInMillis() > date.getTime()){
+                    s.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) - 1);
+                }else{
+                    e.set(Calendar.DAY_OF_YEAR, e.get(Calendar.DAY_OF_YEAR) + 1);
+                }
+            }
 
             if(date.getTime() >= s.getTimeInMillis() && date.getTime() < e.getTimeInMillis()){
                 if(num3.compareTo(distance) >= 0){//起步里程内
@@ -253,8 +267,13 @@
                     order.setOverDriveDistance(subtract.doubleValue());//超出起步里程
                     order.setOverDrivePrice(multiply.doubleValue());//超出起步里程费
 
-                    //计算长途费
+                    //计算长途费(超出长途起始公里,费用开始按照长途规则计算。)
                     if(distance.compareTo(num7) > 0){
+                        order.setStartDistance(0D);//起步里程
+                        order.setStartPrice(0D);//起步价
+                        order.setOverDriveDistance(0D);//超出起步里程
+                        order.setOverDrivePrice(0D);//超出起步里程费
+
                         order.setLongDistance(num7 + "-" + num8);//长途里程
                         order.setLongDistancePrice(num9);//长途费
                     }
@@ -354,7 +373,7 @@
         order.setLongDistancePrice(0D);//长途里程费
         order.setOverLongDistance(0D);//超出长途里程
         order.setOverLongDistancePrice(0d);//超出长途里程费
-        order.setWaitTime(0);//等待时长
+//        order.setWaitTime(0);//等待时长
         order.setWaitTimePrice(0D);//等待费
         order.setOutWaitTime(0);//超出等待时长
         order.setOutWaitTimePrice(0D);//超出等待时长费

--
Gitblit v1.7.1