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));
|
}
|
}
|
|
}
|