From 8d7dbd6d2c0775d45043474c1525ad827b4cd3bd Mon Sep 17 00:00:00 2001
From: liujie <liujie>
Date: 星期四, 31 八月 2023 11:59:55 +0800
Subject: [PATCH] 用户端代码  49码头

---
 src/main/java/com/stylefeng/guns/modular/system/model/TCompanyResp.java                              |    3 
 src/main/java/com/stylefeng/guns/modular/system/utils/ChassisRentalDaysUtil.java                     |   42 +
 src/main/java/com/stylefeng/guns/modular/system/model/TransportInfo.java                             |   12 
 src/main/java/com/stylefeng/guns/modular/system/model/OrderDriverInfo.java                           |    2 
 src/main/java/com/stylefeng/guns/modular/system/utils/PortUtil/FortyNineUtil.java                    |  170 ++++
 src/main/java/com/stylefeng/guns/modular/system/utils/PortUtil/SCACEnum.java                         |  140 +++
 src/main/java/com/stylefeng/guns/core/common/exception/BizExceptionEnum.java                         |    1 
 src/main/java/com/stylefeng/guns/modular/system/enums/UserFeeSettingEnum.java                        |    2 
 src/main/java/com/stylefeng/guns/modular/system/utils/HttpRequest.java                               |    2 
 src/main/java/com/stylefeng/guns/modular/system/utils/PortUtil/LBCTStrategy.java                     |  125 +++
 src/main/java/com/stylefeng/guns/modular/system/model/OrderInfo.java                                 |    2 
 src/main/java/com/stylefeng/guns/modular/system/controller/OrderController.java                      |  128 +++
 src/main/java/com/stylefeng/guns/modular/system/utils/PortUtil/APMStrategy.java                      |  152 ++++
 src/main/java/com/stylefeng/guns/modular/system/dao/TOrderMapper.java                                |    3 
 src/main/java/com/stylefeng/guns/modular/system/model/ReceivableVo.java                              |    2 
 src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderServiceImpl.java                  |   82 ++
 src/main/java/com/stylefeng/guns/modular/system/utils/PortUtil/WharfStrategy.java                    |    7 
 src/main/java/com/stylefeng/guns/modular/system/utils/TerminalInterfaceAcquisitionUtil.java          |  270 +++---
 src/main/java/com/stylefeng/guns/modular/system/controller/DemandController.java                     |  481 ++++++++++--
 src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderMapper.xml                         |    7 
 src/main/java/com/stylefeng/guns/modular/system/utils/PortUtil/FMSStrategy.java                      |   78 ++
 src/main/java/com/stylefeng/guns/modular/system/utils/PortUtil/StrategyContext.java                  |   30 
 src/main/java/com/stylefeng/guns/modular/system/utils/GoogleMap/GoogleMapUtil.java                   |  128 +-
 src/main/java/com/stylefeng/guns/modular/system/model/TGoods.java                                    |   30 
 src/main/java/com/stylefeng/guns/modular/system/model/TPrice.java                                    |   11 
 src/main/java/com/stylefeng/guns/modular/system/utils/PortUtil/TerminalInterfaceAcquisitionUtil.java |   20 
 src/main/java/com/stylefeng/guns/modular/system/utils/PortUtil/WharfEnum.java                        |   16 
 src/main/java/com/stylefeng/guns/modular/system/service/impl/TCompanyServiceImpl.java                |   57 +
 src/main/java/com/stylefeng/guns/modular/system/utils/PortUtil/ITSStrategy.java                      |  130 +++
 src/main/java/com/stylefeng/guns/modular/system/service/ITOrderService.java                          |    7 
 src/main/resources/application.yml                                                                   |    7 
 src/main/java/com/stylefeng/guns/modular/system/warpper/TerminaleDataWarpper.java                    |   11 
 32 files changed, 1,810 insertions(+), 348 deletions(-)

diff --git a/src/main/java/com/stylefeng/guns/core/common/exception/BizExceptionEnum.java b/src/main/java/com/stylefeng/guns/core/common/exception/BizExceptionEnum.java
index 2f1812b..d35d980 100644
--- a/src/main/java/com/stylefeng/guns/core/common/exception/BizExceptionEnum.java
+++ b/src/main/java/com/stylefeng/guns/core/common/exception/BizExceptionEnum.java
@@ -34,6 +34,7 @@
     CANT_DELETE_ADMIN(600, "不能删除超级管理员"),
     CANT_FREEZE_ADMIN(600, "不能冻结超级管理员"),
     CANT_CHANGE_ADMIN(600, "不能修改超级管理员角色"),
+    REQUEST_EMPTY_ERROR(500, "请求参数不能为空"),
 
     /**
      * 账户问题
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 1c6862b..f473abd 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
@@ -11,13 +11,10 @@
 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.*;
 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.UserInfoUtil;
 import com.stylefeng.guns.modular.system.utils.tips.SuccessTip;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
@@ -34,6 +31,7 @@
 import javax.servlet.http.HttpServletResponse;
 import java.io.OutputStream;
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
 import java.util.*;
@@ -133,14 +131,14 @@
         tQuote.setUserId(demandDto.getUserId());
         quoteService.insert(tQuote);
 
-//        List<TUserFeeSetting> tUserFeeSettings=null;
-//        //获取当前用户的sale
-//        Integer userId = demandDto.getUserId();
+        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()));
-//
+        tUserFeeSettings = userFeeSettingService.selectList(new EntityWrapper<TUserFeeSetting>().eq("user_id",userId).isNotNull("fee").gt("fee",0));
+
 //        }
 
 
@@ -224,7 +222,6 @@
         TCountry city = countryService.selectById(tPort.getCity());
         TCountry state = countryService.selectById(city.getParentId());
         String address = tPort.getAddress();
-//        GeocodeVo geocode = googleMapUtil.getGeocode(address);
 
         List<TCompanyCalculationResp> tCompanyCalculationRespList = new ArrayList<>(tCompanyList.size());
 
@@ -264,18 +261,37 @@
 
                     List<GoodsDto> list = goodsListDto.getList();
                     ArrayList<TGoods> tGoods1 = new ArrayList<>();
+                    objects = new ArrayList<>();
+                    Long orderId= null;
                     for (GoodsDto goodsDto : list) {
+                        tPrices = new ArrayList<>();
+                        objects = new ArrayList<>();
                         TCompanyResp tCompanyResp = new TCompanyResp();
                         if("0".equals(demandDto.getWarehouse())){
                             tCompanyResp=new 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;
+//                                breakNum=1;
+//                                count++;
+//                                break;
                             }else {
                                 tCompanyResp.setName(demandDto.getDelivery());
-                                tCompanyResp.setPrice(feeSetting.getSetValue());
+                                if(tUserFeeSettings!=null){
+                                    List<TUserFeeSetting> collect = tUserFeeSettings.stream().filter(e -> e.getName().equals(demandDto.getDelivery())).collect(Collectors.toList());
+                                    if(collect.size()>0){
+                                        BigDecimal bigDecimal = new BigDecimal(collect.get(0).getFee().doubleValue() / 100).multiply(feeSetting.getSetValue()).setScale(2, RoundingMode.HALF_UP);
+                                        tCompanyResp.setAdminPrice(feeSetting.getSetValue().add(bigDecimal));
+                                        tCompanyResp.setPrice(feeSetting.getSetValue());
+                                    }else {
+                                        tCompanyResp.setAdminPrice(feeSetting.getSetValue());
+                                        tCompanyResp.setPrice(feeSetting.getSetValue());
+                                    }
+                                }else {
+                                    tCompanyResp.setAdminPrice(feeSetting.getSetValue());
+                                    tCompanyResp.setPrice(feeSetting.getSetValue());
+                                }
+//                                tCompanyResp.setPrice(feeSetting.getSetValue());
+//                                tCompanyResp.setAdminPrice(feeSetting.getSetValue());
                                 objects.add(tCompanyResp);
                             }
 
@@ -283,33 +299,69 @@
                             String zipCode = demandDto.getZipCode();
                             // 地址信息
                             String address1 = AddressLookup.getAddress(zipCode);
+                            System.out.println("地址信息+"+address1);
 
                             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));
+                            System.out.println(tCompanyBasic);
+
                             if(tCompanyBasic.size()>0){
+                                System.out.println("点对点++++++++++++");
                                 tCompanyResp=new TCompanyResp();
-                                tCompanyResp.setPrice(tCompanyBasic.get(0).getFee());
+                                if(tUserFeeSettings!=null){
+                                    List<TUserFeeSetting> collect = tUserFeeSettings.stream().filter(e -> e.getName().equals("LH+FSC")).collect(Collectors.toList());
+                                    if(collect.size()>0){
+                                        BigDecimal bigDecimal = new BigDecimal(collect.get(0).getFee().doubleValue() / 100).multiply(tCompanyBasic.get(0).getFee()).setScale(2, RoundingMode.HALF_UP);
+                                        tCompanyResp.setPrice(tCompanyBasic.get(0).getFee());
+                                        tCompanyResp.setAdminPrice(tCompanyBasic.get(0).getFee().add(bigDecimal));
+                                    }else {
+                                        tCompanyResp.setPrice(tCompanyBasic.get(0).getFee());
+                                        tCompanyResp.setAdminPrice(tCompanyBasic.get(0).getFee());
+                                    }
+                                }else {
+                                    tCompanyResp.setPrice(tCompanyBasic.get(0).getFee());
+                                    tCompanyResp.setAdminPrice(tCompanyBasic.get(0).getFee());
+                                }
+
                                 tCompanyResp.setName("LH+FSC");
                                 objects.add(tCompanyResp);
                             }else {
                                 // 画圈 拿到的zipcode集合 去对比当前zipcode是否在集合中
                                 List<TCompanyBasic> type = companyBasicService.selectList(new EntityWrapper<TCompanyBasic>().eq("type", 2).eq("port_id",ratesId).orderBy("fee",true));
+                                System.out.println(type);
+                                tCompanyResp=new TCompanyResp();
                                 if(type.size()>0){
-                                    GeocodeVo geocode1 = googleMapUtil.getGeocode(address1  );
+                                    GeocodeVo geocode1 = googleMapUtil.getGeocode(address1);
+                                    System.out.println("谷歌终点经纬度"+geocode1.getLat()+"|"+geocode1.getLng());
                                     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());
+                                            if(tUserFeeSettings!=null){
+                                                List<TUserFeeSetting> collect = tUserFeeSettings.stream().filter(e -> e.getName().equals("LH+FSC")).collect(Collectors.toList());
+                                                if(collect.size()>0){
+                                                    BigDecimal bigDecimal = new BigDecimal(collect.get(0).getFee().doubleValue() / 100).multiply(companyBasic.getFee()).setScale(2, RoundingMode.HALF_UP);
+                                                    tCompanyResp.setPrice(companyBasic.getFee());
+                                                    tCompanyResp.setAdminPrice(companyBasic.getFee().add(bigDecimal));
+                                                }else {
+                                                    tCompanyResp.setPrice(companyBasic.getFee());
+                                                    tCompanyResp.setAdminPrice(companyBasic.getFee());
+                                                }
+                                            }else {
+                                                tCompanyResp.setPrice(companyBasic.getFee());
+                                                tCompanyResp.setAdminPrice(companyBasic.getFee());
+                                            }
+
+//                                            tCompanyResp.setPrice(companyBasic.getFee());
+//                                            tCompanyResp.setAdminPrice(companyBasic.getFee());
                                             tCompanyResp.setName("LH+FSC");
                                             objects.add(tCompanyResp);
                                             break;
                                         }
                                     }
-                                    if(tCompanyResp==null){
+                                    if(tCompanyResp==null || "".equals(tCompanyResp.getName()) || tCompanyResp.getName()==null){
                                         // 距离
                                         tCompanyResp=new TCompanyResp();
                                         // 1条数据  不需要zipcode
@@ -319,7 +371,23 @@
                                         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);
+
+                                            if(tUserFeeSettings!=null){
+                                                List<TUserFeeSetting> collect = tUserFeeSettings.stream().filter(e -> e.getName().equals("LH+FSC")).collect(Collectors.toList());
+                                                if(collect.size()>0){
+                                                    BigDecimal bigDecimal1 = new BigDecimal(collect.get(0).getFee().doubleValue() / 100).multiply(multiply).setScale(2, RoundingMode.HALF_UP);
+                                                    tCompanyResp.setPrice(multiply);
+                                                    tCompanyResp.setAdminPrice(multiply.add(bigDecimal1));
+                                                }else {
+                                                    tCompanyResp.setPrice(multiply);
+                                                    tCompanyResp.setAdminPrice(multiply);
+                                                }
+                                            }else {
+                                                tCompanyResp.setPrice(multiply);
+                                                tCompanyResp.setAdminPrice(multiply);
+                                            }
+//                                            tCompanyResp.setPrice(multiply);
+//                                            tCompanyResp.setAdminPrice(multiply);
                                             tCompanyResp.setName("LH+FSC");
                                             objects.add(tCompanyResp);
                                         }else {
@@ -338,7 +406,20 @@
                                     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);
+                                        if(tUserFeeSettings!=null){
+                                            List<TUserFeeSetting> collect = tUserFeeSettings.stream().filter(e -> e.getName().equals("LH+FSC")).collect(Collectors.toList());
+                                            if(collect.size()>0){
+                                                BigDecimal bigDecimal1 = new BigDecimal(collect.get(0).getFee().doubleValue() / 100).multiply(multiply).setScale(2, RoundingMode.HALF_UP);
+                                                tCompanyResp.setPrice(multiply);
+                                                tCompanyResp.setAdminPrice(multiply.add(bigDecimal1));
+                                            }else {
+                                                tCompanyResp.setPrice(multiply);
+                                                tCompanyResp.setAdminPrice(multiply);
+                                            }
+                                        }else {
+                                            tCompanyResp.setPrice(multiply);
+                                            tCompanyResp.setAdminPrice(multiply);
+                                        }
                                         tCompanyResp.setName("LH+FSC");
                                         objects.add(tCompanyResp);
                                     }else {
@@ -353,37 +434,57 @@
                             tCompanyResp=new TCompanyResp();
                             TWarehouse tWarehouse = warehouseService.selectOne(new EntityWrapper<TWarehouse>().eq("company_id", company.getId()).eq("code", demandDto.getWarehouse()).eq("port_id",ratesId));
                             tCompanyResp.setName(UserFeeSettingEnum.LH_FSH.getDesc());
-                            if(Objects.nonNull(tWarehouse)){
+                            if(Objects.nonNull(tWarehouse) && tWarehouse.getWarePrice().doubleValue()>0){
                                 tCompanyResp.setPrice(tWarehouse.getWarePrice());
+                                tCompanyResp.setAdminPrice(tWarehouse.getWarePrice());
                             }else {
-                                tCompanyResp.setPrice(new BigDecimal("0"));
+                                breakNum=1;
+                                count++;
+                                break;
                             }
                             objects.add(tCompanyResp);
                         }
 
                         // 是否超重
                         Integer weight = goodsDto.getWeight();
-                        long between = DateUtil.between(demandDto.getShipmentDate(), demandDto.getDeliveryDate(), DateUnit.DAY);
+//                        long between = DateUtil.between(demandDto.getShipmentDate(), demandDto.getDeliveryDate(), DateUnit.DAY);
                         String arg1 = tPort.getName();
                         String arg2="";
                         if(!"0".equals(demandDto.getWarehouse())){
+                            System.out.println("公司id:"+company.getId());
+                            System.out.println("公司ratesId:"+ratesId);
                             TWarehouse tWarehouse = warehouseService.selectOne(new EntityWrapper<TWarehouse>().eq("company_id", company.getId()).eq("code", demandDto.getWarehouse()).eq("port_id",ratesId));
-                            arg2=tWarehouse.getCity();
+                            if(tWarehouse==null){
+                                breakNum=1;
+                                count++;
+                                break;
+                            }
+                            arg2=tWarehouse.getZipCode();
                         }else {
-                            arg2 = AddressLookup.getAddress(demandDto.getZipCode());
+                            arg2 = 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;
-                        }
+                        System.out.println("arg2:"+arg2);
+                        DistancematrixVo distancematrix = googleMapUtil.getDistancematrix(tPort.getAddress(), arg2);
+                        String arg3=String.valueOf(distancematrix.getDistance()/1609);
+                        String arg4= demandDto.getList().get(0).getShippingLine();
+                        String arg5 = demandDto.getType();
+                        GoodsDto goodsDto1 = demandDto.getList().get(0).getList().get(0);
+                        String arg6 =goodsDto1.getSize()+"ft";
+                        String arg7="None";
+                        String arg8 = goodsDto1.getKg();
+                        System.out.println("参数:"+arg1+"|"+arg2+"|"+arg3+"|"+arg4+"|"+arg5+"|"+arg6+"|"+arg7+"|"+arg8);
+//                        arg1="WBCT";
+//                        arg2="Ontario";
+//                        arg3="55";
+//                        arg4="COSCO";
+//                        arg5="Drop & hook";
+//                        arg6="40ft";
+//                        arg7="None";
+//                        arg8="44806";
+                        BigDecimal days = new BigDecimal(ChassisRentalDaysUtil.chassisRentalDays(1, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8)).setScale(0, RoundingMode.HALF_UP);
+//                        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){
@@ -393,7 +494,20 @@
                             }else {
                                 tCompanyResp=new TCompanyResp();
                                 tCompanyResp.setName(UserFeeSettingEnum.OVERWEIGHT.getDesc());
-                                tCompanyResp.setPrice(feeSetting.getSetValue());
+                                if(tUserFeeSettings!=null){
+                                    List<TUserFeeSetting> collect = tUserFeeSettings.stream().filter(e -> e.getName().equals(UserFeeSettingEnum.OVERWEIGHT.getDesc())).collect(Collectors.toList());
+                                    if(collect.size()>0){
+                                        BigDecimal bigDecimal = new BigDecimal(collect.get(0).getFee().doubleValue() / 100).multiply(feeSetting.getSetValue()).setScale(2, RoundingMode.HALF_UP);
+                                        tCompanyResp.setAdminPrice(feeSetting.getSetValue().add(bigDecimal));
+                                        tCompanyResp.setPrice(feeSetting.getSetValue());
+                                    }else {
+                                        tCompanyResp.setAdminPrice(feeSetting.getSetValue());
+                                        tCompanyResp.setPrice(feeSetting.getSetValue());
+                                    }
+                                }else {
+                                    tCompanyResp.setAdminPrice(feeSetting.getSetValue());
+                                    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"));
@@ -404,8 +518,21 @@
                             }else {
                                 tCompanyResp=new TCompanyResp();
                                 tCompanyResp.setName(UserFeeSettingEnum.CHASSIS_FEE.getDesc());
-//                                tCompanyResp.setPrice(feeSetting1.getSetValue().multiply(days));
-                                tCompanyResp.setPrice(feeSetting1.getSetValue().multiply(new BigDecimal(between)));
+                                if(tUserFeeSettings!=null){
+                                    List<TUserFeeSetting> collect = tUserFeeSettings.stream().filter(e -> e.getName().equals(UserFeeSettingEnum.CHASSIS_FEE.getDesc())).collect(Collectors.toList());
+                                    if(collect.size()>0){
+                                        BigDecimal bigDecimal = new BigDecimal(collect.get(0).getFee().doubleValue() / 100).multiply(feeSetting1.getSetValue()).setScale(2, RoundingMode.HALF_UP);
+                                        tCompanyResp.setAdminPrice(feeSetting1.getSetValue().add(bigDecimal));
+                                        tCompanyResp.setPrice(feeSetting1.getSetValue());
+                                    }else {
+                                        tCompanyResp.setAdminPrice(feeSetting1.getSetValue());
+                                        tCompanyResp.setPrice(feeSetting1.getSetValue());
+                                    }
+                                }else {
+                                    tCompanyResp.setAdminPrice(feeSetting1.getSetValue());
+                                    tCompanyResp.setPrice(feeSetting1.getSetValue());
+                                }
+                                tCompanyResp.setDay(days.toString());
                                 objects.add(tCompanyResp);
                             }
                         }else {
@@ -417,8 +544,23 @@
                                 count++;
                                 break;
                             }else {
-//                                tCompanyResp.setPrice(feeSetting.getSetValue().multiply(days));
-                                tCompanyResp.setPrice(feeSetting.getSetValue().multiply(new BigDecimal(between)));
+                                if(tUserFeeSettings!=null){
+                                    List<TUserFeeSetting> collect = tUserFeeSettings.stream().filter(e -> e.getName().equals(UserFeeSettingEnum.CHASSIS_FEE.getDesc())).collect(Collectors.toList());
+                                    if(collect.size()>0){
+                                        BigDecimal bigDecimal = new BigDecimal(collect.get(0).getFee().doubleValue() / 100).multiply(feeSetting.getSetValue().multiply(days)).setScale(2, RoundingMode.HALF_UP);
+                                        tCompanyResp.setAdminPrice(feeSetting.getSetValue().multiply(days).add(bigDecimal));
+                                        tCompanyResp.setPrice(feeSetting.getSetValue().multiply(days));
+                                    }else {
+                                        tCompanyResp.setAdminPrice(feeSetting.getSetValue().multiply(days));
+                                        tCompanyResp.setPrice(feeSetting.getSetValue().multiply(days));
+                                    }
+                                }else {
+                                    tCompanyResp.setAdminPrice(feeSetting.getSetValue().multiply(days));
+                                    tCompanyResp.setPrice(feeSetting.getSetValue().multiply(days));
+                                }
+
+                                tCompanyResp.setDay(days.toString());
+//                                tCompanyResp.setPrice(feeSetting.getSetValue().multiply(new BigDecimal(between)));
                             }
                             objects.add(tCompanyResp);
                         }
@@ -431,9 +573,21 @@
                                 tCompanyResp.setName(UserFeeSettingEnum.PREPULL.getDesc());
                                 tCompanyResp.setPrice(new BigDecimal(0));
                             }else {
-                                BigDecimal setValue = feeSetting.getSetValue();
+                                if(tUserFeeSettings!=null){
+                                    List<TUserFeeSetting> collect = tUserFeeSettings.stream().filter(e -> e.getName().equals(UserFeeSettingEnum.PREPULL.getDesc())).collect(Collectors.toList());
+                                    if(collect.size()>0){
+                                        BigDecimal bigDecimal = new BigDecimal(collect.get(0).getFee().doubleValue() / 100).multiply(feeSetting.getSetValue()).setScale(2, RoundingMode.HALF_UP);
+                                        tCompanyResp.setAdminPrice(feeSetting.getSetValue().add(bigDecimal));
+                                        tCompanyResp.setPrice(feeSetting.getSetValue());
+                                    }else {
+                                        tCompanyResp.setAdminPrice(feeSetting.getSetValue());
+                                        tCompanyResp.setPrice(feeSetting.getSetValue());
+                                    }
+                                }else {
+                                    tCompanyResp.setAdminPrice(feeSetting.getSetValue());
+                                    tCompanyResp.setPrice(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();
 
@@ -443,34 +597,91 @@
                         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){
+                            days = new BigDecimal(ChassisRentalDaysUtil.chassisRentalDays(4, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8)).setScale(0, RoundingMode.HALF_UP);
                             tCompanyResp.setName(UserFeeSettingEnum.DETENTION_CONGESTION.getDesc());
-                            tCompanyResp.setPrice(feeSetting.getSetValue());
+//                            tCompanyResp.setPrice(feeSetting.getSetValue().multiply(days));
+                            tCompanyResp.setDay(days.toString());
+
+                            if(tUserFeeSettings!=null){
+                                List<TUserFeeSetting> collect = tUserFeeSettings.stream().filter(e -> e.getName().equals(UserFeeSettingEnum.DETENTION_CONGESTION.getDesc())).collect(Collectors.toList());
+                                if(collect.size()>0){
+                                    BigDecimal bigDecimal = new BigDecimal(collect.get(0).getFee().doubleValue() / 100).multiply(feeSetting.getSetValue().multiply(days)).setScale(2, RoundingMode.HALF_UP);
+                                    tCompanyResp.setAdminPrice(feeSetting.getSetValue().multiply(days).add(bigDecimal));
+                                    tCompanyResp.setPrice(feeSetting.getSetValue().multiply(days));
+                                }else {
+                                    tCompanyResp.setAdminPrice(feeSetting.getSetValue().multiply(days));
+                                    tCompanyResp.setPrice(feeSetting.getSetValue().multiply(days));
+                                }
+                            }else {
+                                tCompanyResp.setAdminPrice(feeSetting.getSetValue().multiply(days));
+                                tCompanyResp.setPrice(feeSetting.getSetValue().multiply(days));
+                            }
+
                         }else {
                             tCompanyResp.setName(UserFeeSettingEnum.DETENTION_CONGESTION.getDesc());
                             tCompanyResp.setPrice(new BigDecimal(0));
+                            tCompanyResp.setAdminPrice(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));
-//                        }
+                        tCompanyResp=new TCompanyResp();
+                        days = new BigDecimal(ChassisRentalDaysUtil.chassisRentalDays(2, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8)).add(new BigDecimal(ChassisRentalDaysUtil.chassisRentalDays(3, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8))).setScale(0, RoundingMode.HALF_UP);
+                        System.out.println("仓储费"+days);
+                        TCompanyFeeSetting storage = companyFeeSettingService.selectOne(new EntityWrapper<TCompanyFeeSetting>().eq("company_id", company.getId()).eq("rates_id", ratesId).eq("set_name", UserFeeSettingEnum.STORAGE.getDesc()));
+                        System.out.println(storage);
+                        if(storage!=null){
+                            tCompanyResp.setName(UserFeeSettingEnum.STORAGE.getDesc());
+//                            tCompanyResp.setPrice(storage.getSetValue().multiply(days));
+
+                            if(tUserFeeSettings!=null){
+                                List<TUserFeeSetting> collect = tUserFeeSettings.stream().filter(e -> e.getName().equals(UserFeeSettingEnum.STORAGE.getDesc())).collect(Collectors.toList());
+                                if(collect.size()>0){
+                                    BigDecimal bigDecimal = new BigDecimal(collect.get(0).getFee().doubleValue() / 100).multiply(storage.getSetValue().multiply(days)).setScale(2, RoundingMode.HALF_UP);
+                                    tCompanyResp.setAdminPrice(storage.getSetValue().multiply(days).add(bigDecimal));
+                                    tCompanyResp.setPrice(storage.getSetValue().multiply(days));
+                                }else {
+                                    tCompanyResp.setAdminPrice(storage.getSetValue().multiply(days));
+                                    tCompanyResp.setPrice(storage.getSetValue().multiply(days));
+                                }
+                            }else {
+                                tCompanyResp.setAdminPrice(storage.getSetValue().multiply(days));
+                                tCompanyResp.setPrice(storage.getSetValue().multiply(days));
+                            }
+
+
+                            tCompanyResp.setDay(days.toString());
+                            objects.add(tCompanyResp);
+                        }else {
+                            tCompanyResp.setName(UserFeeSettingEnum.STORAGE.getDesc());
+                            tCompanyResp.setPrice(new BigDecimal(0));
+                            objects.add(tCompanyResp);
+                        }
+
 
                         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());
+//                                tCompanyResp.setPrice(feeSetting1.getSetValue());
+
+                                if(tUserFeeSettings!=null){
+                                    List<TUserFeeSetting> collect = tUserFeeSettings.stream().filter(e -> e.getName().equals(UserFeeSettingEnum.HAZMAT.getDesc())).collect(Collectors.toList());
+                                    if(collect.size()>0){
+                                        BigDecimal bigDecimal = new BigDecimal(collect.get(0).getFee().doubleValue() / 100).multiply(feeSetting1.getSetValue()).setScale(2, RoundingMode.HALF_UP);
+                                        tCompanyResp.setAdminPrice(feeSetting1.getSetValue().add(bigDecimal));
+                                        tCompanyResp.setPrice(feeSetting1.getSetValue());
+                                    }else {
+                                        tCompanyResp.setAdminPrice(feeSetting1.getSetValue());
+                                        tCompanyResp.setPrice(feeSetting1.getSetValue());
+                                    }
+                                }else {
+                                    tCompanyResp.setAdminPrice(feeSetting1.getSetValue());
+                                    tCompanyResp.setPrice(feeSetting1.getSetValue());
+                                }
                                 objects.add(tCompanyResp);
                             }else {
                                 breakNum=1;
@@ -485,7 +696,23 @@
                             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());
+
+
+                                if(tUserFeeSettings!=null){
+                                    List<TUserFeeSetting> collect = tUserFeeSettings.stream().filter(e -> e.getName().equals(UserFeeSettingEnum.URGENT_SEE.getDesc())).collect(Collectors.toList());
+                                    if(collect.size()>0){
+                                        BigDecimal bigDecimal = new BigDecimal(collect.get(0).getFee().doubleValue() / 100).multiply(feeSetting1.getSetValue()).setScale(2, RoundingMode.HALF_UP);
+                                        tCompanyResp.setAdminPrice(feeSetting1.getSetValue().add(bigDecimal));
+                                        tCompanyResp.setPrice(feeSetting1.getSetValue());
+                                    }else {
+                                        tCompanyResp.setAdminPrice(feeSetting1.getSetValue());
+                                        tCompanyResp.setPrice(feeSetting1.getSetValue());
+                                    }
+                                }else {
+                                    tCompanyResp.setAdminPrice(feeSetting1.getSetValue());
+                                    tCompanyResp.setPrice(feeSetting1.getSetValue());
+                                }
+//                                tCompanyResp.setPrice(feeSetting1.getSetValue());
                                 objects.add(tCompanyResp);
                             }else {
                                 breakNum=1;
@@ -500,7 +727,20 @@
                             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());
+                                if(tUserFeeSettings!=null){
+                                    List<TUserFeeSetting> collect = tUserFeeSettings.stream().filter(e -> e.getName().equals(UserFeeSettingEnum.PIERPASS.getDesc())).collect(Collectors.toList());
+                                    if(collect.size()>0){
+                                        BigDecimal bigDecimal = new BigDecimal(collect.get(0).getFee().doubleValue() / 100).multiply(feeSetting1.getSetValue()).setScale(2, RoundingMode.HALF_UP);
+                                        tCompanyResp.setAdminPrice(feeSetting1.getSetValue().add(bigDecimal));
+                                        tCompanyResp.setPrice(feeSetting1.getSetValue());
+                                    }else {
+                                        tCompanyResp.setAdminPrice(feeSetting1.getSetValue());
+                                        tCompanyResp.setPrice(feeSetting1.getSetValue());
+                                    }
+                                }else {
+                                    tCompanyResp.setAdminPrice(feeSetting1.getSetValue());
+                                    tCompanyResp.setPrice(feeSetting1.getSetValue());
+                                }
                                 objects.add(tCompanyResp);
                             }else {
                                 breakNum=1;
@@ -514,7 +754,20 @@
                             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());
+                                if(tUserFeeSettings!=null){
+                                    List<TUserFeeSetting> collect = tUserFeeSettings.stream().filter(e -> e.getName().equals(UserFeeSettingEnum.CTF.getDesc())).collect(Collectors.toList());
+                                    if(collect.size()>0){
+                                        BigDecimal bigDecimal = new BigDecimal(collect.get(0).getFee().doubleValue() / 100).multiply(feeSetting1.getSetValue()).setScale(2, RoundingMode.HALF_UP);
+                                        tCompanyResp.setAdminPrice(feeSetting1.getSetValue().add(bigDecimal));
+                                        tCompanyResp.setPrice(feeSetting1.getSetValue());
+                                    }else {
+                                        tCompanyResp.setAdminPrice(feeSetting1.getSetValue());
+                                        tCompanyResp.setPrice(feeSetting1.getSetValue());
+                                    }
+                                }else {
+                                    tCompanyResp.setAdminPrice(feeSetting1.getSetValue());
+                                    tCompanyResp.setPrice(feeSetting1.getSetValue());
+                                }
                                 objects.add(tCompanyResp);
                             }else {
                                 breakNum=1;
@@ -549,7 +802,7 @@
                         tOrder.setType(demandDto.getType());
                         tOrder.setZipCode(demandDto.getZipCode());
                         if("0".equals(demandDto.getWarehouse())){
-                            tOrder.seteAddress(demandDto.getZipCode());
+                            tOrder.seteAddress(AddressLookup.getAddress(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());
@@ -565,7 +818,7 @@
                         tOrder.setAllTotal(bigDecimal);
                         orderService.updateById(tOrder);
                         objects.stream().forEach(e->e.setOrderId(tOrder.getId()));
-
+                        orderId= tOrder.getId();
                         TGoods tGoods = new TGoods();
                         tGoods.setShippingLine(goodsListDto.getShippingLine());
                         tGoods.setDanger(goodsListDto.getDanger());
@@ -577,6 +830,24 @@
                         tGoods.setTypeClass(goodsDto.getTypeClass());
                         tGoods.setLineStr(goodsDto.getLineStr());
                         tGoods1.add(tGoods);
+
+                        String randomNumber = ToolUtil.getRandomNumber(10);
+                        for (TCompanyResp object : objects) {
+                            TPrice tPrice = new TPrice();
+                            tPrice.setCreateTime(new Date());
+                            tPrice.setOrderId(orderId);
+                            tPrice.setState("1");
+                            tPrice.setPrice(object.getAdminPrice());
+                            tPrice.setCarPrice(object.getPrice());
+                            tPrice.setType(object.getName());
+                            tPrice.setStatus(1);
+                            tPrice.setNumber(randomNumber);
+                            tPrice.setDay(object.getDay());
+                            tPrices.add(tPrice);
+                        }
+                        if(tPrices.size()>0){
+                            priceService.insertBatch(tPrices);
+                        }
                     }
                     if(tGoods1.size()>0){
 
@@ -584,21 +855,7 @@
                     }
 
 
-                    String randomNumber = ToolUtil.getRandomNumber(10);
-                    for (TCompanyResp object : objects) {
-                        TPrice tPrice = new TPrice();
-                        tPrice.setCreateTime(new Date());
-                        tPrice.setOrderId(object.getOrderId());
-                        tPrice.setState("1");
-                        tPrice.setPrice(object.getPrice());
-                        tPrice.setType(object.getName());
-                        tPrice.setStatus(1);
-                        tPrice.setNumber(randomNumber);
-                        tPrices.add(tPrice);
-                    }
-                    if(tPrices.size()>0){
-                        priceService.insertBatch(tPrices);
-                    }
+
                 }
 
                 tCompanyCalculationResp.setOrderList(tOrders);
@@ -679,7 +936,11 @@
     }
 
 
+
     private String getStr(String str){
+        if(str==null){
+            return null;
+        }
         String s = "";
         String[] split = str.split(",");
         if(split.length==1){
@@ -691,7 +952,7 @@
             }
         }else {
             for (int i = 0; i < split.length; i++) {
-                if(!split[i].equals("CTF")&&!split[i].equals("URGENT FEE") && !split[i].equals("CTF")){
+                if(!split[i].equals("CTF")&&!split[i].equals("URGENT FEE") && !split[i].equals("PIPERPASS")){
                     if(i==split.length-1){
                         s+=split[i];
                     }else {
@@ -775,9 +1036,22 @@
         List<TOrder> orders = new ArrayList<>();
         for (DemandDtoTwo dtoTwo : demandDtoTwo.getDemandDtoTwo()) {
             TOrder tOrder = new TOrder();
-            BeanUtil.copyProperties(dtoTwo,tOrder);
-            orders.add(tOrder);
+            TOrder tOrder1 = orderService.selectById(dtoTwo.getId());
+            List<TOrder> orders1 = orderService.selectList(new EntityWrapper<TOrder>().eq("e_zip_z", tOrder1.geteZipZ()));
+            for (TOrder order : orders1) {
+                order.setsName(dtoTwo.getSName());
+                order.setsPhone(dtoTwo.getSPhone());
+                order.setsEmail(dtoTwo.getSEmail());
+                order.setePhone(dtoTwo.getEPhone());
+                order.seteEmail(dtoTwo.getEEmail());
+                order.seteName(dtoTwo.getEName());
+                if(dtoTwo.getEAddress()!=null && !"".equals(dtoTwo.getEAddress())){
+                    order.seteAddress(dtoTwo.getEAddress());
+                }
+                orders.add(order);
+            }
         }
+        orderService.updateBatchById(orders);
         List<TUserFeeSetting> tUserFeeSettings =null;
         Long next = integers.iterator().next();
         TOrder tOrder1 = orderService.selectById(next);
@@ -785,7 +1059,9 @@
         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()));
+            if(tGroup!=null) {
+                tUserFeeSettings = userFeeSettingService.selectList(new EntityWrapper<TUserFeeSetting>().eq("user_id", tGroup.getSalesId()));
+            }
         }
 
         for (Long order : integers) {
@@ -797,27 +1073,30 @@
             tOrder.setStatus("0");
             BigDecimal bigDecimal = new BigDecimal(0);
             // 通过每个订单  找出当前的用户的sale  找出提成算出应给卡车公司的价格
-            List<TPrice> prices = priceService.selectList(new EntityWrapper<TPrice>().eq("order_id", order));
-            if(tUserFeeSettings!=null){
-                for (TUserFeeSetting tUserFeeSetting : tUserFeeSettings) {
-                    for (TPrice price : prices) {
-                        if(tUserFeeSetting.getName().equals(price.getType())){
-                            double v = (double) tUserFeeSetting.getFee() / 100;
-                            BigDecimal multiply = price.getPrice().multiply(new BigDecimal(v));
-                            // 付卡车的钱
-                            BigDecimal subtract = price.getPrice().subtract(multiply);
-                            price.setCarPrice(subtract);
-                            bigDecimal = bigDecimal.add(subtract);
-                        }else {
-                            price.setCarPrice(price.getPrice());
-                            bigDecimal = bigDecimal.add(price.getPrice());
-                        }
-                    }
-                }
-            }else {
-                prices.stream().forEach(e->e.setCarPrice(e.getPrice()));
+            List<TPrice> prices = priceService.selectList(new EntityWrapper<TPrice>().eq("order_id", order).eq("status",1));
+//            if(tUserFeeSettings!=null && tUserFeeSettings.size()>0){
+//                for (TUserFeeSetting tUserFeeSetting : tUserFeeSettings) {
+//                    for (TPrice price : prices) {
+//                        if(tUserFeeSetting.getName().equals(price.getType())){
+//                            double v = (double) tUserFeeSetting.getFee() / 100;
+//                            BigDecimal multiply = price.getPrice().multiply(new BigDecimal(v));
+//                            // 付卡车的钱
+//                            BigDecimal subtract = price.getPrice().subtract(multiply);
+//                            price.setCarPrice(subtract);
+//                            bigDecimal = bigDecimal.add(subtract);
+//                        }else {
+//                            price.setCarPrice(price.getPrice());
+//                            bigDecimal = bigDecimal.add(price.getPrice());
+//                        }
+//                    }
+//                }
+//            }else {
+//                prices.stream().forEach(e->e.setCarPrice(e.getPrice()));
+//            }
+//            priceService.updateBatchById(prices);
+            for (TPrice price : prices) {
+                bigDecimal = bigDecimal.add(price.getPrice());
             }
-            priceService.updateBatchById(prices);
             tOrder.setPayMoney(bigDecimal);
             orderService.updateById(tOrder);
 
diff --git a/src/main/java/com/stylefeng/guns/modular/system/controller/OrderController.java b/src/main/java/com/stylefeng/guns/modular/system/controller/OrderController.java
index c72b4de..18330db 100644
--- a/src/main/java/com/stylefeng/guns/modular/system/controller/OrderController.java
+++ b/src/main/java/com/stylefeng/guns/modular/system/controller/OrderController.java
@@ -3,10 +3,13 @@
 import cn.hutool.core.bean.BeanUtil;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.plugins.Page;
+import com.stylefeng.guns.core.util.ToolUtil;
 import com.stylefeng.guns.modular.system.enums.FacilityCodeEnum;
 import com.stylefeng.guns.modular.system.model.*;
 import com.stylefeng.guns.modular.system.service.*;
-import com.stylefeng.guns.modular.system.utils.TerminalInterfaceAcquisitionUtil;
+import com.stylefeng.guns.modular.system.utils.PortUtil.FortyNineUtil;
+import com.stylefeng.guns.modular.system.utils.PortUtil.SCACEnum;
+import com.stylefeng.guns.modular.system.utils.PortUtil.TerminalInterfaceAcquisitionUtil;
 import com.stylefeng.guns.modular.system.utils.tips.ErrorTip;
 import com.stylefeng.guns.modular.system.utils.tips.SuccessTip;
 import com.stylefeng.guns.modular.system.warpper.TerminaleDataWarpper;
@@ -24,10 +27,7 @@
 import java.math.BigDecimal;
 import java.net.FileNameMap;
 import java.net.URLConnection;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
 
 @Controller
 @Api(tags = "订单")
@@ -259,10 +259,21 @@
     @GetMapping(value = "/getOrderInfo")
     @ResponseBody
     public Object getOrderInfo( Long orderId) {
-        OrderInfo orderInfo = orderService.getOrderInfo(orderId);
+        HashMap<String, Object> orderInfo = orderService.getOrderInfo(orderId);
         return new SuccessTip(orderInfo);
     }
-
+    @ApiOperation(value = "根据zipcode获取用户地址",notes="根据zipcode获取用户地址")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."),
+            @ApiImplicitParam(name = "zipcode", value = "zipcode", required = true, dataType = "String"),
+            @ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Integer"),
+    })
+    @GetMapping(value = "/getAddressByCode")
+    @ResponseBody
+    public Object getAddressByCode( String  zipcode,Integer id) {
+        List<TUserAddress> addresses = addressService.selectList(new EntityWrapper<TUserAddress>().eq("user_id", id).eq("zip_code", zipcode).eq("remove",0));
+        return new SuccessTip(addresses);
+    }
     @ApiOperation(value = "订单详情--修改reference numbers",notes="订单详情--修改reference numbers")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."),
@@ -291,6 +302,7 @@
         ArrayList<OrderDriverInfo> orderDriverInfos = new ArrayList<>();
         ArrayList<Integer> driverIds = new ArrayList<>();
         TOrder tOrder = orderService.selectById(orderId);
+        TPort tPort = portService.selectById(tOrder.getPort());
         // 第一个开始司机id
         Integer sDriverid = tOrder.getsDriverid();
         if(sDriverid!=null){
@@ -309,18 +321,61 @@
         if(driverIdOne!=null){
             driverIds.add(driverIdOne);
         }
-        List<TTransportation> tTransportations = tTransportationService.selectList(new EntityWrapper<TTransportation>().eq("order_id", orderId).in("driver_id", driverIds));
-        TerminaleDataWarpper terminalStatus = TerminalInterfaceAcquisitionUtil.getTerminalStatus("WFHU5080179", FacilityCodeEnum.USLAX.getMsg());
+        TGoods tGoods = goodsService.selectOne(new EntityWrapper<TGoods>().eq("order_id", tOrder.getId()));
+        List<TTransportation> tTransportations = tTransportationService.selectList(new EntityWrapper<TTransportation>().eq("order_id", orderId).in("driver_id", driverIds).orderBy("type"));
+        TerminaleDataWarpper terminalStatus=new TerminaleDataWarpper();
+        try {
+            if("LBCT".equals(tPort.getName()) || "APM".equals(tPort.getName())){
+                terminalStatus  = TerminalInterfaceAcquisitionUtil.getTerminalStatus(tPort.getName(),tGoods.getContainerNumber(), FacilityCodeEnum.USLAX.getMsg());
+            }else {
+                // 去查是否存了containerid
+                if(ToolUtil.isNotEmpty(tGoods.getShipmentId()) && !"0".equals(tGoods.getShipmentId())){
+                    terminalStatus = FortyNineUtil.getContainerNo(tGoods.getShipmentId(), tGoods.getContainerNumber());
+                }else {
+
+                    String shippingLine = tGoods.getShippingLine();
+                    SCACEnum scacEnum = SCACEnum.fromCode(shippingLine);
+                    String s;
+                    if(ToolUtil.isEmpty(tGoods.getTrackingId()) || "0".equals(tGoods.getTrackingId())){
+                        s = FortyNineUtil.trackingRequest(tGoods.getBillNumber(), scacEnum.getDesc());
+                        if(ToolUtil.isEmpty(s)){
+                            s = FortyNineUtil.trackingList(tGoods.getBillNumber());
+                        }
+                        tGoods.setTrackingId(s);
+                        goodsService.updateById(tGoods);
+                    }else {
+                        s = tGoods.getTrackingId();
+                    }
+                    String shipmentId = FortyNineUtil.getShipmentId(s);
+                    if(ToolUtil.isNotEmpty(shipmentId)){
+                        tGoods.setShipmentId(shipmentId);
+                        goodsService.updateById(tGoods);
+                    }else {
+                        tGoods.setShipmentId("0");
+                        tGoods.setTrackingId("0");
+                        goodsService.updateById(tGoods);
+                    }
+                    terminalStatus = FortyNineUtil.getContainerNo(shipmentId, tGoods.getContainerNumber());
+                }
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+            terminalStatus =new TerminaleDataWarpper();
+        }
         for (TTransportation tDriver : tTransportations) {
             OrderDriverInfo orderDriverInfo = new OrderDriverInfo();
             orderDriverInfo.setId(tDriver.getId());
-            if(tDriver.getId().equals(sDriverIdOne)&&tDriver.getType()==2){
+            orderDriverInfo.setDriverId(tDriver.getDriverId());
+            if(tDriver.getDriverId().equals(sDriverIdOne)&&tDriver.getType()==1){
                 orderDriverInfo.setPickUp(tDriver.getPickDate());
             }
-            if(tDriver.getId().equals(driverid) &&tDriver.getType()==3){
+            if(tDriver.getDriverId().equals(sDriverIdOne)&&tDriver.getType()==2){
+                orderDriverInfo.setPickUp(tDriver.getPickDate());
+            }
+            if(tDriver.getDriverId().equals(driverid) &&tDriver.getType()==3){
                 orderDriverInfo.setEmptyDate(tDriver.getEmptyDate());
             }
-            if(tDriver.getId().equals(driverIdOne) &&tDriver.getType()==4){
+            if(tDriver.getDriverId().equals(driverIdOne) &&tDriver.getType()==4){
                 orderDriverInfo.setReturnDate(tDriver.getReturnDate());
             }
             orderDriverInfo.setContactEmail(tDriver.getEmail());
@@ -346,6 +401,7 @@
         transportInfo.setCTF(terminalStatus.getCtf());
         transportInfo.setClosedArea(terminalStatus.getClosedArea());
         transportInfo.setLFD(terminalStatus.getLfd());
+        transportInfo.setAvailable(terminalStatus.getAvailability());
 
         transportInfo.setList(orderDriverInfos);
         Integer examSite = tOrder.getExamSite();
@@ -359,6 +415,23 @@
         }
         return new SuccessTip(transportInfo);
     }
+
+
+    @ApiOperation(value = "获取订单司机位置",notes="获取订单司机位置")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType     = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."),
+            @ApiImplicitParam(name = "orderId", value = "orderId", required = true, dataType = "Long"),
+            @ApiImplicitParam(name = "lon", value = "lon", required = true, dataType = "String"),
+            @ApiImplicitParam(name = "lat", value = "lat", required = true, dataType = "String"),
+    })
+    @GetMapping(value = "/getLonLat")
+    @ResponseBody
+    public Object getLonLat(Long orderId){
+        //  通过司机id获取订单
+        List<Map<String,Object>> orders = orderService.getLonLat(orderId);
+        return new SuccessTip(orders);
+    }
+
 
     @ApiOperation(value = "获取费用明细",notes="获取费用明细")
     @ApiImplicitParams({
@@ -498,7 +571,6 @@
         return new ErrorTip(500,"ERROR");
     }
 
-
     @ApiOperation(value = "卡车公司--修改安排司机(单个)",notes="卡车公司--修改安排司机(单个)")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType     = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."),
@@ -512,18 +584,19 @@
             // 找出这个订单
             TOrder tOrder = orderService.selectById(orderId);
             TTransportation list = companySelectDriverSingleDto.getList();
-            Integer type = companySelectDriverSingleDto.getType();
+            list.setOrderId(companySelectDriverSingleDto.getOrderId());
+            Integer type = companySelectDriverSingleDto.getList().getType();
             if(type==1){
-                tTransportationService.delete(new EntityWrapper<TTransportation>().eq("order_id",orderId).eq("driver_id",tOrder.getsDriverid()));
+                tTransportationService.delete(new EntityWrapper<TTransportation>().eq("order_id",orderId).eq("driver_id",tOrder.getsDriverid()).eq("type",1));
                 tOrder.setsDriverid(list.getDriverId());
             }else if(type==2){
-                tTransportationService.delete(new EntityWrapper<TTransportation>().eq("order_id",orderId).eq("driver_id",tOrder.getsDriverIdOne()));
+                tTransportationService.delete(new EntityWrapper<TTransportation>().eq("order_id",orderId).eq("driver_id",tOrder.getsDriverIdOne()).eq("type",2));
                 tOrder.setsDriverIdOne(list.getDriverId());
             }else if(type==3){
-                tTransportationService.delete(new EntityWrapper<TTransportation>().eq("order_id",orderId).eq("driver_id",tOrder.geteDriverid()));
+                tTransportationService.delete(new EntityWrapper<TTransportation>().eq("order_id",orderId).eq("driver_id",tOrder.geteDriverid()).eq("type",3));
                 tOrder.seteDriverid(list.getDriverId());
             }else {
-                tTransportationService.delete(new EntityWrapper<TTransportation>().eq("order_id",orderId).eq("driver_id",tOrder.geteDriverIdOne()));
+                tTransportationService.delete(new EntityWrapper<TTransportation>().eq("order_id",orderId).eq("driver_id",tOrder.geteDriverIdOne()).eq("type",4));
                 tOrder.seteDriverIdOne(list.getDriverId());
             }
             tTransportationService.insert(list);
@@ -536,7 +609,6 @@
         }
         return new ErrorTip(500,"ERROR");
     }
-
 
     @Resource
     private TYardService yardService;
@@ -638,6 +710,9 @@
         return new SuccessTip(page);
     }
 
+
+
+
     @ApiOperation(value = "获取订单文件",notes="获取订单文件")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType     = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."),
@@ -662,7 +737,20 @@
             }
             record.setType(type);
         }
-        orderFilePage.setRecords(records);
+        TOrder tOrder = orderService.selectById(orderId);
+        if("9".equals(tOrder.getStatus()) || "18".equals(tOrder.getStatus())){
+            ArrayList<TOrderFile> tOrderFiles = new ArrayList<>();
+            TOrderFile tOrderFile = new TOrderFile();
+            tOrderFile.setName("Bill of lading.pdf");
+            tOrderFile.setId(0);
+            tOrderFile.setType("file");
+            tOrderFiles.add(tOrderFile);
+            tOrderFiles.addAll(records);
+            orderFilePage.setRecords(tOrderFiles);
+        }else {
+
+            orderFilePage.setRecords(records);
+        }
         return new SuccessTip(orderFilePage);
     }
 
diff --git a/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderMapper.java b/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderMapper.java
index 656465d..d59c111 100644
--- a/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderMapper.java
+++ b/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderMapper.java
@@ -8,6 +8,7 @@
 
 import java.math.BigDecimal;
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -62,4 +63,6 @@
 
     List<TOrder> getNoPayOrder(@Param("userId") int userId);
 
+    List<Map<String, Object>> getLonLat(@Param("orderId") Long orderId);
+
 }
diff --git a/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderMapper.xml b/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderMapper.xml
index 6c182a3..0c7736e 100644
--- a/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderMapper.xml
+++ b/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderMapper.xml
@@ -82,7 +82,7 @@
     </update>
 
     <select id="getReceivable" resultType="com.stylefeng.guns.modular.system.model.ReceivableVo">
-      select id,invoice_number invoiceNumber,pay_time invoiceTime ,allTotal total, case 1 when paid=allTotal THEN 1 else  2 end as state   from t_order
+      select id,invoice_number invoiceNumber,pay_time invoiceTime ,allTotal total, case 1 when paid=allTotal THEN 1 else  2 end as state ,change  from t_order
       where user_id =#{userId} and status !=17
       <if test="sTime !=null">
           and pay_time between #{sTime} and #{eTime}
@@ -173,7 +173,7 @@
     <select id="getIndexTotal" resultType="java.math.BigDecimal">
         select sum(allTotal-pay_money) from t_order where `status` !=0
     </select>
-    <select id="getOrderListOne" resultType="com.stylefeng.guns.modular.system.model.OrderListVo">
+        <select id="getOrderListOne" resultType="com.stylefeng.guns.modular.system.model.OrderListVo">
         SELECT
 	t1.id orderId,
 	t2.container_number container,
@@ -223,4 +223,7 @@
         select * from t_order where user_id =#{userId} and  allTotal > paid and status !=17
     </select>
 
+    <select id="getLonLat" resultType="java.util.Map">
+        select lon,lat from t_order_lonlat where orderId =#{orderId}
+    </select>
 </mapper>
diff --git a/src/main/java/com/stylefeng/guns/modular/system/enums/UserFeeSettingEnum.java b/src/main/java/com/stylefeng/guns/modular/system/enums/UserFeeSettingEnum.java
index d658d16..2644c65 100644
--- a/src/main/java/com/stylefeng/guns/modular/system/enums/UserFeeSettingEnum.java
+++ b/src/main/java/com/stylefeng/guns/modular/system/enums/UserFeeSettingEnum.java
@@ -2,7 +2,7 @@
 
 public enum UserFeeSettingEnum {
 
-    LH_FSH(1, "LH+FSH"),
+    LH_FSH(1, "LH+FSC"),
     CHASSIS_FEE(2, "Chassis fee"),
     PREPULL(3, "Prepull"),
     CHASSIS_SPLIT(4, "Chassis split"),
diff --git a/src/main/java/com/stylefeng/guns/modular/system/model/OrderDriverInfo.java b/src/main/java/com/stylefeng/guns/modular/system/model/OrderDriverInfo.java
index 8c7cf3b..f2d817d 100644
--- a/src/main/java/com/stylefeng/guns/modular/system/model/OrderDriverInfo.java
+++ b/src/main/java/com/stylefeng/guns/modular/system/model/OrderDriverInfo.java
@@ -27,4 +27,6 @@
 
     private TPowerUnits chassiess;
 
+    private Integer driverId;
+
 }
diff --git a/src/main/java/com/stylefeng/guns/modular/system/model/OrderInfo.java b/src/main/java/com/stylefeng/guns/modular/system/model/OrderInfo.java
index 9c703c1..6c2e092 100644
--- a/src/main/java/com/stylefeng/guns/modular/system/model/OrderInfo.java
+++ b/src/main/java/com/stylefeng/guns/modular/system/model/OrderInfo.java
@@ -82,4 +82,6 @@
 
     private String status;
 
+    private String driverLat;
+
 }
diff --git a/src/main/java/com/stylefeng/guns/modular/system/model/ReceivableVo.java b/src/main/java/com/stylefeng/guns/modular/system/model/ReceivableVo.java
index c50af28..deec9a1 100644
--- a/src/main/java/com/stylefeng/guns/modular/system/model/ReceivableVo.java
+++ b/src/main/java/com/stylefeng/guns/modular/system/model/ReceivableVo.java
@@ -21,4 +21,6 @@
     private Date invoiceTime;
     private Double total;
     private Integer state;
+
+    private Integer change;
 }
diff --git a/src/main/java/com/stylefeng/guns/modular/system/model/TCompanyResp.java b/src/main/java/com/stylefeng/guns/modular/system/model/TCompanyResp.java
index 2c31393..84196d9 100644
--- a/src/main/java/com/stylefeng/guns/modular/system/model/TCompanyResp.java
+++ b/src/main/java/com/stylefeng/guns/modular/system/model/TCompanyResp.java
@@ -38,4 +38,7 @@
     @ApiModelProperty(value = "计算出的价格")
     private BigDecimal price;
 
+    private String day;
+
+    private BigDecimal adminPrice;
 }
diff --git a/src/main/java/com/stylefeng/guns/modular/system/model/TGoods.java b/src/main/java/com/stylefeng/guns/modular/system/model/TGoods.java
index 39516b6..9ead4bb 100644
--- a/src/main/java/com/stylefeng/guns/modular/system/model/TGoods.java
+++ b/src/main/java/com/stylefeng/guns/modular/system/model/TGoods.java
@@ -78,6 +78,36 @@
 
     private String lineStr;
 
+    private String containerId;
+
+    public String getContainerId() {
+        return containerId;
+    }
+
+    public void setContainerId(String containerId) {
+        this.containerId = containerId;
+    }
+
+    public String getTrackingId() {
+        return trackingId;
+    }
+
+    public void setTrackingId(String trackingId) {
+        this.trackingId = trackingId;
+    }
+
+    public String getShipmentId() {
+        return shipmentId;
+    }
+
+    public void setShipmentId(String shipmentId) {
+        this.shipmentId = shipmentId;
+    }
+
+    private String trackingId;
+
+    private String shipmentId;
+
     public Integer getId() {
         return id;
     }
diff --git a/src/main/java/com/stylefeng/guns/modular/system/model/TPrice.java b/src/main/java/com/stylefeng/guns/modular/system/model/TPrice.java
index c9778e6..df3af3d 100644
--- a/src/main/java/com/stylefeng/guns/modular/system/model/TPrice.java
+++ b/src/main/java/com/stylefeng/guns/modular/system/model/TPrice.java
@@ -50,6 +50,17 @@
      */
     private String state;
 
+
+    private String day;
+
+    public String getDay() {
+        return day;
+    }
+
+    public void setDay(String day) {
+        this.day = day;
+    }
+
     public BigDecimal getCarPrice() {
         return carPrice;
     }
diff --git a/src/main/java/com/stylefeng/guns/modular/system/model/TransportInfo.java b/src/main/java/com/stylefeng/guns/modular/system/model/TransportInfo.java
index d4362e9..b793825 100644
--- a/src/main/java/com/stylefeng/guns/modular/system/model/TransportInfo.java
+++ b/src/main/java/com/stylefeng/guns/modular/system/model/TransportInfo.java
@@ -27,15 +27,17 @@
     private Integer streetTurn;
 
     @ApiModelProperty(value = "1:YES 2:NO")
-    private Integer lineHold;
+    private String lineHold;
     @ApiModelProperty(value = "1:YES 2:NO")
-    private Integer customHold;
+    private String customHold;
     @ApiModelProperty(value = "1:YES 2:NO")
-    private Integer pierpass;
+    private String pierpass;
     @ApiModelProperty(value = "1:YES 2:NO")
-    private Integer CTF;
+    private String CTF;
 
     private String LFD;
     @ApiModelProperty(value = "1:YES 2:NO")
-    private Integer closedArea;
+    private String closedArea;
+
+    private String available;
 }
diff --git a/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderService.java b/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderService.java
index 46ec57a..b89faf8 100644
--- a/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderService.java
+++ b/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderService.java
@@ -4,7 +4,9 @@
 import com.stylefeng.guns.modular.system.model.*;
 import com.baomidou.mybatisplus.service.IService;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -40,7 +42,7 @@
 
     List<GoodsInfoVo> getGoodsInfo(Long orderId);
 
-    OrderInfo getOrderInfo(Long orderId);
+    HashMap<String, Object> getOrderInfo(Long orderId);
 
     Boolean addOrderFile(Long orderId, String url, String name);
 
@@ -53,4 +55,7 @@
     List<TOrder> getNoPayOrder(int userId);
 
 
+    List<Map<String, Object>> getLonLat(Long orderId);
+
+
 }
diff --git a/src/main/java/com/stylefeng/guns/modular/system/service/impl/TCompanyServiceImpl.java b/src/main/java/com/stylefeng/guns/modular/system/service/impl/TCompanyServiceImpl.java
index 30b60d9..eee3801 100644
--- a/src/main/java/com/stylefeng/guns/modular/system/service/impl/TCompanyServiceImpl.java
+++ b/src/main/java/com/stylefeng/guns/modular/system/service/impl/TCompanyServiceImpl.java
@@ -85,15 +85,11 @@
         tCompanyCalculationRespOne.setPickupStr(tOrder.getAccessorialStr());
         tCompanyCalculationRespOne.setDestinationStr(tOrder.getDeliveryStr());
         tCompanyCalculationRespOne.setCustomer(user.getCompanyName());
-
-
+        System.out.println(quote.getCreateId());
         if(quote.getCreateId()!=null){
-            User user1 = userMapper.selectById(quote.getCreateId());
-            tCompanyCalculationRespOne.setCreateUser(user1.getName());
-        }else {
-            tCompanyCalculationRespOne.setCreateUser(user.getCompanyName());
+            TCompany company = companyMapper.selectById(quote.getCreateId());
+            tCompanyCalculationRespOne.setCreateUser(company.getName());
         }
-
         Integer port = tOrder.getPort();
         TPort tPort = tPortMapper.selectById(port);
         TCountry tCountry = tCountryMapper.selectById(tPort.getCity());
@@ -117,12 +113,13 @@
 
         ArrayList<LonLat> lonLats = new ArrayList<>();
         LonLat latLng = new LonLat();
-        latLng.setLat("-113.6510249618184");
-        latLng.setLng("37.8924429618184");
+        latLng.setLat(orders1.get(0).getStartLat());
+        latLng.setLng(orders1.get(0).getStartLon());
         lonLats.add(latLng);
         latLng=new LonLat();
-        latLng.setLat("-113.066919618184");
-        latLng.setLng("37.684389618184");
+        GeocodeVo geocode = googleMapUtil.getGeocode(orders1.get(0).geteAddress());
+        latLng.setLat(String.valueOf(geocode.getLat()));
+        latLng.setLng(String.valueOf(geocode.getLng()));
         lonLats.add(latLng);
         tCompanyCalculationRespOne.setLonLats(lonLats);
         ArrayList<TGoods> tGoods = new ArrayList<>();
@@ -136,6 +133,13 @@
 
         ArrayList<CompanyInfo> companyInfos = new ArrayList<>();
         for (TOrder order : orders) {
+
+            Integer port1 = order.getPort();
+            // 获取码头的上级id
+            TPort tPort1 = tPortMapper.selectById(port1);
+            TCountry tCountry2 = tCountryMapper.selectById(tPort1.getCity());
+
+
             CompanyInfo tCompanyCalculationResp = new CompanyInfo();
             // 查询公司
             TCompany company = companyMapper.selectById(order.getCompanyId());
@@ -146,16 +150,18 @@
             tCompanyCalculationResp.setExpirationDate(company.getExpirationTime());
 
             // 查询公司下的价格集合
-            List<TPrice> prices = priceMapper.selectList(new EntityWrapper<TPrice>().eq("order_id", order.getId()));
+            List<TPrice> prices = priceMapper.selectList(new EntityWrapper<TPrice>().eq("order_id", order.getId()).eq("status",1));
             List<TCompanyResp> tCompanyRespList = new ArrayList<>();
             for (TPrice price : prices) {
                 TCompanyResp tCompanyResp = new TCompanyResp();
                 tCompanyResp.setOrderId(order.getId());
                 tCompanyResp.setName(price.getType());
+                tCompanyResp.setAdminPrice(price.getPrice());
                 tCompanyResp.setPrice(price.getCarPrice());
+                tCompanyResp.setDay(price.getDay());
                 tCompanyRespList.add(tCompanyResp);
             }
-            BigDecimal bigDecimal = tCompanyRespList.stream().map(e->e.getPrice()==null?new BigDecimal(0):e.getPrice()).reduce(BigDecimal::add).orElse(new BigDecimal(0.00));
+            BigDecimal bigDecimal = tCompanyRespList.stream().map(TCompanyResp::getAdminPrice).reduce(BigDecimal::add).orElse(new BigDecimal(0.00));
             tCompanyCalculationResp.setAllTotal(bigDecimal);
             tCompanyCalculationResp.setList(tCompanyRespList);
             // 过滤订单
@@ -173,10 +179,30 @@
             companyInfos.add(tCompanyCalculationResp);
         }
         ArrayList<CompanyInfo> collect = companyInfos.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(CompanyInfo::getCompanyId))), ArrayList::new));
+        for (CompanyInfo companyInfo : collect) {
+            Map<String, BigDecimal> map = new HashMap<>();
+            List<CompanyInfo> collect1 = companyInfos.stream().filter(e -> e.getCompanyId().equals(companyInfo.getCompanyId())).collect(Collectors.toList());
+            BigDecimal bigDecimal1 = collect1.stream().map(CompanyInfo::getAllTotal).reduce(BigDecimal::add).get();
+            companyInfo.setAllTotal(bigDecimal1);
+            for (CompanyInfo info : collect1) {
+                List<TCompanyResp> list = info.getList();
+                for (TCompanyResp tCompanyResp : list) {
+                    Object o = map.get(tCompanyResp.getName());
+                    if(o!=null){
+                        map.put(tCompanyResp.getName(),new BigDecimal(o.toString()).add(tCompanyResp.getAdminPrice()));
+                    }else {
+                        map.put(tCompanyResp.getName(),tCompanyResp.getAdminPrice());
+                    }
+                }
+            }
+            List<TCompanyResp> list = companyInfo.getList();
+            for (TCompanyResp tCompanyResp : list) {
+                tCompanyResp.setAdminPrice(map.get(tCompanyResp.getName()));
+            }
+        }
         tCompanyCalculationRespOne.setCompanyInfos(collect);
         return tCompanyCalculationRespOne;
     }
-
     @Override
     public TCompanyCalculationRespOne getQuotaFromIdAndCompanyId(Long id, Integer companyIds) {
         TQuote quote = quoteService.selectById(id);
@@ -255,9 +281,10 @@
                 tCompanyResp.setOrderId(order.getId());
                 tCompanyResp.setName(price.getType());
                 tCompanyResp.setPrice(price.getPrice());
+                tCompanyResp.setAdminPrice(price.getPrice());
                 tCompanyRespList.add(tCompanyResp);
             }
-            BigDecimal bigDecimal = tCompanyRespList.stream().map(TCompanyResp::getPrice).reduce(BigDecimal::add).orElse(new BigDecimal(0.00));
+            BigDecimal bigDecimal = tCompanyRespList.stream().map(TCompanyResp::getAdminPrice).reduce(BigDecimal::add).orElse(new BigDecimal(0.00));
             tCompanyCalculationResp.setAllTotal(bigDecimal);
             tCompanyCalculationResp.setList(tCompanyRespList);
             // 过滤订单
diff --git a/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderServiceImpl.java b/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderServiceImpl.java
index 73deee3..6c078d7 100644
--- a/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderServiceImpl.java
+++ b/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderServiceImpl.java
@@ -11,6 +11,7 @@
 import com.stylefeng.guns.modular.system.service.*;
 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.RedisUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -465,13 +466,77 @@
         }
         return goodsInfoVos;
     }
+@Autowired
+private RedisUtil redisUtil;
 
+
+    @Autowired
+    private ITExamSiteService examSiteService;
+
+
+
+    @Autowired
+    private TYardService yardService;
+    private HashMap<String, String> getLat(String a){
+        HashMap<String, String> map = new HashMap<>();
+        try {
+            GeocodeVo geocode = googleMapUtil.getGeocode(a);
+            map.put("lon",String.valueOf(geocode.getLng()));
+            map.put("lat",String.valueOf(geocode.getLat()));
+        }catch (Exception e){
+            e.printStackTrace();
+            map.put("lon",null);
+            map.put("lat",null);
+        }
+
+        return map;
+    }
     @Override
-    public OrderInfo getOrderInfo(Long orderId) {
+    public   HashMap<String, Object> getOrderInfo(Long orderId) {
         OrderInfo orderInfo = new OrderInfo();
         ArrayList<LonLat> lonLats = new ArrayList<>();
 
         TOrder tOrder = this.baseMapper.selectById(orderId);
+
+
+        String value = redisUtil.getValue(String.valueOf(orderId));
+        orderInfo.setDriverLat(value);
+        ArrayList<Map<String,String>> maps = new ArrayList<>();
+        TTransportation tTransportations = tTransportationService.selectOne(new EntityWrapper<TTransportation>().eq("order_id", orderId).eq("type",1));
+        if(tTransportations!=null) {
+            TPort tPort1 = portMapper.selectById(tOrder.getPort());
+            maps.add(getLat(tPort1.getAddress()));
+        }
+
+        if(tOrder.getExamSite()!=null){
+            Integer examSite = tOrder.getExamSite();
+            TExamSite tExamSite = examSiteService.selectById(examSite);
+            // 第二个检查站
+            maps.add(getLat(tExamSite.getAddress()));
+        }
+
+        TTransportation tTransportations1 = tTransportationService.selectOne(new EntityWrapper<TTransportation>().eq("order_id", orderId).eq("type",2));
+        if(tTransportations1!=null){
+            Integer yardId = tTransportations1.getYardId();
+            if(yardId!=null){
+                TYard tYard = yardService.selectById(yardId);
+                maps.add(getLat(tYard.getStreetAddress()));
+            }
+        }
+
+
+        if(tOrder.geteAddress()!=null){
+            maps.add(getLat(tOrder.geteAddress()));
+        }
+
+
+
+
+
+
+
+
+
         orderInfo.setSlat(tOrder.getStartLat());
         orderInfo.setSlon(tOrder.getStartLon());
 
@@ -514,7 +579,7 @@
         // 获取码头id  获取码头地址  pickup信息
         Integer portId = tOrder.getPort();
         TPort tPort = portMapper.selectById(portId);
-        orderInfo.setAddress(tOrder.geteAddress());
+        orderInfo.setAddress(tPort.getAddress());
         orderInfo.setContactName(tOrder.getsName());
         orderInfo.setContactPhone(tOrder.getsPhone());
         orderInfo.setContactEmail(tOrder.getsEmail());
@@ -565,7 +630,12 @@
         orderInfo.setNote(driverNoteVos);
         orderInfo.setTrouble(driverNoteVos1);
         orderInfo.setState(tOrder.getState());
-        return orderInfo;
+
+        HashMap<String, Object> map = new HashMap<>();
+        map.put("lonlat",maps);
+        map.put("data",orderInfo);
+
+        return map;
 
 
     }
@@ -623,4 +693,10 @@
     }
 
 
+    @Override
+    public List<Map<String, Object>> getLonLat(Long orderId) {
+        return this.baseMapper.getLonLat(orderId);
+    }
+
+
 }
diff --git a/src/main/java/com/stylefeng/guns/modular/system/utils/ChassisRentalDaysUtil.java b/src/main/java/com/stylefeng/guns/modular/system/utils/ChassisRentalDaysUtil.java
new file mode 100644
index 0000000..023ca89
--- /dev/null
+++ b/src/main/java/com/stylefeng/guns/modular/system/utils/ChassisRentalDaysUtil.java
@@ -0,0 +1,42 @@
+package com.stylefeng.guns.modular.system.utils;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+
+public class ChassisRentalDaysUtil {
+    // TODO 线上替换linux路径
+    private static  final String CHAISS="/usr/python/chassis_rental_days.py";
+    private static  final String EMPTY="/usr/python/empty_storage_days.py";
+    private static  final String PREPULL="/usr/python/prepull_storage_days.py";
+    private static  final String UNLOADING="/usr/python/unloading_time.py";
+    public static String chassisRentalDays(int type,String arg1,String arg2,String arg3,String agr4,String agr5,String arg6,String arg7,String arg8){
+        try {
+            String[] arg;
+            if(type==1){
+                 arg = new String[] { "python", CHAISS,arg1,arg2,arg3,agr4,agr5,arg6,arg7,arg8};
+            }else if(type==2){
+                arg = new String[] { "python", EMPTY,arg1,arg2,arg3,agr4,agr5,arg6,arg7,arg8};
+            }else if(type==3){
+                arg = new String[] { "python", PREPULL,arg1,arg2,arg3,agr4,agr5,arg6,arg7,arg8};
+            }else {
+                arg = new String[] { "python", UNLOADING,arg1,arg2,arg3,agr4,agr5,arg6,arg7,arg8};
+            }
+
+            Process exec = Runtime.getRuntime().exec(arg);
+            BufferedReader in = new BufferedReader(new InputStreamReader(exec.getInputStream()));
+            String line = null;
+            String day=null;
+            while ((line = in.readLine()) != null) {
+                day=line;
+            }
+            String substring = day.substring(day.indexOf("[")+1, day.lastIndexOf("."));
+            System.out.println(substring);
+            in.close();
+            return substring;
+        }catch (Exception e){
+            e.printStackTrace();
+            return null;
+        }
+
+    }
+}
diff --git a/src/main/java/com/stylefeng/guns/modular/system/utils/GoogleMap/GoogleMapUtil.java b/src/main/java/com/stylefeng/guns/modular/system/utils/GoogleMap/GoogleMapUtil.java
index f727ca7..1a917b6 100644
--- a/src/main/java/com/stylefeng/guns/modular/system/utils/GoogleMap/GoogleMapUtil.java
+++ b/src/main/java/com/stylefeng/guns/modular/system/utils/GoogleMap/GoogleMapUtil.java
@@ -21,7 +21,8 @@
 @Component
 public class GoogleMapUtil {
 
-    private static final String key = "AIzaSyBBW0XxW1FK7IXmmS7KFtAjX3o99eFPsss";
+    //    private final String key = "AIzaSyBBW0XxW1FK7IXmmS7KFtAjX3o99eFPsss";
+    private final String key = "AIzaSyBBW0XxW1FK7IXmmS7KFtAjX3o99eFPsss";
 
     @Autowired
     private HttpClientUtil httpClientUtil;
@@ -32,7 +33,8 @@
      * @param address       地址信息
      * @throws Exception
      */
-    public static GeocodeVo getGeocode(String address){
+    public GeocodeVo getGeocode(String address){
+        log.info("谷歌地图  根据地址获取经纬度:"+address);
         GeoApiContext context = new GeoApiContext.Builder()
                 .apiKey(key)
                 .build();
@@ -68,40 +70,40 @@
      */
     public ReverseGeocodeVo getReverseGeocode(double lat, double lng) throws Exception{
         // TODO: 2022/10/22 临时用IGO跳转
-        Map<String, Object> map = new HashMap<>();
-        map.put("lat", lat);
-        map.put("lng", lng);
-        map.put("key", key);
-        HttpResult httpResult = httpClientUtil.pushHttpRequset("POST", "http://182.160.16.251:1010/base/googleMap/getReverseGeocode", map, null, "form");
-        ReverseGeocodeVo reverseGeocode = JSON.parseObject(httpResult.getData(), ReverseGeocodeVo.class);
-        return reverseGeocode;
+//        Map<String, Object> map = new HashMap<>();
+//        map.put("lat", lat);
+//        map.put("lng", lng);
+//        map.put("key", key);
+//        HttpResult httpResult = httpClientUtil.pushHttpRequset("POST", "http://182.160.16.251:1010/base/googleMap/getReverseGeocode", map, null, "form");
+//        ReverseGeocodeVo reverseGeocode = JSON.parseObject(httpResult.getData(), ReverseGeocodeVo.class);
+//        return reverseGeocode;
 
-//        GeoApiContext context = new GeoApiContext.Builder()
-//                .apiKey(key)
-//                .build();
-//        GeocodingApiRequest request = GeocodingApi.reverseGeocode(context, new LatLng(lat, lng));
-//        GeocodingResult[] results = request.await();
-//        ReverseGeocodeVo vo = null;
-//        if(results.length > 0){
-//            Gson gson = new GsonBuilder().setPrettyPrinting().create();
-//            System.out.println(gson.toJson(results[0].addressComponents));
-//
-//
-//            vo = new ReverseGeocodeVo();
-//            AddressComponent[] addressComponents = results[0].addressComponents;
-//            AddressComponentsVo[] addressComponentsVos = new AddressComponentsVo[addressComponents.length];
-//            for (int i = 0; i < addressComponents.length; i++) {
-//                AddressComponentsVo addressComponentsVos1 = new AddressComponentsVo();
-//                addressComponentsVos1.setLongName(addressComponents[i].longName);
-//                addressComponentsVos1.setShortName(addressComponents[i].shortName);
-//                addressComponentsVos[i] = addressComponentsVos1;
-//            }
-//            String address = results[0].formattedAddress;
-//            vo.setAddressComponentsVos(addressComponentsVos);
-//            vo.setAddress(address);
-//        }
-//        context.shutdown();
-//        return vo;
+        GeoApiContext context = new GeoApiContext.Builder()
+                .apiKey(key)
+                .build();
+        GeocodingApiRequest request = GeocodingApi.reverseGeocode(context, new LatLng(lat, lng));
+        GeocodingResult[] results = request.await();
+        ReverseGeocodeVo vo = null;
+        if(results.length > 0){
+            Gson gson = new GsonBuilder().setPrettyPrinting().create();
+            System.out.println(gson.toJson(results[0].addressComponents));
+
+
+            vo = new ReverseGeocodeVo();
+            AddressComponent[] addressComponents = results[0].addressComponents;
+            AddressComponentsVo[] addressComponentsVos = new AddressComponentsVo[addressComponents.length];
+            for (int i = 0; i < addressComponents.length; i++) {
+                AddressComponentsVo addressComponentsVos1 = new AddressComponentsVo();
+                addressComponentsVos1.setLongName(addressComponents[i].longName);
+                addressComponentsVos1.setShortName(addressComponents[i].shortName);
+                addressComponentsVos[i] = addressComponentsVos1;
+            }
+            String address = results[0].formattedAddress;
+            vo.setAddressComponentsVos(addressComponentsVos);
+            vo.setAddress(address);
+        }
+        context.shutdown();
+        return vo;
     }
 
 
@@ -197,29 +199,29 @@
      */
     public DistancematrixVo getDistancematrix(String origin, String destination) throws Exception{
         // TODO: 2022/10/22 临时用IGO跳转
-        Map<String, Object> map = new HashMap<>();
-        map.put("origin", origin);
-        map.put("destination", destination);
-        map.put("key", key);
-        HttpResult httpResult = httpClientUtil.pushHttpRequset("POST", "http://182.160.16.251:1010/base/googleMap/getDistancematrix", map, null, "form");
-        DistancematrixVo reverseGeocode = JSON.parseObject(httpResult.getData(), DistancematrixVo.class);
-        return reverseGeocode;
+//        Map<String, Object> map = new HashMap<>();
+//        map.put("origin", origin);
+//        map.put("destination", destination);
+//        map.put("key", key);
+//        HttpResult httpResult = httpClientUtil.pushHttpRequset("POST", "http://182.160.16.251:1010/base/googleMap/getDistancematrix", map, null, "form");
+//        DistancematrixVo reverseGeocode = JSON.parseObject(httpResult.getData(), DistancematrixVo.class);
+//        return reverseGeocode;
 
-//        GeoApiContext context = new GeoApiContext.Builder()
-//                .apiKey(key)
-//                .build();
-//        DistanceMatrixApiRequest request = DistanceMatrixApi.getDistanceMatrix(context, new String[]{origin}, new String[]{destination});
-//        request.mode(TravelMode.DRIVING);//出行方式(驾车)
-//        DistanceMatrix distanceMatrix = request.await();
-//        Gson gson = new GsonBuilder().setPrettyPrinting().create();
-//        System.out.println(gson.toJson(distanceMatrix));
-//        context.shutdown();
-//
-//        DistanceMatrixElement elements = distanceMatrix.rows[0].elements[0];
-//        DistancematrixVo vo = new DistancematrixVo();
-//        vo.setDistance(elements.distance.inMeters);
-//        vo.setDuration(elements.duration.inSeconds);
-//        return vo;
+        GeoApiContext context = new GeoApiContext.Builder()
+                .apiKey(key)
+                .build();
+        DistanceMatrixApiRequest request = DistanceMatrixApi.getDistanceMatrix(context, new String[]{origin}, new String[]{destination});
+        request.mode(TravelMode.DRIVING);//出行方式(驾车)
+        DistanceMatrix distanceMatrix = request.await();
+        Gson gson = new GsonBuilder().setPrettyPrinting().create();
+        System.out.println(gson.toJson(distanceMatrix));
+        context.shutdown();
+
+        DistanceMatrixElement elements = distanceMatrix.rows[0].elements[0];
+        DistancematrixVo vo = new DistancematrixVo();
+        vo.setDistance(elements.distance.inMeters);
+        vo.setDuration(elements.duration.inSeconds);
+        return vo;
     }
 
 
@@ -264,4 +266,16 @@
     }
 
 
+
+
+
+    public void main(String[] ages){
+        try {
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+
+
 }
diff --git a/src/main/java/com/stylefeng/guns/modular/system/utils/HttpRequest.java b/src/main/java/com/stylefeng/guns/modular/system/utils/HttpRequest.java
index 4076838..6581f04 100644
--- a/src/main/java/com/stylefeng/guns/modular/system/utils/HttpRequest.java
+++ b/src/main/java/com/stylefeng/guns/modular/system/utils/HttpRequest.java
@@ -59,6 +59,7 @@
             connection.setRequestProperty("accept", "*/*");
             connection.setRequestProperty("connection", "Keep-Alive");
             connection.setRequestProperty("User-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36");
+            connection.setRequestProperty("Authorization", "Token iVXSeqMEhdYvAj2bgA8tiWdE");
             // 建立实际的连接
             connection.connect();
             // 获取所有响应头字段
@@ -110,6 +111,7 @@
             conn.setRequestProperty("accept", "*/*");
             conn.setRequestProperty("connection", "Keep-Alive");
             conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
+            conn.setRequestProperty("Authorization", "Token iVXSeqMEhdYvAj2bgA8tiWdE");
             // 发送POST请求必须设置如下两行
             conn.setDoOutput(true);
             conn.setDoInput(true);
diff --git a/src/main/java/com/stylefeng/guns/modular/system/utils/PortUtil/APMStrategy.java b/src/main/java/com/stylefeng/guns/modular/system/utils/PortUtil/APMStrategy.java
new file mode 100644
index 0000000..f7076eb
--- /dev/null
+++ b/src/main/java/com/stylefeng/guns/modular/system/utils/PortUtil/APMStrategy.java
@@ -0,0 +1,152 @@
+package com.stylefeng.guns.modular.system.utils.PortUtil;
+
+import cn.hutool.http.HttpRequest;
+import cn.hutool.http.HttpResponse;
+import com.alibaba.fastjson.JSONObject;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.stylefeng.guns.core.common.exception.BizExceptionEnum;
+import com.stylefeng.guns.core.exception.GunsException;
+import com.stylefeng.guns.core.util.ToolUtil;
+import com.stylefeng.guns.modular.system.warpper.TerminaleDataWarpper;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+public class APMStrategy implements WharfStrategy{
+
+    //Sandbox Interface
+    private static final String url  = "https://api-sandbox.apmterminals.com/import-availability";
+
+    //Production Interface
+//    private static final String url  = "https://api.apmterminals.com/import-availability";
+
+    private static final String auth_url  = "https://api.apmterminals.com/oauth/client_credential/accesstoken";
+
+    private static final String KEY  = "di3RgCcM9zlgb5BG1UiYSIxwYdmYUxTo";
+    private static final String SECRET  = "AIJczPxBeocsEjtI";
+
+    private static String bearerToken  = "5dDHq3LwPW3EYZ6rtPGK0zqWsRA5";
+
+
+    public static void main(String[] args) {
+        getAuth();
+        String us = auth_url+ "?assetId="+"EITU1509974"+"&facilityCode="+"USLAX";
+        HttpResponse execute = HttpRequest.get(us).header("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36")
+                .header("cookie", "_ga=GA1.2.1226281326.1675309614; _gid=GA1.2.1467106222.1675309614; _ga=GA1.4.1226281326.1675309614; _gid=GA1.4.1467106222.1675309614; AWSALB=1bWqINVI+LJP87FTEXfEw1Ob1nkbr+I4baSbUGUmu5+/LdiqL9ic04Nj7F0Vz3rvharAG7a8dVe3MX6YMNEbUINVr++CCv/UBw6JeCRS0PcbRLxK7wVHb1lPT8Jl; AWSALBCORS=1bWqINVI+LJP87FTEXfEw1Ob1nkbr+I4baSbUGUmu5+/LdiqL9ic04Nj7F0Vz3rvharAG7a8dVe3MX6YMNEbUINVr++CCv/UBw6JeCRS0PcbRLxK7wVHb1lPT8Jl")
+                .header("path", "?assetId=" + "EITU1509974" + "&facilityCode=" + "USLAX")
+                .header("Authorization", "Bearer " + bearerToken)
+                .execute();
+        int status = execute.getStatus();
+        System.out.println(status);
+        System.out.println(execute.body());
+    }
+
+    @Override
+    public TerminaleDataWarpper executeLogic(String... params) {
+        String containerId = "";
+        String enums = "";
+        if (params.length == 0) {
+            throw new GunsException(BizExceptionEnum.REQUEST_EMPTY_ERROR);
+        } else {
+            containerId = params[0];
+            enums = params[1];
+        }
+
+        String us = url+ "?assetId="+containerId+"&facilityCode="+enums;
+        HttpResponse execute = HttpRequest.get(us).header("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36")
+                .header("cookie", "_ga=GA1.2.1226281326.1675309614; _gid=GA1.2.1467106222.1675309614; _ga=GA1.4.1226281326.1675309614; _gid=GA1.4.1467106222.1675309614; AWSALB=1bWqINVI+LJP87FTEXfEw1Ob1nkbr+I4baSbUGUmu5+/LdiqL9ic04Nj7F0Vz3rvharAG7a8dVe3MX6YMNEbUINVr++CCv/UBw6JeCRS0PcbRLxK7wVHb1lPT8Jl; AWSALBCORS=1bWqINVI+LJP87FTEXfEw1Ob1nkbr+I4baSbUGUmu5+/LdiqL9ic04Nj7F0Vz3rvharAG7a8dVe3MX6YMNEbUINVr++CCv/UBw6JeCRS0PcbRLxK7wVHb1lPT8Jl")
+                .header("path", "?assetId=" + containerId + "&facilityCode=" + enums)
+                .header("Authorization", "Bearer " + bearerToken)
+                .execute();
+
+        String body = execute.body();
+        int status = execute.getStatus();
+        if (status != 200){
+            getAuth();
+            return executeLogic();
+        }
+        ObjectMapper objectMapper = new ObjectMapper();
+        JsonNode jsonArray = null;
+        TerminaleDataWarpper warpper = new TerminaleDataWarpper();
+        try {
+            jsonArray = objectMapper.readTree(body);
+            for (JsonNode jsonNode : jsonArray) {
+                String appointmentDateTimeLocal = jsonNode.get("appointmentDateTimeLocal").asText();
+                warpper.setLfd(appointmentDateTimeLocal);
+                String appointmentNumber = jsonNode.get("containerId").asText();
+                warpper.setAppointmentNumber(appointmentNumber);
+
+                String readyForDelivery = jsonNode.get("readyForDelivery").asText();
+                if (ToolUtil.isNotEmpty(readyForDelivery)) {
+                    warpper.setAvailability(readyForDelivery);
+                }
+
+                String containerHolds = jsonNode.get("containerHolds").asText();
+                String location = jsonNode.get("location").asText();
+                if (ToolUtil.isNotEmpty(location)){
+                    warpper.setClosedArea(location);
+                }
+                List<String> collect = new ArrayList<>();
+                if (ToolUtil.isEmpty(containerHolds)){
+                    return warpper;
+                }
+                if (containerHolds.contains(",")){
+                    String[] split = containerHolds.split(",");
+                    collect =  Arrays.stream(split).collect(Collectors.toList());
+                    if (collect.contains("LINE")){
+                        warpper.setLineHold("1");
+                    }
+                    if (collect.contains("TMF")){
+                        warpper.setCustomHold("1");
+                    }
+                    if (collect.contains("PIER")){
+                        warpper.setPierpass("1");
+                    }
+                    if (collect.contains("CTF")){
+                        warpper.setCtf("1");
+                    }
+
+                }else {
+                    if (containerHolds.equals("LINE")){
+                        warpper.setLineHold("1");
+                    }
+                    if (containerHolds.equals("TMF")){
+                        warpper.setCustomHold("1");
+                    }
+                    if (containerHolds.equals("PIER")){
+                        warpper.setPierpass("1");
+                    }
+                    if (containerHolds.equals("CTF")){
+                        warpper.setCtf("1");
+                    }
+                    if (containerHolds.equals("AREA")){
+                        warpper.setClosedArea("1");
+                    }
+                }
+                break;
+            }
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+
+        return warpper;
+    }
+
+
+    public static void getAuth(){
+        String us = auth_url+ "?grant_type=client_credentials";
+        String body = HttpRequest.post(us)
+                .form("client_id", KEY)
+                .form("client_id", SECRET)
+                .execute().body();
+        JSONObject object = JSONObject.parseObject(body);
+        Object o = object.get("access_token");
+        if (ToolUtil.isNotEmpty(o)){
+            bearerToken = (String) o;
+        }
+    }
+}
diff --git a/src/main/java/com/stylefeng/guns/modular/system/utils/PortUtil/FMSStrategy.java b/src/main/java/com/stylefeng/guns/modular/system/utils/PortUtil/FMSStrategy.java
new file mode 100644
index 0000000..ad58fc0
--- /dev/null
+++ b/src/main/java/com/stylefeng/guns/modular/system/utils/PortUtil/FMSStrategy.java
@@ -0,0 +1,78 @@
+package com.stylefeng.guns.modular.system.utils.PortUtil;
+
+import cn.hutool.http.HttpRequest;
+import com.stylefeng.guns.core.common.exception.BizExceptionEnum;
+import com.stylefeng.guns.core.exception.GunsException;
+import com.stylefeng.guns.modular.system.warpper.TerminaleDataWarpper;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.HttpURLConnection;
+import java.net.URL;
+
+public class FMSStrategy implements WharfStrategy {
+
+
+
+    @Override
+    public TerminaleDataWarpper executeLogic(String... params) {
+        String enums = "";
+        if (params.length == 0) {
+            throw new GunsException(BizExceptionEnum.REQUEST_EMPTY_ERROR);
+        } else {
+            enums = params[0];
+        }
+        HttpRequest httpRequest = HttpRequest.get("http://n4.fenixmarineservices.com:9081/apex/api/codeextension?extensionname=FenixCheckCtrAvailability&operatorId=FMS&complexId=USSPQ&facilityId=FMS&yardId=FMS&PARM_filterName=UNIT_FINDER_QUERY&PARM_CTRNBR=" + enums);
+
+        System.out.println(httpRequest);
+
+        return null;
+    }
+
+
+    public static void main(String[] args) throws Exception {
+        String post = post("http://n4.fenixmarineservices.com:9081/apex/api/codeextension?extensionname=FenixCheckCtrAvailability&operatorId=FMS&complexId=USSPQ&facilityId=FMS&yardId=FMS&PARM_filterName=UNIT_FINDER_QUERY&PARM_CTRNBR=" + "TGHU9229633", "");
+        System.out.println(post);
+
+
+    }
+
+    public static String post(String strURL, String params) throws Exception {
+        System.out.println(strURL);
+        System.out.println(params);
+        String result = "";
+        BufferedReader reader = null;
+        try {
+            URL url = new URL(strURL);// 创建连接
+            HttpURLConnection connection = (HttpURLConnection) url
+                    .openConnection();
+            connection.setDoOutput(true);
+            connection.setDoInput(true);
+            connection.setUseCaches(false);
+            connection.setInstanceFollowRedirects(true);
+            connection.setRequestMethod("GET"); // 设置请求方式
+            connection.setRequestProperty("Accept", "application/json"); // 设置接收数据的格式
+            connection.setRequestProperty("Content-Type", "application/json"); // 设置发送数据的格式
+            connection.connect();
+            if (connection.getResponseCode() == 200) {
+                reader = new BufferedReader(
+                        new InputStreamReader(connection.getInputStream()));
+                result = reader.readLine();
+            } else {
+                throw new Exception(connection.getResponseMessage());
+            }
+        } catch (Exception e) {
+            throw new Exception("http的post请求异常!" + e.getMessage());
+        } finally {
+            if (reader != null) {
+                try {
+                    reader.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        return result;
+    }
+}
diff --git a/src/main/java/com/stylefeng/guns/modular/system/utils/PortUtil/FortyNineUtil.java b/src/main/java/com/stylefeng/guns/modular/system/utils/PortUtil/FortyNineUtil.java
new file mode 100644
index 0000000..55413b6
--- /dev/null
+++ b/src/main/java/com/stylefeng/guns/modular/system/utils/PortUtil/FortyNineUtil.java
@@ -0,0 +1,170 @@
+package com.stylefeng.guns.modular.system.utils.PortUtil;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.stylefeng.guns.core.util.ToolUtil;
+import com.stylefeng.guns.modular.system.utils.HttpRequest;
+import com.stylefeng.guns.modular.system.warpper.TerminaleDataWarpper;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+
+public class FortyNineUtil {
+
+    public static  String trackingList(String blNo){
+        String trackingId="";
+        try {
+            String s = HttpRequest.sendGet("https://api.terminal49.com/v2/tracking_requests", "");
+            Object data = JSONObject.parseObject(s).get("data");
+            JSONArray array = JSONArray.parseArray(data.toString());
+            for (Object o : array) {
+                Object attributes = JSONObject.parseObject(o.toString()).get("attributes");
+                String request_number = JSONObject.parseObject(attributes.toString()).get("request_number").toString();
+                if(blNo.equals(request_number)){
+                    trackingId =  JSONObject.parseObject(o.toString()).get("id").toString();
+                }
+            }
+            System.out.println(trackingId);
+            return trackingId;
+        }catch (Exception e){
+            e.getCause();
+            return null;
+        }
+
+    }
+
+    // 根据bl 和 scac 获取tracking_request 请求id
+    public static String trackingRequest(String blNo,String scac) {
+        HashMap<String, Object> map2 = new HashMap<>();
+        HashMap<String, Object> map = new HashMap<>();
+        map.put("type", "tracking_request");
+        HashMap<String, Object> map1 = new HashMap<>();
+        map1.put("request_number", blNo);
+        map1.put("request_type", "bill_of_lading");
+        map1.put("scac", scac);
+        map.put("attributes", map1);
+        map2.put("data",map);
+        JSONObject jsonObject = new JSONObject(map2);
+        try {
+            String s = HttpRequest.sendPost("https://api.terminal49.com/v2/tracking_requests", jsonObject);
+            Object data = JSONObject.parseObject(s).get("data");
+            String id = JSONObject.parseObject(data.toString()).get("id").toString();
+            return id;
+        }catch (Exception e){
+            return null;
+        }
+
+    }
+
+
+    public static String getShipmentId(String id) {
+        String s = HttpRequest.sendGet(" https://api.terminal49.com/v2/tracking_requests/"+id, "");
+        try {
+            JSONObject jsonObject = JSONObject.parseObject(s);
+            Object data = jsonObject.get("data");
+            Object relationships = JSONObject.parseObject(data.toString()).get("relationships");
+            Object trackedObject = JSONObject.parseObject(relationships.toString()).get("tracked_object");
+            Object data1 = JSONObject.parseObject(trackedObject.toString()).get("data");
+            Object value = JSONObject.parseObject(data1.toString()).get("id");
+            return value.toString();
+        }catch (Exception e){
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+    public static TerminaleDataWarpper getContainerNo(String shipmentId, String containerNo) {
+        int i=0;
+        String s = HttpRequest.sendGet("https://api.terminal49.com/v2/shipments/"+shipmentId, "");
+        TerminaleDataWarpper terminaleDataWarpper = new TerminaleDataWarpper();
+        try {
+        JSONObject jsonObject = JSONObject.parseObject(s);
+        Object data = jsonObject.get("data");
+        Object relationships = JSONObject.parseObject(data.toString()).get("relationships");
+        Object trackedObject = JSONObject.parseObject(relationships.toString()).get("containers");
+        Object data1 = JSONObject.parseObject(trackedObject.toString()).get("data");
+        JSONArray array = JSONObject.parseArray(data1.toString());
+        for (Object o : array) {
+            JSONObject dataInfo = JSONObject.parseObject(o.toString());
+            String id = dataInfo.get("id").toString();
+            String container = HttpRequest.sendGet("https://api.terminal49.com/v2/containers/"+id, "");
+            JSONObject containerJson = JSONObject.parseObject(container);
+            Object data2 = containerJson.get("data");
+            Object attributes = JSONObject.parseObject(data2.toString()).get("attributes");
+            Object number = JSONObject.parseObject(attributes.toString()).get("number");
+            // 匹配这个号码 匹配到
+            String containers = number.toString();
+            if(containerNo.equals(containers)){
+                i = 1;
+                String lfd = String.valueOf(JSONObject.parseObject(attributes.toString()).get("pickup_lfd"));
+                try {
+                    lfd= getTime(lfd);
+                    terminaleDataWarpper.setLfd(lfd);
+                }catch (Exception e){
+                    terminaleDataWarpper.setLfd(lfd);
+                }
+
+                String available = JSONObject.parseObject(attributes.toString()).get("available_for_pickup").toString();
+                terminaleDataWarpper.setAvailability(available);
+                String location = String.valueOf(JSONObject.parseObject(attributes.toString()).get("location_at_pod_terminal"));
+                terminaleDataWarpper.setClosedArea(location);
+                String freight = "";
+                String customs = "";
+                String TMF = "";
+                String CTF = "";
+                String holds = JSONObject.parseObject(attributes.toString()).get("holds_at_pod_terminal").toString();
+                JSONArray array1 = JSONObject.parseArray(holds);
+                for (Object o1 : array1) {
+                    JSONObject jsonObject1 = JSONObject.parseObject(o1.toString());
+                    if("freight".equals(jsonObject1.get("name").toString())){
+                        freight = jsonObject1.get("status").toString();
+                        terminaleDataWarpper.setLineHold(freight);
+                    }
+                    if("customs".equals(jsonObject1.get("name").toString())){
+                        customs = jsonObject1.get("status").toString();
+                        terminaleDataWarpper.setCustomHold(customs);
+                    }
+                    if("TMF".equals(jsonObject1.get("name").toString())){
+                        TMF = jsonObject1.get("status").toString();
+                        terminaleDataWarpper.setPierpass(TMF);
+                    }
+                    if("other".equals(jsonObject1.get("name").toString()) && "CTF - Clean Truck Fee".equals(jsonObject1.get("description").toString())){
+                        CTF = jsonObject1.get("status").toString();
+                        terminaleDataWarpper.setCtf(CTF);
+                    }
+                }
+                if("PENDING".equals(terminaleDataWarpper.getLineHold()) && ToolUtil.isNotEmpty(lfd)){
+                    terminaleDataWarpper.setLineHold("RELEASE");
+                }
+                if("PENDING".equals(terminaleDataWarpper.getCustomHold()) && ToolUtil.isNotEmpty(lfd)){
+                    terminaleDataWarpper.setCustomHold("RELEASE");
+                }
+                if("PENDING".equals(terminaleDataWarpper.getPierpass()) && ToolUtil.isNotEmpty(lfd)){
+                    terminaleDataWarpper.setPierpass("RELEASE");
+                }
+                if("PENDING".equals(terminaleDataWarpper.getCtf()) && ToolUtil.isNotEmpty(lfd)){
+                    terminaleDataWarpper.setCtf("RELEASE");
+                }
+                break;
+            }
+            if(i==0){
+                // 货柜号匹配不上
+                return null;
+            }
+        }
+        }catch (Exception e){
+            e.printStackTrace();
+            return terminaleDataWarpper;
+        }
+        return terminaleDataWarpper;
+    }
+
+    public static String getTime(String time) throws ParseException {
+        String t = time.substring(0, time.indexOf("T"))+" 00:00:00";
+        Date parse = new SimpleDateFormat("yyyy-MM-dd").parse(t);
+        String format = new SimpleDateFormat("dd/MM/yyyy").format(parse);
+        return format;
+    }
+}
diff --git a/src/main/java/com/stylefeng/guns/modular/system/utils/PortUtil/ITSStrategy.java b/src/main/java/com/stylefeng/guns/modular/system/utils/PortUtil/ITSStrategy.java
new file mode 100644
index 0000000..6bdf81b
--- /dev/null
+++ b/src/main/java/com/stylefeng/guns/modular/system/utils/PortUtil/ITSStrategy.java
@@ -0,0 +1,130 @@
+package com.stylefeng.guns.modular.system.utils.PortUtil;
+
+import cn.hutool.core.util.XmlUtil;
+import cn.hutool.http.HttpRequest;
+import cn.hutool.http.HttpResponse;
+import cn.hutool.json.JSONUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.stylefeng.guns.core.common.exception.BizExceptionEnum;
+import com.stylefeng.guns.core.exception.GunsException;
+import com.stylefeng.guns.core.util.ToolUtil;
+import com.stylefeng.guns.modular.system.warpper.TerminaleDataWarpper;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+import java.io.IOException;
+
+public class ITSStrategy implements WharfStrategy {
+
+    private static final String authUrl = "https://api.itslb.com/tms2/Account/Login";
+    private static final String url = "https://api.itslb.com/tms2/Import/ContainerAvailability";
+
+    private static final String username = "Bcllc1441";
+    private static final String password = "Bcllc1441@";
+
+    private static String bearerToken = "";
+
+
+    @Override
+    public TerminaleDataWarpper executeLogic(String... params) {
+
+        String enums = "";
+        if (params.length == 0) {
+            throw new GunsException(BizExceptionEnum.REQUEST_EMPTY_ERROR);
+        } else {
+            enums = params[0];
+        }
+
+        String jsonBody = JSONUtil.createObj()
+                .put("refType", "CN")
+                .put("refNums", enums)
+                .toString();
+        HttpResponse execute = HttpRequest.post(url)
+                .header("Authorization", "Bearer " + bearerToken)
+                .body(jsonBody)
+                .execute();
+        int statusCode = execute.getStatus();
+        String body = execute.body();
+        if ("401".equals(statusCode)){
+            getAuth();
+            executeLogic(params);
+        }
+        TerminaleDataWarpper terminaleDataWarpper = new TerminaleDataWarpper();
+        if ("404".equals(statusCode)){
+            return terminaleDataWarpper;
+        }
+        if ("200".equals(statusCode)){
+            JSONObject jsonObject = JSONObject.parseObject(body);
+            Object o = jsonObject.get("containerAvailabilities");
+            if (ToolUtil.isNotEmpty(o)){
+                try {
+                    ObjectMapper objectMapper = new ObjectMapper();
+                    JsonNode jsonNode = objectMapper.readTree(o.toString());
+                    for (JsonNode node : jsonNode) {
+                        String lineFeeStatusNote = node.get("lineFeeStatusNote").asText();
+                        if ("OK".equals(lineFeeStatusNote)){
+                            terminaleDataWarpper.setLineHold("");
+                        }
+
+                        String customsStatusNote = node.get("customsStatusNote").asText();
+                        if (ToolUtil.isNotEmpty(customsStatusNote) && "OK".equals(customsStatusNote)){
+                            terminaleDataWarpper.setCustomHold("");
+                        }
+
+                        String pierPassStatusNote = node.get("pierPassStatusNote").asText();
+                        if (ToolUtil.isNotEmpty(pierPassStatusNote) && "OK".equals(pierPassStatusNote)){
+                            terminaleDataWarpper.setPierpass("");
+                        }
+
+                        String estDischargeDateShift = node.get("estDischargeDateShift").asText();
+                        if (ToolUtil.isNotEmpty(estDischargeDateShift)){
+                            terminaleDataWarpper.setLfd(estDischargeDateShift);
+                        }
+
+                        String spotStatusNote = node.get("spotStatusNote").asText();
+                        if (ToolUtil.isNotEmpty(estDischargeDateShift) && "AREA CLOSED".equals(spotStatusNote)){
+                            terminaleDataWarpper.setClosedArea("");
+                        }
+
+                        String containerNumber = node.get("containerNumber").asText();
+                        if (ToolUtil.isNotEmpty(containerNumber) ){
+                            terminaleDataWarpper.setAppointmentNumber(containerNumber);
+                        }
+
+                        String isContainerAvailable = node.get("isContainerAvailable").asText();
+                        if (ToolUtil.isNotEmpty(isContainerAvailable) && "true".equals(isContainerAvailable)){
+                            terminaleDataWarpper.setAvailability(isContainerAvailable);
+                        }else {
+                            terminaleDataWarpper.setAvailability("false");
+                        }
+
+
+                        break;
+                    }
+
+                } catch (IOException e) {
+                    throw new RuntimeException(e);
+                }
+
+            }
+        }
+
+        return terminaleDataWarpper;
+    }
+
+    public static void getAuth(){
+        String jsonInputString = "{\"userName\": \"Bcllc1441\", \"password\": \"Bcllc1441@\"}";
+        String body = HttpRequest.post(authUrl)
+                .body(jsonInputString)
+                .execute().body();
+        Document document = XmlUtil.parseXml(body);
+        Element rootElement = document.getDocumentElement();
+        String access_token = rootElement.getElementsByTagName("access_token").item(0).getTextContent();
+
+        if (ToolUtil.isNotEmpty(access_token)){
+            bearerToken = access_token;
+        }
+    }
+}
diff --git a/src/main/java/com/stylefeng/guns/modular/system/utils/PortUtil/LBCTStrategy.java b/src/main/java/com/stylefeng/guns/modular/system/utils/PortUtil/LBCTStrategy.java
new file mode 100644
index 0000000..e0078b6
--- /dev/null
+++ b/src/main/java/com/stylefeng/guns/modular/system/utils/PortUtil/LBCTStrategy.java
@@ -0,0 +1,125 @@
+package com.stylefeng.guns.modular.system.utils.PortUtil;
+
+import cn.hutool.http.HttpRequest;
+import cn.hutool.http.HttpResponse;
+import com.alibaba.fastjson.JSONObject;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.gson.Gson;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.stylefeng.guns.core.common.exception.BizExceptionEnum;
+import com.stylefeng.guns.core.exception.GunsException;
+import com.stylefeng.guns.core.util.ToolUtil;
+import com.stylefeng.guns.modular.system.warpper.TerminaleDataWarpper;
+
+import java.io.IOException;
+
+public class LBCTStrategy implements WharfStrategy {
+
+    private static final String url = "https://www.lbct.com/CargoSearch/GetMultiCargoSearchJson";
+
+
+//    public static void main(String[] args) throws IOException {
+//
+//        // 假设您有一个JSON字符串
+//        String jsonString = "{\"field1\":\"value1\",\"nestedObject\":{\"field2\":\"value2\"}}";
+//
+//// 创建ObjectMapper对象
+//        ObjectMapper objectMapper = new ObjectMapper();
+//
+//// 将JSON字符串解析为JsonNode对象
+//        JsonNode jsonNode = objectMapper.readTree(jsonString);
+//
+//// 获取嵌套对象中的字段值
+//        String field2Value = jsonNode.get("nestedObject").get("field2").asText();
+//
+//        System.out.println(field2Value);
+//
+//
+//    }
+
+    public static void main(String[] args) {
+        String us = url+ "?timestamp="+System.currentTimeMillis()+"&listOfSearchId="+"GCXU5491260";
+        HttpResponse execute = HttpRequest.get(us).header("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36")
+                .header("cookie", "_ga=GA1.2.1226281326.1675309614; _gid=GA1.2.1467106222.1675309614; _ga=GA1.4.1226281326.1675309614; _gid=GA1.4.1467106222.1675309614; AWSALB=1bWqINVI+LJP87FTEXfEw1Ob1nkbr+I4baSbUGUmu5+/LdiqL9ic04Nj7F0Vz3rvharAG7a8dVe3MX6YMNEbUINVr++CCv/UBw6JeCRS0PcbRLxK7wVHb1lPT8Jl; AWSALBCORS=1bWqINVI+LJP87FTEXfEw1Ob1nkbr+I4baSbUGUmu5+/LdiqL9ic04Nj7F0Vz3rvharAG7a8dVe3MX6YMNEbUINVr++CCv/UBw6JeCRS0PcbRLxK7wVHb1lPT8Jl")
+                .header("path", "?timestamp=" + System.currentTimeMillis() + "&listOfSearchId=" + "GCXU5491260")
+                .execute();
+        String body = execute.body();
+        System.out.println(body);
+    }
+    @Override
+    public TerminaleDataWarpper executeLogic(String... params) {
+        String enums = "";
+        if (params.length == 0) {
+            throw new GunsException(BizExceptionEnum.REQUEST_EMPTY_ERROR);
+        } else {
+            enums = params[0];
+        }
+        String us = url+ "?timestamp="+System.currentTimeMillis()+"&listOfSearchId="+enums;
+        HttpResponse execute = HttpRequest.get(us).header("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36")
+                .header("cookie", "_ga=GA1.2.1226281326.1675309614; _gid=GA1.2.1467106222.1675309614; _ga=GA1.4.1226281326.1675309614; _gid=GA1.4.1467106222.1675309614; AWSALB=1bWqINVI+LJP87FTEXfEw1Ob1nkbr+I4baSbUGUmu5+/LdiqL9ic04Nj7F0Vz3rvharAG7a8dVe3MX6YMNEbUINVr++CCv/UBw6JeCRS0PcbRLxK7wVHb1lPT8Jl; AWSALBCORS=1bWqINVI+LJP87FTEXfEw1Ob1nkbr+I4baSbUGUmu5+/LdiqL9ic04Nj7F0Vz3rvharAG7a8dVe3MX6YMNEbUINVr++CCv/UBw6JeCRS0PcbRLxK7wVHb1lPT8Jl")
+                .header("path", "?timestamp=" + System.currentTimeMillis() + "&listOfSearchId=" + enums)
+                .execute();
+        String body = execute.body();
+        ObjectMapper objectMapper = new ObjectMapper();
+        JsonNode jsonArray = null;
+        TerminaleDataWarpper warpper = new TerminaleDataWarpper();
+        if (ToolUtil.isEmpty(body)){
+            return warpper;
+        }
+        try {
+            jsonArray = objectMapper.readTree(body);
+            JsonNode jsonNode = jsonArray.get(0);
+            String appointmentDateTimeLocal = jsonNode.get("gateAppt").asText();
+            JSONObject jsonObject = JSONObject.parseObject(appointmentDateTimeLocal);
+            Object o = jsonObject.get("IsTMF");
+            if (o.equals("true")){
+                warpper.setPierpass("hold");
+            }
+
+            Object location = jsonObject.get("location");
+            if ("GROUNDED".equals(location)){
+                warpper.setClosedArea(location.toString());
+            }
+            Object lfd = jsonObject.get("freeTimeExpiration");
+            if (ToolUtil.isNotEmpty(lfd)){
+                warpper.setLfd(lfd.toString());
+            }
+
+            Object available = jsonObject.get("available");
+            if (ToolUtil.isNotEmpty(available)){
+                warpper.setAvailability(available.toString());
+            }
+
+            ObjectMapper insMapp = new ObjectMapper();
+            JsonNode gateAppt1 = insMapp.readTree(jsonObject.get("gateAppt").toString());
+            String gkey = gateAppt1.get("Gkey").asText();
+            if (ToolUtil.isNotEmpty(gkey)){
+                warpper.setAppointmentNumber(gkey);
+            }
+
+            Object listOfFlag = jsonNode.get(0).get("listOfFlag");
+            Gson gson = new Gson();
+            JsonArray jsonElements = gson.fromJson(listOfFlag.toString(), JsonArray.class);
+            for (JsonElement jsonElement : jsonElements) {
+                String holdName = jsonElement.getAsJsonObject().get("holdName").getAsString();
+                String type = jsonElement.getAsJsonObject().get("type").getAsString();
+                switch (holdName){
+                    case "CTF_CONTAINER_HOLD":
+                            warpper.setCtf(type);
+                        break;
+                    case "CUSTOMS_DEFAULT_HOLD":
+                            warpper.setCustomHold(type);
+                        break;
+                    case "FREIGHT_BL_HOLD":
+                            warpper.setLineHold(type);
+                        break;
+                }
+            }
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+        return warpper;
+    }
+}
diff --git a/src/main/java/com/stylefeng/guns/modular/system/utils/PortUtil/SCACEnum.java b/src/main/java/com/stylefeng/guns/modular/system/utils/PortUtil/SCACEnum.java
new file mode 100644
index 0000000..bf13181
--- /dev/null
+++ b/src/main/java/com/stylefeng/guns/modular/system/utils/PortUtil/SCACEnum.java
@@ -0,0 +1,140 @@
+package com.stylefeng.guns.modular.system.utils.PortUtil;
+
+import com.alibaba.fastjson.JSONObject;
+import com.stylefeng.guns.modular.system.utils.HttpRequest;
+
+import java.util.HashMap;
+
+public enum SCACEnum {
+
+    MATS("MATSON", "MATS"),
+    MSCU("MSC", "MSCU"),
+    MAEU("MAERSK", "MAEU"),
+    CMDU("CMA CGM", "CMDU"),
+    COSU("COSCO", "COSU"),
+    HLCU("HAPAG-LLOYD", "HLCU"),
+    EGLV("EVERGREEN", "EGLV"),
+    ONEY("ONE", "ONEY"),
+    OOLU("OOCL", "OOLU"),
+    HDMU("HMM", "HDMU"),
+    YMLU("YANG MING", "YMLU"),
+    ZIMU("ZIM", "ZIMU"),
+    WHLC("WAN HAI", "WHLC"),
+    SMLM("SM LINES", "SMLM"),
+    CULU("CUL", "CULU"),
+    AZNG("AMAZON LINE", "AZNG"),
+    ANNU("ANL", "ANNU"),
+    APLU("APL", "APLU"),
+    PCIU("PIL","PCIU"),
+    SAFM("SAFMARINE", "SAFM"),
+    SEAU("SEALAND", "SEAU"),
+    CHVW("SWIRE SHIPPING", "CHVW"),
+    SUDU("HAMBURG SUD", "SUDU");
+
+    private String desc;
+
+
+    private String code;
+
+
+    SCACEnum(String code, String desc) {
+        this.code = code;
+        this.desc = desc;
+    }
+
+    public String getDesc() {
+        return desc;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    /**
+     * 通过code获取枚举
+     *
+     * @param code
+     * @return
+     */
+    public static SCACEnum fromCode(String code) {
+        SCACEnum[] resultTypes = SCACEnum.values();
+        for (SCACEnum resultType : resultTypes) {
+            if (code.equals(resultType.getCode())) {
+                return resultType;
+            }
+        }
+        return null;
+    }
+
+    public static void main(String[] args) {
+        HashMap<String, Object> map = new HashMap<>();
+        map.put("type","tracking_request");
+        HashMap<String, Object> map1 = new HashMap<>();
+        map1.put("request_number","HDMUNBOZ08657400");
+        map1.put("request_type","bill_of_lading");
+        map1.put("scac","HDMU");
+        map.put("attributes",map1);
+        JSONObject jsonObject = new JSONObject(map);
+        try {
+            String s = HttpRequest.sendPost("https://api.terminal49.com/v2/tracking_requests", jsonObject);
+            Object data = JSONObject.parseObject(s).get("data");
+            String id = JSONObject.parseObject(data.toString()).get("id").toString();
+            System.out.println(id);
+        }catch (Exception e){
+            e.getCause();
+        }
+
+    }
+
+
+//    public static void main(String[] args) {
+//        String s = HttpRequest.sendGet(" https://api.terminal49.com/v2/tracking_requests/fab66753-6398-4387-9559-7398346c51cc", "");
+//        JSONObject jsonObject = JSONObject.parseObject(s);
+//        Object data = jsonObject.get("data");
+//        Object relationships = JSONObject.parseObject(data.toString()).get("relationships");
+//        Object trackedObject = JSONObject.parseObject(relationships.toString()).get("tracked_object");
+//        Object data1 = JSONObject.parseObject(trackedObject.toString()).get("data");
+//        Object value = JSONObject.parseObject(data1.toString()).get("id");
+//        System.out.println(value.toString());
+//    }
+
+
+//    public static void main(String[] args) {
+//        String s = HttpRequest.sendGet("https://api.terminal49.com/v2/shipments/ee4427ff-5c7e-48d9-9e96-9f9a583a5c03", "");
+//        JSONObject jsonObject = JSONObject.parseObject(s);
+//        Object data = jsonObject.get("data");
+//        Object relationships = JSONObject.parseObject(data.toString()).get("relationships");
+//        Object trackedObject = JSONObject.parseObject(relationships.toString()).get("containers");
+//        Object data1 = JSONObject.parseObject(trackedObject.toString()).get("data");
+//        JSONArray array = JSONObject.parseArray(data1.toString());
+//        for (Object o : array) {
+//            JSONObject dataInfo = JSONObject.parseObject(o.toString());
+//            String id = dataInfo.get("id").toString();
+//            String container = HttpRequest.sendGet("https://api.terminal49.com/v2/containers/"+id, "");
+//            JSONObject containerJson = JSONObject.parseObject(container);
+//            Object data2 = containerJson.get("data");
+//            Object attributes = JSONObject.parseObject(data2.toString()).get("attributes");
+//            Object number = JSONObject.parseObject(attributes.toString()).get("number");
+//            // 匹配这个号码 匹配到
+//            String containers = number.toString();
+//        }
+//        String s = HttpRequest.sendGet("https://api.terminal49.com/v2/shipments/ee4427ff-5c7e-48d9-9e96-9f9a583a5c03", "");
+//        JSONObject jsonObject = JSONObject.parseObject(s);
+//        Object data = jsonObject.get("data");
+//        Object relationships = JSONObject.parseObject(data.toString()).get("relationships");
+//        Object trackedObject = JSONObject.parseObject(relationships.toString()).get("containers");
+//        Object data1 = JSONObject.parseObject(trackedObject.toString()).get("data");
+//        JSONArray array = JSONObject.parseArray(data1.toString());
+//        for (Object o : array) {
+//            JSONObject dataInfo = JSONObject.parseObject(o.toString());
+//            String id = dataInfo.get("id").toString();
+//            String container = HttpRequest.sendGet("https://api.terminal49.com/v2/containers/"+id, "");
+//            JSONObject containerJson = JSONObject.parseObject(container);
+//            Object data2 = containerJson.get("data");
+//            Object attributes = JSONObject.parseObject(data2.toString()).get("attributes");
+//            Object number = JSONObject.parseObject(attributes.toString()).get("number");
+//            // 匹配这个号码 匹配到
+//            String containers = number.toString();
+//        }
+//    }
+}
\ No newline at end of file
diff --git a/src/main/java/com/stylefeng/guns/modular/system/utils/PortUtil/StrategyContext.java b/src/main/java/com/stylefeng/guns/modular/system/utils/PortUtil/StrategyContext.java
new file mode 100644
index 0000000..98c5b6c
--- /dev/null
+++ b/src/main/java/com/stylefeng/guns/modular/system/utils/PortUtil/StrategyContext.java
@@ -0,0 +1,30 @@
+package com.stylefeng.guns.modular.system.utils.PortUtil;
+
+
+import com.stylefeng.guns.modular.system.warpper.TerminaleDataWarpper;
+
+import static com.stylefeng.guns.modular.system.utils.PortUtil.WharfEnum.*;
+
+public class StrategyContext {
+
+    private static WharfStrategy strategy;
+
+    public StrategyContext(String dockName) {
+        if (APM.name.equals(dockName)) {
+            strategy = new APMStrategy();
+        }
+        if (LBCT.name.equals(dockName)) {
+            strategy = new LBCTStrategy();
+        }
+        if (FMS.name.equals(dockName)) {
+            strategy = new FMSStrategy();
+        }
+        if (ITS.name.equals(dockName)) {
+            strategy = new ITSStrategy();
+        }
+    }
+
+    public TerminaleDataWarpper executeAndGetResponse(String... params) {
+        return strategy.executeLogic(params);
+    }
+}
diff --git a/src/main/java/com/stylefeng/guns/modular/system/utils/PortUtil/TerminalInterfaceAcquisitionUtil.java b/src/main/java/com/stylefeng/guns/modular/system/utils/PortUtil/TerminalInterfaceAcquisitionUtil.java
new file mode 100644
index 0000000..c02bdfc
--- /dev/null
+++ b/src/main/java/com/stylefeng/guns/modular/system/utils/PortUtil/TerminalInterfaceAcquisitionUtil.java
@@ -0,0 +1,20 @@
+package com.stylefeng.guns.modular.system.utils.PortUtil;
+
+import com.stylefeng.guns.modular.system.warpper.TerminaleDataWarpper;
+
+public class TerminalInterfaceAcquisitionUtil {
+
+    /**
+     *
+     * @param containerId 容器id
+     * @param enums 设施编码
+     * @return
+     */
+    public static TerminaleDataWarpper getTerminalStatus(String portName, String containerId, String enums){
+        StrategyContext strategyContext = new StrategyContext(portName);
+        return strategyContext.executeAndGetResponse(containerId,enums);
+    }
+
+
+
+}
diff --git a/src/main/java/com/stylefeng/guns/modular/system/utils/PortUtil/WharfEnum.java b/src/main/java/com/stylefeng/guns/modular/system/utils/PortUtil/WharfEnum.java
new file mode 100644
index 0000000..85d0499
--- /dev/null
+++ b/src/main/java/com/stylefeng/guns/modular/system/utils/PortUtil/WharfEnum.java
@@ -0,0 +1,16 @@
+package com.stylefeng.guns.modular.system.utils.PortUtil;
+
+public enum WharfEnum {
+
+    APM("APM"),
+    LBCT("LBCT"),
+    FMS("FMS"),
+    ITS("ITS"),
+    ;
+
+    public final String name;
+
+    WharfEnum(String name) {
+        this.name = name;
+    }
+}
diff --git a/src/main/java/com/stylefeng/guns/modular/system/utils/PortUtil/WharfStrategy.java b/src/main/java/com/stylefeng/guns/modular/system/utils/PortUtil/WharfStrategy.java
new file mode 100644
index 0000000..714bb68
--- /dev/null
+++ b/src/main/java/com/stylefeng/guns/modular/system/utils/PortUtil/WharfStrategy.java
@@ -0,0 +1,7 @@
+package com.stylefeng.guns.modular.system.utils.PortUtil;
+
+import com.stylefeng.guns.modular.system.warpper.TerminaleDataWarpper;
+
+public interface WharfStrategy {
+    TerminaleDataWarpper executeLogic(String... params);
+}
diff --git a/src/main/java/com/stylefeng/guns/modular/system/utils/TerminalInterfaceAcquisitionUtil.java b/src/main/java/com/stylefeng/guns/modular/system/utils/TerminalInterfaceAcquisitionUtil.java
index 478c5c1..62989f2 100644
--- a/src/main/java/com/stylefeng/guns/modular/system/utils/TerminalInterfaceAcquisitionUtil.java
+++ b/src/main/java/com/stylefeng/guns/modular/system/utils/TerminalInterfaceAcquisitionUtil.java
@@ -1,135 +1,135 @@
-package com.stylefeng.guns.modular.system.utils;
-
-import cn.hutool.http.HttpRequest;
-import cn.hutool.http.HttpResponse;
-import com.alibaba.fastjson.JSONObject;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.stylefeng.guns.core.util.ToolUtil;
-import com.stylefeng.guns.modular.system.warpper.TerminaleDataWarpper;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- * <p>
- *   码头-车场-客户 运输状态 第三方接口获取数据 APM码头——Import Availability
- *
- * </p>
- *
- * @Author: lisy
- * @date: 2023-05-18 16:52
- * @Description:
- */
-
-public class TerminalInterfaceAcquisitionUtil {
-
-    //Sandbox Interface
-    private static final String url  = "https://api-sandbox.apmterminals.com/import-availability";
-
-    //Production Interface
-    private static final String proUrl  = "https://api.apmterminals.com/import-availability";
-    private static final String auth_url  = "https://api.apmterminals.com/oauth/client_credential/accesstoken";
-
-    private static final String KEY  = "di3RgCcM9zlgb5BG1UiYSIxwYdmYUxTo";
-    private static final String SECRET  = "AIJczPxBeocsEjtI";
-    private static String bearerToken  = "5dDHq3LwPW3EYZ6rtPGK0zqWsRA5";
-
-
-    /**
-     *
-     * @param containerId 容器id
-     * @param enums 设施编码
-     * @return
-     */
-    public static TerminaleDataWarpper getTerminalStatus(String containerId,String enums){
-        String us = url+ "?assetId="+containerId+"&facilityCode="+enums;
-        HttpResponse execute = HttpRequest.get(us).header("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36")
-                .header("cookie", "_ga=GA1.2.1226281326.1675309614; _gid=GA1.2.1467106222.1675309614; _ga=GA1.4.1226281326.1675309614; _gid=GA1.4.1467106222.1675309614; AWSALB=1bWqINVI+LJP87FTEXfEw1Ob1nkbr+I4baSbUGUmu5+/LdiqL9ic04Nj7F0Vz3rvharAG7a8dVe3MX6YMNEbUINVr++CCv/UBw6JeCRS0PcbRLxK7wVHb1lPT8Jl; AWSALBCORS=1bWqINVI+LJP87FTEXfEw1Ob1nkbr+I4baSbUGUmu5+/LdiqL9ic04Nj7F0Vz3rvharAG7a8dVe3MX6YMNEbUINVr++CCv/UBw6JeCRS0PcbRLxK7wVHb1lPT8Jl")
-                .header("path", "?assetId=" + containerId + "&facilityCode=" + enums)
-                .header("Authorization", "Bearer " + bearerToken)
-                .execute();
-        String body = execute.body();
-        int status = execute.getStatus();
-        if (status != 200){
-            getAuth();
-            getTerminalStatus(containerId,enums);
-        }
-        ObjectMapper objectMapper = new ObjectMapper();
-        JsonNode jsonArray = null;
-        TerminaleDataWarpper warpper = new TerminaleDataWarpper();
-        try {
-            jsonArray = objectMapper.readTree(body);
-            for (JsonNode jsonNode : jsonArray) {
-                String appointmentDateTimeLocal = jsonNode.get("appointmentDateTimeLocal").asText();
-                warpper.setLfd(appointmentDateTimeLocal);
-                String appointmentNumber = jsonNode.get("containerId").asText();
-                warpper.setAppointmentNumber(appointmentNumber);
-                String containerHolds = jsonNode.get("containerHolds").asText();
-                List<String> collect = new ArrayList<>();
-                if (ToolUtil.isEmpty(containerHolds)){
-                    return warpper;
-                }
-                if (containerHolds.contains(",")){
-                    String[] split = containerHolds.split(",");
-                    collect =  Arrays.stream(split).collect(Collectors.toList());
-                    if (collect.contains("LINE")){
-                        warpper.setLineHold(1);
-                    }
-                    if (collect.contains("TMF")){
-                        warpper.setCustomHold(1);
-                    }
-                    if (collect.contains("PIER")){
-                        warpper.setPierpass(1);
-                    }
-                    if (collect.contains("CTF")){
-                        warpper.setCtf(1);
-                    }
-                    if (collect.contains("AREA")){
-                        warpper.setClosedArea(1);
-                    }
-                }else {
-                    if (containerHolds.equals("LINE")){
-                        warpper.setLineHold(1);
-                    }
-                    if (containerHolds.equals("TMF")){
-                        warpper.setCustomHold(1);
-                    }
-                    if (containerHolds.equals("PIER")){
-                        warpper.setPierpass(1);
-                    }
-                    if (containerHolds.equals("CTF")){
-                        warpper.setCtf(1);
-                    }
-                    if (containerHolds.equals("AREA")){
-                        warpper.setClosedArea(1);
-                    }
-                }
-            }
-
-
-        } catch (IOException e) {
-            throw new RuntimeException(e);
-        }
-        return warpper;
-    }
-
-
-    public static void getAuth(){
-        String us = auth_url+ "?grant_type=client_credentials";
-        String body = HttpRequest.post(us)
-                .form("client_id", KEY)
-                .form("client_id", SECRET)
-                .execute().body();
-        JSONObject object = JSONObject.parseObject(body);
-        Object o = object.get("access_token");
-        if (ToolUtil.isNotEmpty(o)){
-            bearerToken = (String) o;
-        }
-    }
-
-
-}
+//package com.stylefeng.guns.modular.system.utils;
+//
+//import cn.hutool.http.HttpRequest;
+//import cn.hutool.http.HttpResponse;
+//import com.alibaba.fastjson.JSONObject;
+//import com.fasterxml.jackson.databind.JsonNode;
+//import com.fasterxml.jackson.databind.ObjectMapper;
+//import com.stylefeng.guns.core.util.ToolUtil;
+//import com.stylefeng.guns.modular.system.warpper.TerminaleDataWarpper;
+//
+//import java.io.IOException;
+//import java.util.ArrayList;
+//import java.util.Arrays;
+//import java.util.List;
+//import java.util.stream.Collectors;
+//
+///**
+// * <p>
+// *   码头-车场-客户 运输状态 第三方接口获取数据 APM码头——Import Availability
+// *
+// * </p>
+// *
+// * @Author: lisy
+// * @date: 2023-05-18 16:52
+// * @Description:
+// */
+//
+//public class TerminalInterfaceAcquisitionUtil {
+//
+//    //Sandbox Interface
+//    private static final String url  = "https://api-sandbox.apmterminals.com/import-availability";
+//
+//    //Production Interface
+//    private static final String proUrl  = "https://api.apmterminals.com/import-availability";
+//    private static final String auth_url  = "https://api.apmterminals.com/oauth/client_credential/accesstoken";
+//
+//    private static final String KEY  = "di3RgCcM9zlgb5BG1UiYSIxwYdmYUxTo";
+//    private static final String SECRET  = "AIJczPxBeocsEjtI";
+//    private static String bearerToken  = "5dDHq3LwPW3EYZ6rtPGK0zqWsRA5";
+//
+//
+//    /**
+//     *
+//     * @param containerId 容器id
+//     * @param enums 设施编码
+//     * @return
+//     */
+//    public static TerminaleDataWarpper getTerminalStatus(String containerId,String enums){
+//        String us = url+ "?assetId="+containerId+"&facilityCode="+enums;
+//        HttpResponse execute = HttpRequest.get(us).header("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36")
+//                .header("cookie", "_ga=GA1.2.1226281326.1675309614; _gid=GA1.2.1467106222.1675309614; _ga=GA1.4.1226281326.1675309614; _gid=GA1.4.1467106222.1675309614; AWSALB=1bWqINVI+LJP87FTEXfEw1Ob1nkbr+I4baSbUGUmu5+/LdiqL9ic04Nj7F0Vz3rvharAG7a8dVe3MX6YMNEbUINVr++CCv/UBw6JeCRS0PcbRLxK7wVHb1lPT8Jl; AWSALBCORS=1bWqINVI+LJP87FTEXfEw1Ob1nkbr+I4baSbUGUmu5+/LdiqL9ic04Nj7F0Vz3rvharAG7a8dVe3MX6YMNEbUINVr++CCv/UBw6JeCRS0PcbRLxK7wVHb1lPT8Jl")
+//                .header("path", "?assetId=" + containerId + "&facilityCode=" + enums)
+//                .header("Authorization", "Bearer " + bearerToken)
+//                .execute();
+//        String body = execute.body();
+//        int status = execute.getStatus();
+//        if (status != 200){
+//            getAuth();
+//            getTerminalStatus(containerId,enums);
+//        }
+//        ObjectMapper objectMapper = new ObjectMapper();
+//        JsonNode jsonArray = null;
+//        TerminaleDataWarpper warpper = new TerminaleDataWarpper();
+//        try {
+//            jsonArray = objectMapper.readTree(body);
+//            for (JsonNode jsonNode : jsonArray) {
+//                String appointmentDateTimeLocal = jsonNode.get("appointmentDateTimeLocal").asText();
+//                warpper.setLfd(appointmentDateTimeLocal);
+//                String appointmentNumber = jsonNode.get("containerId").asText();
+//                warpper.setAppointmentNumber(appointmentNumber);
+//                String containerHolds = jsonNode.get("containerHolds").asText();
+//                List<String> collect = new ArrayList<>();
+//                if (ToolUtil.isEmpty(containerHolds)){
+//                    return warpper;
+//                }
+//                if (containerHolds.contains(",")){
+//                    String[] split = containerHolds.split(",");
+//                    collect =  Arrays.stream(split).collect(Collectors.toList());
+//                    if (collect.contains("LINE")){
+//                        warpper.setLineHold(1);
+//                    }
+//                    if (collect.contains("TMF")){
+//                        warpper.setCustomHold(1);
+//                    }
+//                    if (collect.contains("PIER")){
+//                        warpper.setPierpass(1);
+//                    }
+//                    if (collect.contains("CTF")){
+//                        warpper.setCtf(1);
+//                    }
+//                    if (collect.contains("AREA")){
+//                        warpper.setClosedArea(1);
+//                    }
+//                }else {
+//                    if (containerHolds.equals("LINE")){
+//                        warpper.setLineHold(1);
+//                    }
+//                    if (containerHolds.equals("TMF")){
+//                        warpper.setCustomHold(1);
+//                    }
+//                    if (containerHolds.equals("PIER")){
+//                        warpper.setPierpass(1);
+//                    }
+//                    if (containerHolds.equals("CTF")){
+//                        warpper.setCtf(1);
+//                    }
+//                    if (containerHolds.equals("AREA")){
+//                        warpper.setClosedArea(1);
+//                    }
+//                }
+//            }
+//
+//
+//        } catch (IOException e) {
+//            throw new RuntimeException(e);
+//        }
+//        return warpper;
+//    }
+//
+//
+//    public static void getAuth(){
+//        String us = auth_url+ "?grant_type=client_credentials";
+//        String body = HttpRequest.post(us)
+//                .form("client_id", KEY)
+//                .form("client_id", SECRET)
+//                .execute().body();
+//        JSONObject object = JSONObject.parseObject(body);
+//        Object o = object.get("access_token");
+//        if (ToolUtil.isNotEmpty(o)){
+//            bearerToken = (String) o;
+//        }
+//    }
+//
+//
+//}
diff --git a/src/main/java/com/stylefeng/guns/modular/system/warpper/TerminaleDataWarpper.java b/src/main/java/com/stylefeng/guns/modular/system/warpper/TerminaleDataWarpper.java
index 88af94e..3c9e15b 100644
--- a/src/main/java/com/stylefeng/guns/modular/system/warpper/TerminaleDataWarpper.java
+++ b/src/main/java/com/stylefeng/guns/modular/system/warpper/TerminaleDataWarpper.java
@@ -17,18 +17,19 @@
 public class TerminaleDataWarpper {
 
     @ApiModelProperty(value = "1:YES 2:NO")
-    private Integer lineHold = 2;
+    private String lineHold="PENDING";
     @ApiModelProperty(value = "1:YES 2:NO")
-    private Integer customHold = 2;
+    private String customHold="PENDING";
     @ApiModelProperty(value = "1:YES 2:NO")
-    private Integer pierpass = 2;
+    private String pierpass="PENDING";
     @ApiModelProperty(value = "1:YES 2:NO")
-    private Integer ctf = 2;
+    private String ctf="PENDING" ;
 
     private String lfd;
     @ApiModelProperty(value = "1:YES 2:NO")
-    private Integer closedArea = 2;
+    private String closedArea="ON VESSEL";
 
     private String appointmentNumber;
+    private String availability;
 
 }
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 579e508..34da789 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -25,6 +25,7 @@
     multipart:
       max-request-size: 100MB
       max-file-size: 100MB
+      location: /home/temp
 
 mybatis-plus:
   typeAliasesPackage: com.stylefeng.guns.modular.system.model
@@ -39,10 +40,10 @@
 spring:
   profiles: local
   datasource:
-    url: jdbc:mysql://127.0.0.1:3306/broker?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai
+    url: jdbc:mysql://54.67.44.33:3306/broker?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai
     username: root
-    #password: 7rco.Zt8wXv7
-    password: 123456
+    password: 7rco.Zt8wXv7
+#    password: 123456
     db-name: broker #用来搜集数据库的所有表
     filters: wall,mergeStat
 

--
Gitblit v1.7.1