From 26fa723daeccb1e731ed24034ac66aa5c56c4269 Mon Sep 17 00:00:00 2001
From: liujie <liujie>
Date: 星期五, 26 五月 2023 16:50:40 +0800
Subject: [PATCH] broker 卡车公司端

---
 src/main/java/com/stylefeng/guns/modular/system/controller/DemandController.java |   75 +++++++++++++++++++++++++++++++++----
 1 files changed, 66 insertions(+), 9 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..b1ebcea 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;
@@ -226,7 +228,12 @@
                         tOrder.setInvoiceNumber(s2);
                         tOrder.setCompanyId(company.getId());
                         tOrder.setCreateTime(new Date());
-                        tOrder.seteAddress(demandDto.getEAddress());
+                        if("0".equals(demandDto.getWarehouse())){
+                            tOrder.seteAddress(demandDto.getEAddress());
+                        }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.setOrderType(1);
                         orderService.insert(tOrder);
                         tOrders.add(tOrder);
@@ -355,6 +362,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 +371,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
@@ -534,6 +569,7 @@
 
     }
 
+
     @ApiOperation(value = "需求列表",notes="需求列表")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."),
@@ -685,14 +721,35 @@
             @ApiImplicitParam(name = "address", value = "address", required = false, dataType = "String"),
             @ApiImplicitParam(name = "pageNumber", value = "pageNumber", required = true, dataType = "String"),
             @ApiImplicitParam(name = "pageSize", value = "pageSize", required = true, dataType = "String"),
+            @ApiImplicitParam(name = "portId", value = "portId", required = true, dataType = "int"),
+            @ApiImplicitParam(name = "companyId", value = "companyId", required = true, dataType = "int"),
     })
     @GetMapping(value = "/getWarehouse")
     @ResponseBody
-    public Object getWarehouse( String address,int pageNumber,int pageSize) {
+    public Object getWarehouse( String address,int pageNumber,int pageSize,int portId,int companyId) {
+        TRates tRates1 = ratesService.selectOne(new EntityWrapper<TRates>().eq("metro_id", portId).eq("type", 2).eq("company_id", companyId));
+        int ratesId=0;
+        if(tRates1!=null){
+            ratesId=tRates1.getId();
+        }else {
+            // 找出city
+            TPort tPort = portService.selectById(portId);
+            TCountry tCountry = countryService.selectById(tPort.getCity());
+            // 是否是符合的港区
+            tRates1 = ratesService.selectOne(new EntityWrapper<TRates>().eq("metro_id", tCountry.getId()).eq("type", 1).eq("company_id", companyId));
+            if(tRates1!=null){
+                ratesId=tRates1.getId();
+            }else {
+                ratesId=-1;
+            }
+//                    ratesId=tCountry.getId();
+        }
+
         Page<TWarehouse> tWarehousePage = new Page<>(pageNumber, pageSize);
 
         EntityWrapper<TWarehouse> tWarehouseEntityWrapper = new EntityWrapper<>();
-        tWarehouseEntityWrapper.eq("company_id",0);
+        tWarehouseEntityWrapper.eq("company_id",companyId);
+        tWarehouseEntityWrapper.eq("port_id",ratesId);
         if(Objects.nonNull(address)){
             tWarehouseEntityWrapper.like("address",address);
         }

--
Gitblit v1.7.1