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/server/impl/OrderPrivateCarServiceImpl.java | 14 +++++++++++++- 1 files changed, 13 insertions(+), 1 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..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){ -- Gitblit v1.7.1