| 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(); | 
|     } | 
|     /** | 
|      * 出库能力汇总接口 | 
|      * @param param 参数 | 
|      * @return TmsBaseResponse | 
|      */ | 
|     @Override | 
|     public TmsGetOutCapabilityResponse getOutCapacity(TmsFacrotyCodeListRequest param){ | 
|         String url = systemDictDataBiz.queryByCode(Constants.TSM_PARAM,Constants.TMS_INTERFACE_URL_PREFIX).getCode() | 
|                     +TMSContants.InterfacePath.getOutCapacity[0]; | 
|         TmsBaseResponse<TmsGetOutCapabilityResponse > response = sendHttpRequest(url,TMSContants.InterfacePath.getOutboundCapability[1],JSONObject.toJSONString(param) | 
|                 ,new TypeReference< TmsBaseResponse<TmsGetOutCapabilityResponse>>(){}); | 
|         if(response ==null || response.getData() == null){ | 
|             return  new TmsGetOutCapabilityResponse(); | 
|         } | 
|         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)); | 
|         } | 
|     } | 
|   | 
| } |