puzhibing
2023-08-30 34eb869e7350173ff036881fc776bc27d5be6d7a
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java
@@ -117,6 +117,9 @@
    @Autowired
    private ICompanyFundFlowService companyFundFlowService;
    @Autowired
    private IBranchOfficeService branchOfficeService;
    @Value("${callbackPath}")
    private String callbackPath;//支付回调网关地址
@@ -161,14 +164,17 @@
            return ResultUtil.error("该用户还有未完成的订单", "");
        }
        Driver driver = driverService.selectById(uid);
        DriverWork driverWork = driverWorkService.selectOne(new EntityWrapper<DriverWork>().eq("driverId", uid).eq("status", 1));
        Order order1 = this.selectOne(new EntityWrapper<Order>().eq("driverId", uid).eq("status", 1).in("state", Arrays.asList(102, 103, 104, 105, 201, 401)));
//        Order order1 = this.selectOne(new EntityWrapper<Order>().eq("driverId", uid).eq("status", 1).in("state", Arrays.asList(102, 103, 104, 105, 201, 401)));
        Order order = new Order();
        if(driverWork != null && null == order1){
        if(null != driverWork && driver.getServerStatus().equals(1)){
            order.setState(102);
            order.setDriverId(uid);
            driver.setServerStatus(2);
            order.setOrderTakingTime(new Date());
            driver.setServerStatus(2);
        }
        order.setCode(UUIDUtil.getTimeStr() + UUIDUtil.getNumberRandom(5));
        order.setSource(2);
@@ -176,7 +182,6 @@
        if(null != appUser){
            order.setUserId(appUser.getId());
        }
        String startAddress = addOrderWarpper.getStartAddress();
        startAddress = startAddress.replaceAll("& #40;", "(");
@@ -210,16 +215,31 @@
            order.setEstimatedTime(Integer.valueOf(distance.get("duration")) / 60);
        }
        String city = "";
        District geocode = MapUtil.geocode(order.getStartLng(), order.getStartLat());
        Integer branchOfficeId = null;
        District geocode = MapUtil.geocode(order.getEndLng(), order.getEndLat());
        if(null != geocode){
            WeatherCity weatherCity = weatherCityService.selectOne(new EntityWrapper<WeatherCity>()
                    .where("'" + geocode.getCity() + "' like CONCAT('%', city, '%') and '" + geocode.getDistrict() + "' like CONCAT('%', district, '%') "));
            city = null != weatherCity ? weatherCity.getId().toString() : "";
            String districtCode = geocode.getDistrictCode();
            BranchOffice branchOffice = branchOfficeService.selectOne(new EntityWrapper<BranchOffice>().eq("status", 1).eq("districtCode", districtCode));
            if(null == branchOffice){
                String cityCode = geocode.getCityCode();
                branchOffice = branchOfficeService.selectOne(new EntityWrapper<BranchOffice>().eq("status", 1).eq("cityCode", cityCode));
                if(null == branchOffice){
                    String provinceCode = geocode.getProvinceCode();
                    branchOffice = branchOfficeService.selectOne(new EntityWrapper<BranchOffice>().eq("status", 1).eq("provinceCode", provinceCode));
                }
            }
            if(null == branchOffice){
                return ResultUtil.error("起点暂无企业服务");
            }
            branchOfficeId = branchOffice.getId();
        }
        order.setCreateTime(new Date());
        order = getOrderPrice(1, d, 0, order, city);
        order.setState(null == order.getDriverId() ? 101 : 102);
        order = getOrderPrice(1, d, 0, order, city, branchOfficeId);
        if(!driver.getServerStatus().equals(1)) {
            order.setState(null == order.getDriverId() ? 101 : 102);
        }
        order.setStatus(1);
        this.insert(order);
        driverService.updateById(driver);
        //推送状态
@@ -251,9 +271,9 @@
     * @param city          查询天气的城市
     * @return
     */
    public Order getOrderPrice(Integer type, Double distance, Integer waitTime, Order order, String city) {
    public Order getOrderPrice(Integer type, Double distance, Integer waitTime, Order order, String city, Integer branchOfficeId) {
        order = getOrderInitialPrice(order);
        SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 5));
        SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 5).eq("companyId", branchOfficeId));
        if (null == systemConfig) {
            if (type == 1) {//预估金额
                order.setEstimatedPrice(0D);
@@ -354,6 +374,7 @@
        Double num7 = extraCost.getDouble("num7");//恶劣天气超出公里
        Double num8 = extraCost.getDouble("num8");//恶劣天气超出公里单价 X/公里
        Double num9 = extraCost.getDouble("num9");//恶劣天气最高收取金额
        Double num10 = extraCost.getDouble("num10");//节假日
        //等待费用
        if (waitTime.compareTo(num1 * 60) >= 0) {
@@ -370,35 +391,35 @@
        }
        //恶劣天气
        systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 8));
        systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 8).eq("companyId", branchOfficeId));
        if (null != systemConfig) {
            JSONObject jsonObject1 = JSON.parseObject(systemConfig.getContent());
            Integer num11 = jsonObject1.getInteger("num1");//开启恶劣天气计价
            if (1 == num11) {
                boolean badWeather = WeatherUtil.isBadWeather(city);
                if (badWeather) {
                    order.setBadWeatherDistance(num5);//恶劣天气公里
                    order.setBadWeatherPrice(num6);//恶劣天气费
                    if (distance.compareTo(num7) > 0) {
                        BigDecimal subtract = new BigDecimal(distance).subtract(new BigDecimal(num7));
                        BigDecimal multiply = subtract.multiply(new BigDecimal(num8));
                        order.setOverBadWeatherDistance(subtract.doubleValue());//恶劣天气超出公里
                        order.setOverBadWeatherPrice(multiply.doubleValue());//恶劣天气超出公里费
                    }
                order.setBadWeatherDistance(num5);//恶劣天气公里
                order.setBadWeatherPrice(num6);//恶劣天气费
                if (distance.compareTo(num7) > 0) {
                    BigDecimal subtract = new BigDecimal(distance).subtract(new BigDecimal(num7));
                    BigDecimal multiply = subtract.multiply(new BigDecimal(num8));
                    order.setOverBadWeatherDistance(subtract.doubleValue());//恶劣天气超出公里
                    order.setOverBadWeatherPrice(multiply.doubleValue());//恶劣天气超出公里费
                }
                    double add = new BigDecimal(order.getOverBadWeatherPrice()).add(new BigDecimal(order.getBadWeatherPrice())).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue();
                    if (num9.compareTo(add) < 0) {//超出最高金额(重新调整金额)
                        if (num9.compareTo(num6) < 0) {//如果恶劣天气费大于最高金额
                            order.setBadWeatherPrice(num9);//恶劣天气费
                            order.setOverBadWeatherPrice(0D);//恶劣天气超出公里费
                        } else {
                            BigDecimal subtract = new BigDecimal(num9).subtract(new BigDecimal(add));
                            order.setOverBadWeatherPrice(subtract.doubleValue());//恶劣天气超出公里费
                        }
                double add = new BigDecimal(order.getOverBadWeatherPrice()).add(new BigDecimal(order.getBadWeatherPrice())).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue();
                if (num9.compareTo(add) < 0) {//超出最高金额(重新调整金额)
                    if (num9.compareTo(num6) < 0) {//如果恶劣天气费大于最高金额
                        order.setBadWeatherPrice(num9);//恶劣天气费
                        order.setOverBadWeatherPrice(0D);//恶劣天气超出公里费
                    } else {
                        BigDecimal subtract = new BigDecimal(num9).subtract(new BigDecimal(add));
                        order.setOverBadWeatherPrice(subtract.doubleValue());//恶劣天气超出公里费
                    }
                }
            }
            Integer num33 = jsonObject1.getInteger("num3");//节假日
            if (1 == num33) {
                order.setHolidayPrice(num10);
            }
            //计算折扣
            if (null != order.getUserId()) {
@@ -407,7 +428,7 @@
            //计算总金额
            BigDecimal bigDecimal = new BigDecimal(order.getStartPrice() + order.getOverDrivePrice() + order.getLongDistancePrice() + order.getOverLongDistancePrice() +
                    order.getWaitTimePrice() + order.getOutWaitTimePrice() + order.getBadWeatherPrice() + order.getOverBadWeatherPrice() - order.getDiscountAmount()).setScale(2, BigDecimal.ROUND_HALF_EVEN);
                    order.getWaitTimePrice() + order.getOutWaitTimePrice() + order.getBadWeatherPrice() + order.getOverBadWeatherPrice() + order.getHolidayPrice() - order.getDiscountAmount()).setScale(2, BigDecimal.ROUND_HALF_EVEN);
            if (type == 1) {//预估价
                order.setEstimatedPrice(bigDecimal.doubleValue());
@@ -989,8 +1010,10 @@
                    order.setStartTime(new Date());
                }
                //计算等待用户时长
                Integer w = new BigDecimal(Double.valueOf(System.currentTimeMillis() - order.getStartWaitTime().getTime()) / 1000).intValue();
                order.setWaitTime(order.getWaitTime() + w);
                if(null != order.getStartWaitTime()){
                    Integer w = new BigDecimal(Double.valueOf(System.currentTimeMillis() - order.getStartWaitTime().getTime()) / 1000).intValue();
                    order.setWaitTime(order.getWaitTime() + w);
                }
                order.setStartWaitTime(null);
                orderPositionService.initMap(order.getId());
                break;
@@ -1009,14 +1032,26 @@
                }
                //开始计算费用
                String city = "";
                Integer branchOfficeId = null;
                District geocode = MapUtil.geocode(order.getEndLng(), order.getEndLat());
                if(null != geocode){
                    WeatherCity weatherCity = weatherCityService.selectOne(new EntityWrapper<WeatherCity>()
                            .where("'" + geocode.getCity() + "' like CONCAT('%', city, '%') and '" + geocode.getDistrict() + "' like CONCAT('%', district, '%') "));
                    city = null != weatherCity ? weatherCity.getId().toString() : "";
                    String districtCode = geocode.getDistrictCode();
                    BranchOffice branchOffice = branchOfficeService.selectOne(new EntityWrapper<BranchOffice>().eq("status", 1).eq("districtCode", districtCode));
                    if(null == branchOffice){
                        String cityCode = geocode.getCityCode();
                        branchOffice = branchOfficeService.selectOne(new EntityWrapper<BranchOffice>().eq("status", 1).eq("cityCode", cityCode));
                        if(null == branchOffice){
                            String provinceCode = geocode.getProvinceCode();
                            branchOffice = branchOfficeService.selectOne(new EntityWrapper<BranchOffice>().eq("status", 1).eq("provinceCode", provinceCode));
                        }
                    }
                    if(null == branchOffice){
                        return ResultUtil.error("起点暂无企业服务");
                    }
                    branchOfficeId = branchOffice.getId();
                }
                try {
                    order = getOrderPrice(2, Double.valueOf(order.getActualMileage()) / 1000, order.getWaitTime(), order, city);
                    order = getOrderPrice(2, Double.valueOf(order.getActualMileage()) / 1000, order.getWaitTime(), order, city, branchOfficeId);
                }catch (Exception e){
                    e.printStackTrace();
                    return ResultUtil.error("计算费用异常");
@@ -1117,6 +1152,9 @@
    @Override
    public void pushOrderInfo(Long orderId){
        Order order = this.selectById(orderId);
        if(null == order){
            return;
        }
        Integer driverId = order.getDriverId();
        String value = redisUtil.getValue("DRIVER" + driverId);
        if(order.getState() == 106 || order.getState() == 301){
@@ -1166,14 +1204,19 @@
    @Override
    public ResultUtil transferOrder(Integer uid, Long orderId, String cause, String phone) throws Exception {
        // 7.13改动
        Driver driver=null;
        OrderTransfer orderTransfer = new OrderTransfer();
        Order order = this.selectById(orderId);
        if(order.getState() > 104){
            return ResultUtil.error("订单不支持转单");
        }
        if(phone!=null && !"".equals(phone)) {
            Integer oldId = order.getDriverId();
            List<Driver> drivers = driverService.selectList(new EntityWrapper<Driver>().eq("phone", phone));
            if (drivers.size() == 0) {
                return ResultUtil.error("暂无该司机,无法转单");
            } else {
                Driver driver = drivers.get(0);
                 driver = drivers.get(0);
                if (driver.getServerStatus() != 1) {
                    return ResultUtil.error("司机正在服务中,无法转单。");
                }
@@ -1183,15 +1226,16 @@
                order.setDriverId(driver.getId());
                orderTransfer.setNewDriverId(driver.getId());
            }
//            order.setState(104);
            driver.setServerStatus(2);
            driverService.updateById(driver);
            Driver driver1 = driverService.selectById(oldId);
            driver1.setServerStatus(1);
            driverService.updateById(driver1);
        }else {
            order.setOldState(order.getState());
            order.setState(201);
        }
        if(order.getDriverId().compareTo(uid) != 0){
            return ResultUtil.error("无权操作");
        }
        if(order.getState() > 104){
            return ResultUtil.error("订单不支持转单");
        }
        order.setOldState(order.getState());
        order.setState(201);
        this.updateById(order);
@@ -1210,6 +1254,13 @@
                    pushOrder(finalOrder.getId());
                }
            }).start();
        }else {
            if(driver!=null){
                PushOrderInfoWarpper pushOrderInfoWarpper = new PushOrderInfoWarpper();
                pushOrderInfoWarpper.setId(order.getId());
                pushOrderInfoWarpper.setState(201);
                pushUtil.pushGrabOrder(driver.getId(), 2, order.getId(),1);
            }
        }
        return ResultUtil.success();
@@ -1243,13 +1294,25 @@
        order.setEstimatedMileage(d);
        order.setEstimatedTime(Integer.valueOf(distance.get("duration")) / 60);
        String city = "";
        District geocode = MapUtil.geocode(order.getStartLng(), order.getStartLat());
        Integer branchOfficeId = null;
        District geocode = MapUtil.geocode(order.getEndLng(), order.getEndLat());
        if(null != geocode){
            WeatherCity weatherCity = weatherCityService.selectOne(new EntityWrapper<WeatherCity>()
                    .where("'" + geocode.getCity() + "' like CONCAT('%', city, '%') and '" + geocode.getDistrict() + "' like CONCAT('%', district, '%') "));
            city = null != weatherCity ? weatherCity.getId().toString() : "";
            String districtCode = geocode.getDistrictCode();
            BranchOffice branchOffice = branchOfficeService.selectOne(new EntityWrapper<BranchOffice>().eq("status", 1).eq("districtCode", districtCode));
            if(null == branchOffice){
                String cityCode = geocode.getCityCode();
                branchOffice = branchOfficeService.selectOne(new EntityWrapper<BranchOffice>().eq("status", 1).eq("cityCode", cityCode));
                if(null == branchOffice){
                    String provinceCode = geocode.getProvinceCode();
                    branchOffice = branchOfficeService.selectOne(new EntityWrapper<BranchOffice>().eq("status", 1).eq("provinceCode", provinceCode));
                }
            }
            if(null == branchOffice){
                return ResultUtil.error("起点暂无企业服务");
            }
            branchOfficeId = branchOffice.getId();
        }
        order = getOrderPrice(1, d, 0, order, city);
        order = getOrderPrice(1, d, 0, order, city, branchOfficeId);
        this.updateById(order);
        return ResultUtil.success();
    }
@@ -1372,6 +1435,7 @@
        }
        orderPriceWarpper.setWxCollectionCode(driver.getWxCollectionCode());
        orderPriceWarpper.setZfbCollectionCode(driver.getZfbCollectionCode());
        orderPriceWarpper.setHolidayPrice(order.getHolidayPrice());
        return orderPriceWarpper;
    }
@@ -1450,25 +1514,26 @@
                    List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 4).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime"));
                    for (RechargeRecord rechargeRecord : rechargeRecords) {
                        Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount();
                        if(surplusDividedAmount.compareTo(discountedPrice) >= 0){
                            ResultUtil<Double> zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver.getMerchantNumber(), discountedPrice, callbackPath + "/base/order/zhaunzhangCallback");
                            if(10000 == zhaunzhang.getCode()){
                                Double remainAmount = zhaunzhang.getData();
                                rechargeRecord.setSurplusDividedAmount(remainAmount);
                                rechargeRecordService.updateById(rechargeRecord);
                            }
                            break;
                        }else{
                            ResultUtil<Double> zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver.getMerchantNumber(), surplusDividedAmount, callbackPath + "/base/order/zhaunzhangCallback");
                            if(10000 == zhaunzhang.getCode()){
                                Double remainAmount = zhaunzhang.getData();
                                rechargeRecord.setSurplusDividedAmount(remainAmount);
                                rechargeRecordService.updateById(rechargeRecord);
                                discountedPrice = new BigDecimal(discountedPrice).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                            }else{
                                break;
                            }
                        }
                        // TODO 测试屏蔽
//                        if(surplusDividedAmount.compareTo(discountedPrice) >= 0){
//                            ResultUtil<Double> zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver.getMerchantNumber(), discountedPrice, callbackPath + "/base/order/zhaunzhangCallback");
//                            if(10000 == zhaunzhang.getCode()){
//                                Double remainAmount = zhaunzhang.getData();
//                                rechargeRecord.setSurplusDividedAmount(remainAmount);
//                                rechargeRecordService.updateById(rechargeRecord);
//                            }
//                            break;
//                        }else{
//                            ResultUtil<Double> zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver.getMerchantNumber(), surplusDividedAmount, callbackPath + "/base/order/zhaunzhangCallback");
//                            if(10000 == zhaunzhang.getCode()){
//                                Double remainAmount = zhaunzhang.getData();
//                                rechargeRecord.setSurplusDividedAmount(remainAmount);
//                                rechargeRecordService.updateById(rechargeRecord);
//                                discountedPrice = new BigDecimal(discountedPrice).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
//                            }else{
//                                break;
//                            }
//                        }
                    }
                    CompanyFundFlow companyFundFlow = new CompanyFundFlow();
@@ -1662,23 +1727,24 @@
                            List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 2).eq("userId", driver.getId()).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime"));
                            for (RechargeRecord rechargeRecord : rechargeRecords) {
                                Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount();
                                if(surplusDividedAmount.compareTo(num1_1) >= 0){
                                    ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num1_1, 3);
                                    if(fengzhang.getCode() == 10000){
                                        rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num1_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                        rechargeRecordService.updateById(rechargeRecord);
                                    }
                                    break;
                                }else{
                                    ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3);
                                    if(fengzhang.getCode() == 10000){
                                        rechargeRecord.setSurplusDividedAmount(0d);
                                        rechargeRecordService.updateById(rechargeRecord);
                                        num1_1 = new BigDecimal(num1_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                    }else{
                                        break;
                                    }
                                }
                                // TODO 测试屏蔽
//                                if(surplusDividedAmount.compareTo(num1_1) >= 0){
//                                    ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num1_1, 3);
//                                    if(fengzhang.getCode() == 10000){
//                                        rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num1_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
//                                        rechargeRecordService.updateById(rechargeRecord);
//                                    }
//                                    break;
//                                }else{
//                                    ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3);
//                                    if(fengzhang.getCode() == 10000){
//                                        rechargeRecord.setSurplusDividedAmount(0d);
//                                        rechargeRecordService.updateById(rechargeRecord);
//                                        num1_1 = new BigDecimal(num1_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
//                                    }else{
//                                        break;
//                                    }
//                                }
                            }
                        }
@@ -1725,23 +1791,24 @@
                                    List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 2).eq("userId", driver.getId()).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime"));
                                    for (RechargeRecord rechargeRecord : rechargeRecords) {
                                        Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount();
                                        if(surplusDividedAmount.compareTo(num5_1) >= 0){
                                            ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num5_1, 3);
                                            if(fengzhang.getCode() == 10000){
                                                rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num5_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                                rechargeRecordService.updateById(rechargeRecord);
                                            }
                                            break;
                                        }else{
                                            ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3);
                                            if(fengzhang.getCode() == 10000){
                                                rechargeRecord.setSurplusDividedAmount(0d);
                                                rechargeRecordService.updateById(rechargeRecord);
                                                num5_1 = new BigDecimal(num5_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                            }else{
                                                break;
                                            }
                                        }
                                        // TODO 测试屏蔽
//                                        if(surplusDividedAmount.compareTo(num5_1) >= 0){
//                                            ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num5_1, 3);
//                                            if(fengzhang.getCode() == 10000){
//                                                rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num5_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
//                                                rechargeRecordService.updateById(rechargeRecord);
//                                            }
//                                            break;
//                                        }else{
//                                            ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3);
//                                            if(fengzhang.getCode() == 10000){
//                                                rechargeRecord.setSurplusDividedAmount(0d);
//                                                rechargeRecordService.updateById(rechargeRecord);
//                                                num5_1 = new BigDecimal(num5_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
//                                            }else{
//                                                break;
//                                            }
//                                        }
                                    }
                                    double v = new BigDecimal(num3).subtract(new BigDecimal(num5)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                    num3 = (num3 >= num5 ? v : 0);
@@ -1775,23 +1842,24 @@
                                    List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 2).eq("userId", driver.getId()).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime"));
                                    for (RechargeRecord rechargeRecord : rechargeRecords) {
                                        Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount();
                                        if(surplusDividedAmount.compareTo(num6_1) >= 0){
                                            ResultUtil fengzhang = fengzhang(1, driver2.getId(), driver2.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num6_1, 3);
                                            if(fengzhang.getCode() == 10000){
                                                rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num6_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                                rechargeRecordService.updateById(rechargeRecord);
                                            }
                                            break;
                                        }else{
                                            ResultUtil fengzhang = fengzhang(1, driver2.getId(), driver2.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3);
                                            if(fengzhang.getCode() == 10000){
                                                rechargeRecord.setSurplusDividedAmount(0d);
                                                rechargeRecordService.updateById(rechargeRecord);
                                                num6_1 = new BigDecimal(num6_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                            }else{
                                                break;
                                            }
                                        }
                                        // TODO 测试屏蔽
//                                        if(surplusDividedAmount.compareTo(num6_1) >= 0){
//                                            ResultUtil fengzhang = fengzhang(1, driver2.getId(), driver2.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num6_1, 3);
//                                            if(fengzhang.getCode() == 10000){
//                                                rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num6_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
//                                                rechargeRecordService.updateById(rechargeRecord);
//                                            }
//                                            break;
//                                        }else{
//                                            ResultUtil fengzhang = fengzhang(1, driver2.getId(), driver2.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3);
//                                            if(fengzhang.getCode() == 10000){
//                                                rechargeRecord.setSurplusDividedAmount(0d);
//                                                rechargeRecordService.updateById(rechargeRecord);
//                                                num6_1 = new BigDecimal(num6_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
//                                            }else{
//                                                break;
//                                            }
//                                        }
                                    }
                                    double v = new BigDecimal(num3).subtract(new BigDecimal(num6)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                    num3 = (num3 >= num6 ? v : 0);
@@ -1825,23 +1893,24 @@
                                    List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 2).eq("userId", driver.getId()).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime"));
                                    for (RechargeRecord rechargeRecord : rechargeRecords) {
                                        Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount();
                                        if(surplusDividedAmount.compareTo(num7_1) >= 0){
                                            ResultUtil fengzhang = fengzhang(1, driver3.getId(), driver3.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num7_1, 3);
                                            if(fengzhang.getCode() == 10000){
                                                rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num7_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                                rechargeRecordService.updateById(rechargeRecord);
                                            }
                                            break;
                                        }else{
                                            ResultUtil fengzhang = fengzhang(1, driver3.getId(), driver3.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3);
                                            if(fengzhang.getCode() == 10000){
                                                rechargeRecord.setSurplusDividedAmount(0d);
                                                rechargeRecordService.updateById(rechargeRecord);
                                                num7_1 = new BigDecimal(num7_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                            }else{
                                                break;
                                            }
                                        }
                                        // TODO 测试屏蔽
//                                        if(surplusDividedAmount.compareTo(num7_1) >= 0){
//                                            ResultUtil fengzhang = fengzhang(1, driver3.getId(), driver3.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num7_1, 3);
//                                            if(fengzhang.getCode() == 10000){
//                                                rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num7_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
//                                                rechargeRecordService.updateById(rechargeRecord);
//                                            }
//                                            break;
//                                        }else{
//                                            ResultUtil fengzhang = fengzhang(1, driver3.getId(), driver3.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3);
//                                            if(fengzhang.getCode() == 10000){
//                                                rechargeRecord.setSurplusDividedAmount(0d);
//                                                rechargeRecordService.updateById(rechargeRecord);
//                                                num7_1 = new BigDecimal(num7_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
//                                            }else{
//                                                break;
//                                            }
//                                        }
                                    }
                                    double v = new BigDecimal(num3).subtract(new BigDecimal(num7)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                    num3 = (num3 >= num7 ? v : 0);
@@ -1878,23 +1947,24 @@
                                    List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 2).eq("userId", driver.getId()).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime"));
                                    for (RechargeRecord rechargeRecord : rechargeRecords) {
                                        Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount();
                                        if(surplusDividedAmount.compareTo(num3_1) >= 0){
                                            ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num3_1, 3);
                                            if(fengzhang.getCode() == 10000){
                                                rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num3_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                                rechargeRecordService.updateById(rechargeRecord);
                                            }
                                            break;
                                        }else{
                                            ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3);
                                            if(fengzhang.getCode() == 10000){
                                                rechargeRecord.setSurplusDividedAmount(0d);
                                                rechargeRecordService.updateById(rechargeRecord);
                                                num3_1 = new BigDecimal(num3_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                            }else{
                                                break;
                                            }
                                        }
                                        // TODO 测试屏蔽
//                                        if(surplusDividedAmount.compareTo(num3_1) >= 0){
//                                            ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num3_1, 3);
//                                            if(fengzhang.getCode() == 10000){
//                                                rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num3_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
//                                                rechargeRecordService.updateById(rechargeRecord);
//                                            }
//                                            break;
//                                        }else{
//                                            ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3);
//                                            if(fengzhang.getCode() == 10000){
//                                                rechargeRecord.setSurplusDividedAmount(0d);
//                                                rechargeRecordService.updateById(rechargeRecord);
//                                                 num3_1 = new BigDecimal(num3_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
//                                            }else{
//                                                break;
//                                            }
//                                        }
                                    }
                                    double v = new BigDecimal(num3).subtract(new BigDecimal(num3_)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                    num3 = (num3 >= num3_ ? v : 0);
@@ -1928,23 +1998,24 @@
                                    List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 2).eq("userId", driver.getId()).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime"));
                                    for (RechargeRecord rechargeRecord : rechargeRecords) {
                                        Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount();
                                        if(surplusDividedAmount.compareTo(num4_1) >= 0){
                                            ResultUtil fengzhang = fengzhang(1, driver2.getId(), driver2.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num4_1, 3);
                                            if(fengzhang.getCode() == 10000){
                                                rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num4_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                                rechargeRecordService.updateById(rechargeRecord);
                                            }
                                            break;
                                        }else{
                                            ResultUtil fengzhang = fengzhang(1, driver2.getId(), driver2.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3);
                                            if(fengzhang.getCode() == 10000){
                                                rechargeRecord.setSurplusDividedAmount(0d);
                                                rechargeRecordService.updateById(rechargeRecord);
                                                num4_1 = new BigDecimal(num4_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                            }else{
                                                break;
                                            }
                                        }
                                        // TODO 测试屏蔽
//                                        if(surplusDividedAmount.compareTo(num4_1) >= 0){
//                                            ResultUtil fengzhang = fengzhang(1, driver2.getId(), driver2.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num4_1, 3);
//                                            if(fengzhang.getCode() == 10000){
//                                                rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num4_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
//                                                rechargeRecordService.updateById(rechargeRecord);
//                                            }
//                                            break;
//                                        }else{
//                                            ResultUtil fengzhang = fengzhang(1, driver2.getId(), driver2.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3);
//                                            if(fengzhang.getCode() == 10000){
//                                                rechargeRecord.setSurplusDividedAmount(0d);
//                                                rechargeRecordService.updateById(rechargeRecord);
//                                                num4_1 = new BigDecimal(num4_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
//                                            }else{
//                                                break;
//                                            }
//                                        }
                                    }
                                    double v = new BigDecimal(num3).subtract(new BigDecimal(num4)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                    num3 = (num3 >= num4 ? v : 0);
@@ -1981,23 +2052,24 @@
                                List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 2).eq("userId", driver.getId()).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime"));
                                for (RechargeRecord rechargeRecord : rechargeRecords) {
                                    Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount();
                                    if(surplusDividedAmount.compareTo(num2_1) >= 0){
                                        ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num2_1, 3);
                                        if(fengzhang.getCode() == 10000){
                                            rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num2_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                            rechargeRecordService.updateById(rechargeRecord);
                                        }
                                        break;
                                    }else{
                                        ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3);
                                        if(fengzhang.getCode() == 10000){
                                            rechargeRecord.setSurplusDividedAmount(0d);
                                            rechargeRecordService.updateById(rechargeRecord);
                                            num2_1 = new BigDecimal(num2_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                        }else{
                                            break;
                                        }
                                    }
                                    // TODO 测试屏蔽
//                                    if(surplusDividedAmount.compareTo(num2_1) >= 0){
//                                        ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num2_1, 3);
//                                        if(fengzhang.getCode() == 10000){
//                                            rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num2_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
//                                            rechargeRecordService.updateById(rechargeRecord);
//                                        }
//                                        break;
//                                    }else{
//                                        ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3);
//                                        if(fengzhang.getCode() == 10000){
//                                            rechargeRecord.setSurplusDividedAmount(0d);
//                                            rechargeRecordService.updateById(rechargeRecord);
//                                            num2_1 = new BigDecimal(num2_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
//                                        }else{
//                                            break;
//                                        }
//                                    }
                                }
                                double v = new BigDecimal(num3).subtract(new BigDecimal(num2_)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                num3 = (num3 >= num2_ ? v : 0);
@@ -2023,23 +2095,24 @@
                        List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 2).eq("userId", driver.getId()).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime"));
                        for (RechargeRecord rechargeRecord : rechargeRecords) {
                            Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount();
                            if(surplusDividedAmount.compareTo(num4_1) >= 0){
                                ResultUtil fengzhang = fengzhang(3, null, "553021440975", order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num4_1, 3);
                                if(fengzhang.getCode() == 10000){
                                    rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num4_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                    rechargeRecordService.updateById(rechargeRecord);
                                }
                                break;
                            }else{
                                ResultUtil fengzhang = fengzhang(3, null, "553021440975", order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3);
                                if(fengzhang.getCode() == 10000){
                                    rechargeRecord.setSurplusDividedAmount(0d);
                                    rechargeRecordService.updateById(rechargeRecord);
                                    num4_1 = new BigDecimal(num4_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                }else{
                                    break;
                                }
                            }
                            // TODO 测试屏蔽
//                            if(surplusDividedAmount.compareTo(num4_1) >= 0){
//                                ResultUtil fengzhang = fengzhang(3, null, "553021440975", order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num4_1, 3);
//                                if(fengzhang.getCode() == 10000){
//                                    rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num4_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
//                                    rechargeRecordService.updateById(rechargeRecord);
//                                }
//                                break;
//                            }else{
//                                ResultUtil fengzhang = fengzhang(3, null, "553021440975", order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3);
//                                if(fengzhang.getCode() == 10000){
//                                    rechargeRecord.setSurplusDividedAmount(0d);
//                                    rechargeRecordService.updateById(rechargeRecord);
//                                    num4_1 = new BigDecimal(num4_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
//                                }else{
//                                    break;
//                                }
//                            }
                        }
                        CompanyFundFlow companyFundFlow = new CompanyFundFlow();
@@ -2071,23 +2144,24 @@
                        List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 2).eq("userId", driver.getId()).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime"));
                        for (RechargeRecord rechargeRecord : rechargeRecords) {
                            Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount();
                            if(surplusDividedAmount.compareTo(num3_1) >= 0){
                                ResultUtil fengzhang = fengzhang(2, agent.getId(), agent.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num3_1, 3);
                                if(fengzhang.getCode() == 10000){
                                    rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num3_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                    rechargeRecordService.updateById(rechargeRecord);
                                }
                                break;
                            }else{
                                ResultUtil fengzhang = fengzhang(2, agent.getId(), agent.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3);
                                if(fengzhang.getCode() == 10000){
                                    rechargeRecord.setSurplusDividedAmount(0d);
                                    rechargeRecordService.updateById(rechargeRecord);
                                    num3_1 = new BigDecimal(num3_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                }else{
                                    break;
                                }
                            }
                            // TODO 测试屏蔽
//                            if(surplusDividedAmount.compareTo(num3_1) >= 0){
//                                ResultUtil fengzhang = fengzhang(2, agent.getId(), agent.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num3_1, 3);
//                                if(fengzhang.getCode() == 10000){
//                                    rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num3_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
//                                    rechargeRecordService.updateById(rechargeRecord);
//                                }
//                                break;
//                            }else{
//                                ResultUtil fengzhang = fengzhang(2, agent.getId(), agent.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3);
//                                if(fengzhang.getCode() == 10000){
//                                    rechargeRecord.setSurplusDividedAmount(0d);
//                                    rechargeRecordService.updateById(rechargeRecord);
//                                    num3_1 = new BigDecimal(num3_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
//                                }else{
//                                    break;
//                                }
//                            }
                        }
                        CompanyFundFlow companyFundFlow = new CompanyFundFlow();