From caadb52788bb1ad4ed04a0bdb0ec2fa5fe3df03b Mon Sep 17 00:00:00 2001
From: zhibing.pu <393733352@qq.com>
Date: 星期二, 13 八月 2024 17:50:23 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/dao/mapping/OrderPrivateCarMapper.xml       |   89 +++++++++++++++++++++++++++++
 UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/dao/OrderPrivateCarMapper.java              |    9 +++
 UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java |   14 ++++
 UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/DateUtil.java                                |   29 +++++++++
 4 files changed, 140 insertions(+), 1 deletions(-)

diff --git a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/dao/OrderPrivateCarMapper.java b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/dao/OrderPrivateCarMapper.java
index e416902..f552338 100644
--- a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/dao/OrderPrivateCarMapper.java
+++ b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/dao/OrderPrivateCarMapper.java
@@ -87,4 +87,13 @@
 
 
     List<OrderPrivateCar> queryByDriver(@Param("driverId") Integer driverId, @Param("state") Integer...state);
+
+    /**
+     * 批量查询司机的预约单
+     * @param driverIds
+     * @param orderType
+     * @param state
+     * @return
+     */
+    List<OrderPrivateCar> queryOrderByState(@Param("driverIds")List<Integer> driverIds, Integer orderType, @Param("state") Integer...state);
 }
diff --git a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/dao/mapping/OrderPrivateCarMapper.xml b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/dao/mapping/OrderPrivateCarMapper.xml
index 107906d..5813605 100644
--- a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/dao/mapping/OrderPrivateCarMapper.xml
+++ b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/dao/mapping/OrderPrivateCarMapper.xml
@@ -548,4 +548,93 @@
             #{item}
         </foreach>
     </select>
+    <select id="queryOrderByState" resultType="com.stylefeng.guns.modular.specialTrain.model.OrderPrivateCar">
+        select
+        id as id,
+        `type` as `type`,
+        userId as userId,
+        serverCarModelId as serverCarModelId,
+        driverId as driverId,
+        carId as carId,
+        orderNum as orderNum,
+        placementLon as placementLon,
+        placementLat as placementLat,
+        placementAddress as placementAddress,
+        startLon as startLon,
+        startLat as startLat,
+        startAddress as startAddress,
+        endLon as endLon,
+        endLat as endLat,
+        endAddress as endAddress,
+        boardingLon as boardingLon,
+        boardingLat as boardingLat,
+        boardingAddress as boardingAddress,
+        boardingTime as boardingTime,
+        getoffLon as getoffLon,
+        getoffLat as getoffLat,
+        getoffAddress as getoffAddress,
+        getoffTime as getoffTime,
+        mileage as mileage,
+        payManner as payManner,
+        payType as payType,
+        orderMoney as orderMoney,
+        startMileage as startMileage,
+        startMoney as startMoney,
+        mileageKilometers as mileageKilometers,
+        mileageMoney as mileageMoney,
+        duration as duration,
+        durationMoney as durationMoney,
+        wait as wait,
+        waitMoney as waitMoney,
+        longDistance as longDistance,
+        longDistanceMoney as longDistanceMoney,
+        parkMoney as parkMoney,
+        roadTollMoney as roadTollMoney,
+        redPacketMoney as redPacketMoney,
+        couponMoney as couponMoney,
+        redPacketId as redPacketId,
+        couponId as couponId,
+        discount as discount,
+        discountMoney as discountMoney,
+        activityId as activityId,
+        companyId as companyId,
+        payMoney as payMoney,
+        substitute as substitute,
+        passengers as passengers,
+        passengersPhone as passengersPhone,
+        state as state,
+        insertTime as insertTime,
+        travelTime as travelTime,
+        snatchOrderTime as snatchOrderTime,
+        setOutTime as setOutTime,
+        arriveTime as arriveTime,
+        startServiceTime as startServiceTime,
+        endServiceTime as endServiceTime,
+        orderType as orderType,
+        orderSource as orderSource,
+        invoiceId as invoiceId,
+        isReassign as isReassign,
+        reassignNotice as reassignNotice,
+        trackId as trackId,
+        isDelete as isDelete,
+        oldState as oldState,
+        telX as telX,
+        bindId as bindId
+        from t_order_private_car where isDelete = 1
+        <if test="null != driverIds and driverIds.size()>0">
+            and driverId in
+            <foreach collection="driverIds" item="driverId" index="index" open="(" separator="," close=")">
+                #{driverId}
+            </foreach>
+        </if>
+        <if test="null != orderType">
+            and orderType = #{orderType}
+        </if>
+        <if test="null != state">
+            and state in
+            <foreach collection="state" item="item" index="index" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+    </select>
 </mapper>
\ No newline at end of file
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..66d8037 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
@@ -701,7 +703,7 @@
                             }
                         }
                     }).start();
-                    
+
                 }else{
                     resultUtil = ResultUtil.error("支付失败", "");
                 }
@@ -795,10 +797,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, 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){
diff --git a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/DateUtil.java b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/DateUtil.java
index 9519160..faca0c1 100644
--- a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/DateUtil.java
+++ b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/DateUtil.java
@@ -5,6 +5,10 @@
 
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
+import java.time.Instant;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.ZonedDateTime;
 import java.util.*;
 
 /**
@@ -130,4 +134,29 @@
         map.put("endTime", end);
         return map;
     }
+
+    /**
+     * Date转为LocalDateTime
+     *
+     * @param date 日期
+     * @return LocalDateTime
+     */
+    public static LocalDateTime dateToLocalDateTime(Date date) {
+        Instant instant = date.toInstant();
+        ZoneId zoneId = ZoneId.systemDefault();
+        return instant.atZone(zoneId).toLocalDateTime();
+    }
+
+    /**
+     * LocalDateTime转Date
+     *
+     * @param dateTime 日期
+     * @return Date
+     */
+    public static Date localDateTimeToDate(LocalDateTime dateTime) {
+        ZoneId zoneId = ZoneId.systemDefault();
+        ZonedDateTime zdt = dateTime.atZone(zoneId);
+        return Date.from(zdt.toInstant());
+    }
+
 }

--
Gitblit v1.7.1