tao.mo

IDE接口修改调整

mt
2021年8月11日16:52:15
......@@ -88,21 +88,21 @@ public class CustomsDataInterface {
sw.stop();
//2、TODO 校验主单
sw.start("checkMawb");
result=mawbService.checkMawb(mawb);
if(!result.getSuccess()){
return result;
}
sw.stop();
//3、TODO 校验子单
sw.start("checkMawbDetail");
result=mawbDetailServicel.checkMawbDetail(mawb);
if(!result.getSuccess()){
return result;
}
sw.stop();
// //2、TODO 校验主单
// sw.start("checkMawb");
// result=mawbService.checkMawb(mawb);
// if(!result.getSuccess()){
// return result;
// }
// sw.stop();
// //3、TODO 校验子单
// sw.start("checkMawbDetail");
// result=mawbDetailServicel.checkMawbDetail(mawb);
// if(!result.getSuccess()){
// return result;
// }
// sw.stop();
//4、保存运单到iclear中
......
......@@ -51,12 +51,12 @@ public class Mawb implements Serializable {
private String type;
@ApiModelProperty(value = "申报单位代码", name = "agentCode", example = "固定值:1111980005")
@NotBlank(message="参数agentCode不能为空")
//@NotBlank(message="参数agentCode不能为空")
@Column(name = "AGENTCODE")
private String agentCode;
@ApiModelProperty(value = "申报单位名称", name = "agentName", example = "固定值:联邦快递(中国)有限公司")
@NotBlank(message="参数agentName不能为空")
//@NotBlank(message="参数agentName不能为空")
@Column(name = "AGENTNAME")
private String agentName;
......@@ -80,7 +80,7 @@ public class Mawb implements Serializable {
private String cutMode;
@ApiModelProperty(value = "报关/转关关系标志", name = "declTrnRel", example = "固定值:0")
@NotBlank(message="参数declTrnRel不能为空")
//@NotBlank(message="参数declTrnRel不能为空")
@Column(name = "DECLTRNREL")
private String declTrnRel;
......
package com.erry.iclear.dateInterface.api.response;
import lombok.AllArgsConstructor;
import lombok.Data;
import java.io.Serializable;
@Data
@AllArgsConstructor
public class IClearCheckResponseResult implements Serializable {
//成功标识
private Boolean success = false;
private String message;
}
......@@ -88,7 +88,7 @@ public class Constant {
public static String DECLARED_DOC_TYPE="declaredDocType_";
public static String DECLARED_DOC_TYPE_ZERO="declaredDocType_00";
}
......
......@@ -103,6 +103,11 @@ public class ApiService {
public void pushCustoms(String token){
//获取海关回执数据
List<ReceiptMessage> receiptMessageList = this.receiptMessageRepository.findReceiptMessageList();
//去除微秒
for(int i = 0 ; i < receiptMessageList.size() ; i ++){
ReceiptMessage receiptMessage = receiptMessageList.get(i);
receiptMessage.setNoticeDate(receiptMessage.getNoticeDate().substring(0,receiptMessage.getNoticeDate().length() - 4));
}
this.sendCustoms(token,receiptMessageList);
}
......@@ -140,7 +145,7 @@ public class ApiService {
declearTask.setResponseResults(tokenResult.getErrorcode());
declearTask.setResponseContent(tokenResult.getErrormessage());
declearTaskList.add(declearTask);
}else if(tokenResult.getErrorcode().equals(Constants.ApiResponseKeys.KEY_10004)){
}else if(tokenResult.getErrorcode().equals(Constants.ApiResponseKeys.KEY_10004) || tokenResult.getErrorcode().equals(Constants.ApiResponseKeys.KEY_10013)){
//如果凭证失效,则刷新凭证
refreshToken(token);
}else{
......@@ -238,7 +243,7 @@ public class ApiService {
declearTask.setResponseResults(tokenResult.getErrorcode());
declearTask.setResponseContent(tokenResult.getErrormessage());
declearTaskList.add(declearTask);
}else if(tokenResult.getErrorcode().equals(Constants.ApiResponseKeys.KEY_10004)){
}else if(tokenResult.getErrorcode().equals(Constants.ApiResponseKeys.KEY_10004) || tokenResult.getErrorcode().equals(Constants.ApiResponseKeys.KEY_10013)){
//如果凭证失效,则刷新凭证
refreshToken(token);
}else{
......
......@@ -78,8 +78,11 @@ public class ChmConsignmentService {
result.setThroughStopPortDic(chmCarryPort);
result.setThroughStopPort(chmCarryPort.getPortNo());
}
//TODO 报关标志【待确认】
DictionaryEntries declaredDocTypeDictionaryEntries = Constant.dictionaryEntriesCache.get(Constant.DECLARED_DOC_TYPE + mawb.getEdiId());
//TODO 报关标志【已确认】,IDE传递的是1,Export中是001,需要进行转换,如果是空,则转换成1
if(mawb.getEdiId() == null){
mawb.setEdiId("1");
}
DictionaryEntries declaredDocTypeDictionaryEntries = Constant.dictionaryEntriesCache.get(Constant.DECLARED_DOC_TYPE + Constant.DECLARED_DOC_TYPE_ZERO + mawb.getEdiId());
if(!Objects.equals(declaredDocTypeDictionaryEntries,null)){
result.setDeclaredDocTypeDic(declaredDocTypeDictionaryEntries);
result.setDeclaredDocType(declaredDocTypeDictionaryEntries.getChineseName());
......@@ -142,7 +145,7 @@ public class ChmConsignmentService {
result.setConsType(consType.getChineseName());
}
//监管方式
DictionaryEntries tradeModeDictionaryEntries = Constant.dictionaryEntriesCache.get(Constant.SUPERVISION_MODE+mawb.getTradeMode());
DictionaryEntries tradeModeDictionaryEntries = Constant.dictionaryEntriesCache.get(Constant.SUPERVISION_MODE+Integer.parseInt(mawb.getTradeMode()));
if(!Objects.equals(tradeModeDictionaryEntries,null)){
result.setTradeModeDic(tradeModeDictionaryEntries);
result.setTradeMode(tradeModeDictionaryEntries.getChineseName());
......@@ -236,13 +239,8 @@ public class ChmConsignmentService {
result.setAgentCode("1111980005");
//申报单位名称:固定值 联邦快递(中国)有限公司
result.setAgentName("联邦快递(中国)有限公司");
//提单号:有总单号则取值“总单号_运单号”,没有总单号则取值“运单号”
//总单号不为空
if(StringUtils.isNotBlank(consignment.getConsignmentHeadCode())){
result.setBillNo(consignment.getConsignmentHeadCode() + "_" + consignment.getConsignmentCode());
}else{
//运单号
result.setBillNo(consignment.getConsignmentCode());
}
//合同号 最大长度32
result.setContrNo(consignment.getContractCode());
//主管海关(申报地海关) 固定值 0101
......@@ -258,9 +256,10 @@ public class ChmConsignmentService {
result.setDistinatePort(consignment.getThroughStopPortDic().getPcCode());
}
//报关标志 数字三字码或英文二字码
//TODO 报关标志【已确认】,IDE传递的是1,Export中是001,需要进行转换 数字三字码或英文二字码
if(!Objects.equals(consignment.getDeclaredDocTypeDic(),null)){
result.setEdiId(consignment.getDeclaredDocTypeDic().getExt2());
Integer ediid = Integer.parseInt(consignment.getDeclaredDocTypeDic().getExt2());
result.setEdiId(ediid.toString());
}
//海关编号
result.setEntryId(consignment.getCustomsNo());
......
package com.erry.iclear.dateInterface.service;
import com.arronlong.httpclientutil.HttpClientUtil;
import com.arronlong.httpclientutil.common.HttpConfig;
import com.arronlong.httpclientutil.common.HttpHeader;
import com.erry.iclear.dateInterface.api.request.Mawb;
import com.erry.iclear.dateInterface.api.response.IClearCheckResponseResult;
import com.erry.iclear.dateInterface.api.response.ResultRS;
import com.erry.iclear.dateInterface.api.response.TokenResult;
import com.erry.iclear.dateInterface.entity.ChmConsignment;
import com.erry.iclear.dateInterface.entity.ChmConsignmentDetail;
import com.erry.iclear.dateInterface.repository.MawbRepository;
import com.erry.iclear.dateInterface.util.JsonToJava;
import com.google.gson.Gson;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.Header;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
/**
* @author Administrator
*/
......@@ -18,9 +32,18 @@ public class MawbService {
private Gson gson = new Gson();
@Value("${api.address.iclear-check-url}")
String iclearCheckUrl;
@Autowired
private MawbRepository mawbRepository;
@Autowired
private ChmConsignmentService consignmentService;
@Autowired
private ChmConsignmentDetailService consignmentDetailService;
/**
* 保存主单Request
* @param mawb
......@@ -48,15 +71,38 @@ public class MawbService {
try{
log.info("checkMawb start>>>>>>>>>> mawb:"+gson.toJson(mawb));
//1、将请求转换为运单
ChmConsignment chmConsignment=consignmentService.convertToChmConsignment(mawb,null,"IDE-ICLEAR-API");
if(Objects.equals(chmConsignment,null)){
result.setCode("30001");
result.setMsg("数据格式不正确");
return result;
}
List<ChmConsignmentDetail> chmConsignmentDetailList = new ArrayList<>();
mawb.getMawbDetailList().forEach(detail ->{
chmConsignmentDetailList.add(consignmentDetailService.convertToChmConsignmentDetail(detail,chmConsignment));
});
chmConsignment.setChmConsignmentDetailList(chmConsignmentDetailList);
result.setSuccess(Boolean.TRUE);
log.info("checkMawb start>>>>>>>>>> mawb:"+gson.toJson(mawb) +" result :" +result.getSuccess() );
//调用IClear接口进行运单数据校验
String objJson = JsonToJava.toJson(chmConsignment);
Header[] headers = HttpHeader.custom()
.other("Content-Type", "application/json")
.build();
//推送海关回执数据
HttpConfig config = HttpConfig.custom()
.headers(headers)
.url(this.iclearCheckUrl)
.encoding("utf-8")
.json(objJson);
String json = HttpClientUtil.post(config);
IClearCheckResponseResult iclearCheckResponseResult = JsonToJava.parseJson(json, IClearCheckResponseResult.class);
result.setSuccess(iclearCheckResponseResult.getSuccess());
result.setMsg(iclearCheckResponseResult.getMessage());
log.info("checkMawb start>>>>>>>>>> mawb:"+gson.toJson(mawb) +" result :" +result.getSuccess() +" iclear check response : " + json + " status : " + result.getSuccess());
}catch (Exception e){
log.error("checkMawb() error:" + e.getMessage());
}
return result;
}
}
......
......@@ -20,6 +20,8 @@ api:
#获取token密码
password: toQu3arch6
address:
#IClear校验运单地址
iclear-check-url: http://192.168.1.253:8080/chmConsignmentController/checkChmAndDetaliD
#获取token地址
token-url: https://apiuat.iclrccd-fedex.com/login
#刷新token地址
......
......@@ -20,6 +20,8 @@ api:
#获取token密码
password: toQu3arch6
address:
#IClear校验运单地址
iclear-check-url: https://www.iclrccd-fedex.com/chmConsignmentController/checkChmAndDetaliD
#获取token地址
token-url: https://api.iclrccd-fedex.com/export/login
#刷新token地址
......
......@@ -20,6 +20,8 @@ api:
#获取token密码
password: toQu3arch6
address:
#IClear校验运单地址
iclear-check-url: http://40.73.78.157:8081/chmConsignmentController/checkChmAndDetaliD
#获取token地址
token-url: https://apiuat.iclrccd-fedex.com/login
#刷新token地址
......