package com.doumee.service.business.impl.third; 
 | 
  
 | 
import com.alibaba.fastjson.JSONObject; 
 | 
import com.alibaba.fastjson.TypeReference; 
 | 
import com.doumee.biz.system.SystemDictDataBiz; 
 | 
import com.doumee.core.constants.ResponseStatus; 
 | 
import com.doumee.core.exception.BusinessException; 
 | 
import com.doumee.dao.business.WmsInterfaceLogMapper; 
 | 
import com.doumee.dao.business.model.WmsInterfaceLog; 
 | 
import com.doumee.service.business.third.model.TMSContants; 
 | 
import com.doumee.core.utils.Constants; 
 | 
import com.doumee.core.utils.DateUtil; 
 | 
import com.doumee.core.utils.HttpsUtil; 
 | 
import com.doumee.service.business.third.TmsService; 
 | 
import com.doumee.service.business.third.model.request.*; 
 | 
import com.doumee.service.business.third.model.response.*; 
 | 
import lombok.extern.slf4j.Slf4j; 
 | 
import org.apache.commons.lang3.StringUtils; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.beans.factory.annotation.Value; 
 | 
import org.springframework.stereotype.Service; 
 | 
  
 | 
import java.util.*; 
 | 
  
 | 
/** 
 | 
 * TMS平台对接Service实现 
 | 
 * @author 江蹄蹄 
 | 
 * @date 2023/11/30 15:33 
 | 
 */ 
 | 
@Service 
 | 
@Slf4j 
 | 
public class TmsServiceImpl implements TmsService { 
 | 
  
 | 
    @Autowired 
 | 
    private SystemDictDataBiz systemDictDataBiz; 
 | 
    @Autowired 
 | 
    private WmsInterfaceLogMapper wmsInterfaceLogMapper; 
 | 
    @Value("${debug_model}") 
 | 
    private Boolean isDebug; 
 | 
    /** 
 | 
     * 电子锁上锁时间接口 
 | 
     * 根据合同号,查询电子锁上锁情况;存在批量查询的情况; 
 | 
     * @param param 参数 
 | 
     * @return TmsBaseResponse 
 | 
     */ 
 | 
    @Override 
 | 
    public TmsBaseResponse<List<TmsLockStatusQueryResponse>> lockStatusQuery(TmsLockStatusQueryRequest param){ 
 | 
        String url = systemDictDataBiz.queryByCode(Constants.TSM_PARAM,Constants.TMS_INTERFACE_URL_PREFIX).getCode() 
 | 
                + TMSContants.InterfacePath.getElecByContractNumberList[0]; 
 | 
  
 | 
        TmsBaseResponse<List<TmsLockStatusQueryResponse>> response = sendHttpRequest(url,TMSContants.InterfacePath.getElecByContractNumberList[1],JSONObject.toJSONString(param) 
 | 
                ,new TypeReference< TmsBaseResponse<List<TmsLockStatusQueryResponse>>>(){}); 
 | 
        return  response; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 运输单gis轨迹 
 | 
     * 根据区域ID集合+筛选条件(合同号、制单开始日期、制单结束日期、发货地、到货地、省份,非需要),返回合同列表信息,按照时间倒序展示; 
 | 
     * @param param 参数 
 | 
     * @return TmsBaseResponse 
 | 
     */ 
 | 
    @Override 
 | 
    public   List<TmsGisListResponse>  gisList(TmsGisListRequest param){ 
 | 
  
 | 
       if(param.getTransportCode()==null  ){ 
 | 
          return  new ArrayList<>(); 
 | 
       } 
 | 
        String url = systemDictDataBiz.queryByCode(Constants.TSM_PARAM,Constants.TMS_INTERFACE_URL_PREFIX).getCode() 
 | 
                    +TMSContants.InterfacePath.getGis[0]; 
 | 
        TmsBaseResponse<List<TmsGisListResponse>> response = sendHttpRequest(url,TMSContants.InterfacePath.getGis[1],JSONObject.toJSONString(param) 
 | 
                ,new TypeReference< TmsBaseResponse<List<TmsGisListResponse>>>(){}); 
 | 
        if(response ==null){ 
 | 
            return  new ArrayList<>(); 
 | 
        }else{ 
 | 
            return response.getData()==null?new ArrayList<>():response.getData(); 
 | 
        } 
 | 
    } 
 | 
    /** 
 | 
     * 订单生命周期 
 | 
     * @param param 参数 
 | 
     * @return TmsBaseResponse 
 | 
     */ 
 | 
    @Override 
 | 
    public   List<TmsCircleStatusResultListResponse>  getCicleStatusList(TmsCircleStatusListRequest param){ 
 | 
        List<TmsCircleStatusResultListResponse> list =new ArrayList<>(); 
 | 
       if(param.getContractNumber()==null  ){ 
 | 
          return  new ArrayList<>(); 
 | 
       } 
 | 
        String url = systemDictDataBiz.queryByCode(Constants.TSM_PARAM,Constants.TMS_INTERFACE_URL_PREFIX).getCode() 
 | 
                    +TMSContants.InterfacePath.getOrderStatusByContractNumber[0]; 
 | 
        TmsBaseResponse<List<TmsCircleStatusListResponse>> response = sendHttpRequest(url,TMSContants.InterfacePath.getOrderStatusByContractNumber[1],JSONObject.toJSONString(param) 
 | 
                ,new TypeReference< TmsBaseResponse<List<TmsCircleStatusListResponse>>>(){}); 
 | 
  
 | 
        if(response ==null){ 
 | 
            return  new ArrayList<>(); 
 | 
        }else{ 
 | 
            /** 
 | 
             *  ddsc(0,"订单生成",new Integer[]{ChildStatusLevel.create.getKey()}), 
 | 
             *         ydpzz (1,"运单配载中",new Integer[]{ChildStatusLevel.ysdxc.getKey() 
 | 
             *                 ,ChildStatusLevel.ysdcx.getKey() 
 | 
             *                 ,ChildStatusLevel.shtg.getKey() 
 | 
             *                 ,ChildStatusLevel.shwtg.getKey() 
 | 
             *                 ,ChildStatusLevel.ysdcx.getKey()}), 
 | 
             *         ckckz (2,"仓库出库中",new Integer[]{ChildStatusLevel.ddzhddzs.getKey() 
 | 
             *                 ,ChildStatusLevel.clqddzs.getKey()}), 
 | 
             *         clysz(3, "车辆运输中",new Integer[]{ChildStatusLevel.clqdapp.getKey()}), 
 | 
             *         ydh(4,"已到货",new Integer[]{ChildStatusLevel.ddzhd.getKey()}), 
 | 
             *         yrk 
 | 
             */ 
 | 
            for (int i = 0; i < 6; i++) { 
 | 
                TmsCircleStatusResultListResponse t = new TmsCircleStatusResultListResponse(); 
 | 
                TMSContants.TopStatusLevel tem = TMSContants.TopStatusLevel.ddsc; 
 | 
                if(i == 0){ 
 | 
                    tem=TMSContants.TopStatusLevel.yrk; 
 | 
                } 
 | 
                if(i == 1){ 
 | 
                    tem=TMSContants.TopStatusLevel.ydh; 
 | 
                } 
 | 
                if(i == 2){ 
 | 
                    tem=TMSContants.TopStatusLevel.clysz; 
 | 
                } 
 | 
                if(i == 4){ 
 | 
                    tem=TMSContants.TopStatusLevel.ckckz; 
 | 
                } 
 | 
                if(i == 3){ 
 | 
                    tem=TMSContants.TopStatusLevel.ydpzz; 
 | 
                } 
 | 
                if(i == 5){ 
 | 
                    tem=TMSContants.TopStatusLevel.ddsc; 
 | 
                } 
 | 
                t.setName(tem.getName()); 
 | 
                t.setKey(tem.getKey()); 
 | 
                t.setSecondList(getSecondCircleStatusList(tem,response.getData())); 
 | 
                if(t.getSecondList()!=null & t.getSecondList().size()>0){ 
 | 
                    list.add(t); 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
        Collections.sort(list, (o1, o2) -> { 
 | 
            return o2.getKey()  -  o1.getKey(); //按数量从大到小排序 
 | 
        }); 
 | 
        return list; 
 | 
    } 
 | 
  
 | 
    private List<TmsCircleStatusListResponse> getSecondCircleStatusList(TMSContants.TopStatusLevel tem, List<TmsCircleStatusListResponse> data) { 
 | 
        if(data ==null ||data.size()==0){ 
 | 
            return  new ArrayList<>(); 
 | 
        } 
 | 
        List<TmsCircleStatusListResponse> list = new ArrayList<>(); 
 | 
        Integer[] statusList = tem.getChileIndexList(); 
 | 
        if(statusList!=null){ 
 | 
            for(Integer t :statusList){ 
 | 
                for(TmsCircleStatusListResponse status :data){ 
 | 
                    if(Constants.equalsInteger(status.getOrderStatus(),Constants.FOUR) 
 | 
                            && Constants.equalsInteger(status.getType(),TMSContants.StatusCode.rggx)) { 
 | 
                         continue; 
 | 
                    } 
 | 
                    if(Constants.equalsInteger(status.getOrderStatus(),Constants.FOUR) 
 | 
                            && Constants.equalsInteger(status.getType(),TMSContants.StatusCode.app)) { 
 | 
                        status.setOrderStatus(TMSContants.ChildStatusLevel.clqdapp.getOrderStatus()); 
 | 
                    } 
 | 
                    if(Constants.equalsInteger(status.getOrderStatus(),Constants.FIVE) 
 | 
                            && Constants.equalsInteger(status.getType(),TMSContants.StatusCode.app)) { 
 | 
                        status.setOrderStatus(TMSContants.ChildStatusLevel.ddzhd.getOrderStatus()); 
 | 
                    } 
 | 
                    if(Constants.equalsInteger(status.getOrderStatus(),t )){ 
 | 
                        status.setOrderStatusDes(TMSContants.ChildStatusLevel.getInfo(status.getOrderStatus(),null)); 
 | 
                        list.add(status); 
 | 
                    } 
 | 
                    Date td =DateUtil.fromStringToDate("yyy-MM-dd HH:mm:ss",status.getRecordDate()); 
 | 
                    if(td!=null){ 
 | 
                        status.setTimeStamp(td.getTime()); 
 | 
                    } 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
        Collections.sort(list, (o1, o2) -> { 
 | 
            return (int) (o2.getTimeStamp() - o1.getTimeStamp()); //按数量从大到小排序 
 | 
        }); 
 | 
        return list; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 未完成订单列表接口 
 | 
     * 根据区域ID集合+筛选条件(合同号、制单开始日期、制单结束日期、发货地、到货地、省份,非需要),返回合同列表信息,按照时间倒序展示; 
 | 
     * @param param 参数 
 | 
     * @return TmsBaseResponse 
 | 
     */ 
 | 
    @Override 
 | 
    public    TmsBasePageResponse<TmsOrderNoFinishListResponse> getNotFinishOrderList(TmsOrderNoFinishListRequest param){ 
 | 
        String url = systemDictDataBiz.queryByCode(Constants.TSM_PARAM,Constants.TMS_INTERFACE_URL_PREFIX).getCode() 
 | 
                    +TMSContants.InterfacePath.getNotFinishOrderList[0]; 
 | 
        TmsBaseResponse<TmsBasePageResponse<TmsOrderNoFinishListResponse> > response = sendHttpRequest(url,TMSContants.InterfacePath.getNotFinishOrderList[1],JSONObject.toJSONString(param) 
 | 
                ,new TypeReference< TmsBaseResponse<TmsBasePageResponse<TmsOrderNoFinishListResponse>> >(){}); 
 | 
        if(response ==null || response.getData() == null){ 
 | 
            return  new TmsBasePageResponse<>(); 
 | 
        } 
 | 
        return  response.getData(); 
 | 
  
 | 
    } 
 | 
    /** 
 | 
     * 查询司机所有代办任务 
 | 
     * @param param 参数 
 | 
     * @return TmsBaseResponse 
 | 
     */ 
 | 
    @Override 
 | 
    public    TmsBasePageResponse<TmsDriveTaskListResponse> getDriverTaskList(TmsDriverTaskListRequest param){ 
 | 
        String url = systemDictDataBiz.queryByCode(Constants.TSM_PARAM,Constants.TMS_INTERFACE_URL_PREFIX).getCode() 
 | 
                    +TMSContants.InterfacePath.getDriverTaskList[0]; 
 | 
  
 | 
//        url = "http://10.163.4.56:8088"+TMSContants.InterfacePath.getDriverTaskList[0]; 
 | 
        TmsBaseResponse<TmsBasePageResponse<TmsDriveTaskListResponse> > response = sendHttpRequest(url,TMSContants.InterfacePath.getDriverTaskList[1],JSONObject.toJSONString(param) 
 | 
                ,new TypeReference< TmsBaseResponse<TmsBasePageResponse<TmsDriveTaskListResponse>>>(){}); 
 | 
        if(response ==null || response.getData() == null){ 
 | 
            return  new TmsBasePageResponse<>(); 
 | 
        } 
 | 
        return  response.getData(); 
 | 
    } 
 | 
    /** 
 | 
     * 司机待办任务详情 
 | 
     * @param param 参数 
 | 
     * @return TmsBaseResponse 
 | 
     */ 
 | 
    @Override 
 | 
    public    TmsDriveTaskInfoResponse getDriverTaskDetail(TmsDriverTaskInfoRequest param){ 
 | 
        if(StringUtils.isBlank(param.getId()) ){ 
 | 
            throw  new BusinessException(ResponseStatus.BAD_REQUEST); 
 | 
        } 
 | 
        String url = systemDictDataBiz.queryByCode(Constants.TSM_PARAM,Constants.TMS_INTERFACE_URL_PREFIX).getCode() 
 | 
                    +TMSContants.InterfacePath.getDriverTaskDetail[0]; 
 | 
  
 | 
//        url = "http://10.163.4.56:8088"+TMSContants.InterfacePath.getDriverTaskDetail[0]; 
 | 
        TmsBaseResponse<TmsDriveTaskInfoResponse > response = sendHttpRequest(url,TMSContants.InterfacePath.getDriverTaskDetail[1],JSONObject.toJSONString(param) 
 | 
                ,new TypeReference< TmsBaseResponse<TmsDriveTaskInfoResponse>>(){}); 
 | 
        if(response ==null || response.getData() == null){ 
 | 
            return  new TmsDriveTaskInfoResponse(); 
 | 
        } 
 | 
        return  response.getData(); 
 | 
    } 
 | 
    /** 
 | 
     * 司机启运 
 | 
     * @param param 参数 
 | 
     * @return TmsBaseResponse 
 | 
     */ 
 | 
    @Override 
 | 
    public   boolean  driverStart(TmsDriverStartAndArrivalRequest param){ 
 | 
        if(StringUtils.isBlank(param.getId()) || StringUtils.isBlank(param.getOptType())){ 
 | 
            throw  new BusinessException(ResponseStatus.BAD_REQUEST); 
 | 
        } 
 | 
        String url = systemDictDataBiz.queryByCode(Constants.TSM_PARAM,Constants.TMS_INTERFACE_URL_PREFIX).getCode() 
 | 
                    +TMSContants.InterfacePath.driverStart[0]; 
 | 
//        url = "http://10.163.4.56:8088"+TMSContants.InterfacePath.driverStart[0]; 
 | 
        TmsBaseResponse<TmsDriveTaskInfoResponse > response = sendHttpRequest(url,TMSContants.InterfacePath.driverStart[1],JSONObject.toJSONString(param) 
 | 
                ,new TypeReference< TmsBaseResponse<TmsDriveTaskInfoResponse>>(){}); 
 | 
        if(response ==null ||   !StringUtils.equals(response.getCode(),"0")){ 
 | 
            throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"对不起,任务到货提交失败,请稍后重试!"); 
 | 
        } 
 | 
        return  true; 
 | 
    } 
 | 
    /** 
 | 
     * 司机到货 
 | 
     * @param param 参数 
 | 
     * @return TmsBaseResponse 
 | 
     */ 
 | 
    @Override 
 | 
    public   boolean  driverArrival(TmsDriverStartAndArrivalRequest param){ 
 | 
        if(StringUtils.isBlank(param.getId()) 
 | 
                || StringUtils.isBlank(param.getOptType()) 
 | 
                || param.getStopNumber() == null){ 
 | 
            throw  new BusinessException(ResponseStatus.BAD_REQUEST); 
 | 
        } 
 | 
        String url = systemDictDataBiz.queryByCode(Constants.TSM_PARAM,Constants.TMS_INTERFACE_URL_PREFIX).getCode() 
 | 
                    +TMSContants.InterfacePath.driverArrival[0]; 
 | 
//        url = "http://10.163.4.56:8088"+TMSContants.InterfacePath.driverArrival[0]; 
 | 
        TmsBaseResponse<TmsDriveTaskInfoResponse > response = sendHttpRequest(url,TMSContants.InterfacePath.driverArrival[1],JSONObject.toJSONString(param) 
 | 
                ,new TypeReference< TmsBaseResponse<TmsDriveTaskInfoResponse>>(){}); 
 | 
        if(response ==null  ||!StringUtils.equals(response.getCode(),"0")){ 
 | 
          throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"对不起,任务到货提交失败,请稍后重试!"); 
 | 
        } 
 | 
        return  true; 
 | 
    } 
 | 
    /** 
 | 
     * 营销人员信息实时查询 
 | 
     * @param param 参数 
 | 
     * @return TmsBaseResponse 
 | 
     */ 
 | 
    @Override 
 | 
    public   TmsEmployeeListResponse getEmployeeList(TmsEmployeeListRequest param){ 
 | 
        String url = systemDictDataBiz.queryByCode(Constants.TSM_PARAM,Constants.TMS_INTERFACE_URL_PREFIX).getCode() 
 | 
                    +TMSContants.InterfacePath.getEmployeeList[0]; 
 | 
        TmsBaseResponse<List<TmsEmployeeListResponse>> response = sendHttpRequest(url,TMSContants.InterfacePath.getEmployeeList[1],JSONObject.toJSONString(param) 
 | 
                ,new TypeReference< TmsBaseResponse<List<TmsEmployeeListResponse>>>(){}); 
 | 
        if(response ==null || response.getData() == null || response.getData().size() ==0){ 
 | 
            return  new TmsEmployeeListResponse(); 
 | 
        } 
 | 
        return  response.getData().get(0); 
 | 
    } 
 | 
    /** 
 | 
     * 出库能力统计 
 | 
     * 查询某个厂/全部厂的今日计划量、今日出库量、今日未出库量数据。 
 | 
     * @param param 参数 
 | 
     * @return TmsBaseResponse 
 | 
     */ 
 | 
    @Override 
 | 
    public TmsOutboundCapabilityResponse getOutboundCapability(TmsFacrotyCodeListRequest param){ 
 | 
        String url = systemDictDataBiz.queryByCode(Constants.TSM_PARAM,Constants.TMS_INTERFACE_URL_PREFIX).getCode() 
 | 
                    +TMSContants.InterfacePath.getOutboundCapability[0]; 
 | 
        TmsBaseResponse<TmsOutboundCapabilityResponse > response = sendHttpRequest(url,TMSContants.InterfacePath.getOutboundCapability[1],JSONObject.toJSONString(param) 
 | 
                ,new TypeReference< TmsBaseResponse<TmsOutboundCapabilityResponse>>(){}); 
 | 
        if(response ==null || response.getData() == null){ 
 | 
            return  new TmsOutboundCapabilityResponse(); 
 | 
        } 
 | 
        return  response.getData(); 
 | 
    } 
 | 
    /** 
 | 
     * 合同列表接口 
 | 
     * 根据区域ID集合+筛选条件(合同号、制单开始日期、制单结束日期、发货地、到货地、省份,非需要),返回合同列表信息,按照时间倒序展示; 
 | 
     * @param param 参数 
 | 
     * @return TmsBaseResponse 
 | 
     */ 
 | 
    @Override 
 | 
    public   TmsBasePageResponse<TmsOrderListResponse>  orderList(TmsOrderListRequest param){ 
 | 
        String url = systemDictDataBiz.queryByCode(Constants.TSM_PARAM,Constants.TMS_INTERFACE_URL_PREFIX).getCode() 
 | 
                    +TMSContants.InterfacePath.getOrderList[0]; 
 | 
        TmsBaseResponse<TmsBasePageResponse<TmsOrderListResponse>> response = sendHttpRequest(url,TMSContants.InterfacePath.getOrderList[1],JSONObject.toJSONString(param) 
 | 
                ,new TypeReference< TmsBaseResponse<TmsBasePageResponse<TmsOrderListResponse>>>(){}); 
 | 
        if(response ==null){ 
 | 
            return  new TmsBasePageResponse<>(); 
 | 
        }else{ 
 | 
            return response.getData()==null?new TmsBasePageResponse<>():response.getData(); 
 | 
        } 
 | 
    } 
 | 
    /** 
 | 
     * 合同详情接口 
 | 
     * @param param 参数 
 | 
     * @return TmsBaseResponse 
 | 
     */ 
 | 
    @Override 
 | 
    public  TmsOrderInfoResponse orderInfo(TmsOrderInfoRequest param){ 
 | 
        TmsOrderInfoResponse result = new TmsOrderInfoResponse(); 
 | 
        if(StringUtils.isBlank(param.getContractNumber())){ 
 | 
            return  result; 
 | 
        } 
 | 
        String url = systemDictDataBiz.queryByCode(Constants.TSM_PARAM,Constants.TMS_INTERFACE_URL_PREFIX).getCode() 
 | 
                    +TMSContants.InterfacePath.getOrderDetailByContractNumber[0]; 
 | 
        TmsBaseResponse<TmsOrderInfoResponse> response = sendHttpRequest(url,TMSContants.InterfacePath.getOrderDetailByContractNumber[1] 
 | 
                ,param.getContractNumber() 
 | 
                ,new TypeReference< TmsBaseResponse<TmsOrderInfoResponse>>(){}); 
 | 
        if(response!=null && response.getData()!=null){ 
 | 
              result =response.getData(); 
 | 
        } 
 | 
        if(result.getTransportCode()!=null){ 
 | 
            TmsGisListRequest p = new TmsGisListRequest(); 
 | 
            p.setTransportCode(result.getTransportCode()); 
 | 
            result.setGisList(gisList(p)); 
 | 
        } 
 | 
        TmsCircleStatusListRequest p1 = new TmsCircleStatusListRequest(); 
 | 
        p1.setContractNumber(param.getContractNumber()); 
 | 
        result.setCicleStatusList(getCicleStatusList(p1)); 
 | 
        result.setStartTransportDate(getStartTransportDateByList(result.getCicleStatusList())); 
 | 
        return result; 
 | 
    } 
 | 
  
 | 
    private String getStartTransportDateByList(List<TmsCircleStatusResultListResponse> cicleStatusList) { 
 | 
        if(cicleStatusList!=null){ 
 | 
            for(TmsCircleStatusResultListResponse m :cicleStatusList){ 
 | 
                if(Constants.equalsInteger(m.getKey(),TMSContants.TopStatusLevel.clysz.getKey())){ 
 | 
                    if(m.getSecondList()!=null){ 
 | 
                        for(TmsCircleStatusListResponse c :m.getSecondList()){ 
 | 
                            if(Constants.equalsInteger(c.getOrderStatus(),TMSContants.ChildStatusLevel.clqdapp.getOrderStatus())){ 
 | 
                                 return  c.getRecordDate(); 
 | 
                            } 
 | 
                        } 
 | 
                    } 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
  
 | 
        return null; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 全国到货地分布查询查询 
 | 
     * @param param 参数 
 | 
     * @return TmsBaseResponse 
 | 
     */ 
 | 
    @Override 
 | 
    public  List<TmsDistributionOfDeliveryLocResponse>   getDistributionOfDeliveryLocations(TmsFacrotyCodeListRequest param){ 
 | 
        List<TmsDistributionOfDeliveryLocResponse> result = new ArrayList<>(); 
 | 
//        if( param.getFacrotyCodeList() == null || param.getFacrotyCodeList().size() == 0){ 
 | 
//            param.setFacrotyCodeList(new ArrayList<>()); 
 | 
//            param.getFacrotyCodeList().add("0"); 
 | 
//        } 
 | 
        String url = systemDictDataBiz.queryByCode(Constants.TSM_PARAM,Constants.TMS_INTERFACE_URL_PREFIX).getCode() 
 | 
                    +TMSContants.InterfacePath.getDistributionOfDeliveryLocations[0]; 
 | 
        TmsBaseResponse< List<TmsDistributionOfDeliveryLocResponse>> response = sendHttpRequest(url,TMSContants.InterfacePath.getDistributionOfDeliveryLocations[1], 
 | 
                JSONObject.toJSONString(param) 
 | 
                ,new TypeReference< TmsBaseResponse< List<TmsDistributionOfDeliveryLocResponse>>>(){}); 
 | 
        if(response!=null && response.getData()!=null){ 
 | 
              result =response.getData(); 
 | 
        } 
 | 
  
 | 
        return result; 
 | 
    } 
 | 
    /** 
 | 
     * 实时库存查询 
 | 
     * @return TmsBaseResponse 
 | 
     */ 
 | 
    @Override 
 | 
    public  List<TmsInventoryListResponse>   getRealTimeInventory( ){ 
 | 
        List<TmsInventoryListResponse> result = new ArrayList<>(); 
 | 
        String url = systemDictDataBiz.queryByCode(Constants.TSM_PARAM,Constants.TMS_INTERFACE_URL_PREFIX).getCode() 
 | 
                    +TMSContants.InterfacePath.getRealTimeInventory[0]; 
 | 
        TmsBaseResponse< List<TmsInventoryListResponse>> response = sendHttpRequest(url,TMSContants.InterfacePath.getRealTimeInventory[1] 
 | 
                ,"{}" 
 | 
                ,new TypeReference< TmsBaseResponse< List<TmsInventoryListResponse>>>(){}); 
 | 
        if(response!=null && response.getData()!=null){ 
 | 
              result =response.getData(); 
 | 
        } 
 | 
  
 | 
        return result; 
 | 
    } 
 | 
    /** 
 | 
     * 查询5个厂的运力资源利用情况 
 | 
     * @return TmsBaseResponse 
 | 
     */ 
 | 
    @Override 
 | 
    public  List<TmsTotalAndReportVehicleQtyResponse>   getTotalAndReportVehicleQty( ){ 
 | 
        List<TmsTotalAndReportVehicleQtyResponse> result = new ArrayList<>(); 
 | 
        String url = systemDictDataBiz.queryByCode(Constants.TSM_PARAM,Constants.TMS_INTERFACE_URL_PREFIX).getCode() 
 | 
                    +TMSContants.InterfacePath.getTotalAndReportVehicleQty[0]; 
 | 
        TmsBaseResponse< List<TmsTotalAndReportVehicleQtyResponse>> response = sendHttpRequest(url,TMSContants.InterfacePath.getTotalAndReportVehicleQty[1] 
 | 
                ,"{}" 
 | 
                ,new TypeReference< TmsBaseResponse< List<TmsTotalAndReportVehicleQtyResponse>>>(){}); 
 | 
        if(response!=null && response.getData()!=null){ 
 | 
              result =response.getData(); 
 | 
        } 
 | 
  
 | 
        return result; 
 | 
    } 
 | 
    /** 
 | 
     * 近7日到货情况(含明细) 
 | 
     * @return TmsBaseResponse 
 | 
     */ 
 | 
    @Override 
 | 
    public  List<TmsSevenArrivalStatusAndDetailsResponse>   getSevenArrivalStatusAndDetails(TmsSevenArrivalDetailsRequest param ){ 
 | 
        List<TmsSevenArrivalStatusAndDetailsResponse> result = new ArrayList<>(); 
 | 
        String url = systemDictDataBiz.queryByCode(Constants.TSM_PARAM,Constants.TMS_INTERFACE_URL_PREFIX).getCode() 
 | 
                    +TMSContants.InterfacePath.getSevenArrivalStatusAndDetails[0]; 
 | 
        TmsBaseResponse< List<TmsSevenArrivalStatusAndDetailsResponse>> response = sendHttpRequest(url,TMSContants.InterfacePath.getSevenArrivalStatusAndDetails[1] 
 | 
                ,JSONObject.toJSONString(param) 
 | 
                ,new TypeReference< TmsBaseResponse< List<TmsSevenArrivalStatusAndDetailsResponse>>>(){}); 
 | 
        if(response!=null && response.getData()!=null){ 
 | 
              result =response.getData(); 
 | 
        } 
 | 
        return result; 
 | 
    } 
 | 
    /** 
 | 
     * 指定时间范围内累计出库量 
 | 
     * @return TmsBaseResponse 
 | 
     */ 
 | 
    @Override 
 | 
    public  List<TmsOutQtyAndVehicleQtyResponse>   getOutQtyAndVehicleQty(TmsOutQtyAndVehicleQtyRequest param ){ 
 | 
        List<TmsOutQtyAndVehicleQtyResponse> result = new ArrayList<>(); 
 | 
        String url = systemDictDataBiz.queryByCode(Constants.TSM_PARAM,Constants.TMS_INTERFACE_URL_PREFIX).getCode() 
 | 
                    +TMSContants.InterfacePath.getOutQtyAndVehicleQty[0]; 
 | 
        TmsBaseResponse< List<TmsOutQtyAndVehicleQtyResponse>> response = sendHttpRequest(url,TMSContants.InterfacePath.getOutQtyAndVehicleQty[1] 
 | 
                ,JSONObject.toJSONString(param) 
 | 
                ,new TypeReference< TmsBaseResponse< List<TmsOutQtyAndVehicleQtyResponse>>>(){}); 
 | 
        if(response!=null && response.getData()!=null){ 
 | 
              result =response.getData(); 
 | 
        } 
 | 
        return result; 
 | 
    } 
 | 
  
 | 
  
 | 
    /** 
 | 
     * 发起 tms接口请求 
 | 
     * @param url 
 | 
     * @param name 
 | 
     * @param param 
 | 
     * @param typeReference 
 | 
     * @return 
 | 
     * @param <T> 
 | 
     */ 
 | 
    public  <T> TmsBaseResponse<T> sendHttpRequest(String url, String name, String param,TypeReference<TmsBaseResponse<T>> typeReference){ 
 | 
        log.info("【"+name+"】================开始===="+ JSONObject.toJSONString(param)); 
 | 
        if ( StringUtils.isNotBlank(url)) { 
 | 
            String res = null; 
 | 
            int success = 0; 
 | 
            try { 
 | 
                Map<String,String> headers = new HashMap<>(); 
 | 
                res = HttpsUtil.postJson(url,param); 
 | 
                TmsBaseResponse result = JSONObject.parseObject(res, typeReference.getType()); 
 | 
                logResult(result,name); 
 | 
                if(result!=null && result.getData() !=null ){ 
 | 
  
 | 
                }else{ 
 | 
                    success =1; 
 | 
                } 
 | 
                return  result; 
 | 
            }catch (Exception e){ 
 | 
                success = 1; 
 | 
                log.error("【"+name+"】================失败===="+ JSONObject.toJSONString(param)); 
 | 
            }finally { 
 | 
                saveInterfaceLog(url,name,param,success,res,Constants.ZERO); 
 | 
            } 
 | 
        } 
 | 
        return  null; 
 | 
    } 
 | 
    @Override 
 | 
    public  void  saveInterfaceLog(String url,String name,String  param,Integer success,String respone,int type){ 
 | 
        if(wmsInterfaceLogMapper ==null){ 
 | 
            return; 
 | 
        } 
 | 
        WmsInterfaceLog log = new WmsInterfaceLog(); 
 | 
        log.setCreateDate(new Date()); 
 | 
        log.setUrl(url); 
 | 
        log.setEditDate(log.getCreateDate()); 
 | 
        log.setPlat(Constants.ONE); 
 | 
        log.setName(name); 
 | 
        log.setIsdeleted(Constants.ZERO); 
 | 
        log.setRequest(param); 
 | 
        log.setType(type); 
 | 
        log.setSuccess(success); 
 | 
        log.setRepose(respone); 
 | 
        wmsInterfaceLogMapper.insert(log); 
 | 
    } 
 | 
  
 | 
    private static void logResult(TmsBaseResponse res,String name) { 
 | 
        if(StringUtils.equals(res.getCode(), TmsBaseResponse.CODE_SUCCESS)){ 
 | 
            log.info("【TMS接口:"+name+"】================成功====\n"+ JSONObject.toJSONString(res)); 
 | 
        }else{ 
 | 
            log.error("【TMS接口:"+name+"】================失败====:\n"+ JSONObject.toJSONString(res)); 
 | 
        } 
 | 
    } 
 | 
  
 | 
} 
 |