From b80d4a5cbac9ad9460717b6463819fa784e55ceb Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期日, 28 九月 2025 11:13:10 +0800
Subject: [PATCH] 跨城查询优化

---
 UserNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/LineSiteServiceImpl.java |   26 ++++++++++++++++++--------
 1 files changed, 18 insertions(+), 8 deletions(-)

diff --git a/UserNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/LineSiteServiceImpl.java b/UserNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/LineSiteServiceImpl.java
index 2261739..257c1ad 100644
--- a/UserNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/LineSiteServiceImpl.java
+++ b/UserNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/LineSiteServiceImpl.java
@@ -23,10 +23,12 @@
 import com.stylefeng.guns.modular.taxi.service.IOrderTaxiService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.stream.Collectors;
 
 
 @Service
@@ -75,6 +77,7 @@
         List<Map<String, Object>> list = new ArrayList<>();
         List<LineShift> lineShifts = lineShiftMapper.queryByLineId(lineId);
         List<Map<String, Object>> s = lineSiteMapper.queryDriver(lineId, sdf.parse(day), driverId);
+        s = s.stream().distinct().collect(Collectors.toList());
         Calendar calendar = Calendar.getInstance();
         calendar.setTime(sdf.parse(day));
         String vehicle = redisUtil.getValue("VEHICLE");
@@ -82,6 +85,10 @@
         if(ToolUtil.isNotEmpty(vehicle)){
             integers = JSON.parseArray(vehicle).toJavaList(Integer.class);
         }
+        List<OrderPrivateCar> orderPrivateCars = orderPrivateCarService.selectList(new EntityWrapper<OrderPrivateCar>()
+                .in("state", Arrays.asList(2, 3, 4, 5, 11))
+                .eq("DATE_FORMAT(travelTime, '%Y-%m-%d')", day));
+        List<OrderCrossCity> orderCrossCities = orderCrossCityService.queryListOrder(null, null, Arrays.asList(5), day);
         for(LineShift lineShift : lineShifts){
             boolean b = true;
             String[] split = lineShift.getEndTime().split(":");
@@ -104,18 +111,21 @@
                 if(bo){
                     continue;
                 }
-
-
-                int i = orderTaxiService.selectCount(new EntityWrapper<OrderTaxi>().eq("driverId", map.get("driverId")).in("state", Arrays.asList(2, 3, 4, 5, 11)).eq("DATE_FORMAT(travelTime, '%Y-%m-%d')", day));
+                long i = 0 ;
+                if(CollectionUtils.isEmpty(orderPrivateCars)){
+                    Integer driverId1 = Integer.valueOf(map.get("driverId").toString());
+                    i = orderPrivateCars.stream().filter(orderPrivateCar -> orderPrivateCar.getDriverId().equals(driverId1)).count();
+                }
                 if(i > 0){
                     continue;
                 }
-                i = orderPrivateCarService.selectCount(new EntityWrapper<OrderPrivateCar>().eq("driverId", map.get("driverId")).in("state", Arrays.asList(2, 3, 4, 5, 11)).eq("DATE_FORMAT(travelTime, '%Y-%m-%d')", day));
-                if(i > 0){
-                    continue;
+//                List<OrderCrossCity> driverId1 = orderCrossCityService.queryListOrder(Integer.valueOf(map.get("driverId").toString()), lineShift.getId(), Arrays.asList(5), day);
+                if (CollectionUtils.isEmpty(orderCrossCities)){
+                    Integer driverId1 = Integer.valueOf(map.get("driverId").toString());
+                    i = orderCrossCities.stream().filter(orderCrossCity -> orderCrossCity.getDriverId().equals(driverId1)
+                    && orderCrossCity.getLineShiftId().equals(lineShift.getId())).count();
                 }
-                List<OrderCrossCity> driverId1 = orderCrossCityService.queryListOrder(Integer.valueOf(map.get("driverId").toString()), lineShift.getId(), Arrays.asList(5), day);
-                if(driverId1.size() > 0){
+                if(i > 0){
                     continue;
                 }
                 if(Integer.valueOf(map.get("laveSeat").toString()) <= 0){

--
Gitblit v1.7.1