| package com.doumee.service.business.impl.thrid; | 
|   | 
| import com.alibaba.fastjson.JSONObject; | 
| import com.alibaba.fastjson.TypeReference; | 
| import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 
| import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; | 
| import com.doumee.biz.system.SystemDictDataBiz; | 
| import com.doumee.core.tms.model.request.TmsLockStatusQueryRequest; | 
| import com.doumee.core.tms.model.request.TmsOrderInfoRequest; | 
| import com.doumee.core.tms.model.request.TmsOrderListRequest; | 
| import com.doumee.core.tms.model.response.TmsBaseResponse; | 
| import com.doumee.core.tms.model.response.TmsLockStatusQueryResponse; | 
| import com.doumee.core.tms.model.response.TmsOrderInfoResponse; | 
| import com.doumee.core.tms.model.response.TmsOrderListResponse; | 
| import com.doumee.core.utils.Constants; | 
| import com.doumee.core.utils.HttpsUtil; | 
| import com.doumee.core.wms.model.request.*; | 
| import com.doumee.core.wms.model.response.WmsBaseDataResponse; | 
| import com.doumee.core.wms.model.response.WmsBaseResponse; | 
| import com.doumee.core.wms.model.response.WmsInventoryDataResponse; | 
| import com.doumee.dao.business.*; | 
| import com.doumee.dao.business.model.*; | 
| import com.doumee.service.business.third.TmsService; | 
| import com.doumee.service.business.third.WmsService; | 
| import com.github.yulichang.wrapper.MPJLambdaWrapper; | 
| import lombok.extern.slf4j.Slf4j; | 
| import org.apache.commons.lang3.StringUtils; | 
| import org.springframework.beans.factory.annotation.Autowired; | 
| import org.springframework.stereotype.Service; | 
| import org.springframework.transaction.annotation.Transactional; | 
|   | 
| import java.util.*; | 
|   | 
| /** | 
|  * TMS平台对接Service实现 | 
|  * @author 江蹄蹄 | 
|  * @date 2023/11/30 15:33 | 
|  */ | 
| @Service | 
| @Slf4j | 
| public class TmsServiceImpl implements TmsService { | 
|     @Autowired | 
|     private PlatformWmsJobMapper platformWmsJobMapper; | 
|     @Autowired | 
|     private PlatformGroupMapper platformGroupMapper; | 
|     @Autowired | 
|     private CarsMapper carsMapper; | 
|     @Autowired | 
|     private MemberMapper memberMapper; | 
|     @Autowired | 
|     private PlatformJobMapper platformJobMapper; | 
|     @Autowired | 
|     private PlatformWmsDetailMapper platformWmsDetailMapper; | 
|     @Autowired | 
|     private SystemDictDataBiz systemDictDataBiz; | 
|     @Autowired | 
|     private WmsInterfaceLogMapper wmsInterfaceLogMapper; | 
|   | 
|     /** | 
|      * 电子锁上锁时间接口 | 
|      * 根据合同号,查询电子锁上锁情况;存在批量查询的情况; | 
|      * @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() | 
|                 +systemDictDataBiz.queryByCode(Constants.TSM_PARAM,Constants.TMS_LOCK_STATUS_URL).getCode(); | 
|   | 
|         TmsBaseResponse<List<TmsLockStatusQueryResponse>> response = sendHttpRequest(url,"【TMS】电子锁上锁时间接口",JSONObject.toJSONString(param) | 
|                 ,new TypeReference< TmsBaseResponse<List<TmsLockStatusQueryResponse>>>(){}); | 
|         return  response; | 
|     } | 
|   | 
|     /** | 
|      * 合同列表接口 | 
|      * 根据区域ID集合+筛选条件(合同号、制单开始日期、制单结束日期、发货地、到货地、省份,非需要),返回合同列表信息,按照时间倒序展示; | 
|      * @param param 参数 | 
|      * @return TmsBaseResponse | 
|      */ | 
|     @Override | 
|     public  TmsBaseResponse<List<TmsOrderListResponse>> orderList(TmsOrderListRequest param){ | 
|         String url = systemDictDataBiz.queryByCode(Constants.TSM_PARAM,Constants.TMS_INTERFACE_URL_PREFIX).getCode() | 
|                     +systemDictDataBiz.queryByCode(Constants.TSM_PARAM,Constants.TMS_ORDER_LIST_URL).getCode(); | 
|         TmsBaseResponse<List<TmsOrderListResponse>> response = sendHttpRequest(url,"合同列表接口",JSONObject.toJSONString(param) | 
|                 ,new TypeReference< TmsBaseResponse<List<TmsOrderListResponse>>>(){}); | 
|         return response; | 
|     } | 
|     /** | 
|      * 合同详情接口 | 
|      * @param param 参数 | 
|      * @return TmsBaseResponse | 
|      */ | 
|     @Override | 
|     public TmsBaseResponse<TmsOrderInfoResponse> orderInfo(TmsOrderInfoRequest param){ | 
|         String url = systemDictDataBiz.queryByCode(Constants.TSM_PARAM,Constants.TMS_INTERFACE_URL_PREFIX).getCode() | 
|                     +systemDictDataBiz.queryByCode(Constants.TSM_PARAM,Constants.TMS_ORDER_DETAIL_URL).getCode(); | 
|         TmsBaseResponse<TmsOrderInfoResponse> response = sendHttpRequest(url,"合同详情接口",JSONObject.toJSONString(param) | 
|                 ,new TypeReference< TmsBaseResponse<TmsOrderInfoResponse>>(){}); | 
|         return  response; | 
|     } | 
|   | 
|     /** | 
|      * 发起 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 { | 
|             } | 
|         } | 
|         return  null; | 
|     } | 
|     private static void logResult(TmsBaseResponse res,String name) { | 
|         if(StringUtils.equals(res.getCode(), TmsBaseResponse.CODE_SUCCESS)){ | 
|             log.info("【TMS接口:"+name+"】================成功====\n"+res); | 
|         }else{ | 
|             log.error("【TMS接口:"+name+"】================失败====:\n"+ res); | 
|         } | 
|     } | 
|   | 
| } |