Pu Zhibing
2025-06-25 70211b41954df4ac1232f48420b89c13fb5fb451
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java
@@ -108,28 +108,28 @@
    @Autowired
    private IUserRedPacketRecordService userRedPacketRecordService;
    @Autowired
    private GDMapGeocodingUtil gdMapGeocodingUtil;
    @Autowired
    private ICompanyCityService companyCityService;
    @Autowired
    private PushUtil pushUtil;
    
    @Autowired
    private RedisTemplate redisTemplate;
    @Resource
    private RedisTemplate<String, Object> redisTemplate;
    @Autowired
    private RestTemplate internalRestTemplate;
    @Autowired
    private IUserActivityRedenvelopeService userActivityRedenvelopeService;
    @Autowired
    private IDriverOrdersService driverOrdersService;
    @Autowired
    private IIncomeService incomeService;
@@ -2085,66 +2085,49 @@
                    orderIds.add(orderTaxi.getId());//添加记录,防止调用接口重复提醒无人接单
                    String vehicle = (String) redisTemplate.opsForValue().get("VEHICLE");
                    List<Integer> integers = new ArrayList<>();
                    if(ToolUtil.isNotEmpty(vehicle)){
                    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());//获取需要推送的次数
                    boolean b = false;
                    for(int i = 1; i <= querys.size(); i++){
                        if(b){
                    for (int i = 1; i <= querys.size(); i++) {
                        if (b) {
                            break;
                        }
                        PushOrder pushOrder = pushOrderService.querys(i, 2, query.getId()).get(0);
                        System.out.println("pushOrder:"+pushOrder);
                        int i2 = pushOrder.getPushTime() / 10;
                        if(i2==0){
                            i2=1;
                        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());
                            }
                        }
                        System.out.println(i2);
                        for (int i1 = 0; i1 < i2 ; i1++) {
                            Integer state = 0;
                            //批量订单
                            if(type == 3){
                                OrderPrivateCar orderPrivateCar = orderPrivateCarService.selectById(orderTaxi.getId());
                                if(null == orderPrivateCar || orderPrivateCar.getState() != 1){
                                    b = true;
                                    break;
                                }
                            }else{
                                state = orderTaxiMapper.selectById(orderTaxi.getId()).getState();
                                if(state != 1){
                                    b = true;
                                    break;
                                }
                            }
                            //获取空闲司机
                            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( 10000);//设置等待时间
                            if(i == querys.size() && state == 1){
                                pushUtil.pushEndPush(1, orderTaxi.getUserId(), orderTaxi.getId(), 2);
                                orderIds.remove(orderTaxi.getId());
                            }
                        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) {