From 2476fa8ffb259ef8837b66ebcebc82c887315189 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期三, 27 十一月 2024 14:39:57 +0800
Subject: [PATCH] 预约单处理

---
 UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java |   18 ++++++++++++++++--
 1 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
index ce4a33f..062c112 100644
--- a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
+++ b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
@@ -46,7 +46,9 @@
 import java.math.MathContext;
 import java.math.RoundingMode;
 import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
 import java.util.*;
+import java.util.stream.Collectors;
 
 
 @Service
@@ -426,7 +428,9 @@
 //                        orderPrivateCar.setBindId(map.get("bindId"));
 //                    }
 
-                    dr.setState(3);
+                    if(orderPrivateCar.getOrderType() != 2){
+                        dr.setState(3);
+                    }
                     driverService.updateById(dr);
                     this.updateById(orderPrivateCar);
 
@@ -701,7 +705,7 @@
                             }
                         }
                     }).start();
-                    
+
                 }else{
                     resultUtil = ResultUtil.error("支付失败", "");
                 }
@@ -795,10 +799,20 @@
                         //获取空闲司机
                         List<Driver> list = driverService.queryIdleDriver(1, orderPrivateCar.getServerCarModelId(), orderPrivateCar.getStartLon(), orderPrivateCar.getStartLat(), pushOrder.getPushDistance(), null);//所有附近空闲司机
                         if(list.size() > 0){
+                            // 查询预约单
+                            List<Integer> driverIds = list.stream().map(Driver::getId).collect(Collectors.toList());
+                            List<OrderPrivateCar> orderPrivateCars = orderPrivateCarMapper.queryOrderByState(driverIds, 2, 1, 2, 3, 4, 5, 6,  11);
                             double driverProportion = pushOrder.getDriverProportion() / 100;//推送占比计算成小数
                             int lastIndex = Double.valueOf(list.size() * driverProportion).intValue();//计算占比转成整数(下标截取)
                             list = list.subList(0, lastIndex);//获取空闲司机中占比数据
                             for(Driver driver : list){//开始进行推送
+                                // 判断该司机是否有30分钟内预约单
+                                long count = orderPrivateCars.stream().filter(orderPrivateCar1 -> driver.getId().equals(orderPrivateCar1.getDriverId())
+                                        && DateUtil.dateToLocalDateTime(orderPrivateCar1.getTravelTime()).minusMinutes(30).isBefore(LocalDateTime.now())
+                                        && DateUtil.dateToLocalDateTime(orderPrivateCar1.getTravelTime()).isAfter(LocalDateTime.now())).count();
+                                if(count > 0){
+                                    continue;
+                                }
                                 boolean bo = false;
                                 for(Integer integer : integers){
                                     if(integer.compareTo(driver.getId()) == 0){

--
Gitblit v1.7.1