tao.mo

Merge branch 'API-2023-03-12' of D:\workspace\iClear-api with conflicts.

Showing 30 changed files with 380 additions and 238 deletions
package com.erry.iclear.dateInterface;
/**
* 异常编码枚举类
* mt
* 2023年2月21日16:03:16
*/
public enum ErrorCodeEnum {
SUCCESS("0","成功"),
ERROR_7("10001","请求信息不能为空"),
ERROR_10001("10001","Appid错误(Appid不存在)"),
ERROR_10002("10002","Appkey错误(Appkey不存在)"),
ERROR_10004("10004","凭证已过期"),
ERROR_10013("10013","无Token(缺少参数)"),
ERROR_10014("10014","Token无效(Token值验证失败)"),
ERROR_10016("10016","无Appid(缺少参数)"),
ERROR_10017("10017","无Appkey(缺少参数)"),
ERROR_10018("10018","无TimeStamp(缺少参数)"),
ERROR_10019("10019","未指定hscode编码,10分钟之内只允许查询一次。"),
ERROR_30001("30001","数据格式不正确"),
ERROR_30002("30002","缺少必填项"),
ERROR_30003("30003","数据校验不通过"),
ERROR_30100("30100","hscode编码个数超过100个"),
ERROR_30101("30101","数据查询异常(访问数据库超时或者其他数据库异常)"),
ERROR_30102("30102","hscode编码字段长度超过2000字符"),
ERROR_30103("30103","skuCode与skuName必须传递一项"),
ERROR_30104("30104","skuCode或skuName长度超出限制"),
ERROR_30105("30105","skuCode编码最少输入4位字符,skuName最少输入2个字符");
ErrorCodeEnum(String code,String name){
this.code = code;
this.name = name;
}
private String code;
private String name;
public String getCode() {
return code;
}
public String getName() {
return name;
}
}
......@@ -36,8 +36,4 @@ public class IClearApiApplication extends SpringBootServletInitializer {
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(IClearApiApplication.class);
}
public String test(){
return "test";
}
}
......
//package com.erry.iclear.dateInterface;
//
//import org.springframework.boot.builder.SpringApplicationBuilder;
//import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
//
///**
// * @author Administrator
// */
//public class SpringBootStartApplication extends SpringBootServletInitializer {
// @Override
// protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
// return builder.sources(IClearApiApplication.class);
// }
//}
package com.erry.iclear.dateInterface.api;
import com.erry.iclear.dateInterface.ErrorCodeEnum;
import com.erry.iclear.dateInterface.api.response.ResultRS;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -37,8 +38,6 @@ public class CommonExceptionAdvice {
String itemMessage= messageSource.getMessage(x.getDefaultMessage(), null, x.getDefaultMessage(), LocaleContextHolder.getLocale());
return String.format("%s", itemMessage);
}).collect(Collectors.toList());
return new ResultRS(Boolean.FALSE,"30002",errorMessages.toString());
return new ResultRS(Boolean.FALSE, ErrorCodeEnum.ERROR_30002.getCode(),errorMessages.toString());
}
}
......
package com.erry.iclear.dateInterface.api;
import com.erry.iclear.dateInterface.ErrorCodeEnum;
import com.erry.iclear.dateInterface.api.request.Mawb;
import com.erry.iclear.dateInterface.api.response.ResultRS;
import com.erry.iclear.dateInterface.entity.IClearApiLog;
......@@ -52,19 +53,18 @@ public class CustomsDataInterface {
ResultRS result = new ResultRS(Boolean.FALSE,"","");
if(Objects.equals(mawb,null)){
result.setCode("-7");
result.setMsg("请求信息不能为空");
result.setCode(ErrorCodeEnum.ERROR_7.getCode());
result.setMsg(ErrorCodeEnum.ERROR_7.getName());
return result;
}
String checkrs = mawbService.checkMawbBaseInfo(mawb);
if(StringUtil.isNotEmpty(checkrs)){
result.setCode("-7");
result.setCode(ErrorCodeEnum.ERROR_7.getCode());
result.setMsg(checkrs);
return result;
}
//1、保存请求信息,保存到iClear的 SQLServer
StopWatch sw = new StopWatch("receice mawb");
......@@ -75,9 +75,6 @@ public class CustomsDataInterface {
String timeStamp=(String) request.getHeader("TimeStamp");
IClearApiLog saveIClearApiLogResult = iClearApiLogService.saveIClearApiLog(iClearApiLogService.convertToIClearApiLog(mawb,appId,appKey,new Date(Long.valueOf(timeStamp))));
mawb.setAppId(appId);
if(!Objects.equals(saveIClearApiLogResult,null)){
log.info("请求保存成功,msgId:"+saveIClearApiLogResult.getMsgId());
......@@ -102,7 +99,7 @@ public class CustomsDataInterface {
}
}
sw.stop();
result.setCode("30001");
result.setCode(ErrorCodeEnum.ERROR_30001.getCode());
result.setMsg(msg);
return result;
}
......@@ -128,7 +125,6 @@ public class CustomsDataInterface {
// }
// sw.stop();
//4、保存运单到iclear中
sw.start("processChmConsignment");
result = chmConsignmentService.processChmConsignment(mawb, timeStamp,appId);
......@@ -137,7 +133,6 @@ public class CustomsDataInterface {
}
sw.stop();
//5、更新日志
sw.start("updateIClearApiLog");
if(!Objects.equals(saveIClearApiLogResult,null)){
......@@ -154,7 +149,7 @@ public class CustomsDataInterface {
//6、return result
result.setSuccess(Boolean.TRUE);
result.setCode("0");
result.setCode(ErrorCodeEnum.SUCCESS.getCode());
result.setMsg("操作成功");
return result;
}
......
......@@ -5,6 +5,7 @@ import com.arronlong.httpclientutil.HttpClientUtil;
import com.arronlong.httpclientutil.common.HttpConfig;
import com.arronlong.httpclientutil.common.HttpHeader;
import com.arronlong.httpclientutil.exception.HttpProcessException;
import com.erry.iclear.dateInterface.ErrorCodeEnum;
import com.erry.iclear.dateInterface.api.request.*;
import com.erry.iclear.dateInterface.api.response.FedexResultChmRS;
import com.erry.iclear.dateInterface.api.response.FedexResultRS;
......@@ -65,7 +66,6 @@ public class FedexDataInterface {
@Value("${api.address.iclear-submit-url}")
String iclearCSubmitUrl;
@ApiOperation(value = "C类运单数据校验接口", httpMethod = "POST", notes = "ex: http://192.168.1.75:8080/fedex/checkBASFMawbFedex")
@PostMapping("/checkMawbFedexC")
@ResponseBody
......@@ -77,7 +77,6 @@ public class FedexDataInterface {
String token=(String) request.getHeader("Token");
String addr = request.getRemoteAddr();
TIClearApiCheckLog tIclearApiCheckLog = new TIClearApiCheckLog();
tIclearApiCheckLog.setRequestAppid(appId);
tIclearApiCheckLog.setRequestAppkey(appKey);
......@@ -117,7 +116,7 @@ public class FedexDataInterface {
log.info(sw.prettyPrint());
if(result.getSuccess()){
result.setSuccess(Boolean.TRUE);
result.setCode("0");
result.setCode(ErrorCodeEnum.SUCCESS.getCode());
}
tiClearApiCheckLogSave.setResponseText(result.getMsg());
tiClearApiCheckLogSave.setCode(result.getCode());
......@@ -128,8 +127,6 @@ public class FedexDataInterface {
return result;
}
@ApiOperation(value = "Fedex推送运单数据", httpMethod = "POST", notes = "ex: http://192.168.1.75:8080/fedex/sendMawbFedex")
@PostMapping("/sendMawbFedex")
@ResponseBody
......@@ -139,8 +136,8 @@ public class FedexDataInterface {
ResultRS result = new ResultRS(Boolean.FALSE,"","");
if(Objects.equals(fedexc,null)){
result.setCode("-7");
result.setMsg("请求信息不能为空");
result.setCode(ErrorCodeEnum.ERROR_7.getCode());
result.setMsg(ErrorCodeEnum.ERROR_7.getName());
return result;
}
//1、保存请求信息,保存到iClear的 SQLServer
......@@ -189,7 +186,6 @@ public class FedexDataInterface {
// }
// sw.stop();
//4、保存运单到iclear中
sw.start("processChmConsignment");
result = chmConsignmentService.processChmConsignmentFedex(saveMawbFedexResult, timeStamp,appId);
......@@ -216,10 +212,8 @@ public class FedexDataInterface {
headerMap.put("Content-Type", "application/json");
String json = HttpUtils.doPost(this.iclearCSubmitUrl,objJson,headerMap);
log.info("<<<<<<<< checkfedexMawb start >>>>>>>>>> result :" +result.getSuccess() +" iclear check response : " + json + " status : " + result.getSuccess());
//5、更新日志
sw.start("updateIClearApiLog");
if(!Objects.equals(saveIClearApiLogResult,null)){
......@@ -236,7 +230,7 @@ public class FedexDataInterface {
//6、return result
result.setSuccess(Boolean.TRUE);
result.setCode("0");
result.setCode(ErrorCodeEnum.SUCCESS.getCode());
return result;
}
......@@ -250,13 +244,13 @@ public class FedexDataInterface {
//获取请求的运单号
String[] splitConsignment = StringUtil.split(consignmentCode.getConsignmentCode(),",");
if(splitConsignment.length > 20){
result.setCode("30001");
result.setCode(ErrorCodeEnum.ERROR_30001.getCode());
result.setMsg("请求信息不能大于20条运单");
return result;
}
if(splitConsignment.length<1){
result.setCode("-7");
result.setMsg("请求信息不能为空");
result.setCode(ErrorCodeEnum.ERROR_7.getCode());
result.setMsg(ErrorCodeEnum.ERROR_7.getName());
return result;
}
StopWatch sw = new StopWatch("receice mawbFedex");
......@@ -295,7 +289,7 @@ public class FedexDataInterface {
log.info("Fedex申报数据请求成功!");
//6、return result
result.setSuccess(Boolean.TRUE);
result.setCode("0");
result.setCode(ErrorCodeEnum.SUCCESS.getCode());
return result;
}
......@@ -309,13 +303,13 @@ public class FedexDataInterface {
//获取请求的运单号
String[] splitConsignment = StringUtil.split(consignmentCode.getConsignmentCode(),",");
if(splitConsignment.length > 20){
result.setCode("30001");
result.setCode(ErrorCodeEnum.ERROR_30001.getCode());
result.setMsg("请求信息不能大于20条运单");
return result;
}
if(splitConsignment.length<1){
result.setCode("-7");
result.setMsg("请求信息不能为空");
result.setCode(ErrorCodeEnum.ERROR_7.getCode());
result.setMsg(ErrorCodeEnum.ERROR_7.getName());
return result;
}
StopWatch sw = new StopWatch("receice mawbFedex");
......@@ -354,8 +348,7 @@ public class FedexDataInterface {
log.info("Fedex回执数据请求成功!");
//6、return result
result.setSuccess(Boolean.TRUE);
result.setCode("0");
result.setCode(ErrorCodeEnum.SUCCESS.getCode());
return result;
}
}
}
\ No newline at end of file
......
package com.erry.iclear.dateInterface.api;
import com.erry.iclear.dateInterface.ErrorCodeEnum;
import com.erry.iclear.dateInterface.api.request.HsCodeParam;
import com.erry.iclear.dateInterface.api.response.ResultHsCode;
import com.erry.iclear.dateInterface.entity.IClearApiHsCodeLog;
......@@ -28,7 +29,7 @@ public class HsCodeInterface {
@Autowired
IClearApiHsCodeLogService iClearApiHsCodeLogService;
@ApiOperation(value = "获取hscode数据", httpMethod = "POST", notes = "ex: http://192.168.1.71:8080/hscode/hscodeRequest")
@ApiOperation(value = "获取最新HS Code信息接口", httpMethod = "POST", notes = "ex: http://192.168.1.71:8080/hscode/hscodeRequest")
@PostMapping("/hscodeRequest")
@ResponseBody
public ResultHsCode hscodeRequest(HttpServletRequest request
......@@ -48,11 +49,10 @@ public class HsCodeInterface {
resultHsCode = hsCodeService.findHsCodeListByCode(hscode.getHscode());
return resultHsCode;
} else {
//如果没有传hscode需要限制10分钟只能查询一次
boolean rs = iClearApiHsCodeLogService.findIClearApiHsCodeLog();
boolean rs = iClearApiHsCodeLogService.findIClearApiHsCodeLog(appId);
if(rs == true){
resultHsCode = new ResultHsCode(Boolean.FALSE,"10019","未指定hscode编码,10分钟之内只允许查询一次",null);
resultHsCode = new ResultHsCode(Boolean.FALSE, ErrorCodeEnum.ERROR_10019.getCode(),ErrorCodeEnum.ERROR_10019.getName(),null);
}else{
resultHsCode = hsCodeService.findAllHsCodeList();
}
......@@ -60,7 +60,7 @@ public class HsCodeInterface {
}
}catch(Exception ex){
log.error(ex.getMessage(),ex);
resultHsCode = new ResultHsCode(Boolean.FALSE,"30101","数据查询异常",null);
resultHsCode = new ResultHsCode(Boolean.FALSE,ErrorCodeEnum.ERROR_30101.getCode(),ErrorCodeEnum.ERROR_30101.getName(),null);
return resultHsCode;
}finally {
iclearApiHsCodeLog.setReceiveResult(resultHsCode.getMsg());
......@@ -69,10 +69,51 @@ public class HsCodeInterface {
long end = System.currentTimeMillis();
iclearApiHsCodeLog.setSpendTime(end-begin);
//如果异常为hscode长度超过2000,将截取0到2000字符
if(resultHsCode.getCode().equals("30102")){
iclearApiHsCodeLog.setCode(iclearApiHsCodeLog.getCode().substring(0,2000));
if(resultHsCode.getCode().equals(ErrorCodeEnum.ERROR_30102.getCode())){
iclearApiHsCodeLog.setCode(hscode.getHscode().substring(0,2000));
}
iClearApiHsCodeLogService.saveIClearApiHsCodeLog(iclearApiHsCodeLog);
}
}
@ApiOperation(value = "HSCODE通用模糊查询接口", httpMethod = "POST", notes = "ex: http://192.168.1.71:8080/hscode/fuzzyQuery")
@PostMapping("/fuzzyQuery")
@ResponseBody
public ResultHsCode fuzzyQueryHsCode(HttpServletRequest request
, @RequestBody HsCodeParam hscode) {
log.info("接收到请求数据skuCode:【"+hscode.getSkuCode()+"】,skuName:【"+hscode.getSkuName()+"】");
String appId = (String) request.getHeader("Appid");
String appkey = (String) request.getHeader("Appkey");
IClearApiHsCodeLog iclearApiHsCodeLog = new IClearApiHsCodeLog();
ResultHsCode resultHsCode = null;
long begin = System.currentTimeMillis();
try {
iclearApiHsCodeLog.setAppId(appId);
iclearApiHsCodeLog.setAppKey(appkey);
iclearApiHsCodeLog.setCreateTime(new Date());
resultHsCode = hsCodeService.fuzzyQueryHsCode(hscode);
iclearApiHsCodeLog.setReceiveResult(resultHsCode.getMsg());
iclearApiHsCodeLog.setErrorCode(resultHsCode.getCode());
iclearApiHsCodeLog.setResponseTime(new Date());
long end = System.currentTimeMillis();
iclearApiHsCodeLog.setSpendTime(end-begin);
String skuCode = hscode.getSkuCode();
if(!StringUtil.isEmpty(skuCode) && skuCode.length() > 50){
skuCode = skuCode.substring(0,50);
}
String skuName = hscode.getSkuName();
if(!StringUtil.isEmpty(skuName) && skuName.length() > 1000){
skuName = skuName.substring(0,1000);
}
iclearApiHsCodeLog.setCode("[skuCode="+skuCode+"],[skuName="+skuName+"]");
iClearApiHsCodeLogService.saveIClearApiHsCodeLog(iclearApiHsCodeLog);
return resultHsCode;
}catch(Exception ex){
log.error(ex.getMessage(),ex);
resultHsCode = new ResultHsCode(Boolean.FALSE,ErrorCodeEnum.ERROR_30101.getCode(),ErrorCodeEnum.ERROR_30101.getName(),null);
return resultHsCode;
}finally{
return resultHsCode;
}
}
}
......
......@@ -15,4 +15,8 @@ import java.io.Serializable;
public class HsCodeParam implements Serializable {
private static final long serialVersionUID = 786697399667065141L;
String hscode;
//hscode编码
String skuCode;
//商品名称
String skuName;
}
......
......@@ -21,6 +21,4 @@ public class BaseModel implements Serializable {
public void setId(Long id) {
this.id = id;
}
}
}
\ No newline at end of file
......
......@@ -94,5 +94,8 @@ public class Constant {
public static String DECLARED_DOC_TYPE_ZERO="declaredDocType_00";
/**
* 监管条件
*/
public static final String supervise_condition = "superviseRestrict";
}
......
package com.erry.iclear.dateInterface.common;
/**
* 常量
* mt
* 2021年7月29日13:34:15
*/
public interface Constants {
/**
* api响应码
*/
public static interface ApiResponseKeys{
//成功
public static final String SUCCESS = "0";
//用户或密码不正确
public static final String KEY_10001 = "10001";
//用户不存在
public static final String KEY_10002 = "10002";
//账号已过期
public static final String KEY_10003 = "10003";
//凭证已过期
public static final String KEY_10004 = "10004";
//账号已禁用
public static final String KEY_10005 = "10005";
//用户凭证无效
public static final String KEY_10013 = "10013";
}
}
......@@ -16,9 +16,7 @@ public class JsonDateTimeSerializer extends JsonSerializer<Date> {
@Override
public void serialize(Date date, JsonGenerator gen, SerializerProvider provider)
throws IOException, JsonProcessingException {
String formattedDate = dateFormat.format(date);
gen.writeString(formattedDate);
}
}
}
\ No newline at end of file
......
......@@ -48,7 +48,6 @@ public class IClearExportInterface {
public String refreshSendMawbe() {
try{
return "Success";
}catch (Exception e){
log.error("refreshCache() error:"+e.getMessage());
......
package com.erry.iclear.dateInterface.interceptor;
import com.alibaba.fastjson.JSON;
import com.erry.iclear.dateInterface.ErrorCodeEnum;
import com.erry.iclear.dateInterface.api.response.ResultHsCode;
import com.erry.iclear.dateInterface.api.response.ResultRS;
import com.erry.iclear.dateInterface.common.Constant;
......@@ -36,40 +37,40 @@ public class HsCodeInterceptor extends HandlerInterceptorAdapter {
//String uri = request.getRequestURI();
if(StringUtils.isBlank(appId)){
this.returnJson(response,false,"10016","Appid 不能为空");
this.returnJson(response,false, ErrorCodeEnum.ERROR_10016.getCode(),ErrorCodeEnum.ERROR_10016.getName());
return false;
}
if(StringUtils.isBlank(appkey)){
this.returnJson(response,false,"10017","Appkey 不能为空");
this.returnJson(response,false,ErrorCodeEnum.ERROR_10017.getCode(),ErrorCodeEnum.ERROR_10017.getName());
return false;
}
if(StringUtils.isBlank(timeStamp)){
this.returnJson(response,false,"10018","TimeStamp 不能为空");
this.returnJson(response,false,ErrorCodeEnum.ERROR_10018.getCode(),ErrorCodeEnum.ERROR_10018.getName());
return false;
}
if(StringUtils.isBlank(token)){
this.returnJson(response,false,"10013","token 不能为空");
this.returnJson(response,false,ErrorCodeEnum.ERROR_10013.getCode(),ErrorCodeEnum.ERROR_10013.getName());
return false;
}
HashMap<String,String> secretMap = Constant.appIdSecurityCache.get(appId);
if(secretMap==null){
this.returnJson(response,false,"10001","系统异常,该appId没有注册");
this.returnJson(response,false,ErrorCodeEnum.ERROR_10001.getCode(),ErrorCodeEnum.ERROR_10001.getName());
return false;
}
String secretInSys = secretMap.get(appkey);
if (StringUtils.isBlank(secretInSys)) {
this.returnJson(response,false,"10002","系统异常,该appId没有当前Appkey的权限");
this.returnJson(response,false,ErrorCodeEnum.ERROR_10002.getCode(),ErrorCodeEnum.ERROR_10002.getName());
return false;
}
String sha256Str = SHA256Util.getSHA256String(appId+appkey+secretInSys+timeStamp);
if(!token.equals(sha256Str)){
this.returnJson(response,false,"10014","Token验证失败");
this.returnJson(response,false,ErrorCodeEnum.ERROR_10014.getCode(),ErrorCodeEnum.ERROR_10014.getName());
return false;
}
return true;
......@@ -99,5 +100,4 @@ public class HsCodeInterceptor extends HandlerInterceptorAdapter {
}
}
}
}
\ No newline at end of file
......
package com.erry.iclear.dateInterface.interceptor;
import com.alibaba.fastjson.JSON;
import com.erry.iclear.dateInterface.ErrorCodeEnum;
import com.erry.iclear.dateInterface.api.response.ResultRS;
import com.erry.iclear.dateInterface.common.Constant;
import com.erry.iclear.dateInterface.util.SHA256Util;
......@@ -35,40 +36,40 @@ public class SignInterceptor extends HandlerInterceptorAdapter {
if(StringUtils.isBlank(appId)){
this.returnJson(response,false,"10016","Appid 不能为空");
this.returnJson(response,false, ErrorCodeEnum.ERROR_10016.getCode(),ErrorCodeEnum.ERROR_10016.getName());
return false;
}
if(StringUtils.isBlank(appkey)){
this.returnJson(response,false,"10017","Appkey 不能为空");
this.returnJson(response,false,ErrorCodeEnum.ERROR_10017.getCode(),ErrorCodeEnum.ERROR_10017.getName());
return false;
}
if(StringUtils.isBlank(timeStamp)){
this.returnJson(response,false,"10018","TimeStamp 不能为空");
this.returnJson(response,false,ErrorCodeEnum.ERROR_10018.getCode(),ErrorCodeEnum.ERROR_10018.getName());
return false;
}
if(StringUtils.isBlank(token)){
this.returnJson(response,false,"10013","token 不能为空");
this.returnJson(response,false,ErrorCodeEnum.ERROR_10013.getCode(),ErrorCodeEnum.ERROR_10013.getName());
return false;
}
HashMap<String,String> secretMap = Constant.appIdSecurityCache.get(appId);
if(secretMap==null){
this.returnJson(response,false,"10001","系统异常,该appId没有注册");
this.returnJson(response,false,ErrorCodeEnum.ERROR_10001.getCode(),ErrorCodeEnum.ERROR_10001.getName());
return false;
}
String secretInSys = secretMap.get(appkey);
if (StringUtils.isBlank(secretInSys)) {
this.returnJson(response,false,"10002","系统异常,该appId没有当前Appkey的权限");
this.returnJson(response,false,ErrorCodeEnum.ERROR_10002.getCode(),ErrorCodeEnum.ERROR_10002.getName());
return false;
}
String sha256Str = SHA256Util.getSHA256String(appId+appkey+secretInSys+timeStamp);
if(!token.equals(sha256Str)){
this.returnJson(response,false,"10014","Token验证失败");
this.returnJson(response,false,ErrorCodeEnum.ERROR_10014.getCode(),ErrorCodeEnum.ERROR_10014.getName());
return false;
}
return true;
......@@ -98,5 +99,4 @@ public class SignInterceptor extends HandlerInterceptorAdapter {
}
}
}
}
}
\ No newline at end of file
......
......@@ -41,4 +41,13 @@ public interface DictionaryEntriesRepository extends JpaRepository<DictionaryEn
@Query(nativeQuery = true, value = "SELECT * FROM T_BI_DICTIONARY_ENTRIES WHERE DICT_CODE = ?1 AND EXT6 = ?2")
public DictionaryEntries findDictionaryEntriesByDicCode(String code,String numBer);
/**
*监管条件
* @param dictCode
* @param status
* @return
*/
@Query(nativeQuery = true, value = "select CHINESE_NAME from T_BI_DICTIONARY_ENTRIES where DICT_CODE = ?1 AND STATUS=?2 order by ORDINAL")
public List<String> findDicEntByCodeList(String dictCode, Integer status);
}
......
......@@ -16,27 +16,35 @@ import java.util.List;
*/
@Repository
public interface HsCodeRepository extends JpaSpecificationExecutor<HsCode>, JpaRepository<HsCode, Long> {
/**
*
* 根据hscode编码查询最新一条hscode信息
* @param code
* @return
*/
@Query(nativeQuery = true,value = "select top 1 * from T_CC_HS_CODE where VALIDATE=1 and SKU_CODE =?1 order by id desc ")
public HsCode findHsCodeByCode(String code);
/**
* 根据hscode编码查询对应的hscode
* @param skuCodeList
* @return
*/
@Query(nativeQuery = true, value = "select * from [dbo].[T_CC_HS_CODE] where VALIDATE=1 and SKU_CODE in ?1")
@Query(nativeQuery = true, value = "select * from T_CC_HS_CODE where VALIDATE=1 and SKU_CODE in ?1")
List<HsCode> findHsCodeListByCode(List<String> skuCodeList);
/**
* 根据hscode编码或者商品名称进行模糊查询
* @param skuCode
* @param skuName
* @return
*/
@Query(nativeQuery = true, value = "SELECT TOP 50 * FROM T_CC_HS_CODE WHERE VALIDATE=1 and SKU_CODE LIKE ?1 AND SKUNAME LIKE ?2")
List<HsCode> fuzzyQueryHsCode(String skuCode,String skuName);
/**
* 查询所有有效hscode
* @return
*/
@Query(nativeQuery = true,value = "select * from T_CC_HS_CODE where VALIDATE=1")
public List<HsCode> findAllHsCodeList();
List<HsCode> findAllHsCodeList();
/**
* 获取监管条件数据
* @return
*/
@Query(nativeQuery = true,value = "select * from T_CC_HS_CODE where OUT_RATE <> 0 or MONITOR_CONDITION collate Chinese_PRC_CS_AI_WS LIKE ?1")
List<HsCode> findMonitorCondition(String chinsesName);
}
\ No newline at end of file
......
......@@ -28,6 +28,6 @@ public interface IClearApiHsCodeLogRepository extends JpaRepository<IClearApiHsC
* @param createTime yyyy-MM-dd HH:mm
* @return
*/
@Query(nativeQuery = true,value = "select count(1) from T_ICLEAR_API_HSCODE_LOG where CREATE_TIME > ? AND (CODE IS NULL OR CODE = '')")
public Long findIClearApiHsCodeLog(String createTime);
@Query(nativeQuery = true,value = "select count(1) from T_ICLEAR_API_HSCODE_LOG where CREATE_TIME > ?1 AND APPID = ?2 AND (CODE IS NULL OR CODE = '')")
public Long findIClearApiHsCodeLog(String createTime,String appId);
}
......
package com.erry.iclear.dateInterface.service;
import com.erry.iclear.dateInterface.ErrorCodeEnum;
import com.erry.iclear.dateInterface.api.request.Mawb;
import com.erry.iclear.dateInterface.api.request.MawbDetail;
import com.erry.iclear.dateInterface.api.request.ReceiptMessage;
import com.erry.iclear.dateInterface.api.response.TokenResult;
import com.erry.iclear.dateInterface.common.Constants;
import com.erry.iclear.dateInterface.entity.ChmConsignment;
import com.erry.iclear.dateInterface.entity.ChmConsignmentDetail;
import com.erry.iclear.dateInterface.entity.DeclearTask;
......@@ -16,28 +16,12 @@ import com.erry.iclear.dateInterface.util.DateUtils;
import com.erry.iclear.dateInterface.util.HttpUtils;
import com.erry.iclear.dateInterface.util.JsonToJava;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.ssl.SSLContexts;
import org.apache.http.util.EntityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.net.ssl.SSLContext;
import javax.transaction.Transactional;
import java.io.IOException;
import java.math.BigDecimal;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.util.*;
/**
......@@ -160,12 +144,12 @@ public class ApiService {
//接口响应时间
declearTask.setResponseTime(new Date());
TokenResult tokenResult = JsonToJava.parseJson(json,TokenResult.class);
if(tokenResult.getErrorcode().equals(Constants.ApiResponseKeys.SUCCESS)){
if(tokenResult.getErrorcode().equals(ErrorCodeEnum.SUCCESS.getCode())){
//推送成功,记录推送状态
declearTask.setResponseResults(tokenResult.getErrorcode());
declearTask.setResponseContent(tokenResult.getErrormessage());
declearTaskList.add(declearTask);
}else if(tokenResult.getErrorcode().equals(Constants.ApiResponseKeys.KEY_10004) || tokenResult.getErrorcode().equals(Constants.ApiResponseKeys.KEY_10013)){
}else if(tokenResult.getErrorcode().equals(ErrorCodeEnum.ERROR_10004.getCode()) || tokenResult.getErrorcode().equals(ErrorCodeEnum.ERROR_10013.getCode())){
//如果凭证失效,则刷新凭证
refreshToken(token);
}else{
......@@ -259,12 +243,12 @@ public class ApiService {
//接口响应时间
declearTask.setResponseTime(new Date());
TokenResult tokenResult = JsonToJava.parseJson(json,TokenResult.class);
if(tokenResult.getErrorcode().equals(Constants.ApiResponseKeys.SUCCESS)){
if(tokenResult.getErrorcode().equals(ErrorCodeEnum.SUCCESS.getCode())){
//推送成功,记录推送状态
declearTask.setResponseResults(tokenResult.getErrorcode());
declearTask.setResponseContent(tokenResult.getErrormessage());
declearTaskList.add(declearTask);
}else if(tokenResult.getErrorcode().equals(Constants.ApiResponseKeys.KEY_10004) || tokenResult.getErrorcode().equals(Constants.ApiResponseKeys.KEY_10013)){
}else if(tokenResult.getErrorcode().equals(ErrorCodeEnum.ERROR_10004.getCode()) || tokenResult.getErrorcode().equals(ErrorCodeEnum.ERROR_10013.getCode())){
//如果凭证失效,则刷新凭证
refreshToken(token);
}else{
......
package com.erry.iclear.dateInterface.service;
//import cn.hutool.core.date.DateUtil;
import com.erry.iclear.dateInterface.ErrorCodeEnum;
import com.erry.iclear.dateInterface.api.request.FedexMawb;
import com.erry.iclear.dateInterface.api.request.FedexReceipt;
import com.erry.iclear.dateInterface.api.request.Mawb;
......@@ -493,8 +494,8 @@ public class ChmConsignmentService {
Date pushTime = DateUtils.timeStampToDate(Long.valueOf(timeStamp));
ChmConsignment chmConsignment=this.convertToChmConsignment(mawb,pushTime,creator);
if(Objects.equals(chmConsignment,null)){
result.setCode("30001");
result.setMsg("数据格式不正确");
result.setCode(ErrorCodeEnum.ERROR_30001.getCode());
result.setMsg(ErrorCodeEnum.ERROR_30001.getName());
return result;
}
List<ChmConsignmentDetail> chmConsignmentDetailList = new ArrayList<>();
......@@ -522,7 +523,7 @@ public class ChmConsignmentService {
log.info("主单"+ mawb.getBillNo()+" 保存成功,chmConsignmentId:"+chmConsignmentSaveResult.getId());
}else{
log.info("主单"+ mawb.getBillNo()+" 保存失败");
result.setCode("30002");
result.setCode(ErrorCodeEnum.ERROR_30002.getCode());
result.setMsg("主单"+ mawb.getBillNo()+" 保存失败");
return result;
}
......@@ -579,8 +580,8 @@ public class ChmConsignmentService {
Date pushTime = DateUtils.timeStampToDate(Long.valueOf(timeStamp));
ChmConsignment chmConsignment = this.convertToChmConsignmentFedex(fedexMawb,pushTime,creator);
if(Objects.equals(chmConsignment,null)){
result.setCode("30001");
result.setMsg("数据格式不正确");
result.setCode(ErrorCodeEnum.ERROR_30001.getCode());
result.setMsg(ErrorCodeEnum.ERROR_30001.getName());
return result;
}
List<ChmConsignmentDetail> chmConsignmentDetailList = new ArrayList<>();
......@@ -602,7 +603,7 @@ public class ChmConsignmentService {
log.info("主单"+ fedexMawb.getBillNo()+" 保存成功,chmConsignmentId:"+chmConsignmentSaveResult.getId());
}else{
log.info("主单"+ fedexMawb.getBillNo()+" 保存失败");
result.setCode("30002");
result.setCode(ErrorCodeEnum.ERROR_30002.getCode());
result.setMsg("主单"+ fedexMawb.getBillNo()+" 保存失败");
return result;
}
......@@ -635,7 +636,7 @@ public class ChmConsignmentService {
log.info("主单"+ fedexMawb.getBillNo()+" 更新成功,chmConsignmentId:"+updateResult.getId());
}else{
log.info("主单"+ fedexMawb.getBillNo()+" 更新失败");
result.setCode("30003");
result.setCode(ErrorCodeEnum.ERROR_30003.getCode());
result.setMsg("主单"+ fedexMawb.getBillNo()+" 更新失败");
return result;
}
......
package com.erry.iclear.dateInterface.service;
import com.alibaba.fastjson.JSON;
import com.arronlong.httpclientutil.HttpClientUtil;
import com.arronlong.httpclientutil.common.HttpConfig;
import com.arronlong.httpclientutil.common.HttpHeader;
import com.erry.iclear.dateInterface.ErrorCodeEnum;
import com.erry.iclear.dateInterface.api.request.*;
import com.erry.iclear.dateInterface.api.response.IClearCheckResponseResult;
import com.erry.iclear.dateInterface.api.response.ResultRS;
......@@ -13,22 +10,11 @@ import com.erry.iclear.dateInterface.repository.FedexMawbRepository;
import com.erry.iclear.dateInterface.util.HttpUtils;
import com.erry.iclear.dateInterface.util.JsonToJava;
import com.google.gson.Gson;
import io.swagger.annotations.ApiModelProperty;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.Header;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import javax.persistence.*;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.*;
import java.util.stream.Collectors;
......@@ -134,8 +120,8 @@ public class FedexService {
//1、将请求转换为运单
ChmConsignment chmConsignment=consignmentService.convertToChmConsignmentFedex(fedexMawb,null,"IDE-ICLEAR-API");
if(Objects.equals(chmConsignment,null)){
result.setCode("30001");
result.setMsg("数据格式不正确");
result.setCode(ErrorCodeEnum.ERROR_7.getCode());
result.setMsg(ErrorCodeEnum.ERROR_7.getName());
return result;
}
List<ChmConsignmentDetail> chmConsignmentDetailList = new ArrayList<>();
......@@ -185,8 +171,8 @@ public class FedexService {
ResultRS result = new ResultRS(Boolean.FALSE,"","");
if(Objects.equals(fedexc,null)){
result.setCode("-7");
result.setMsg("请求信息不能为空");
result.setCode(ErrorCodeEnum.ERROR_7.getCode());
result.setMsg(ErrorCodeEnum.ERROR_7.getName());
}else{
List<String> msgList = new ArrayList<>();
// 参数consignmentCode不能为空
......
package com.erry.iclear.dateInterface.service;
import com.erry.iclear.dateInterface.ErrorCodeEnum;
import com.erry.iclear.dateInterface.api.request.HsCodeParam;
import com.erry.iclear.dateInterface.api.response.ResultHsCode;
import com.erry.iclear.dateInterface.common.Constant;
import com.erry.iclear.dateInterface.entity.HsCode;
import com.erry.iclear.dateInterface.repository.DictionaryEntriesRepository;
import com.erry.iclear.dateInterface.repository.HsCodeRepository;
import com.erry.iclear.dateInterface.util.StringUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.List;
import java.sql.*;
import java.util.*;
/**
* hscode service
......@@ -17,8 +23,12 @@ import java.util.List;
@Service
@Slf4j
public class HsCodeService {
@Autowired
HsCodeRepository hsCodeRepository;
@Autowired
DictionaryEntriesRepository dicEntriesRepository;
/**
* 根据hscode编码查询对应的hscode
* @param hscode
......@@ -28,14 +38,14 @@ public class HsCodeService {
ResultHsCode resultHsCode = new ResultHsCode(Boolean.FALSE,"","",null);
try{
if(hscode.length() > 2000){
resultHsCode.setCode("30102");
resultHsCode.setMsg("参数:hscode编码字段长度超过2000");
resultHsCode.setCode(ErrorCodeEnum.ERROR_30102.getCode());
resultHsCode.setMsg(ErrorCodeEnum.ERROR_30102.getName());
return resultHsCode;
}
String[] hscodeArrays = hscode.split(",");
if(hscodeArrays.length > 100){
resultHsCode.setCode("30100");
resultHsCode.setMsg("hscode编码个数超过100个");
resultHsCode.setCode(ErrorCodeEnum.ERROR_30100.getCode());
resultHsCode.setMsg(ErrorCodeEnum.ERROR_30100.getName());
return resultHsCode;
}
List<String> skuCodeList = Arrays.asList(hscodeArrays);
......@@ -56,15 +66,75 @@ public class HsCodeService {
hsCodeList.add(hsCode);
}
});
//只能申报D类hscode监管条件hscode
this.setHscodeSupervise(hsCodeList);
resultHsCode.setSuccess(Boolean.TRUE);
resultHsCode.setCode(ErrorCodeEnum.SUCCESS.getCode());
resultHsCode.setMsg(ErrorCodeEnum.SUCCESS.getName());
resultHsCode.setHsCodeResultList(hsCodeList);
}catch(Exception ex){
log.error(ex.getMessage(),ex);
resultHsCode.setSuccess(Boolean.FALSE);
resultHsCode.setCode(ErrorCodeEnum.ERROR_30101.getCode());
resultHsCode.setMsg(ErrorCodeEnum.ERROR_30101.getName());
}
return resultHsCode;
}
/**
* 根据hscode编码或者商品名称进行模糊查询
* @param hscode
* @return
*/
public ResultHsCode fuzzyQueryHsCode(HsCodeParam hscode){
ResultHsCode resultHsCode = new ResultHsCode(Boolean.FALSE,"","",null);
try{
//编码与品名都为空校验失败
if(StringUtil.isEmpty(hscode.getSkuCode()) && StringUtil.isEmpty(hscode.getSkuName())){
resultHsCode.setCode(ErrorCodeEnum.ERROR_30103.getCode());
resultHsCode.setMsg(ErrorCodeEnum.ERROR_30103.getName());
return resultHsCode;
}
//编码长度大于50校验失败
if(!StringUtil.isEmpty(hscode.getSkuCode()) && hscode.getSkuCode().length() > 50){
resultHsCode.setCode(ErrorCodeEnum.ERROR_30104.getCode());
resultHsCode.setMsg(ErrorCodeEnum.ERROR_30104.getName());
return resultHsCode;
}
//品名长度大于1000校验失败
if(!StringUtil.isEmpty(hscode.getSkuName()) && hscode.getSkuName().length() > 1000){
resultHsCode.setCode(ErrorCodeEnum.ERROR_30104.getCode());
resultHsCode.setMsg(ErrorCodeEnum.ERROR_30104.getName());
return resultHsCode;
}
//编码长度小于4位字符校验失败
if(!StringUtil.isEmpty(hscode.getSkuCode()) && hscode.getSkuCode().length() < 4){
resultHsCode.setCode(ErrorCodeEnum.ERROR_30105.getCode());
resultHsCode.setMsg(ErrorCodeEnum.ERROR_30105.getName());
return resultHsCode;
}
//品名长度小于2位字符校验失败
if(!StringUtil.isEmpty(hscode.getSkuName()) && hscode.getSkuName().length() < 2){
resultHsCode.setCode(ErrorCodeEnum.ERROR_30105.getCode());
resultHsCode.setMsg(ErrorCodeEnum.ERROR_30105.getName());
return resultHsCode;
}
String skuCode = "%"+hscode.getSkuCode()+"%";
String skuName = "%"+hscode.getSkuName()+"%";
//模糊查询hscode信息
List<HsCode> hsCodeList = this.hsCodeRepository.fuzzyQueryHsCode(skuCode,skuName);
//对查询数据进行处理,标志数据是否C类限制品名
//只能申报D类hscode监管条件hscode
this.setHscodeSupervise(hsCodeList);
resultHsCode.setSuccess(Boolean.TRUE);
resultHsCode.setCode("0");
resultHsCode.setMsg("操作成功");
resultHsCode.setCode(ErrorCodeEnum.SUCCESS.getCode());
resultHsCode.setMsg(ErrorCodeEnum.SUCCESS.getName());
resultHsCode.setHsCodeResultList(hsCodeList);
}catch(Exception ex){
log.error(ex.getMessage(),ex);
resultHsCode.setSuccess(Boolean.FALSE);
resultHsCode.setCode("30101");
resultHsCode.setMsg("数据查询异常");
resultHsCode.setCode(ErrorCodeEnum.ERROR_30101.getCode());
resultHsCode.setMsg(ErrorCodeEnum.ERROR_30101.getName());
}
return resultHsCode;
}
......@@ -78,17 +148,105 @@ public class HsCodeService {
try{
List<HsCode> hsCodeList = this.hsCodeRepository.findAllHsCodeList();
resultHsCode.setSuccess(Boolean.TRUE);
resultHsCode.setCode("0");
resultHsCode.setMsg("操作成功");
resultHsCode.setCode(ErrorCodeEnum.SUCCESS.getCode());
resultHsCode.setMsg(ErrorCodeEnum.SUCCESS.getName());
resultHsCode.setHsCodeResultList(hsCodeList);
}catch(Exception ex){
log.error(ex.getMessage());
log.error(ex.getMessage(),ex);
log.error(ex.getMessage(),ex);
resultHsCode.setSuccess(Boolean.FALSE);
resultHsCode.setCode("30101");
resultHsCode.setMsg("数据查询异常");
resultHsCode.setCode(ErrorCodeEnum.ERROR_30101.getCode());
resultHsCode.setMsg(ErrorCodeEnum.ERROR_30101.getName());
}
return resultHsCode;
}
}
/**
* 只能申报D类hscode监管条件hscode
* 设置hscode
* mt
* 2023年2月24日17:29:49
*/
public void setHscodeSupervise(List<HsCode> hsCodeList){
List<Long> hsCodeIds = new ArrayList<>();
Map<String,Object> hscodeMap = this.getHscodeSupervise();
StringBuffer shsql = new StringBuffer("'");
if (hscodeMap !=null && hscodeMap.size()>0){
for (Map.Entry hscodeEntry :hscodeMap.entrySet()){
HsCode hsCode = (HsCode) hscodeEntry.getValue();
hsCodeIds.add(hsCode.getId());
}
}
hsCodeList.forEach(hsCode->{
//判断该hscode是否只能申报D类
if(hsCodeIds.contains(hsCode.getId())){
//d类
hsCode.setRestrictedC(1);
}else{
//C类
hsCode.setRestrictedC(0);
}
//如果ID为空,则设置为空
if(hsCode.getId() == null){
hsCode.setRestrictedC(null);
}
});
}
/**
* 根据监管条件获取数据,只能申报D类hscode信息
* mt
* 2023年2月24日16:43:46
* @return
*/
private Map<String,Object> getHscodeSupervise(){
try {
Map<String,Object> returnMap = new HashMap<>();
List<String> dictionaryEntriesList = dicEntriesRepository.findDicEntByCodeList(Constant.supervise_condition,1);
if (dictionaryEntriesList !=null && dictionaryEntriesList.size()>0){
String chinsesName = "%[";
for (int i= 0;i<dictionaryEntriesList.size();i++){
if (dictionaryEntriesList.size() -1 == i){
chinsesName += dictionaryEntriesList.get(i)+"]%";
}else{
chinsesName += dictionaryEntriesList.get(i)+"|";
}
}
//查询监管条件数据
List<HsCode> hsCodeList = this.hsCodeRepository.findMonitorCondition(chinsesName);
hsCodeList.forEach(hsCode->{
String newCode = getSubHscode(hsCode.getSkuCode());
returnMap.put(newCode,hsCode);
});
}
return returnMap;
}catch (Exception e){
log.error(e.getMessage(),e);
}
return null;
}
/**
* 对商品编码进行处理
* @param code
* @return
*/
private String getSubHscode(String code){
try {
if (!StringUtil.isEmptyWithTrim(code) && code.length()>6) {
if (code.length() == 7) {
code = "0" + code + "00";
} else if (code.length() == 8) {
code = code + "00";
} else if (code.length() == 9) {
code = "0" + code;
} else if (code.length() > 10) {
code = code.substring(0, 10);
}
return code;
}
}catch (Exception e){
log.error(e.getMessage(),e);
}
return null;
}
}
\ No newline at end of file
......
......@@ -36,10 +36,10 @@ public class IClearApiHsCodeLogService {
* 查询日志,最近10分钟如果有查询过全量hscode则返回true
* @return
*/
public boolean findIClearApiHsCodeLog(){
public boolean findIClearApiHsCodeLog(String appId){
boolean rs = false;
try{
Long count = iClearApiHsCodeLogRepository.findIClearApiHsCodeLog(DateUtils.getAfter10());
Long count = iClearApiHsCodeLogRepository.findIClearApiHsCodeLog(DateUtils.getAfter10(),appId);
if(count > 0){
rs = true;
}
......
......@@ -16,31 +16,21 @@ import java.util.List;
@Service
@Slf4j
public class MawbDetailService {
@Autowired
private MawbDetailRepository mawbDetailRepository;
public void saveMawbDetail(List<MawbDetail> mawbDetailList){
log.info("");
log.info("");
}
public ResultRS checkMawbDetail(Mawb mawb){
ResultRS result = new ResultRS(Boolean.FALSE,null,null);
try{
result.setSuccess(Boolean.TRUE);
}catch (Exception e){
log.error("checkMawbDetail() error:"+e.getMessage());
}
return result;
}
}
}
\ No newline at end of file
......
......@@ -3,6 +3,7 @@ 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.ErrorCodeEnum;
import com.erry.iclear.dateInterface.api.request.Mawb;
import com.erry.iclear.dateInterface.api.request.MawbDetail;
import com.erry.iclear.dateInterface.api.response.IClearCheckResponseResult;
......@@ -166,11 +167,9 @@ public class MawbService {
}
}
}
return "";
}
/**
* 校验主单
* @param mawb
......@@ -180,12 +179,11 @@ public class MawbService {
ResultRS result = new ResultRS(Boolean.FALSE,null,null);
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("数据格式不正确");
result.setCode(ErrorCodeEnum.ERROR_30001.getCode());
result.setMsg(ErrorCodeEnum.ERROR_30001.getName());
return result;
}
//校验成交方式 成交方式为CIF时 '参数feeCurr不能为空','参数feeMark不能为空'',参数feeRate不能为空','参数insurCurr不能为空', '参数insurRate不能为空'
......@@ -193,13 +191,11 @@ public class MawbService {
if(!result.getSuccess()){
return result;
}
List<ChmConsignmentDetail> chmConsignmentDetailList = new ArrayList<>();
mawb.getMawbDetailList().forEach(detail ->{
chmConsignmentDetailList.add(consignmentDetailService.convertToChmConsignmentDetail(detail,chmConsignment));
});
chmConsignment.setChmConsignmentDetailList(chmConsignmentDetailList);
//调用IClear接口进行运单数据校验
String objJson = JsonToJava.toJson(chmConsignment);
// Header[] headers = HttpHeader.custom()
......@@ -213,13 +209,9 @@ public class MawbService {
// .encoding("utf-8")
// .json(objJson);
// String json = HttpClientUtil.post(config);
Map<String,String> headerMap = new HashMap<>();
headerMap.put("Content-Type", "application/json");
String json = HttpUtils.doPost(this.iclearCheckUrl,objJson,headerMap);
IClearCheckResponseResult iclearCheckResponseResult = JsonToJava.parseJson(json, IClearCheckResponseResult.class);
result.setSuccess(iclearCheckResponseResult.getSuccess());
result.setCode(iclearCheckResponseResult.getCode());
......@@ -243,23 +235,23 @@ public class MawbService {
if(dealMode.equals("CIF、CIP、DDP、DDU、DAP")){
if(StringUtil.isEmpty(mawb.getFeeCurr())){
result.setSuccess(false);
result.setCode("30002");
result.setCode(ErrorCodeEnum.ERROR_30002.getCode());
result.setMsg("运费币制不能为空");
}else if(StringUtil.isEmpty(mawb.getFeeMark())){
result.setSuccess(false);
result.setCode("30002");
result.setCode(ErrorCodeEnum.ERROR_30002.getCode());
result.setMsg("运费标记不能为空");
}else if(mawb.getFeeRate() == null){
result.setSuccess(false);
result.setCode("30002");
result.setCode(ErrorCodeEnum.ERROR_30002.getCode());
result.setMsg("运费/率不能为空");
}else if(StringUtil.isEmpty(mawb.getInsurCurr())){
result.setSuccess(false);
result.setCode("30002");
result.setCode(ErrorCodeEnum.ERROR_30002.getCode());
result.setMsg("保险费币制不能为空");
}else if(mawb.getInsurRate() == null){
result.setSuccess(false);
result.setCode("30002");
result.setCode(ErrorCodeEnum.ERROR_30002.getCode());
result.setMsg("保险费/率不能为空");
}
}
......
......@@ -34,8 +34,6 @@ public class OrigplacecodeMappingService {
return result;
}
/**
* 初始化DomesticDestinationMapping
*/
......@@ -50,13 +48,4 @@ public class OrigplacecodeMappingService {
log.error("initDomesticDestinationMapping() error" + e.getMessage());
}
}
}
}
\ No newline at end of file
......
package com.erry.iclear.dateInterface.task;
import com.alibaba.fastjson.JSONObject;
import com.erry.iclear.dateInterface.ErrorCodeEnum;
import com.erry.iclear.dateInterface.api.response.TokenResult;
import com.erry.iclear.dateInterface.common.Constants;
import com.erry.iclear.dateInterface.entity.HsCode;
import com.erry.iclear.dateInterface.repository.HsCodeRepository;
import com.erry.iclear.dateInterface.service.ApiService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -62,7 +59,7 @@ public class IClearApiTask {
try {
//获取token
TokenResult tokenResult = apiService.getToken();
if(tokenResult.getErrorcode().equals(Constants.ApiResponseKeys.SUCCESS)){
if(tokenResult.getErrorcode().equals(ErrorCodeEnum.SUCCESS.getCode())){
this.token = tokenResult.getData().getToken();
}
}catch(Exception ex){
......
......@@ -24,7 +24,7 @@ public class ApiTest {
//获取HSCODE接口地址
public static String hscodeRequest = "hscode/hscodeRequest";
public static String timeStamp = "1649839249891";
public static String timeStamp = "1624263798669";
public static String appId = "IDE";
public static String appKey = "iClearExport";
//需要申请
......@@ -33,7 +33,7 @@ public class ApiTest {
public static void main(String[] args) throws Exception{
// BASF,iClearExportC,6db193cb4165a71b
System.out.println(new Date(Long.valueOf(timeStamp)));
String token = SHA256Util.getSHA256String("DEMO3" + "iClearExportDemo3" + "29497b9d80c51f8b" + ApiTest.timeStamp);
String token = SHA256Util.getSHA256String("DEMO1" + "iClearExportDemo1" + "8c7f1108316abfb1" + ApiTest.timeStamp);
System.out.println(token);
//D类申报的数据落地接口
......