From a8895e0ce4d03c9a50ad0196bb4ddc6dd642cd34 Mon Sep 17 00:00:00 2001 From: liujie <1793218484@qq.com> Date: 星期四, 24 七月 2025 09:05:35 +0800 Subject: [PATCH] 司机端改派 --- DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ReassignServiceImpl.java | 101 ++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 96 insertions(+), 5 deletions(-) diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ReassignServiceImpl.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ReassignServiceImpl.java index d2ac236..ee18e5c 100644 --- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ReassignServiceImpl.java +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ReassignServiceImpl.java @@ -36,6 +36,7 @@ import javax.annotation.Resource; import java.math.BigDecimal; import java.util.*; +import java.util.stream.Collectors; @Service @@ -191,6 +192,8 @@ //添加已收入明细 incomeService.saveData(1, orderPrivateCar.getCompanyId(), 4, orderPrivateCar.getId(), 1, reassign.getMoney()); + // qyt 改派直接推送 + pushOrderPrivate(orderPrivateCar,uid); break; case 2: OrderTaxi orderTaxi = orderTaxiService.selectById(reassign.getOrderId()); @@ -201,6 +204,9 @@ //添加已收入明细 incomeService.saveData(1, orderTaxi.getCompanyId(), 4, orderTaxi.getId(), 2, reassign.getMoney()); + + // qyt 改派直接推送 + pushOrderTaxi(orderTaxi,uid); break; case 4: OrderLogistics orderLogistics = orderLogisticsService.selectById(reassign.getOrderId()); @@ -234,8 +240,7 @@ // jgPushUtil.push(2,"有新的改派订单需要处理,请及时处理!", "订单改派", map, "DISPATCH" + dispatch.getId()); // } - // qyt 改派直接推送 - pushOrder(); + } @@ -662,12 +667,15 @@ @Autowired private IPushOrderService pushOrderService; + @Autowired + private PushUtil pushUtil; + /** * 推送订单给司机抢单 * @param orderTaxi * @throws Exception */ - public void pushOrder(OrderTaxi orderTaxi, Integer type) throws Exception{ + public void pushOrderTaxi(OrderTaxi orderTaxi, Integer uid) throws Exception{ new Thread(new Runnable() { @Override public void run() { @@ -680,11 +688,12 @@ } Company query = companyCityService.query(String.valueOf(orderTaxi.getStartLon()), String.valueOf(orderTaxi.getStartLat()));//获取起点所属分公司 List<PushOrder> querys = pushOrderService.querys(null, 2, query.getId());//获取需要推送的次数 - for (int i = 1; i <= querys.size(); i++) { + for (int i = 1; i <=6; i++) { PushOrder pushOrder = pushOrderService.querys(i, 2, query.getId()).get(0); System.out.println("pushOrder:" + pushOrder); //获取空闲司机 List<Driver> list = driverService.queryIdleDriver(2, orderTaxi.getStartLon(), orderTaxi.getStartLat(), pushOrder.getPushDistance(), null);//所有附近空闲司机 + list = list.stream().filter(e->e.getId()!=uid).collect(Collectors.toList()); if (list.size() > 0) { double driverProportion = pushOrder.getDriverProportion() / 100;//推送占比计算成小数 int lastIndex = Double.valueOf(list.size() * driverProportion).intValue();//计算占比转成整数(下标截取) @@ -706,13 +715,15 @@ } } Thread.sleep(pushOrder.getPushTime() * 1000);//设置等待时间 - OrderTaxi orderTaxi1 = OrderTaxiServiceImpl.this.selectById(orderTaxi.getId()); + OrderTaxi orderTaxi1 = orderTaxiService.selectById(orderTaxi.getId()); Integer state = orderTaxi1.getState(); if (state != 1) { break; } if (i == querys.size() && state == 1) { pushUtil.pushEndPush(1, orderTaxi.getUserId(), orderTaxi.getId(), 2); + orderTaxi1.setState(10); + orderTaxiService.updateById(orderTaxi1); orderIds.remove(orderTaxi.getId()); } } @@ -722,4 +733,84 @@ } }).start(); } + + + /** + * 推送抢单数据 + * @param orderPrivateCar + * @throws Exception + */ + public void pushOrderPrivate(OrderPrivateCar orderPrivateCar,Integer uid) throws Exception{ + new Thread(new Runnable() { + @Override + public void run() { + try { + Integer id = orderPrivateCar.getId(); + Integer orderType = orderPrivateCar.getRideType()==1?1:orderPrivateCar.getRideType()==2?9:8; + orderIds.add(orderPrivateCar.getId());//添加记录,防止调用接口重复提醒无人接单 + String vehicle = (String) redisTemplate.opsForValue().get("VEHICLE"); + List<Integer> integers = new ArrayList<>(); + if(ToolUtil.isNotEmpty(vehicle)){ + integers = JSON.parseArray(vehicle).toJavaList(Integer.class); + } + Company query = companyCityService.query(String.valueOf(orderPrivateCar.getStartLon()), String.valueOf(orderPrivateCar.getStartLat()));//获取起点所属分公司 + List<PushOrder> querys = pushOrderService.querys(null, 1, query.getId());//获取需要推送的次数 + for(int i = 1; i <= 6; i++){ + OrderPrivateCar orderPrivateCar = orderPrivateCarService.selectById(id); + if (null == orderPrivateCar || orderPrivateCar.getState() > 1) { + break; + } + PushOrder pushOrder = pushOrderService.querys(i, 1, query.getId()).get(0); + System.out.println("pushOrder:"+pushOrder); + int i2 = pushOrder.getPushTime() / 10; + if(i2==0){ + i2=1; + } + for (int i1 = 0; i1 < i2 ; i1++) { + if (orderPrivateCar.getState() > 1) { + break; + } + //获取空闲司机 + List<Driver> list = driverService.queryIdleDriver(orderType, orderPrivateCar.getServerCarModelId(), orderPrivateCar.getStartLon(), orderPrivateCar.getStartLat(), pushOrder.getPushDistance(), null);//所有附近空闲司机 + list = list.stream().filter(e->e.getId()!=uid).collect(Collectors.toList()); + if (list.size() > 0) { + double driverProportion = pushOrder.getDriverProportion() / 100;//推送占比计算成小数 + int lastIndex = Double.valueOf(list.size() * driverProportion).intValue();//计算占比转成整数(下标截取) + lastIndex = lastIndex == 0 ? list.size() : lastIndex; + list = list.subList(0, lastIndex);//获取空闲司机中占比数据 + for (Driver driver : list) {//开始进行推送 + boolean bo = false; + for (Integer integer : integers) { + if (integer.compareTo(driver.getId()) == 0) { + bo = true; + break; + } + } + if (bo) { + continue; + } + pushUtil.pushOrderState(2, driver.getId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), pushOrder.getPushTime()); + } + } + Thread.sleep(10000);//设置等待时间 + Integer state = orderPrivateCar.getState(); + if (state > 1) { + orderIds.remove(orderPrivateCar.getId()); + return; + } + if (i == querys.size() && state == 1) { + pushUtil.pushEndPush(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1); + orderPrivateCar.setState(10); + orderPrivateCarService.updateById(orderPrivateCar); + orderIds.remove(orderPrivateCar.getId()); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + }).start(); + } + } -- Gitblit v1.7.1