liujie
昨天 0dcaf9f049b67b35481d8e83f3c7e672f2cda513
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ReassignServiceImpl.java
@@ -2,6 +2,7 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.stylefeng.guns.core.util.ToolUtil;
import com.stylefeng.guns.modular.account.service.ITEnterpriseWithdrawalService;
@@ -126,38 +127,42 @@
//        if(null != query){
//            return ResultUtil.error("有未完成支付的改派申请");
//        }
        int types=1;
        Reassign query = reassignMapper.query(uid, null, reassign.getOrderId(), reassign.getOrderType(), 1);
        if (null != query) {
            types=2;
//            return ResultUtil.error("不能重复提交申请");
            reassignMapper.deleteById(query.getId());
        }
        query = reassignMapper.query(uid, null, reassign.getOrderId(), reassign.getOrderType(), 2);
        if (null != query) {
            return ResultUtil.error("您提交的申请正在处理中");
        }
        if (null != query) {
            types=2;
//            return ResultUtil.error("您提交的申请正在处理中");
        }
        //获取支付金额
        Double aDouble = orderService.queryReassignMoney(reassign.getOrderId(), reassign.getOrderType());
        reassign.setMoney(aDouble);
        reassign.setOriginalDriverId(uid);
        reassign.setOriginalCarId(driver.getCarId());
        reassign.setInsertTime(new Date());
        this.insert(reassign);
        systemNoticeService.addSystemNotice(2, "您的改派申请已成功提交,我们会尽快为你处理!", uid, 1);
        if(types==1){
            this.insert(reassign);
        }
//        systemNoticeService.addSystemNotice(2, "您的改派申请已成功提交,我们会尽快为你处理!", uid, 1);
        //开始支付
        if (null != reassign.getPayType()) {
            if (reassign.getPayType() == 1) {//微信支付
                reassign.setState(1);
                resultUtil = payMoneyUtil.weixinpay("改派订单", "", reassign.getId() + "_" + reassign.getOrderType() + "_" + UUIDUtil.getRandomCode(5), aDouble.toString(), "/base/wxReassign", "APP", "");
                paymentRecordService.saveData(1, uid, 2, reassign.getOrderId(), reassign.getOrderType(), 1, aDouble, "", 1);//添加预支付数据
                resultUtil = payMoneyUtil.weixinpay("改派订单", "", reassign.getId() + "_" + reassign.getOrderType() + "_" + UUIDUtil.getRandomCode(5), "0", "/base/wxReassign", "APP", "");
                paymentRecordService.saveData(1, uid, 2, reassign.getOrderId(), reassign.getOrderType(), 1, 0.0, "", 1);//添加预支付数据
            }
            if (reassign.getPayType() == 2) {//支付宝
                reassign.setState(1);
                resultUtil = payMoneyUtil.alipay("改派订单", "改派订单", "", reassign.getId() + "_" + reassign.getOrderType() + "_" + UUIDUtil.getRandomCode(5), aDouble.toString(), "/base/aliReassign");
                paymentRecordService.saveData(1, uid, 2, reassign.getOrderId(), reassign.getOrderType(), 2, aDouble, "", 1);//添加预支付数据
                resultUtil = payMoneyUtil.alipay("改派订单", "改派订单", "", reassign.getId() + "_" + reassign.getOrderType() + "_" + UUIDUtil.getRandomCode(5), "0", "/base/aliReassign");
                paymentRecordService.saveData(1, uid, 2, reassign.getOrderId(), reassign.getOrderType(), 2, 0.0, "", 1);//添加预支付数据
            }
            if (reassign.getPayType() == 3) {//余额
                reassign.setState(2);
@@ -207,7 +212,7 @@
                        //添加已收入明细
//                        incomeService.saveData(1, orderPrivateCar.getCompanyId(), 4, orderPrivateCar.getId(), 1, reassign.getMoney());
                        // qyt 改派直接推送
                        pushOrderPrivate(orderPrivateCar, uid);
                        pushOrderPrivate(orderPrivateCar, uid,types);
                        break;
                    case 2:
                        OrderTaxi orderTaxi = orderTaxiService.selectById(reassign.getOrderId());
@@ -233,7 +238,7 @@
//                        incomeService.saveData(1, orderTaxi.getCompanyId(), 4, orderTaxi.getId(), 2, reassign.getMoney());
                        // qyt 改派直接推送
                        pushOrderTaxi(orderTaxi, uid);
                        pushOrderTaxi(orderTaxi, uid,types);
                        break;
                    case 4:
                        OrderLogistics orderLogistics = orderLogisticsService.selectById(reassign.getOrderId());
@@ -267,14 +272,13 @@
//                    jgPushUtil.push(2,"有新的改派订单需要处理,请及时处理!", "订单改派", map, "DISPATCH" + dispatch.getId());
//                }
            }
            if (reassign.getPayType() == 4) {
                // TODO 司机云闪付 改派调起云闪付
                Double payMoney = reassign.getMoney();
                paymentRecordService.saveData(1, uid, 2, reassign.getOrderId(), reassign.getOrderType(), 4, aDouble, "", 1);//添加预支付数据
                resultUtil = placeAnOrder(new BigDecimal(payMoney), 4, 1, reassign.getId());
            }
//            if (reassign.getPayType() == 4) {
//                // TODO 司机云闪付 改派调起云闪付
//                Double payMoney = reassign.getMoney();
//                paymentRecordService.saveData(1, uid, 2, reassign.getOrderId(), reassign.getOrderType(), 4, aDouble, "", 1);//添加预支付数据
//                resultUtil = placeAnOrder(new BigDecimal(payMoney), 4, 1, reassign.getId());
//            }
        }
        return resultUtil;
    }
@@ -284,8 +288,12 @@
        Driver driver = driverService.selectById(uid);
        //修改改派通知状态
        switch (reassign.getOrderType()) {
            case 1:
                OrderPrivateCar orderPrivateCar = orderPrivateCarService.selectById(reassign.getOrderId());
                if(orderPrivateCar.getState() == 10){
                    return ResultUtil.error("订单已取消");
                }
                orderPrivateCar.setState(orderPrivateCar.getOldState());
                orderPrivateCar.setReassignNotice(0);
                orderPrivateCarService.updateById(orderPrivateCar);
@@ -305,6 +313,9 @@
                break;
            case 2:
                OrderTaxi orderTaxi = orderTaxiService.selectById(reassign.getOrderId());
                if(orderTaxi.getState() == 10){
                    return ResultUtil.error("订单已取消");
                }
                orderTaxi.setState(orderTaxi.getOldState());
                orderTaxi.setReassignNotice(0);
                orderTaxiService.updateById(orderTaxi);
@@ -322,6 +333,7 @@
                OrderUtil.modifyTravelItinerary(request1);
                break;
        }
        reassignMapper.delete(new EntityWrapper<Reassign>().eq("orderId",reassign.getOrderId()).eq("orderType",reassign.getOrderType()));
        return ResultUtil.success();
    }
@@ -746,7 +758,7 @@
     * @param orderTaxi
     * @throws Exception
     */
    public void pushOrderTaxi(OrderTaxi orderTaxi, Integer uid) throws Exception {
    public void pushOrderTaxi(OrderTaxi orderTaxi, Integer uid,int type) throws Exception {
        new Thread(new Runnable() {
            @Override
            public void run() {
@@ -759,7 +771,8 @@
                    }
                    OpenCity openCity = openCityService.openCity1(orderTaxi.getStartLon().toString(), orderTaxi.getStartLat().toString());
                    List<PushOrder> querys = pushOrderService.querys(null, 2, openCity.getId());//获取需要推送的次数
                    for (int i = 1; i <= 6; i++) {
                    int size=18;
                    for (int i = 1; i <= size; i++) {
                        int finalI = i;
                        PushOrder pushOrder = querys.stream().filter(s -> s.getType() == (finalI <= 3 ? finalI : 3)).findFirst().orElse(null);
                        System.out.println("pushOrder:" + pushOrder);
@@ -790,10 +803,13 @@
                        Thread.sleep(pushOrder.getPushTime() * 1000);//设置等待时间
                        Integer state = orderTaxi1.getState();
                        if (state != 1 || state!= 11) {
                            orderIds.remove(orderTaxi.getId());
                            break;
                        }
                        if (i == 6 && (state == 1 || state==11)) {
                        if (i == 18 && (state == 1 || state==11)) {
                            System.err.println("结束改派退单-------------修改订单为取消状态");
                            pushUtil.pushEndPush(1, orderTaxi.getUserId(), orderTaxi.getId(), 2);
                            pushUtil.pushOrderState(2, orderTaxi.getDriverId(), orderTaxi.getId(), 2, 10);
                            orderTaxi1.setState(10);
                            orderTaxiService.updateById(orderTaxi1);
                            orderIds.remove(orderTaxi.getId());
@@ -812,7 +828,7 @@
     * @param orderPrivateCar
     * @throws Exception
     */
    public void pushOrderPrivate(OrderPrivateCar orderPrivateCar, Integer uid) throws Exception {
    public void pushOrderPrivate(OrderPrivateCar orderPrivateCar, Integer uid,int type) throws Exception {
        new Thread(new Runnable() {
            @Override
            public void run() {
@@ -827,7 +843,8 @@
                    }
                    OpenCity openCity = openCityService.openCity1(orderPrivateCar.getStartLon().toString(), orderPrivateCar.getStartLat().toString());
                    List<PushOrder> querys = pushOrderService.querys(null, 1, openCity.getId());//获取需要推送的次数
                    for (int i = 1; i <= 6; i++) {
                    int size=18;
                    for (int i = 1; i <= size; i++) {
                        OrderPrivateCar orderPrivateCar = orderPrivateCarService.selectById(id);
                        if (null == orderPrivateCar || (orderPrivateCar.getState() > 1 && orderPrivateCar.getState() != 11)) {
                            break;
@@ -835,49 +852,47 @@
                        int finalI = i;
                        PushOrder pushOrder = querys.stream().filter(s -> s.getType() == (finalI <= 3 ? finalI : 3)).findFirst().orElse(null);
                        System.out.println("pushOrder:" + pushOrder);
                        int i2 = pushOrder.getPushTime() / 10;
                        if (i2 == 0) {
                            i2 = 1;
                        if (orderPrivateCar.getState() > 1 && orderPrivateCar.getState() != 11) {
                            break;
                        }
                        for (int i1 = 0; i1 < i2; i1++) {
                            if (orderPrivateCar.getState() > 1 && orderPrivateCar.getState() != 11) {
                                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;
                                        }
                        //获取空闲司机
                        List<Driver> list = driverService.queryIdleDriver(orderType, orderPrivateCar.getServerCarModelId(), orderPrivateCar.getStartLon(), orderPrivateCar.getStartLat(), pushOrder.getPushDistance(), null);//所有附近空闲司机
                        list = list.stream().filter(e -> !e.getId().equals(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 && state != 11) {
                                orderIds.remove(orderPrivateCar.getId());
                                return;
                            }
                            if (i == 6 && (state == 1 || state==11)) {
                                pushUtil.pushEndPush(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1);
                                orderPrivateCar.setState(10);
                                orderPrivateCarService.updateById(orderPrivateCar);
                                orderIds.remove(orderPrivateCar.getId());
                                if (bo) {
                                    continue;
                                }
                                pushUtil.pushOrderState(2, driver.getId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), pushOrder.getPushTime());
                            }
                        }
                        Thread.sleep(pushOrder.getPushTime() * 1000);//设置等待时间
                        Integer state = orderPrivateCar.getState();
                        if (state > 1 && state != 11) {
                            orderIds.remove(orderPrivateCar.getId());
                            return;
                        }
                        if (i == 18 && (state == 1 || state==11)) {
                            System.err.println("结束改派退单-------------修改订单为取消状态");
                            pushUtil.pushEndPush(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1);
                            pushUtil.pushOrderState(2, orderPrivateCar.getDriverId(), orderPrivateCar.getId(), 1, 10);
                            orderPrivateCar.setState(10);
                            orderPrivateCarService.updateById(orderPrivateCar);
                            orderIds.remove(orderPrivateCar.getId());
                        }
                    }
                } catch (Exception e) {
                    e.printStackTrace();