liujie
2023-06-12 c8638bb17163cc95e9063c358eb92cada1474102
src/main/java/com/stylefeng/guns/modular/system/controller/DemandController.java
@@ -115,6 +115,10 @@
    @ResponseBody
    @Transactional(propagation = Propagation.REQUIRES_NEW)
    public Object addDemand(@RequestBody DemandDto demandDto) throws Exception {
        int breakNum=0;
        // 计数
        int count=0;
        Integer id = demandDto.getId();
        String s1 = System.currentTimeMillis() + ToolUtil.getRandomString(5);
        String s2 = System.currentTimeMillis() + ToolUtil.getRandomString(5);
@@ -129,15 +133,15 @@
        tQuote.setUserId(demandDto.getUserId());
        quoteService.insert(tQuote);
        List<TUserFeeSetting> tUserFeeSettings=null;
        //获取当前用户的sale
        Integer userId = demandDto.getUserId();
        TUser tUser = userService.selectById(userId);
        if(tUser.getGroupId()!=null){
            TGroup tGroup = groupService.selectById(tUser.getGroupId());
            tUserFeeSettings = userFeeSettingService.selectList(new EntityWrapper<TUserFeeSetting>().eq("user_id",tGroup.getSalesId()));
        }
//        List<TUserFeeSetting> tUserFeeSettings=null;
//        //获取当前用户的sale
//        Integer userId = demandDto.getUserId();
//        TUser tUser = userService.selectById(userId);
//        if(tUser.getGroupId()!=null){
//            TGroup tGroup = groupService.selectById(tUser.getGroupId());
//             tUserFeeSettings = userFeeSettingService.selectList(new EntityWrapper<TUserFeeSetting>().eq("user_id",tGroup.getSalesId()));
//
//        }
        String accessorialStr = demandDto.getAccessorialStr();
@@ -151,8 +155,14 @@
        }
        List<TCompanyService> companyServiceList = new ArrayList<>();
        String accessorialStr1 = getStr(demandDto.getAccessorialStr());
        //
        if(ToolUtil.isNotEmpty(demandDto.getAccessorialStr())){
        if(ToolUtil.isNotEmpty(accessorialStr1) && !"".equals(accessorialStr1)){
            for (Map.Entry<String, String> entry : map.entrySet()) {
                if(!entry.getKey().equals("CTF")&& !entry.getKey().equals("URGENT FEE")&&!entry.getKey().equals("PIPERPASS")) {
                    companyServiceList.addAll(tCompanyServiceService.selectList(new EntityWrapper<TCompanyService>()
@@ -172,15 +182,15 @@
        List<TCompany> tCompanyList = new ArrayList<>();
        for (Integer companyId : companyIds) {
            List<TCompanyService> collect = companyServiceList.stream().filter(company -> company.getCompanyId().equals(companyId)).collect(Collectors.toList());
            if(map.size() == collect.size()){
                // 找出符合规则的公司
                TCompany company = tCompanyService.selectOne(new EntityWrapper<TCompany>().eq("status", 1)
                        .eq("id",companyId).eq("work",1));
                if(Objects.nonNull(company)){
                    tCompanyList.add(company);
                }
//            List<TCompanyService> collect = companyServiceList.stream().filter(company -> company.getCompanyId().equals(companyId)).collect(Collectors.toList());
//            if(map.size() == collect.size()){
            // 找出符合规则的公司
            TCompany company = tCompanyService.selectOne(new EntityWrapper<TCompany>().eq("status", 1)
                    .eq("id",companyId).eq("work",1));
            if(Objects.nonNull(company)){
                tCompanyList.add(company);
            }
//            }
        }
        // 符合规则的公司id集合
@@ -207,6 +217,9 @@
        Integer portId = demandDto.getPortId();
        TPort tPort = itPortService.selectById(portId);
        GeocodeVo geocode = googleMapUtil.getGeocode(tPort.getAddress());
        // 获取码头上级id
        TCountry city = countryService.selectById(tPort.getCity());
        TCountry state = countryService.selectById(city.getParentId());
@@ -219,10 +232,11 @@
        // 没有满足公司
        if(CollectionUtils.isEmpty(set)){
            quoteService.deleteById(tQuote.getId());
            return  new ErrorTip(5001,"No truck company was matched to meet the demand");
            return  new com.stylefeng.guns.modular.system.utils.tips.ErrorTip(5001,"No truck company was matched to meet the demand");
        }else {
            List<TCompany> companies = companyService.selectList(new EntityWrapper<TCompany>().in("id", set));
            for (TCompany company : companies) {
                breakNum=0;
                TCompanyCalculationResp tCompanyCalculationResp = new TCompanyCalculationResp();
                ArrayList<TOrder> tOrders = new ArrayList<>();
                // 超重 价格
@@ -234,150 +248,46 @@
                if(tRates1!=null){
                    ratesId=tRates1.getId();
                }else {
                    ratesId=tCountry.getId();
                    tRates1 = ratesService.selectOne(new EntityWrapper<TRates>().eq("metro_id", tCountry.getId()).eq("type", 1).eq("company_id", company.getId()));
                    if(tRates1!=null){
                        ratesId=tRates1.getId();
                    }else {
                        break;
                    }
                }
                for (GoodsListDto goodsListDto : list1) {
                    if(breakNum==1){
                        break;
                    }
                    ArrayList<TPrice> tPrices = new ArrayList<>();
                    // 生成订单
//                    TOrder tOrder = new TOrder();
//                    tOrder.setUserId(demandDto.getUserId());
//                    tOrder.setAccessorial(demandDto.getAccessorial());
//                    tOrder.setAccessorialStr(demandDto.getAccessorialStr());
//                    tOrder.setPort(demandDto.getPortId());
//                    tOrder.setShipmentDate(demandDto.getShipmentDate());
//                    tOrder.setDeliveryDate(demandDto.getDeliveryDate());
//                    tOrder.seteZipZ(s1);
//                    tOrder.setCreateTime(new Date());
//                    tOrder.setStartLat("1");
//                    tOrder.setStartLon("1");
//                    tOrder.setDeliveryStr(demandDto.getDelivery());
//                    tOrder.setType(demandDto.getType());
//                    tOrder.setZipCode(demandDto.getZipCode());
//                    tOrder.setWarehouse(demandDto.getWarehouse());
//                    tOrder.setStatus("0");
//                    tOrder.setInvoiceNumber(s2);
//                    tOrder.setCompanyId(company.getId());
//                    tOrder.setCreateTime(new Date());
//                    orderService.insert(tOrder);
//                    tOrders.add(tOrder);
                    List<GoodsDto> list = goodsListDto.getList();
                    ArrayList<TGoods> tGoods1 = new ArrayList<>();
                    for (GoodsDto goodsDto : list) {
                        // 生成订单
                        TOrder tOrder = new TOrder();
                        tOrder.setCity(city.getId());
                        tOrder.setState(state.getId());
                        tOrder.setUserId(demandDto.getUserId());
                        tOrder.setAccessorial(demandDto.getAccessorial());
                        tOrder.setAccessorialStr(demandDto.getAccessorialStr());
                        tOrder.setPort(demandDto.getPortId());
                        tOrder.setShipmentDate(demandDto.getShipmentDate());
                        tOrder.setDeliveryDate(demandDto.getDeliveryDate());
                        tOrder.seteZipZ(s1);
                        tOrder.setCreateTime(new Date());
                        tOrder.setStartLat("1");
                        tOrder.setStartLon("1");
                        tOrder.setDeliveryStr(demandDto.getDelivery());
                        tOrder.setType(demandDto.getType());
                        tOrder.setZipCode(demandDto.getZipCode());
                        tOrder.seteAddress(demandDto.getZipCode());
                        tOrder.setWarehouse(demandDto.getWarehouse());
                        // TODO 未选择17  下一步选择
                        tOrder.setStatus("17");
                        tOrder.setInvoiceNumber(s2);
                        tOrder.setCompanyId(company.getId());
                        tOrder.setCreateTime(new Date());
                        orderService.insert(tOrder);
                        tOrders.add(tOrder);
                        TCompanyResp tCompanyResp = new TCompanyResp();
                        // 是否超重
                        Integer weight = goodsDto.getWeight();
                        long between = DateUtil.between(demandDto.getShipmentDate(), demandDto.getDeliveryDate(), DateUnit.DAY);
                        if(between==0){
                            between=1;
                        }
                        if(weight==1){
                            TCompanyFeeSetting feeSetting = companyFeeSettingService.selectOne(new EntityWrapper<TCompanyFeeSetting>().eq("company_id", company.getId()).eq("rates_id",ratesId).eq("set_name", UserFeeSettingEnum.OVERWEIGHT.getDesc()));
                            tCompanyResp.setName(UserFeeSettingEnum.OVERWEIGHT.getDesc());
                            tCompanyResp.setPrice(feeSetting.getSetValue());
                            objects.add(tCompanyResp);
                            TCompanyFeeSetting feeSetting1 = companyFeeSettingService.selectOne(new EntityWrapper<TCompanyFeeSetting>().eq("company_id", company.getId()).eq("rates_id",ratesId).eq("set_name", "trl-axle chassis"));
                            tCompanyResp=new TCompanyResp();
                            tCompanyResp.setName(UserFeeSettingEnum.CHASSIS_FEE.getDesc());
                            tCompanyResp.setPrice(feeSetting1.getSetValue().multiply(new BigDecimal(between)));
                            objects.add(tCompanyResp);
                        }else {
                            tCompanyResp=new TCompanyResp();
                            tCompanyResp.setName(UserFeeSettingEnum.CHASSIS_FEE.getDesc());
                            TCompanyFeeSetting feeSetting = companyFeeSettingService.selectOne(new EntityWrapper<TCompanyFeeSetting>().eq("company_id", company.getId()).eq("rates_id",ratesId).eq("set_name", "Pool chassis"));
                            if(feeSetting==null){
                            }else {
                                tCompanyResp.setPrice(feeSetting.getSetValue().multiply(new BigDecimal(between)));
                            }
                            objects.add(tCompanyResp);
                        }
                        // type
                        if ("Live Unload".equals(demandDto.getType())) {
                            // 计算当前公司的价格
                            tCompanyResp=new TCompanyResp();
                            BigDecimal setValue = companyFeeSettingService.selectOne(new EntityWrapper<TCompanyFeeSetting>().eq("company_id", company.getId()).eq("rates_id",ratesId).eq("set_name", UserFeeSettingEnum.PREPULL.getDesc())).getSetValue();
                            tCompanyResp.setName(UserFeeSettingEnum.PREPULL.getDesc());
                            tCompanyResp.setPrice(setValue);
                            objects.add(tCompanyResp);
                        }
                        // 滞留费
                        tCompanyResp=new TCompanyResp();
                        BigDecimal setValue = companyFeeSettingService.selectOne(new EntityWrapper<TCompanyFeeSetting>().eq("company_id", company.getId()).eq("rates_id",ratesId).eq("set_name", UserFeeSettingEnum.DETENTION_CONGESTION.getDesc())).getSetValue();
                        tCompanyResp.setName(UserFeeSettingEnum.DETENTION_CONGESTION.getDesc());
                        tCompanyResp.setPrice(setValue);
                        objects.add(tCompanyResp);
                        if(goodsDto.getDanger()==1){
                            tCompanyResp=new TCompanyResp();
                            BigDecimal setValue1 = companyFeeSettingService.selectOne(new EntityWrapper<TCompanyFeeSetting>().eq("company_id", company.getId()).eq("rates_id",ratesId).eq("set_name", UserFeeSettingEnum.HAZMAT.getDesc())).getSetValue();
                            tCompanyResp.setName(UserFeeSettingEnum.HAZMAT.getDesc());
                            tCompanyResp.setPrice(setValue1);
                            objects.add(tCompanyResp);
                        }
                        if(demandDto.getUrgent()==1){
                            tCompanyResp=new TCompanyResp();
                            BigDecimal setValue1 = companyFeeSettingService.selectOne(new EntityWrapper<TCompanyFeeSetting>().eq("company_id", company.getId()).eq("rates_id",ratesId).eq("set_name", UserFeeSettingEnum.URGENT_SEE.getDesc())).getSetValue();
                            tCompanyResp.setName(UserFeeSettingEnum.URGENT_SEE.getDesc());
                            tCompanyResp.setPrice(setValue1);
                            objects.add(tCompanyResp);
                        }
                        if(demandDto.getPiperpass()==1){
                            tCompanyResp=new TCompanyResp();
                            BigDecimal setValue1 = companyFeeSettingService.selectOne(new EntityWrapper<TCompanyFeeSetting>().eq("company_id", company.getId()).eq("rates_id",ratesId).eq("set_name", UserFeeSettingEnum.PIERPASS.getDesc())).getSetValue();
                            tCompanyResp.setName(UserFeeSettingEnum.PIERPASS.getDesc());
                            tCompanyResp.setPrice(setValue1);
                            objects.add(tCompanyResp);
                        }
                        if(demandDto.getCTF()==1){
                            tCompanyResp=new TCompanyResp();
                            BigDecimal setValue1 = companyFeeSettingService.selectOne(new EntityWrapper<TCompanyFeeSetting>().eq("company_id", company.getId()).eq("rates_id",ratesId).eq("set_name", UserFeeSettingEnum.CTF.getDesc())).getSetValue();
                            tCompanyResp.setName(UserFeeSettingEnum.CTF.getDesc());
                            tCompanyResp.setPrice(setValue1);
                            objects.add(tCompanyResp);
                        }
                        if("0".equals(demandDto.getWarehouse())){
                            tCompanyResp=new TCompanyResp();
                            BigDecimal setValue1 = companyFeeSettingService.selectOne(new EntityWrapper<TCompanyFeeSetting>().eq("company_id", company.getId()).eq("rates_id",ratesId).eq("set_name", demandDto.getDelivery())).getSetValue();
                            tCompanyResp.setName(demandDto.getDelivery());
                            tCompanyResp.setPrice(setValue1);
                            objects.add(tCompanyResp);
                            TCompanyFeeSetting feeSetting = companyFeeSettingService.selectOne(new EntityWrapper<TCompanyFeeSetting>().eq("company_id", company.getId()).eq("rates_id", ratesId).eq("set_name", demandDto.getDelivery()));
                            if(feeSetting==null){
                                breakNum=1;
                                count++;
                                break;
                            }else {
                                tCompanyResp.setName(demandDto.getDelivery());
                                tCompanyResp.setPrice(feeSetting.getSetValue());
                                objects.add(tCompanyResp);
                            }
                            // 基础价格
                            String zipCode = demandDto.getZipCode();
                            // 地址信息
                            String address1 = AddressLookup.getAddress(zipCode);
                            if(address1==null){
                                return new com.stylefeng.guns.modular.system.utils.tips.ErrorTip(5001,"Please enter the correct zipcode");
                            }
                            List<TCompanyBasic> tCompanyBasic = companyBasicService.selectList(new EntityWrapper<TCompanyBasic>().eq("port_id",ratesId).eq("zip_code", zipCode).eq("type", 1));
                            if(tCompanyBasic.size()>0){
                                tCompanyResp=new TCompanyResp();
@@ -388,7 +298,7 @@
                                // 画圈 拿到的zipcode集合 去对比当前zipcode是否在集合中
                                List<TCompanyBasic> type = companyBasicService.selectList(new EntityWrapper<TCompanyBasic>().eq("type", 2).eq("port_id",ratesId).orderBy("fee",true));
                                if(type.size()>0){
                                    GeocodeVo geocode1 = googleMapUtil.getGeocode(zipCode);
                                    GeocodeVo geocode1 = googleMapUtil.getGeocode(address1  );
                                    for (TCompanyBasic companyBasic : type) {
                                        boolean inPolygon = PointInPolygon.isInPolygon(geocode1.getLat(), geocode1.getLng(), companyBasic.getLonLat());
                                        if(inPolygon){
@@ -413,9 +323,9 @@
                                            tCompanyResp.setName("LH+FSC");
                                            objects.add(tCompanyResp);
                                        }else {
                                            tCompanyResp.setPrice(new BigDecimal(0));
                                            tCompanyResp.setName("LH+FSC");
                                            objects.add(tCompanyResp);
                                            breakNum=1;
                                            count++;
                                            break;
                                        }
                                    }
                                }else {
@@ -432,9 +342,9 @@
                                        tCompanyResp.setName("LH+FSC");
                                        objects.add(tCompanyResp);
                                    }else {
                                        tCompanyResp.setPrice(new BigDecimal(0));
                                        tCompanyResp.setName("LH+FSC");
                                        objects.add(tCompanyResp);
                                        breakNum=1;
                                        count++;
                                        break;
                                    }
                                }
                            }
@@ -450,7 +360,208 @@
                            }
                            objects.add(tCompanyResp);
                        }
                        // 是否超重
                        Integer weight = goodsDto.getWeight();
                        long between = DateUtil.between(demandDto.getShipmentDate(), demandDto.getDeliveryDate(), DateUnit.DAY);
                        String arg1 = tPort.getName();
                        String arg2="";
                        if(!"0".equals(demandDto.getWarehouse())){
                            TWarehouse tWarehouse = warehouseService.selectOne(new EntityWrapper<TWarehouse>().eq("company_id", company.getId()).eq("code", demandDto.getWarehouse()).eq("port_id",ratesId));
                            arg2=tWarehouse.getCity();
                        }else {
                            arg2 = AddressLookup.getAddress(demandDto.getZipCode());
                        }
//                        DistancematrixVo distancematrix = googleMapUtil.getDistancematrix(tPort.getAddress(), arg2);
//                        String arg3=String.valueOf(distancematrix.getDistance());
//                        String arg4= demandDto.getList().get(0).getShippingLine();
//                        String arg5 = demandDto.getType();
//                        GoodsDto goodsDto1 = demandDto.getList().get(0).getList().get(0);
//                        String arg6 =goodsDto1.getType();
//                        String arg7="None";
//                        String arg8 = goodsDto1.getKg();
//                        BigDecimal days = new BigDecimal(ChassisRentalDaysUtil.chassisRentalDays(1, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8));
                        if(between==0){
                            between=1;
                        }
                        if(weight==1){
                            TCompanyFeeSetting feeSetting = companyFeeSettingService.selectOne(new EntityWrapper<TCompanyFeeSetting>().eq("company_id", company.getId()).eq("rates_id",ratesId).eq("set_name", UserFeeSettingEnum.OVERWEIGHT.getDesc()));
                            if(feeSetting==null){
                                breakNum=1;
                                count++;
                                break;
                            }else {
                                tCompanyResp=new TCompanyResp();
                                tCompanyResp.setName(UserFeeSettingEnum.OVERWEIGHT.getDesc());
                                tCompanyResp.setPrice(feeSetting.getSetValue());
                                objects.add(tCompanyResp);
                            }
                            TCompanyFeeSetting feeSetting1 = companyFeeSettingService.selectOne(new EntityWrapper<TCompanyFeeSetting>().eq("company_id", company.getId()).eq("rates_id",ratesId).eq("set_name", "trl-axle chassis"));
                            if(feeSetting1==null){
                                breakNum=1;
                                count++;
                                break;
                            }else {
                                tCompanyResp=new TCompanyResp();
                                tCompanyResp.setName(UserFeeSettingEnum.CHASSIS_FEE.getDesc());
//                                tCompanyResp.setPrice(feeSetting1.getSetValue().multiply(days));
                                tCompanyResp.setPrice(feeSetting1.getSetValue().multiply(new BigDecimal(between)));
                                objects.add(tCompanyResp);
                            }
                        }else {
                            tCompanyResp=new TCompanyResp();
                            tCompanyResp.setName(UserFeeSettingEnum.CHASSIS_FEE.getDesc());
                            TCompanyFeeSetting feeSetting = companyFeeSettingService.selectOne(new EntityWrapper<TCompanyFeeSetting>().eq("company_id", company.getId()).eq("rates_id",ratesId).eq("set_name", "Pool chassis"));
                            if(feeSetting==null){
                                breakNum=1;
                                count++;
                                break;
                            }else {
//                                tCompanyResp.setPrice(feeSetting.getSetValue().multiply(days));
                                tCompanyResp.setPrice(feeSetting.getSetValue().multiply(new BigDecimal(between)));
                            }
                            objects.add(tCompanyResp);
                        }
                        // type
                        if ("Live Unload".equals(demandDto.getType())) {
                            // 计算当前公司的价格
                            tCompanyResp=new TCompanyResp();
                            TCompanyFeeSetting feeSetting = companyFeeSettingService.selectOne(new EntityWrapper<TCompanyFeeSetting>().eq("company_id", company.getId()).eq("rates_id", ratesId).eq("set_name", UserFeeSettingEnum.PREPULL.getDesc()));
                            if(feeSetting==null){
                                tCompanyResp.setName(UserFeeSettingEnum.PREPULL.getDesc());
                                tCompanyResp.setPrice(new BigDecimal(0));
                            }else {
                                BigDecimal setValue = feeSetting.getSetValue();
                                tCompanyResp.setName(UserFeeSettingEnum.PREPULL.getDesc());
                                tCompanyResp.setPrice(setValue);
                            }
//                            BigDecimal setValue = companyFeeSettingService.selectOne(new EntityWrapper<TCompanyFeeSetting>().eq("company_id", company.getId()).eq("rates_id",ratesId).eq("set_name", UserFeeSettingEnum.PREPULL.getDesc())).getSetValue();
                            objects.add(tCompanyResp);
                        }
                        // 滞留费
                        tCompanyResp=new TCompanyResp();
                        TCompanyFeeSetting feeSetting = companyFeeSettingService.selectOne(new EntityWrapper<TCompanyFeeSetting>().eq("company_id", company.getId()).eq("rates_id", ratesId).eq("set_name", UserFeeSettingEnum.DETENTION_CONGESTION.getDesc()));
                        if(feeSetting!=null){
                            tCompanyResp.setName(UserFeeSettingEnum.DETENTION_CONGESTION.getDesc());
                            tCompanyResp.setPrice(feeSetting.getSetValue());
                        }else {
                            tCompanyResp.setName(UserFeeSettingEnum.DETENTION_CONGESTION.getDesc());
                            tCompanyResp.setPrice(new BigDecimal(0));
                        }
//                        BigDecimal setValue = companyFeeSettingService.selectOne(new EntityWrapper<TCompanyFeeSetting>().eq("company_id", company.getId()).eq("rates_id",ratesId).eq("set_name", UserFeeSettingEnum.DETENTION_CONGESTION.getDesc())).getSetValue();
                        objects.add(tCompanyResp);
                        // 仓储费
//                        tCompanyResp=new TCompanyResp();
//                        days = new BigDecimal(ChassisRentalDaysUtil.chassisRentalDays(3, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8));
//                        TCompanyFeeSetting storage = companyFeeSettingService.selectOne(new EntityWrapper<TCompanyFeeSetting>().eq("company_id", company.getId()).eq("rates_id", ratesId).eq("set_name", UserFeeSettingEnum.STORAGE.getDesc()));
//                        if(storage!=null){
//                            tCompanyResp.setName(UserFeeSettingEnum.STORAGE.getDesc());
//                            tCompanyResp.setPrice(feeSetting.getSetValue().multiply(days));
//                        }else {
//                            tCompanyResp.setName(UserFeeSettingEnum.STORAGE.getDesc());
//                            tCompanyResp.setPrice(new BigDecimal(0));
//                        }
                        if(goodsDto.getDanger()==1){
                            tCompanyResp=new TCompanyResp();
                            TCompanyFeeSetting feeSetting1 = companyFeeSettingService.selectOne(new EntityWrapper<TCompanyFeeSetting>().eq("company_id", company.getId()).eq("rates_id", ratesId).eq("set_name", UserFeeSettingEnum.HAZMAT.getDesc()));
                            if(feeSetting1!=null){
                                tCompanyResp.setName(UserFeeSettingEnum.HAZMAT.getDesc());
                                tCompanyResp.setPrice(feeSetting1.getSetValue());
                                objects.add(tCompanyResp);
                            }else {
                                breakNum=1;
                                count++;
                                break;
                            }
//                            BigDecimal setValue1 = companyFeeSettingService.selectOne(new EntityWrapper<TCompanyFeeSetting>().eq("company_id", company.getId()).eq("rates_id",ratesId).eq("set_name", UserFeeSettingEnum.HAZMAT.getDesc())).getSetValue();
                        }
                        if(demandDto.getUrgent()==1){
                            tCompanyResp=new TCompanyResp();
                            TCompanyFeeSetting feeSetting1 = companyFeeSettingService.selectOne(new EntityWrapper<TCompanyFeeSetting>().eq("company_id", company.getId()).eq("rates_id", ratesId).eq("set_name", UserFeeSettingEnum.URGENT_SEE.getDesc()));
                            if(feeSetting1!=null){
                                tCompanyResp.setName(UserFeeSettingEnum.URGENT_SEE.getDesc());
                                tCompanyResp.setPrice(feeSetting1.getSetValue());
                                objects.add(tCompanyResp);
                            }else {
                                breakNum=1;
                                count++;
                                break;
                            }
//                            BigDecimal setValue1 = companyFeeSettingService.selectOne(new EntityWrapper<TCompanyFeeSetting>().eq("company_id", company.getId()).eq("rates_id",ratesId).eq("set_name", UserFeeSettingEnum.URGENT_SEE.getDesc())).getSetValue();
                        }
                        if(demandDto.getPiperpass()==1){
                            tCompanyResp=new TCompanyResp();
                            TCompanyFeeSetting feeSetting1 = companyFeeSettingService.selectOne(new EntityWrapper<TCompanyFeeSetting>().eq("company_id", company.getId()).eq("rates_id", ratesId).eq("set_name", UserFeeSettingEnum.PIERPASS.getDesc()));
                            if(feeSetting1!=null){
                                tCompanyResp.setName(UserFeeSettingEnum.PIERPASS.getDesc());
                                tCompanyResp.setPrice(feeSetting1.getSetValue());
                                objects.add(tCompanyResp);
                            }else {
                                breakNum=1;
                                count++;
                                break;
                            }
//                            BigDecimal setValue1 = companyFeeSettingService.selectOne(new EntityWrapper<TCompanyFeeSetting>().eq("company_id", company.getId()).eq("rates_id",ratesId).eq("set_name", UserFeeSettingEnum.PIERPASS.getDesc())).getSetValue();
                        }
                        if(demandDto.getCTF()==1){
                            tCompanyResp=new TCompanyResp();
                            TCompanyFeeSetting feeSetting1 = companyFeeSettingService.selectOne(new EntityWrapper<TCompanyFeeSetting>().eq("company_id", company.getId()).eq("rates_id", ratesId).eq("set_name", UserFeeSettingEnum.CTF.getDesc()));
                            if(feeSetting1!=null){
                                tCompanyResp.setName(UserFeeSettingEnum.CTF.getDesc());
                                tCompanyResp.setPrice(feeSetting1.getSetValue());
                                objects.add(tCompanyResp);
                            }else {
                                breakNum=1;
                                count++;
                                break;
                            }
//                            BigDecimal setValue1 = companyFeeSettingService.selectOne(new EntityWrapper<TCompanyFeeSetting>().eq("company_id", company.getId()).eq("rates_id",ratesId).eq("set_name", UserFeeSettingEnum.CTF.getDesc())).getSetValue();
//                            tCompanyResp.setName(UserFeeSettingEnum.CTF.getDesc());
//                            tCompanyResp.setPrice(setValue1);
//                            objects.add(tCompanyResp);
                        }
                        BigDecimal bigDecimal = objects.stream().map(e -> e.getPrice()==null?new BigDecimal(0):e.getPrice()).reduce(BigDecimal::add).get();
                        // 生成订单
                        TOrder tOrder = new TOrder();
                        tOrder.setCity(city.getId());
                        tOrder.setState(state.getId());
                        tOrder.setUserId(demandDto.getUserId());
                        tOrder.setAccessorial(demandDto.getAccessorial());
                        tOrder.setAccessorialStr(demandDto.getAccessorialStr());
                        tOrder.setPort(demandDto.getPortId());
                        tOrder.setShipmentDate(demandDto.getShipmentDate());
                        tOrder.setDeliveryDate(demandDto.getDeliveryDate());
                        tOrder.seteZipZ(s1);
                        tOrder.setCreateTime(new Date());
                        tOrder.setStartLat(String.valueOf(geocode.getLat()));
                        tOrder.setStartLon(String.valueOf(geocode.getLng()));
                        tOrder.setDeliveryStr(demandDto.getDelivery());
                        tOrder.setType(demandDto.getType());
                        tOrder.setZipCode(demandDto.getZipCode());
                        if("0".equals(demandDto.getWarehouse())){
                            tOrder.seteAddress(demandDto.getZipCode());
                        }else {
                            TWarehouse tWarehouse = warehouseService.selectOne(new EntityWrapper<TWarehouse>().eq("company_id", company.getId()).eq("code", demandDto.getWarehouse()).eq("port_id",ratesId));
                            tOrder.seteAddress(tWarehouse.getAddress());
                        }
                        tOrder.setWarehouse(demandDto.getWarehouse());
                        tOrder.setStatus("17");
                        tOrder.setInvoiceNumber(s2);
                        tOrder.setCompanyId(company.getId());
                        tOrder.setCreateTime(new Date());
                        orderService.insert(tOrder);
                        tOrders.add(tOrder);
                        tOrder.setAllTotal(bigDecimal);
                        orderService.updateById(tOrder);
                        objects.stream().forEach(e->e.setOrderId(tOrder.getId()));
@@ -467,10 +578,13 @@
                        tGoods.setLineStr(goodsDto.getLineStr());
                        tGoods1.add(tGoods);
                    }
                    goodsService.insertBatch(tGoods1);
                    if(tGoods1.size()>0){
                        goodsService.insertBatch(tGoods1);
                    }
                    String randomNumber = getRandomNumber(10);
                    String randomNumber = ToolUtil.getRandomNumber(10);
                    for (TCompanyResp object : objects) {
                        TPrice tPrice = new TPrice();
                        tPrice.setCreateTime(new Date());
@@ -482,7 +596,9 @@
                        tPrice.setNumber(randomNumber);
                        tPrices.add(tPrice);
                    }
                    priceService.insertBatch(tPrices);
                    if(tPrices.size()>0){
                        priceService.insertBatch(tPrices);
                    }
                }
                tCompanyCalculationResp.setOrderList(tOrders);
@@ -529,31 +645,63 @@
                tCompanyCalculationResp.setStartLat(String.valueOf(1));
                // 目的地经纬度
                if("0".equals(demandDto.getWarehouse())){
                if(!"0".equals(demandDto.getWarehouse())){
                    TWarehouse tWarehouse = warehouseService.selectOne(new EntityWrapper<TWarehouse>().eq("company_id", company.getId()).eq("code", demandDto.getWarehouse()).eq("port_id",ratesId));
                    System.out.println(company.getId());
                    System.out.println(ratesId);
                    GeocodeVo geocode1 = googleMapUtil.getGeocode(tWarehouse.getAddress());
                    tCompanyCalculationResp.setEndLon(String.valueOf(geocode1.getLng()));
                    tCompanyCalculationResp.setEndLat(String.valueOf(geocode1.getLat()));
                    tCompanyCalculationRespList.add(tCompanyCalculationResp);
                }else {
                    String zipCode = demandDto.getZipCode();
//                    GeocodeVo geocode1 = googleMapUtil.getGeocode(zipCode);
//                    tCompanyCalculationResp.setEndLon(String.valueOf(geocode1.getLng()));
//                    tCompanyCalculationResp.setEndLat(String.valueOf(geocode1.getLat()));
                    GeocodeVo geocode1 = googleMapUtil.getGeocode(AddressLookup.getAddress(zipCode));
                    tCompanyCalculationResp.setEndLon(String.valueOf(geocode1.getLng()));
                    tCompanyCalculationResp.setEndLat(String.valueOf(geocode1.getLat()));
//                    tCompanyCalculationResp.setEndLon(String.valueOf(1));
//                    tCompanyCalculationResp.setEndLat(String.valueOf(1));
                    tCompanyCalculationRespList.add(tCompanyCalculationResp);
                }
            }
            if(count==companies.size()){
                return  new com.stylefeng.guns.modular.system.utils.tips.ErrorTip(5001,"No truck company was matched to meet the demand");
            }
        }
        for (TCompanyCalculationResp tCompanyCalculationResp : tCompanyCalculationRespList) {
            tCompanyCalculationResp.setQuoteId(tQuote.getId());
        }
        if(0==tCompanyCalculationRespList.size()){
            return  new com.stylefeng.guns.modular.system.utils.tips.ErrorTip(5001,"No truck company was matched to meet the demand");
        }
        return new SuccessTip(tCompanyCalculationRespList);
    }
    private String getStr(String str){
        String s = "";
        String[] split = str.split(",");
        if(split.length==1){
            if(split[0].equals("CTF") || split[0].equals("URGENT FEE") || split[0].equals("PIPERPASS")){
                return s;
            }else {
                s=split[0];
                return s;
            }
        }else {
            for (int i = 0; i < split.length; i++) {
                if(!split[i].equals("CTF")&&!split[i].equals("URGENT FEE") && !split[i].equals("CTF")){
                    if(i==split.length-1){
                        s+=split[i];
                    }else {
                        s+=split[i]+",";
                    }
                }
            }
            return s;
        }
    }
    public static String getRandomNumber(int length) {
        String base = "0123456789";
@@ -583,16 +731,30 @@
        List<TOrder> orders = orderService.selectList(new EntityWrapper<TOrder>().eq("e_zip_z", quote.getOrderId()).eq("status", 0));
        ArrayList<TGoods> goods = new ArrayList<>();
        BigDecimal bigDecimal = new BigDecimal(0);
        ArrayList<TPrice> tPrices = new ArrayList<>();
        for (TOrder order : orders) {
            TGoods tGoods = goodsService.selectOne(new EntityWrapper<TGoods>().eq("order_id", order.getId()));
            goods.add(tGoods);
            bigDecimal=bigDecimal.add(order.getAllTotal());
            List<TPrice> prices = priceService.selectList(new EntityWrapper<TPrice>().eq("order_id", order.getId()));
            tPrices.addAll(prices);
        }
        Map<String, BigDecimal> sumMap = tPrices.stream()
                .collect(Collectors.groupingBy(TPrice::getType, Collectors.reducing(BigDecimal.ZERO, TPrice::getPrice, BigDecimal::add)));
        List<PriceList> pricesList = sumMap.entrySet().stream()
                .map(entry -> new PriceList(entry.getKey(), entry.getValue()))
                .collect(Collectors.toList());
        Integer userId = orders.get(0).getUserId();
        TUser tUser = userService.selectById(userId);
        String residueLimit = tUser.getResidueLimit();
        HashMap<String, Object> map = new HashMap<>();
        map.put("money",bigDecimal);
        map.put("data",goods);
        map.put("residueLimit",residueLimit);
        map.put("prices",pricesList);
        return new SuccessTip(map);
    }
    @ApiOperation(value = "发布需求-第二步/修改需求",notes="发布需求-第二步/修改需求")
@@ -835,9 +997,9 @@
        Page<TWarehouse> tWarehousePage = new Page<>(pageNumber, pageSize);
        EntityWrapper<TWarehouse> tWarehouseEntityWrapper = new EntityWrapper<>();
        tWarehouseEntityWrapper.eq("company_id",1);
        tWarehouseEntityWrapper.eq("company_id",0);
        if(Objects.nonNull(address)){
            tWarehouseEntityWrapper.like("address",address);
            tWarehouseEntityWrapper.like("code",address);
        }
        Page<TWarehouse> tWarehousePage1 = warehouseService.selectPage(tWarehousePage, tWarehouseEntityWrapper);