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.dao.SmsEmailMapper; 
 | 
import com.doumee.dao.business.model.*; 
 | 
import com.doumee.service.business.impl.SmsEmailServiceImpl; 
 | 
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.beans.factory.annotation.Value; 
 | 
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 SmsEmailMapper smsEmailMapper; 
 | 
    @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; 
 | 
    @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() 
 | 
                +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   List<TmsOrderListResponse>  orderList(TmsOrderListRequest param){ 
 | 
       if(StringUtils.isBlank(param.getPhoneNumber())){ 
 | 
           param.setPhoneNumber("00000000000");//手机号必填 
 | 
       } 
 | 
       if(param.getContractNumbers()==null || param.getContractNumbers().size()==0){ 
 | 
           param.setContractNumbers(null); 
 | 
       } 
 | 
        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,"【TMS】合同列表接口",JSONObject.toJSONString(param) 
 | 
                ,new TypeReference< TmsBaseResponse<List<TmsOrderListResponse>>>(){}); 
 | 
        if(response ==null){ 
 | 
            return  new ArrayList<>(); 
 | 
        }else{ 
 | 
            return response.getData()==null?new ArrayList<>():response.getData(); 
 | 
        } 
 | 
    } 
 | 
    /** 
 | 
     * 合同详情接口 
 | 
     * @param param 参数 
 | 
     * @return TmsBaseResponse 
 | 
     */ 
 | 
    @Override 
 | 
    public  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,"【TMS】合同详情接口",JSONObject.toJSONString(param) 
 | 
                ,new TypeReference< TmsBaseResponse<TmsOrderInfoResponse>>(){}); 
 | 
        if(response ==null){ 
 | 
            return new TmsOrderInfoResponse(); 
 | 
        }else{ 
 | 
            return response.getData()==null?new TmsOrderInfoResponse():response.getData(); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 发起 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)); 
 | 
        } 
 | 
    } 
 | 
  
 | 
} 
 |