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