From 36695821ea10197d7758babc7bc2b5dfb66dd88e Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期六, 24 六月 2023 09:30:26 +0800
Subject: [PATCH] 修改bug

---
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java |   29 ++++++++------
 driver/guns-admin/src/test/java/com/supersavedriving/driver/GunsApplicationTest.java                          |   27 +------------
 zuul/src/main/java/com/sinata/zuul/util/echo/NettyServerController.java                                       |   44 +++++++++++-----------
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/OrderMapper.xml        |    2 
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IOrderService.java         |    2 
 zuul/src/main/java/com/sinata/zuul/util/applets/NettyWebSocketController.java                                 |    2 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemConfig/tSystemConfigPriceRules.html          |    4 -
 7 files changed, 45 insertions(+), 65 deletions(-)

diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/OrderMapper.xml b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/OrderMapper.xml
index 5fece1a..ed8b623 100644
--- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/OrderMapper.xml
+++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/OrderMapper.xml
@@ -111,7 +111,7 @@
         a.estimatedMileage,
         a.estimatedTime,
         a.startPrice,
-        a.waitTime,
+        a.waitTime + a.outWaitTime as waitTime,
         a.actualMileage,
         a.state,
         (UNIX_TIMESTAMP(now()) - UNIX_TIMESTAMP(a.startTime)) / 60 as travelTime
diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IOrderService.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IOrderService.java
index 201a261..99067f6 100644
--- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IOrderService.java
+++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IOrderService.java
@@ -38,7 +38,7 @@
      */
     ResultUtil driverAddOrder(Integer uid, AddOrderWarpper addOrderWarpper) throws Exception;
 
-
+    Order getOrderPrice(Integer type, Double distance, Integer waitTime, Order order, String city);
     /**
      * 获取大厅订单列表
      * @param uid
diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java
index d9ceaf8..a87c1fc 100644
--- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java
+++ b/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());
diff --git a/driver/guns-admin/src/test/java/com/supersavedriving/driver/GunsApplicationTest.java b/driver/guns-admin/src/test/java/com/supersavedriving/driver/GunsApplicationTest.java
index bc86d94..e6ff73c 100644
--- a/driver/guns-admin/src/test/java/com/supersavedriving/driver/GunsApplicationTest.java
+++ b/driver/guns-admin/src/test/java/com/supersavedriving/driver/GunsApplicationTest.java
@@ -6,6 +6,7 @@
 //import com.supersavedriving.driver.modular.system.model.Order;
 //import com.supersavedriving.driver.modular.system.model.WeatherCity;
 //import com.supersavedriving.driver.modular.system.service.*;
+//import com.supersavedriving.driver.modular.system.service.impl.OrderServiceImpl;
 //import com.supersavedriving.driver.modular.system.util.ResultUtil;
 //import com.supersavedriving.driver.modular.system.util.juhe.WeatherCityInfo;
 //import com.supersavedriving.driver.modular.system.util.juhe.WeatherUtil;
@@ -38,29 +39,7 @@
 //
 //    @Test
 //    public void test() throws Exception {
-//        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-//        Date date = sdf.parse("2023-06-15 01:00:00");
-//        Integer hour1 = 22;
-//        Integer hour2 = 6;
-//
-//        Calendar s = Calendar.getInstance();
-//        s.setTime(date);
-//        s.set(Calendar.HOUR_OF_DAY, hour1);
-//        s.set(Calendar.SECOND, 0);
-//
-//        Calendar e = Calendar.getInstance();
-//        e.setTime(date);
-//        e.set(Calendar.HOUR_OF_DAY, hour2);
-//        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);
-//            }
-//        }
-//        System.err.println(sdf.format(s.getTime()));
-//        System.err.println(sdf.format(e.getTime()));
+//        Order order = orderService.selectById(1066);
+//        orderService.getOrderPrice(2, Double.valueOf(order.getActualMileage()) / 1000, order.getWaitTime(), order, null);
 //    }
 //}
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemConfig/tSystemConfigPriceRules.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemConfig/tSystemConfigPriceRules.html
index 02703f1..ea216bb 100644
--- a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemConfig/tSystemConfigPriceRules.html
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemConfig/tSystemConfigPriceRules.html
@@ -75,9 +75,7 @@
                                 <input class="control-label" id="num12" name="num12" value="${ExtraCost.num1}" type="number"  min="0" style="height: 30px;width: 80px">
                                 <span class="control-label" >分钟,收取</span>
                                 <input class="control-label" id="num13" name="num13" value="${ExtraCost.num2}" type="number" min="0" style="height: 30px;width: 80px">
-                                <span class="control-label" >元,超出</span>
-                                <input class="control-label" id="num14" name="num14" value="${ExtraCost.num3}" type="number" min="0" style="height: 30px;width: 80px">
-                                <span class="control-label" >分钟,收取</span>
+                                <span class="control-label" >元,超出收取</span>
                                 <input class="control-label" id="num15" name="num15" value="${ExtraCost.num4}" type="number"  min="0" style="height: 30px;width: 80px">
                                 <span class="control-label" >元/分钟</span>
                             </div>
diff --git a/zuul/src/main/java/com/sinata/zuul/util/applets/NettyWebSocketController.java b/zuul/src/main/java/com/sinata/zuul/util/applets/NettyWebSocketController.java
index fbff56f..f214c7a 100644
--- a/zuul/src/main/java/com/sinata/zuul/util/applets/NettyWebSocketController.java
+++ b/zuul/src/main/java/com/sinata/zuul/util/applets/NettyWebSocketController.java
@@ -45,7 +45,7 @@
      * @param msg
      * @author TaoNingBo
      */
-    public void JudgeOperation(ChannelHandlerContext ctx, String msg) {
+    public synchronized void JudgeOperation(ChannelHandlerContext ctx, String msg) {
         try {
             // 验证即时通讯命令是否正确有效
             if (SinataUtil.isEmpty(msg)) {
diff --git a/zuul/src/main/java/com/sinata/zuul/util/echo/NettyServerController.java b/zuul/src/main/java/com/sinata/zuul/util/echo/NettyServerController.java
index b173e90..9ad48bd 100644
--- a/zuul/src/main/java/com/sinata/zuul/util/echo/NettyServerController.java
+++ b/zuul/src/main/java/com/sinata/zuul/util/echo/NettyServerController.java
@@ -57,7 +57,7 @@
 	 * @param msg
 	 * @author TaoNingBo
 	 */
-	public void JudgeOperation(ChannelHandlerContext ctx, Object msg) {
+	public synchronized void JudgeOperation(ChannelHandlerContext ctx, Object msg) {
         try {
         	// ByteBuf转String
         	ByteBuf byteBuf = (ByteBuf) msg;
@@ -112,12 +112,12 @@
 								if(b){
 									NettyChannelMap.remove_(data_);
 								}
-//								new Timer().schedule(new TimerTask() {
-//                                    @Override
-//                                    public void run() {
-//                                        NettyChannelMap.remove_(data_);
-//                                    }
-//                                }, 5000);
+								new Timer().schedule(new TimerTask() {
+                                    @Override
+                                    public void run() {
+                                        NettyChannelMap.remove_(data_);
+                                    }
+                                }, 5000);
                             }
                             NettyChannelMap.update_(token.substring(token.length() - 16), ctx);
                             NettyChannelMap.update("USER" + userId1, ctx);
@@ -131,21 +131,21 @@
                     }else{
                         //确保账号在单个设备上登录
 						if(StringUtil.isNotEmpty(token)){//APP端登录的操作
-//                            String token_ = redisUtil.getValue("DRIVER_" + userId1);//缓存中拿最新数据
-//                            if(StringUtil.isNotEmpty(token_) && !token.equals(token_)){//不在同一设备上登录,向当前设备发送数据
-//                                ChannelHandlerContext data_ = NettyChannelMap.getData_(token_.substring(token_.length() - 16));
-//                                if(null != data_){
-//									JSONObject msg_ = new JSONObject();
-//									msg_.put("code", 200);
-//									msg_.put("msg", "SUCCESS");
-//									msg_.put("method", "OFFLINE");
-//									msg_.put("data", new Object());
-//									boolean b = this.sendMsgToClient(data_, msg_.toJSONString());//给当前通道发送消息
-//									if(b){
-//										NettyChannelMap.remove_(data_);
-//									}
-//								}
-//                            }
+                            String token_ = redisUtil.getValue("DRIVER_" + userId1);//缓存中拿最新数据
+                            if(StringUtil.isNotEmpty(token_) && !token.equals(token_)){//不在同一设备上登录,向当前设备发送数据
+                                ChannelHandlerContext data_ = NettyChannelMap.getData_(token_.substring(token_.length() - 16));
+                                if(null != data_){
+									JSONObject msg_ = new JSONObject();
+									msg_.put("code", 200);
+									msg_.put("msg", "SUCCESS");
+									msg_.put("method", "OFFLINE");
+									msg_.put("data", new Object());
+									boolean b = this.sendMsgToClient(data_, msg_.toJSONString());//给当前通道发送消息
+									if(b){
+										NettyChannelMap.remove_(data_);
+									}
+								}
+                            }
                             NettyChannelMap.update("DRIVER" + userId1, ctx);
                             NettyChannelMap.update_(token.substring(token.length() - 16), ctx);
 							redisUtil.setStrValue("DRIVER_" + userId1, token);

--
Gitblit v1.7.1