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