From 9ac52631cc628cd01d4c761ed9467963447d4f9a Mon Sep 17 00:00:00 2001 From: liujie <1793218484@qq.com> Date: 星期二, 22 七月 2025 18:27:52 +0800 Subject: [PATCH] 司机端新增注册地址 服务商 --- DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ReassignServiceImpl.java | 93 ++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 89 insertions(+), 4 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 1f518de..d2ac236 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 @@ -1,5 +1,6 @@ package com.stylefeng.guns.modular.system.service.impl; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.stylefeng.guns.core.util.ToolUtil; @@ -22,9 +23,11 @@ import com.stylefeng.guns.modular.system.util.*; import com.stylefeng.guns.modular.taxi.model.OrderTaxi; import com.stylefeng.guns.modular.taxi.service.IOrderTaxiService; +import com.stylefeng.guns.modular.taxi.service.impl.OrderTaxiServiceImpl; import org.apache.commons.lang.time.DateFormatUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Isolation; import org.springframework.transaction.annotation.Propagation; @@ -226,10 +229,13 @@ Map<String, String> map = new HashMap<>(); map.put("orderId", reassign.getOrderId().toString()); map.put("orderType", reassign.getOrderType().toString()); - List<Dispatch> dispatches = dispatchMapper.queryDispatchs(driver.getFranchiseeId() == null ? driver.getCompanyId() : driver.getFranchiseeId(), 1); - for(Dispatch dispatch : dispatches){ - jgPushUtil.push(2,"有新的改派订单需要处理,请及时处理!", "订单改派", map, "DISPATCH" + dispatch.getId()); - } +// List<Dispatch> dispatches = dispatchMapper.queryDispatchs(driver.getFranchiseeId() == null ? driver.getCompanyId() : driver.getFranchiseeId(), 1); +// for(Dispatch dispatch : dispatches){ +// jgPushUtil.push(2,"有新的改派订单需要处理,请及时处理!", "订单改派", map, "DISPATCH" + dispatch.getId()); +// } + + // qyt 改派直接推送 + pushOrder(); } @@ -493,6 +499,13 @@ } + + public static List<Integer> orderIds = new ArrayList<>(); + + + @Resource + private RedisTemplate<String, Object> redisTemplate; + /** * 改派支付完成后的操作 * @param id 改派单id @@ -548,6 +561,12 @@ } systemNoticeService.addSystemNotice(2, "您已使用" + (type == 1 ? "微信" : (type == 2?"支付宝":"云闪付")) + "成功支付改派申请费用!", reassigns.get(0).getOriginalDriverId(), 1); System.out.println("==============跨城修改改派通知状态完毕==================="); + + + // qyt 新增改派 重新推送 + + + }else{ System.err.println("预支付数据异常(orderId = " + id + ")"); } @@ -637,4 +656,70 @@ } + @Autowired + private ICompanyCityService companyCityService; + + @Autowired + private IPushOrderService pushOrderService; + + /** + * 推送订单给司机抢单 + * @param orderTaxi + * @throws Exception + */ + public void pushOrder(OrderTaxi orderTaxi, Integer type) throws Exception{ + new Thread(new Runnable() { + @Override + public void run() { + try { + orderIds.add(orderTaxi.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(orderTaxi.getStartLon()), String.valueOf(orderTaxi.getStartLat()));//获取起点所属分公司 + List<PushOrder> querys = pushOrderService.querys(null, 2, query.getId());//获取需要推送的次数 + for (int i = 1; i <= querys.size(); 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);//所有附近空闲司机 + 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(), orderTaxi.getId(), 2, orderTaxi.getState(), pushOrder.getPushTime()); + } + } + Thread.sleep(pushOrder.getPushTime() * 1000);//设置等待时间 + OrderTaxi orderTaxi1 = OrderTaxiServiceImpl.this.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); + orderIds.remove(orderTaxi.getId()); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + }).start(); + } } -- Gitblit v1.7.1