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/model/OrderCrossCity.java | 10 +++++ UserNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/IOrderCrossCityService.java | 3 + UserNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/LineSiteServiceImpl.java | 26 +++++++++---- UserNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java | 4 ++ UserNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/OrderCrossCityMapper.java | 3 + UserNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/OrderCrossCityMapper.xml | 22 ++++++++++ 6 files changed, 59 insertions(+), 9 deletions(-) diff --git a/UserNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/OrderCrossCityMapper.java b/UserNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/OrderCrossCityMapper.java index 9dbc933..e7b5743 100644 --- a/UserNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/OrderCrossCityMapper.java +++ b/UserNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/OrderCrossCityMapper.java @@ -91,4 +91,7 @@ * @return */ List<Map<String, Object>> queryRedEnvelope(@Param("uid") Integer uid); + + int queryCountOrder(@Param("driverId") Integer driverId, @Param("lineShiftId") Integer lineShiftId, + @Param("state") Integer state, @Param("day") String day); } diff --git a/UserNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/OrderCrossCityMapper.xml b/UserNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/OrderCrossCityMapper.xml index ca04758..d3831a8 100644 --- a/UserNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/OrderCrossCityMapper.xml +++ b/UserNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/OrderCrossCityMapper.xml @@ -571,7 +571,8 @@ a.oldState as oldState, a.telX as telX, a.bindId as bindId, - a.remark as remark + a.remark as remark, + b.lineShiftId as lineShiftId from t_order_cross_city a left join t_line_shift_driver b on (a.lineShiftDriverId = b.id) where a.isDelete = 1 @@ -591,4 +592,23 @@ and DATE_FORMAT(a.travelTime, '%Y-%m-%d') = #{day} </if> </select> + <select id="queryCountOrder" resultType="java.lang.Integer"> + select + count(1) + from t_order_cross_city a + left join t_line_shift_driver b on (a.lineShiftDriverId = b.id) + where a.isDelete = 1 + <if test="null != driverId"> + and a.driverId = #{driverId} + </if> + <if test="null != lineShiftId"> + and b.lineShiftId = #{lineShiftId} + </if> + <if test="null != state"> + and a.state = #{state} + </if> + <if test="null != day and '' != day"> + and DATE_FORMAT(a.travelTime, '%Y-%m-%d') = #{day} + </if> + </select> </mapper> \ No newline at end of file diff --git a/UserNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/model/OrderCrossCity.java b/UserNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/model/OrderCrossCity.java index 25c3159..a25d9d1 100644 --- a/UserNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/model/OrderCrossCity.java +++ b/UserNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/model/OrderCrossCity.java @@ -328,6 +328,16 @@ */ @TableField("bindId") private String bindId; + @TableField(exist = false) + private Integer lineShiftId; + + public Integer getLineShiftId() { + return lineShiftId; + } + + public void setLineShiftId(Integer lineShiftId) { + this.lineShiftId = lineShiftId; + } public Integer getId() { return id; diff --git a/UserNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/IOrderCrossCityService.java b/UserNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/IOrderCrossCityService.java index cc106a2..460b041 100644 --- a/UserNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/IOrderCrossCityService.java +++ b/UserNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/IOrderCrossCityService.java @@ -258,4 +258,7 @@ List<OrderCrossCity> queryListOrder(Integer driverId, Integer lineShiftId, List<Integer> state, String day) throws Exception; + + int queryCountOrder(Integer driverId, Integer id, Integer state, String day); + } 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){ diff --git a/UserNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java b/UserNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java index 0b10a29..6f0f249 100644 --- a/UserNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java +++ b/UserNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java @@ -1835,6 +1835,10 @@ public List<OrderCrossCity> queryListOrder(Integer driverId, Integer lineShiftId, List<Integer> state, String day) throws Exception { return orderCrossCityMapper.queryListOrder(driverId, lineShiftId, state, day); } + @Override + public int queryCountOrder(Integer driverId, Integer lineShiftId, Integer state, String day){ + return orderCrossCityMapper.queryCountOrder(driverId, lineShiftId, state, day); + } /** * 获取订单编号 -- Gitblit v1.7.1