From d09284975427910441eeaf59d34a4d50d2fd5fdc Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期二, 24 十二月 2024 19:02:29 +0800
Subject: [PATCH] 修改bug

---
 UserAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java |  100 +++++++++++++++++++++++---------------------------
 1 files changed, 46 insertions(+), 54 deletions(-)

diff --git a/UserAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java b/UserAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
index 6610910..b6c471e 100644
--- a/UserAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
+++ b/UserAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
@@ -338,7 +338,8 @@
 
         //推单操作
         if(orderPrivateCar.getState() == 1){
-            this.pushOrder(orderPrivateCar);
+            Integer id = orderPrivateCar.getId();
+            redisUtil.addListRight("push_order_ids", id.toString());
         }
 
         //添加消息
@@ -521,36 +522,8 @@
         if(orderPrivateCar.getState() != 1){
             return ResultUtil.error("订单已被司机接单,不能重复推送");
         }
-        //处理摆渡订单的继续推单操作
-        if(orderPrivateCar.getType() == 2){
-            OrderCrossCityServiceImpl.pushEndMap.put(orderPrivateCar.getCrossCityOrderId(), false);//还原标识数据
-            List<OrderPrivateCar> list = this.selectList(new EntityWrapper<OrderPrivateCar>().eq("type", 2).eq("crossCityOrderId", orderPrivateCar.getCrossCityOrderId()).eq("place", orderPrivateCar.getPlace()));
-            List<Map<String, Integer>> orders = new ArrayList<>();
-            for(OrderPrivateCar orderPrivateCar1 : list){
-                if(orderPrivateCar1.getState() != 1){
-                    return ResultUtil.error("订单已被司机接单,推单取消");
-                }
-                Map<String, Integer> map = new HashMap<>();
-                map.put("orderType", 1);
-                map.put("orderId", orderPrivateCar1.getId());
-                orders.add(map);
-            }
-//            List<OrderTaxi> list1 = orderTaxiService.selectList(new EntityWrapper<OrderTaxi>().eq("type", 2).eq("crossCityOrderId", orderPrivateCar.getCrossCityOrderId()).eq("place", orderPrivateCar.getPlace()));
-//            for(OrderTaxi orderTaxi : list1){
-//                if(orderTaxi.getState() != 1){
-//                    return ResultUtil.error("订单已被司机接单,推单取消");
-//                }
-//                Map<String, Integer> map = new HashMap<>();
-//                map.put("orderType", 2);
-//                map.put("orderId", orderTaxi.getId());
-//                orders.add(map);
-//            }
-            //开始重新推单
-            orderCrossCityService.pushOrder(orders);
-
-        }else{
-            this.pushOrder(orderPrivateCar);
-        }
+        //继续将订单添加到推送列表中
+        redisUtil.addListLeft("push_order_ids", id.toString());
         return ResultUtil.success();
     }
 
@@ -852,11 +825,23 @@
     public boolean pushOrder1(Integer id){
         try {
             OrderPrivateCar orderPrivateCar = this.selectById(id);
+            if(1 != orderPrivateCar.getState()){
+                return true;
+            }
+            long time = System.currentTimeMillis() - orderPrivateCar.getInsertTime().getTime();
             Company query = companyCityService.query(String.valueOf(orderPrivateCar.getStartLon()), String.valueOf(orderPrivateCar.getStartLat()));//获取起点所属分公司
+            List<PushOrder> querys = pushOrderService.querys(null, 1, query.getId());//获取需要推送的次数
+            long pushTime = 0;
+            if(null != querys && querys.size() > 0){
+                pushTime = querys.stream().mapToInt(PushOrder::getPushTime).sum() * 1000;
+            }
+            if(time >= pushTime){
+                pushUtil.pushEndPush(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1);
+                return true;
+            }
+            
             List<Driver> drivers = driverMapper.queryIdleDriver_(1, orderPrivateCar.getServerCarModelId(), query.getId());
-            System.err.println("当前获取的司机:"+drivers);
-        
-            List<Driver> list = new ArrayList<>();
+            System.err.println("当前获取的司机:"+ JSON.toJSONString(drivers));
         
             //找出距离最近且评分最高的司机
             Double dis = 100000D;
@@ -868,6 +853,7 @@
                     continue;
                 }
                 String value = redisUtil.getValue("DRIVER" + driver.getId());
+                System.err.println("------" + value);
                 if(null != value){
                     Map<String, Double> distance1 = geodesyUtil.getDistance(orderPrivateCar.getStartLon() + "," + orderPrivateCar.getStartLat(), value);
                     double d = Double.valueOf(distance1.get("WGS84")).doubleValue();
@@ -883,6 +869,7 @@
                     }
                 }
             }
+            System.err.println("------" + JSON.toJSONString(driver1));
             if(null != driver1){
                 orderPrivateCar.setDriverId(driver1.getId());
                 orderPrivateCar.setCarId(driver1.getCarId());
@@ -1394,28 +1381,33 @@
     @Override
     public OrderServerWarpper queryOrderServer(Integer orderId, Integer uid) throws Exception {
         OrderPrivateCar orderPrivateCar = this.selectById(orderId);
-        //计算预计距离和剩余时间
-        String value = redisUtil.getValue("DRIVER" + String.valueOf(orderPrivateCar.getDriverId()));
-        if(null == value || "".equals(value)){
-            System.err.println("司机没有上传位置信息");
-
-            //调用获取轨迹中的数据
-            List<Map<String, Object>> list = orderPositionService.queryTrack(orderId, 2);
-            if(list.size() > 0){
-                Map<String, Object> map = list.get(list.size() - 1);
-                value = map.get("lon") + "," + map.get("lat");
-            }
-
-        }
-        Map<String, String> distance = gdMapElectricFenceUtil.getDistance(value, orderPrivateCar.getStartLon() + "," + orderPrivateCar.getStartLat(), 1);
+        String value = null;
         String d = "0";
         String t = "0";
-        if(null == distance){
-            System.err.println("查询距离出错了");
-        }else{
-            d = new BigDecimal(distance.get("distance")).divide(new BigDecimal(1000), new MathContext(2, RoundingMode.HALF_EVEN)).setScale(2, BigDecimal.ROUND_HALF_EVEN).toString();
-            t = new BigDecimal(distance.get("duration")).divide(new BigDecimal(60), new MathContext(2, RoundingMode.HALF_EVEN)).setScale(2, BigDecimal.ROUND_HALF_EVEN).intValue() + "";
+        if(null != orderPrivateCar.getDriverId()){
+            //计算预计距离和剩余时间
+            value = redisUtil.getValue("DRIVER" + orderPrivateCar.getDriverId());
+            if(null == value || "".equals(value)){
+                System.err.println("司机没有上传位置信息");
+        
+                //调用获取轨迹中的数据
+                List<Map<String, Object>> list = orderPositionService.queryTrack(orderId, 2);
+                if(list.size() > 0){
+                    Map<String, Object> map = list.get(list.size() - 1);
+                    value = map.get("lon") + "," + map.get("lat");
+                }
+        
+            }
+            Map<String, String> distance = gdMapElectricFenceUtil.getDistance(value, orderPrivateCar.getStartLon() + "," + orderPrivateCar.getStartLat(), 1);
+    
+            if(null == distance){
+                System.err.println("查询距离出错了");
+            }else{
+                d = new BigDecimal(distance.get("distance")).divide(new BigDecimal(1000), new MathContext(2, RoundingMode.HALF_EVEN)).setScale(2, BigDecimal.ROUND_HALF_EVEN).toString();
+                t = new BigDecimal(distance.get("duration")).divide(new BigDecimal(60), new MathContext(2, RoundingMode.HALF_EVEN)).setScale(2, BigDecimal.ROUND_HALF_EVEN).intValue() + "";
+            }
         }
+        
         OrderServerWarpper orderServerWarpper = new OrderServerWarpper();
         orderServerWarpper.setOrderId(orderPrivateCar.getId());
         orderServerWarpper.setOrderType(1);
@@ -1432,7 +1424,7 @@
             orderServerWarpper.setLaveTime("0");
         }
         if(orderPrivateCar.getState() == 5 || orderPrivateCar.getState() == 6){//服务中
-            distance = gdMapElectricFenceUtil.getDistance(value, orderPrivateCar.getEndLon() + "," + orderPrivateCar.getEndLat(), 1);
+            Map<String, String> distance = gdMapElectricFenceUtil.getDistance(value, orderPrivateCar.getEndLon() + "," + orderPrivateCar.getEndLat(), 1);
             if(null == distance){
                 System.err.println("查询距离出错了");
             }else{

--
Gitblit v1.7.1