From 0c9e25aff0133d05bdaca55d1369eb90342b0b05 Mon Sep 17 00:00:00 2001 From: liujie <liujie> Date: 星期三, 24 五月 2023 08:55:04 +0800 Subject: [PATCH] broker 卡车公司端 --- src/main/java/com/stylefeng/guns/modular/system/controller/DemandController.java | 42 ++++++++++++++++++++++++++++++++++++------ 1 files changed, 36 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/stylefeng/guns/modular/system/controller/DemandController.java b/src/main/java/com/stylefeng/guns/modular/system/controller/DemandController.java index ea901a2..3ff8cd1 100644 --- a/src/main/java/com/stylefeng/guns/modular/system/controller/DemandController.java +++ b/src/main/java/com/stylefeng/guns/modular/system/controller/DemandController.java @@ -10,10 +10,12 @@ import com.stylefeng.guns.modular.system.enums.UserFeeSettingEnum; import com.stylefeng.guns.modular.system.model.*; import com.stylefeng.guns.modular.system.service.*; +import com.stylefeng.guns.modular.system.utils.AddressLookup; import com.stylefeng.guns.modular.system.utils.ExcelUtil; import com.stylefeng.guns.modular.system.utils.GoogleMap.DistancematrixVo; import com.stylefeng.guns.modular.system.utils.GoogleMap.GeocodeVo; import com.stylefeng.guns.modular.system.utils.GoogleMap.GoogleMapUtil; +import com.stylefeng.guns.modular.system.utils.PointInPolygon; import com.stylefeng.guns.modular.system.utils.tips.ErrorTip; import com.stylefeng.guns.modular.system.utils.tips.SuccessTip; import io.swagger.annotations.Api; @@ -355,6 +357,7 @@ // 基础价格 String zipCode = demandDto.getZipCode(); + String address1 = AddressLookup.getAddress(zipCode); TCompanyBasic tCompanyBasic = companyBasicService.selectOne(new EntityWrapper<TCompanyBasic>().eq("port_id",ratesId).eq("zip_code", zipCode).eq("type", 1)); if(Objects.nonNull(tCompanyBasic)){ tCompanyResp=new TCompanyResp(); @@ -363,12 +366,39 @@ objects.add(tCompanyResp); }else { // 画圈 拿到的zipcode集合 去对比当前zipcode是否在集合中 - TCompanyBasic type = companyBasicService.selectOne(new EntityWrapper<TCompanyBasic>().eq("type", 2).eq("port_id",ratesId).like("zip_code", zipCode)); - if(Objects.nonNull(type)){ - tCompanyResp=new TCompanyResp(); - tCompanyResp.setPrice(type.getFee()); - tCompanyResp.setName("LH+FSC"); - objects.add(tCompanyResp); + // 画圈 拿到的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); + for (TCompanyBasic companyBasic : type) { + boolean inPolygon = PointInPolygon.isInPolygon(geocode1.getLat(), geocode1.getLng(), companyBasic.getLonLat()); + if(inPolygon){ + tCompanyResp=new TCompanyResp(); + tCompanyResp.setPrice(type.get(0).getFee()); + tCompanyResp.setName("LH+FSC"); + objects.add(tCompanyResp); + break; + } + } + if(tCompanyResp==null){ + // 距离 + tCompanyResp=new TCompanyResp(); + // 1条数据 不需要zipcode + DistancematrixVo distancematrix = googleMapUtil.getDistancematrix(address, address1); + double distance = distancematrix.getDistance().doubleValue(); + BigDecimal bigDecimal = new BigDecimal(distance * 0.0006214); + List<TCompanyBasic> type1 = companyBasicService.selectList(new EntityWrapper<TCompanyBasic>().eq("type", 3).eq("port_id",ratesId).le("start",bigDecimal.doubleValue()).orderBy("start",true)); + if(type1.size()>0) { + BigDecimal multiply = type1.get(0).getFee().multiply(bigDecimal); + tCompanyResp.setPrice(multiply); + tCompanyResp.setName("LH+FSC"); + objects.add(tCompanyResp); + }else { + tCompanyResp.setPrice(new BigDecimal(0)); + tCompanyResp.setName("LH+FSC"); + objects.add(tCompanyResp); + } + } }else { tCompanyResp=new TCompanyResp(); // 1条数据 不需要zipcode -- Gitblit v1.7.1