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.TMSContants; import com.doumee.core.tms.model.request.*; import com.doumee.core.tms.model.response.*; 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 io.swagger.models.auth.In; 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> lockStatusQuery(TmsLockStatusQueryRequest param){ String url = systemDictDataBiz.queryByCode(Constants.TSM_PARAM,Constants.TMS_INTERFACE_URL_PREFIX).getCode() + TMSContants.InterfacePath.getElecByContractNumberList[0]; TmsBaseResponse> response = sendHttpRequest(url,TMSContants.InterfacePath.getElecByContractNumberList[1],JSONObject.toJSONString(param) ,new TypeReference< TmsBaseResponse>>(){}); return response; } /** * 运输单gis轨迹 * 根据区域ID集合+筛选条件(合同号、制单开始日期、制单结束日期、发货地、到货地、省份,非需要),返回合同列表信息,按照时间倒序展示; * @param param 参数 * @return TmsBaseResponse */ @Override public List 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> response = sendHttpRequest(url,TMSContants.InterfacePath.getGis[1],JSONObject.toJSONString(param) ,new TypeReference< TmsBaseResponse>>(){}); if(response ==null){ return new ArrayList<>(); }else{ return response.getData()==null?new ArrayList<>():response.getData(); } } /** * 订单生命周期 * @param param 参数 * @return TmsBaseResponse */ @Override public List getCicleStatusList(TmsCircleStatusListRequest param){ List 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> response = sendHttpRequest(url,TMSContants.InterfacePath.getOrderStatusByContractNumber[1],JSONObject.toJSONString(param) ,new TypeReference< TmsBaseResponse>>(){}); 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.ddsc; } if(i == 1){ tem=TMSContants.TopStatusLevel.ydpzz; } if(i == 2){ tem=TMSContants.TopStatusLevel.ckckz; } if(i == 3){ tem=TMSContants.TopStatusLevel.clysz; } if(i == 4){ tem=TMSContants.TopStatusLevel.ydh; } if(i == 5){ tem=TMSContants.TopStatusLevel.yrk; } t.setName(tem.getName()); t.setKey(tem.getKey()); t.setSecondList(getSecondCircleStatusList(tem,response.getData())); list.add(t); } } return list; } private List getSecondCircleStatusList(TMSContants.TopStatusLevel tem, List data) { if(data ==null ||data.size()==0){ return new ArrayList<>(); } List list = new ArrayList<>(); Integer[] statusList = tem.getChileIndexList(); if(statusList!=null){ for(Integer t :statusList){ for(TmsCircleStatusListResponse status :data){ if(StringUtils.equals(status.getOrderStatus(),t.toString())){ list.add(status); } } } } return list; } /** * 合同列表接口 * 根据区域ID集合+筛选条件(合同号、制单开始日期、制单结束日期、发货地、到货地、省份,非需要),返回合同列表信息,按照时间倒序展示; * @param param 参数 * @return TmsBaseResponse */ @Override public List 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() +TMSContants.InterfacePath.getOrderList[0]; TmsBaseResponse> response = sendHttpRequest(url,TMSContants.InterfacePath.getOrderList[1],JSONObject.toJSONString(param) ,new TypeReference< TmsBaseResponse>>(){}); 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){ 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 response = sendHttpRequest(url,TMSContants.InterfacePath.getOrderDetailByContractNumber[1],JSONObject.toJSONString(param) ,new TypeReference< TmsBaseResponse>(){}); 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)); return result; } /** * 发起 tms接口请求 * @param url * @param name * @param param * @param typeReference * @return * @param */ public TmsBaseResponse sendHttpRequest(String url, String name, String param,TypeReference> typeReference){ log.info("【"+name+"】================开始===="+ JSONObject.toJSONString(param)); if ( StringUtils.isNotBlank(url)) { String res = null; int success = 0; try { Map 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)); } } }