1 文件已重命名
23个文件已修改
9个文件已添加
| | |
| | | CANT_DELETE_ADMIN(600, "不能删除超级管理员"), |
| | | CANT_FREEZE_ADMIN(600, "不能冻结超级管理员"), |
| | | CANT_CHANGE_ADMIN(600, "不能修改超级管理员角色"), |
| | | REQUEST_EMPTY_ERROR(500, "请求参数不能为空"), |
| | | |
| | | /** |
| | | * 账户问题 |
| | |
| | | e.setOurRef(goodsListDto.getOurRef()); |
| | | e.setPo(goodsListDto.getPo()); |
| | | e.setSb(goodsListDto.getSb()); |
| | | e.setBillNumber(goodsListDto.getBillNumber()); |
| | | TOrder tOrder = new TOrder(); |
| | | tOrder.setUserId(demandDto.getUserId()); |
| | | tOrder.setAccessorial(demandDto.getAccessorial()); |
| | |
| | | package com.stylefeng.guns.modular.system.controller; |
| | | |
| | | import cn.hutool.core.bean.BeanUtil; |
| | | import cn.hutool.core.date.DateTime; |
| | | import cn.hutool.core.date.DateUtil; |
| | | 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; |
| | |
| | | return new SuccessTip(); |
| | | } |
| | | |
| | | @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); |
| | | } |
| | | |
| | | |
| | | @Resource |
| | | private TTransportationService tTransportationService; |
| | | |
| | |
| | | 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){ |
| | |
| | | driverIds.add(driverIdOne); |
| | | } |
| | | 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)); |
| | | List<TTransportation> tTransportations = tTransportationService.selectList(new EntityWrapper<TTransportation>().eq("order_id", orderId).in("driver_id", driverIds).orderBy("type")); |
| | | TerminaleDataWarpper terminalStatus =new TerminaleDataWarpper(); |
| | | try { |
| | | terminalStatus = TerminalInterfaceAcquisitionUtil.getTerminalStatus(tGoods.getContainerNumber(), FacilityCodeEnum.USLAX.getMsg()); |
| | | 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(); |
| | |
| | | OrderDriverInfo orderDriverInfo = new OrderDriverInfo(); |
| | | orderDriverInfo.setId(tDriver.getId()); |
| | | orderDriverInfo.setDriverId(tDriver.getDriverId()); |
| | | if(tDriver.getId().equals(sDriverIdOne)&&tDriver.getType()==2){ |
| | | 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()); |
| | |
| | | transportInfo.setCTF(terminalStatus.getCtf()); |
| | | transportInfo.setClosedArea(terminalStatus.getClosedArea()); |
| | | transportInfo.setLFD(terminalStatus.getLfd()); |
| | | transportInfo.setAvailable(terminalStatus.getAvailability()); |
| | | |
| | | transportInfo.setList(orderDriverInfos); |
| | | Integer examSite = tOrder.getExamSite(); |
| | |
| | | TOrder tOrder = orderService.selectById(orderId); |
| | | TTransportation list = companySelectDriverSingleDto.getList(); |
| | | list.setOrderId(companySelectDriverSingleDto.getOrderId()); |
| | | Integer type = companySelectDriverSingleDto.getType(); |
| | | Integer type = companySelectDriverSingleDto.getList().getType(); |
| | | if(type==1){ |
| | | tTransportationService.delete(new EntityWrapper<TTransportation>().eq("order_id",orderId).eq("driver_id",tOrder.getsDriverid()).eq("type",1)); |
| | | tOrder.setsDriverid(list.getDriverId()); |
| | |
| | | @ResponseBody |
| | | public Object getWarehouseFromId(int id,int pageNumber,int pageSize,String code) { |
| | | Page<TWarehouse> tWarehousePage = new Page<>(pageNumber, pageSize); |
| | | Wrapper<TWarehouse> warehouseWrapper = new EntityWrapper<TWarehouse>().eq("port_id", id); |
| | | if(ToolUtil.isNotEmpty(code)){ |
| | | warehouseWrapper.like("code",code).or().like("state",code); |
| | | } |
| | | Page<TWarehouse> tWarehouses = warehouseService.selectPage(tWarehousePage,warehouseWrapper); |
| | | return new SuccessTip(tWarehouses); |
| | | List<TWarehouse> tWarehouses = warehouseService.getWarehouseFromId(tWarehousePage,id,code); |
| | | tWarehousePage.setRecords(tWarehouses); |
| | | return new SuccessTip(tWarehousePage); |
| | | } |
| | | |
| | | @ApiOperation(value = "卡车公司- 根据id统一设置亚马逊价格",notes="卡车公司-根据id统一设置亚马逊价格") |
| | |
| | | @ApiImplicitParam(name = "name", value = "powerUnitNumber", required = false, dataType = "String",paramType = "query"), |
| | | @ApiImplicitParam(name = "pageNumber", value = "pageNumber", required = true, dataType = "int",paramType = "query"), |
| | | @ApiImplicitParam(name = "pageSize", value = "pageSize", required = true, dataType = "int",paramType = "query"), |
| | | @ApiImplicitParam(name = "companyId", value = "companyId", required = true, dataType = "int",paramType = "query"), |
| | | }) |
| | | @GetMapping(value = "/list") |
| | | @ResponseBody |
| | | public Object list(String time,String name,int pageNumber,int pageSize) { |
| | | public Object list(String time,String name,int pageNumber,int pageSize,int companyId) { |
| | | Page<TCarriers> tCarriersPage = new Page<>(pageNumber, pageSize); |
| | | String sTime=null; |
| | | String eTime=null; |
| | | EntityWrapper<TCarriers> wrapper = new EntityWrapper<>(); |
| | | wrapper.eq("company_id",companyId); |
| | | wrapper.eq("remove",0); |
| | | if(ToolUtil.isNotEmpty(name)){ |
| | | wrapper.like("company_name",name).or().like("account",name); |
| | |
| | | @ApiImplicitParam(name = "city", value = "country/state/city/zipcode", required = false, dataType = "String", paramType = "query"), |
| | | @ApiImplicitParam(name = "pageNumber", value = "pageNumber", required = true, dataType = "int", paramType = "query"), |
| | | @ApiImplicitParam(name = "pageSize", value = "pageSize", required = true, dataType = "int", paramType = "query"), |
| | | @ApiImplicitParam(name = "companyId", value = "companyId", required = true, dataType = "int", paramType = "query"), |
| | | }) |
| | | @GetMapping(value = "/list") |
| | | @ResponseBody |
| | | public Object list(String name, String city, int pageNumber, int pageSize) { |
| | | public Object list(String name, String city, int pageNumber, int pageSize,int companyId) { |
| | | Page<TYardVo> tYardPage = new Page<>(pageNumber, pageSize); |
| | | List<TYardVo> tYardVoPage = yardService.getList(name,city,tYardPage); |
| | | List<TYardVo> tYardVoPage = yardService.getList(name,city,tYardPage,companyId); |
| | | tYardPage.setRecords(tYardVoPage); |
| | | return new SuccessTip(tYardPage); |
| | | } |
| | |
| | | Double getCompanyIncome(@Param("companyId") Integer companyId, @Param("sTime") String sTime, @Param("eTime") String eTime); |
| | | |
| | | List<Map<String, Object>> queryAllOrderDatas(); |
| | | |
| | | List<Map<String, Object>> getLonLat(@Param("orderId") Long orderId); |
| | | |
| | | } |
| | |
| | | */ |
| | | public interface TYardMapper extends BaseMapper<TYard> { |
| | | |
| | | List<TYardVo> getList(@Param("name") String name, @Param("city") String city, @Param("tYardPage") Page<TYardVo> tYardPage); |
| | | List<TYardVo> getList(@Param("name") String name, @Param("city") String city, @Param("tYardPage") Page<TYardVo> tYardPage, @Param("companyId") int companyId); |
| | | |
| | | } |
| | |
| | | package com.stylefeng.guns.modular.system.dao; |
| | | |
| | | import com.baomidou.mybatisplus.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.plugins.Page; |
| | | import com.stylefeng.guns.modular.system.model.TWarehouse; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.List; |
| | | |
| | | public interface WareHouseMapper extends BaseMapper<TWarehouse> { |
| | | List<TWarehouse> getWarehouseFromId(@Param("tWarehousePage") Page<TWarehouse> tWarehousePage, @Param("id") int id, @Param("code") String code); |
| | | } |
| | |
| | | LEFT JOIN t_user t3 on t1.user_id =t3.id |
| | | LEFT JOIN t_port t4 on t1.`port` = t4.id |
| | | LEFT JOIN t_group t5 on t3.group_id = t5.id |
| | | where t1.company_id = #{companyId} and t1.order_type=#{type} |
| | | where t1.company_id = #{companyId} and t1.order_type=#{type} and t1.status != 17 |
| | | <if test="sTime !=null"> |
| | | and (t1.shipment_date between #{sTime} and #{eTime} or t1.delivery_date between #{sTime} and #{eTime}) |
| | | </if> |
| | |
| | | </if> |
| | | GROUP BY |
| | | t1.id |
| | | order by t1.create_time desc |
| | | |
| | | |
| | | </select> |
| | |
| | | WHERE too.STATUS = 1 |
| | | </select> |
| | | |
| | | <select id="getLonLat" resultType="java.util.Map"> |
| | | select lon,lat from t_order_lonlat where orderId =#{orderId} |
| | | </select> |
| | | |
| | | </mapper> |
| | |
| | | </resultMap> |
| | | <select id="getList" resultType="com.stylefeng.guns.modular.system.model.TYardVo"> |
| | | select id,yard_name,street_address,city,state,zip_code,country,contact_email,contact_name from t_yard |
| | | where remove=0 |
| | | where remove=0 and company_id =#{companyId} |
| | | <if test="name!=null and name !=''"> |
| | | and (id like concat("%",#{name},"%") or yard_name like concat("%",#{name},"%")) |
| | | </if> |
| | |
| | | <result column="type" property="type"/> |
| | | <result column="address" property="address"/> |
| | | </resultMap> |
| | | <select id="getWarehouseFromId" resultType="com.stylefeng.guns.modular.system.model.TWarehouse"> |
| | | select * from t_warehouse where port_id =#{id} |
| | | <if test="code != null and code !=''"> |
| | | and (code like concat ("%",#{code},"%") or state like concat ("%",#{code},"%") ) |
| | | </if> |
| | | </select> |
| | | |
| | | |
| | | </mapper> |
| | |
| | | private String ourRef; |
| | | private String po; |
| | | private String sb; |
| | | private String lb; |
| | | private String billNumber; |
| | | |
| | | |
| | | |
| | | |
| | |
| | | |
| | | 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; |
| | | } |
| | |
| | | private String truckCompany; |
| | | |
| | | private Date pickupTime; |
| | | |
| | | 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; |
| | | |
| | | private Date shipmentDate; |
| | | } |
| | |
| | | List<Map<String, Object>> queryAllOrderDatas(); |
| | | |
| | | |
| | | List<Map<String, Object>> getLonLat(Long orderId); |
| | | |
| | | } |
| | |
| | | package com.stylefeng.guns.modular.system.service; |
| | | |
| | | import com.baomidou.mybatisplus.plugins.Page; |
| | | import com.baomidou.mybatisplus.service.IService; |
| | | import com.stylefeng.guns.core.node.ZTreeNode; |
| | | import com.stylefeng.guns.modular.system.model.Dept; |
| | |
| | | */ |
| | | public interface IWarehouseService extends IService<TWarehouse> { |
| | | |
| | | List<TWarehouse> getWarehouseFromId(Page<TWarehouse> tWarehousePage, int id, String code); |
| | | |
| | | |
| | | } |
| | |
| | | */ |
| | | public interface TYardService extends IService<TYard> { |
| | | |
| | | List<TYardVo> getList(String name, String city, Page<TYardVo> tYardPage); |
| | | List<TYardVo> getList(String name, String city, Page<TYardVo> tYardPage,int companyId); |
| | | |
| | | |
| | | |
| | |
| | | return this.baseMapper.queryAllOrderDatas(); |
| | | } |
| | | |
| | | |
| | | |
| | | @Override |
| | | public List<Map<String, Object>> getLonLat(Long orderId) { |
| | | return this.baseMapper.getLonLat(orderId); |
| | | } |
| | | |
| | | public static void main(String[] args) throws ParseException { |
| | | |
| | |
| | | public class TYardServiceImpl extends ServiceImpl<TYardMapper, TYard> implements TYardService { |
| | | |
| | | @Override |
| | | public List<TYardVo> getList(String name, String city, Page<TYardVo> tYardPage) { |
| | | return this.baseMapper.getList(name,city,tYardPage); |
| | | public List<TYardVo> getList(String name, String city, Page<TYardVo> tYardPage,int companyId) { |
| | | return this.baseMapper.getList(name,city,tYardPage,companyId); |
| | | } |
| | | } |
| | |
| | | |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.baomidou.mybatisplus.mapper.Wrapper; |
| | | import com.baomidou.mybatisplus.plugins.Page; |
| | | import com.baomidou.mybatisplus.service.impl.ServiceImpl; |
| | | import com.stylefeng.guns.core.node.ZTreeNode; |
| | | import com.stylefeng.guns.modular.system.dao.DeptMapper; |
| | |
| | | @Transactional |
| | | public class WareHouseServiceImpl extends ServiceImpl<WareHouseMapper, TWarehouse> implements IWarehouseService { |
| | | |
| | | @Override |
| | | public List<TWarehouse> getWarehouseFromId(Page<TWarehouse> tWarehousePage, int id, String code) { |
| | | |
| | | return this.baseMapper.getWarehouseFromId(tWarehousePage,id,code); |
| | | } |
| | | } |
| | |
| | | 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(); |
| | | // 获取所有响应头字段 |
| | |
| | | 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); |
File was renamed from src/main/java/com/stylefeng/guns/modular/system/utils/TerminalInterfaceAcquisitionUtil.java |
| | |
| | | package com.stylefeng.guns.modular.system.utils; |
| | | 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.util.List; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * <p> |
| | | * 码头-车场-客户 运输状态 第三方接口获取数据 APM码头——Import Availability |
| | | * |
| | | * </p> |
| | | * |
| | | * @Author: lisy |
| | | * @date: 2023-05-18 16:52 |
| | | * @Description: |
| | | */ |
| | | |
| | | public class TerminalInterfaceAcquisitionUtil { |
| | | 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 proUrl = "https://api.apmterminals.com/import-availability"; |
| | | // 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"; |
| | | |
| | | |
| | | /** |
| | | * |
| | | * @param containerId 容器id |
| | | * @param enums 设施编码 |
| | | * @return |
| | | */ |
| | | public static TerminaleDataWarpper getTerminalStatus(String containerId,String enums){ |
| | | 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(); |
| | | getTerminalStatus(containerId,enums); |
| | | return executeLogic(); |
| | | } |
| | | ObjectMapper objectMapper = new ObjectMapper(); |
| | | JsonNode jsonArray = null; |
| | |
| | | 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; |
| | |
| | | String[] split = containerHolds.split(","); |
| | | collect = Arrays.stream(split).collect(Collectors.toList()); |
| | | if (collect.contains("LINE")){ |
| | | warpper.setLineHold(1); |
| | | warpper.setLineHold("1"); |
| | | } |
| | | if (collect.contains("TMF")){ |
| | | warpper.setCustomHold(1); |
| | | warpper.setCustomHold("1"); |
| | | } |
| | | if (collect.contains("PIER")){ |
| | | warpper.setPierpass(1); |
| | | warpper.setPierpass("1"); |
| | | } |
| | | if (collect.contains("CTF")){ |
| | | warpper.setCtf(1); |
| | | warpper.setCtf("1"); |
| | | } |
| | | if (collect.contains("AREA")){ |
| | | warpper.setClosedArea(1); |
| | | } |
| | | |
| | | }else { |
| | | if (containerHolds.equals("LINE")){ |
| | | warpper.setLineHold(1); |
| | | warpper.setLineHold("1"); |
| | | } |
| | | if (containerHolds.equals("TMF")){ |
| | | warpper.setCustomHold(1); |
| | | warpper.setCustomHold("1"); |
| | | } |
| | | if (containerHolds.equals("PIER")){ |
| | | warpper.setPierpass(1); |
| | | warpper.setPierpass("1"); |
| | | } |
| | | if (containerHolds.equals("CTF")){ |
| | | warpper.setCtf(1); |
| | | warpper.setCtf("1"); |
| | | } |
| | | if (containerHolds.equals("AREA")){ |
| | | warpper.setClosedArea(1); |
| | | warpper.setClosedArea("1"); |
| | | } |
| | | } |
| | | break; |
| | | } |
| | | |
| | | |
| | | } catch (IOException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | |
| | | return warpper; |
| | | } |
| | | |
| | |
| | | bearerToken = (String) o; |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.system.utils.PortUtil; |
| | | |
| | | import cn.hutool.http.HttpRequest; |
| | | import com.intuit.ipp.exception.ServiceException; |
| | | 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 ServiceException { |
| | | 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 ServiceException { |
| | | 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 ServiceException(connection.getResponseMessage()); |
| | | } |
| | | } catch (Exception e) { |
| | | throw new ServiceException("http的post请求异常!" + e.getMessage()); |
| | | } finally { |
| | | if (reader != null) { |
| | | try { |
| | | reader.close(); |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | } |
| | | return result; |
| | | } |
| | | } |
New file |
| | |
| | | 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.time.LocalDateTime; |
| | | import java.util.Date; |
| | | import java.util.HashMap; |
| | | import java.util.Locale; |
| | | |
| | | 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; |
| | | } |
| | | } |
New file |
| | |
| | | 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; |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | 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; |
| | | } |
| | | } |
New file |
| | |
| | | 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(); |
| | | // } |
| | | // } |
| | | } |
New file |
| | |
| | | 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); |
| | | } |
| | | } |
New file |
| | |
| | | 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); |
| | | } |
| | | |
| | | |
| | | |
| | | } |
New file |
| | |
| | | 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; |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.system.utils.PortUtil; |
| | | |
| | | import com.stylefeng.guns.modular.system.warpper.TerminaleDataWarpper; |
| | | |
| | | public interface WharfStrategy { |
| | | TerminaleDataWarpper executeLogic(String... params); |
| | | } |
| | |
| | | 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; |
| | | |
| | | |
| | | |
| | | } |