From 4ff08782ca65f91c8bf75157e95fbf2338fe6b37 Mon Sep 17 00:00:00 2001 From: lishouyi <linlangsur163@163.com> Date: 星期二, 23 五月 2023 17:58:11 +0800 Subject: [PATCH] 订单——订单详情——运输列表新增第三方接口 --- src/main/java/com/stylefeng/guns/modular/system/utils/TerminalInterfaceAcquisitionUtil.java | 133 +++++++++++++++++++++++++++++++++ src/main/java/com/stylefeng/guns/modular/system/model/TransportInfo.java | 13 +++ src/main/java/com/stylefeng/guns/modular/system/enums/FacilityCodeEnum.java | 44 +++++++++++ src/main/java/com/stylefeng/guns/modular/system/controller/OrderController.java | 15 +++ src/main/java/com/stylefeng/guns/modular/system/warpper/TerminaleDataWarpper.java | 34 ++++++++ 5 files changed, 238 insertions(+), 1 deletions(-) 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 f8854fb..558bbe8 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.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.tips.ErrorTip; import com.stylefeng.guns.modular.system.utils.tips.SuccessTip; +import com.stylefeng.guns.modular.system.warpper.TerminaleDataWarpper; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -264,6 +267,7 @@ 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()); for (TTransportation tDriver : tTransportations) { OrderDriverInfo orderDriverInfo = new OrderDriverInfo(); orderDriverInfo.setId(tDriver.getId()); @@ -283,7 +287,7 @@ orderDriverInfo.setChassiess(powerUnitsService.selectById(tDriver.getChassises())); // TODO 第三方 目前不知道对接那个 - orderDriverInfo.setAppointmentNumber(null); + orderDriverInfo.setAppointmentNumber(terminalStatus.getAppointmentNumber()); orderDriverInfos.add(orderDriverInfo); @@ -291,6 +295,15 @@ transportInfo.setTruckCompany(tOrder.getTruckCompany()); transportInfo.setPickupTime(tOrder.getPickupTimeTruck()); transportInfo.setStreetTurn(tOrder.getStreetTurn()); + + + transportInfo.setLineHold(terminalStatus.getLineHold()); + transportInfo.setCustomHold(terminalStatus.getCustomHold()); + transportInfo.setPierpass(terminalStatus.getPierpass()); + transportInfo.setCTF(terminalStatus.getCtf()); + transportInfo.setClosedArea(terminalStatus.getClosedArea()); + transportInfo.setLFD(terminalStatus.getLfd()); + transportInfo.setList(orderDriverInfos); Integer examSite = tOrder.getExamSite(); if(Objects.nonNull(examSite)){ diff --git a/src/main/java/com/stylefeng/guns/modular/system/enums/FacilityCodeEnum.java b/src/main/java/com/stylefeng/guns/modular/system/enums/FacilityCodeEnum.java new file mode 100644 index 0000000..e8a988b --- /dev/null +++ b/src/main/java/com/stylefeng/guns/modular/system/enums/FacilityCodeEnum.java @@ -0,0 +1,44 @@ +package com.stylefeng.guns.modular.system.enums; + +/** + * <p> + * 调用容器事件历史接口的 设置编码 + * </p> + * + * @Author: lisy + * @date: 2023-05-21 23:50 + * @Description: + */ + + +public enum FacilityCodeEnum { + + ESALG("ESALG"), + NGAPP("NGAPP"), + BHKBS("BHKBS"), + SEGOT("SEGOT"), + BRITJ("BRITJ"), + MXLZC("MXLZC"), + USLAX("USLAX"), + USMIA("USMIA"), + NLMSV("NLMSV"), + LRMLW("LRMLW"), + USMOB("USMOB"), + CRPMN("CRPMN"), + NGONN("NGONN"), + USNWK("USNWK"), + MAPTM("MAPTM"), + ITVDL("ITVDL"), + ESVLC("ESVLC"), + MXPGO("MXPGO"), + ; + String msg; + + FacilityCodeEnum(String msg) { + this.msg = msg; + } + + public String getMsg() { + return msg; + } +} 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 ece0afe..c775b80 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 @@ -1,5 +1,6 @@ package com.stylefeng.guns.modular.system.model; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.Date; @@ -24,4 +25,16 @@ private Date pickupTime; private Integer streetTurn; + @ApiModelProperty(value = "1:YES 2:NO") + private Integer lineHold; + @ApiModelProperty(value = "1:YES 2:NO") + private Integer customHold; + @ApiModelProperty(value = "1:YES 2:NO") + private Integer pierpass; + @ApiModelProperty(value = "1:YES 2:NO") + private Integer CTF; + + private String LFD; + @ApiModelProperty(value = "1:YES 2:NO") + private Integer closedArea; } 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 new file mode 100644 index 0000000..f6499f4 --- /dev/null +++ b/src/main/java/com/stylefeng/guns/modular/system/utils/TerminalInterfaceAcquisitionUtil.java @@ -0,0 +1,133 @@ +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.*; +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 new file mode 100644 index 0000000..88af94e --- /dev/null +++ b/src/main/java/com/stylefeng/guns/modular/system/warpper/TerminaleDataWarpper.java @@ -0,0 +1,34 @@ +package com.stylefeng.guns.modular.system.warpper; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * <p> + * 订单详情——运输安排 + * </p> + * + * @Author: lisy + * @date: 2023-05-22 16:52 + * @Description: + */ + +@Data +public class TerminaleDataWarpper { + + @ApiModelProperty(value = "1:YES 2:NO") + private Integer lineHold = 2; + @ApiModelProperty(value = "1:YES 2:NO") + private Integer customHold = 2; + @ApiModelProperty(value = "1:YES 2:NO") + private Integer pierpass = 2; + @ApiModelProperty(value = "1:YES 2:NO") + private Integer ctf = 2; + + private String lfd; + @ApiModelProperty(value = "1:YES 2:NO") + private Integer closedArea = 2; + + private String appointmentNumber; + +} -- Gitblit v1.7.1