lishouyi
2023-05-23 4ff08782ca65f91c8bf75157e95fbf2338fe6b37
订单——订单详情——运输列表新增第三方接口
2个文件已修改
3个文件已添加
239 ■■■■■ 已修改文件
src/main/java/com/stylefeng/guns/modular/system/controller/OrderController.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/stylefeng/guns/modular/system/enums/FacilityCodeEnum.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/stylefeng/guns/modular/system/model/TransportInfo.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/stylefeng/guns/modular/system/utils/TerminalInterfaceAcquisitionUtil.java 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/stylefeng/guns/modular/system/warpper/TerminaleDataWarpper.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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)){
src/main/java/com/stylefeng/guns/modular/system/enums/FacilityCodeEnum.java
New file
@@ -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;
    }
}
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;
}
src/main/java/com/stylefeng/guns/modular/system/utils/TerminalInterfaceAcquisitionUtil.java
New file
@@ -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;
        }
    }
}
src/main/java/com/stylefeng/guns/modular/system/warpper/TerminaleDataWarpper.java
New file
@@ -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;
}