Toggle navigation
Toggle navigation
This project
Loading...
Sign in
Fedex
/
iClear-api
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Snippets
Network
Create a new issue
Builds
Commits
Issue Boards
Authored by
tao.mo
2023-03-02 16:45:40 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
5ad53650a38e5c92ff9ced465f91450bb362842e
5ad53650
1 parent
7050c19c
Merge branch 'API-2023-03-12' of D:\workspace\iClear-api with conflicts.
Hide whitespace changes
Inline
Side-by-side
Showing
30 changed files
with
389 additions
and
1050 deletions
doc/FedEx在线申报系统API - HSCode.docx
src/main/java/com/erry/iclear/dateInterface/ErrorCodeEnum.java
src/main/java/com/erry/iclear/dateInterface/IClearApiApplication.java
src/main/java/com/erry/iclear/dateInterface/SpringBootStartApplication.java
src/main/java/com/erry/iclear/dateInterface/api/CommonExceptionAdvice.java
src/main/java/com/erry/iclear/dateInterface/api/CustomsDataInterface.java
src/main/java/com/erry/iclear/dateInterface/api/FedexDataInterface.java
src/main/java/com/erry/iclear/dateInterface/api/HsCodeInterface.java
src/main/java/com/erry/iclear/dateInterface/api/request/HsCodeParam.java
src/main/java/com/erry/iclear/dateInterface/common/BaseModel.java
src/main/java/com/erry/iclear/dateInterface/common/Constant.java
src/main/java/com/erry/iclear/dateInterface/common/Constants.java
src/main/java/com/erry/iclear/dateInterface/common/JsonDateTimeSerializer.java
src/main/java/com/erry/iclear/dateInterface/controller/IClearExportInterface.java
src/main/java/com/erry/iclear/dateInterface/entity/HsCode.java
src/main/java/com/erry/iclear/dateInterface/interceptor/HsCodeInterceptor.java
src/main/java/com/erry/iclear/dateInterface/interceptor/SignInterceptor.java
src/main/java/com/erry/iclear/dateInterface/repository/DictionaryEntriesRepository.java
src/main/java/com/erry/iclear/dateInterface/repository/HsCodeRepository.java
src/main/java/com/erry/iclear/dateInterface/repository/IClearApiHsCodeLogRepository.java
src/main/java/com/erry/iclear/dateInterface/service/ApiService.java
src/main/java/com/erry/iclear/dateInterface/service/ChmConsignmentService.java
src/main/java/com/erry/iclear/dateInterface/service/FedexService.java
src/main/java/com/erry/iclear/dateInterface/service/HsCodeService.java
src/main/java/com/erry/iclear/dateInterface/service/IClearApiHsCodeLogService.java
src/main/java/com/erry/iclear/dateInterface/service/MawbDetailService.java
src/main/java/com/erry/iclear/dateInterface/service/MawbService.java
src/main/java/com/erry/iclear/dateInterface/service/OrigplacecodeMappingService.java
src/main/java/com/erry/iclear/dateInterface/task/IClearApiTask.java
src/test/java/com/erry/iclear/dateInterface/ApiTest.java
doc/FedEx在线申报系统API - HSCode.docx
View file @
5ad5365
No preview for this file type
src/main/java/com/erry/iclear/dateInterface/ErrorCodeEnum.java
0 → 100644
View file @
5ad5365
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
;
}
}
src/main/java/com/erry/iclear/dateInterface/IClearApiApplication.java
View file @
5ad5365
...
...
@@ -36,8 +36,4 @@ public class IClearApiApplication extends SpringBootServletInitializer {
protected
SpringApplicationBuilder
configure
(
SpringApplicationBuilder
builder
)
{
return
builder
.
sources
(
IClearApiApplication
.
class
);
}
public
String
test
(){
return
"test"
;
}
}
...
...
src/main/java/com/erry/iclear/dateInterface/SpringBootStartApplication.java
deleted
100644 → 0
View file @
7050c19
//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);
// }
//}
src/main/java/com/erry/iclear/dateInterface/api/CommonExceptionAdvice.java
View file @
5ad5365
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
());
}
}
...
...
src/main/java/com/erry/iclear/dateInterface/api/CustomsDataInterface.java
View file @
5ad5365
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
;
}
...
...
src/main/java/com/erry/iclear/dateInterface/api/FedexDataInterface.java
View file @
5ad5365
...
...
@@ -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
...
...
src/main/java/com/erry/iclear/dateInterface/api/HsCodeInterface.java
View file @
5ad5365
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
.
getC
ode
().
substring
(
0
,
2000
));
if
(
resultHsCode
.
getCode
().
equals
(
ErrorCodeEnum
.
ERROR_30102
.
getCode
()
)){
iclearApiHsCodeLog
.
setCode
(
hscode
.
getHsc
ode
().
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
;
}
}
}
...
...
src/main/java/com/erry/iclear/dateInterface/api/request/HsCodeParam.java
View file @
5ad5365
...
...
@@ -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
;
}
...
...
src/main/java/com/erry/iclear/dateInterface/common/BaseModel.java
View file @
5ad5365
...
...
@@ -21,6 +21,4 @@ public class BaseModel implements Serializable {
public
void
setId
(
Long
id
)
{
this
.
id
=
id
;
}
}
}
\ No newline at end of file
...
...
src/main/java/com/erry/iclear/dateInterface/common/Constant.java
View file @
5ad5365
...
...
@@ -94,5 +94,8 @@ public class Constant {
public
static
String
DECLARED_DOC_TYPE_ZERO
=
"declaredDocType_00"
;
/**
* 监管条件
*/
public
static
final
String
supervise_condition
=
"superviseRestrict"
;
}
...
...
src/main/java/com/erry/iclear/dateInterface/common/Constants.java
deleted
100644 → 0
View file @
7050c19
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"
;
}
}
src/main/java/com/erry/iclear/dateInterface/common/JsonDateTimeSerializer.java
View file @
5ad5365
...
...
@@ -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
...
...
src/main/java/com/erry/iclear/dateInterface/controller/IClearExportInterface.java
View file @
5ad5365
...
...
@@ -48,7 +48,6 @@ public class IClearExportInterface {
public
String
refreshSendMawbe
()
{
try
{
return
"Success"
;
}
catch
(
Exception
e
){
log
.
error
(
"refreshCache() error:"
+
e
.
getMessage
());
...
...
src/main/java/com/erry/iclear/dateInterface/entity/HsCode.java
View file @
5ad5365
...
...
@@ -2,6 +2,8 @@ package com.erry.iclear.dateInterface.entity;
import
com.erry.iclear.dateInterface.common.BaseModel
;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
lombok.Data
;
import
org.hibernate.annotations.Persister
;
import
javax.persistence.*
;
import
java.math.BigDecimal
;
...
...
@@ -13,6 +15,7 @@ import java.util.Date;
*/
@Entity
@Table
(
name
=
"T_CC_HS_CODE"
)
@Data
public
class
HsCode
extends
BaseModel
{
private
static
final
long
serialVersionUID
=
2693103610036977383L
;
...
...
@@ -449,820 +452,14 @@ public class HsCode extends BaseModel {
@Column
(
name
=
"OUT_RATE"
)
private
BigDecimal
outRate
;
/**
* 是否限制出口C类申报
* 1表示限制,0表示不限制
*/
@Transient
Integer
restrictedC
;
public
static
long
getSerialVersionUID
()
{
return
serialVersionUID
;
}
@Override
public
Long
getId
()
{
return
id
;
}
@Override
public
void
setId
(
Long
id
)
{
this
.
id
=
id
;
}
public
String
getSkuCode
()
{
return
skuCode
;
}
public
void
setSkuCode
(
String
skuCode
)
{
this
.
skuCode
=
skuCode
;
}
public
String
getSkuName
()
{
return
skuName
;
}
public
void
setSkuName
(
String
skuName
)
{
this
.
skuName
=
skuName
;
}
public
BigDecimal
getDutyRate
()
{
return
dutyRate
;
}
public
void
setDutyRate
(
BigDecimal
dutyRate
)
{
this
.
dutyRate
=
dutyRate
;
}
public
BigDecimal
getRegRate
()
{
return
regRate
;
}
public
void
setRegRate
(
BigDecimal
regRate
)
{
this
.
regRate
=
regRate
;
}
public
BigDecimal
getTaxRate
()
{
return
taxRate
;
}
public
void
setTaxRate
(
BigDecimal
taxRate
)
{
this
.
taxRate
=
taxRate
;
}
public
String
getMeasureUnit
()
{
return
measureUnit
;
}
public
void
setMeasureUnit
(
String
measureUnit
)
{
this
.
measureUnit
=
measureUnit
;
}
public
String
getMonitorCondition
()
{
return
monitorCondition
;
}
public
void
setMonitorCondition
(
String
monitorCondition
)
{
this
.
monitorCondition
=
monitorCondition
;
}
public
String
getRemark
()
{
return
remark
;
}
public
void
setRemark
(
String
remark
)
{
this
.
remark
=
remark
;
}
public
Date
getCreateTime
()
{
return
createTime
;
}
public
void
setCreateTime
(
Date
createTime
)
{
this
.
createTime
=
createTime
;
}
public
SysUser
getCreatorId
()
{
return
creatorId
;
}
public
void
setCreatorId
(
SysUser
creatorId
)
{
this
.
creatorId
=
creatorId
;
}
public
String
getCreator
()
{
return
creator
;
}
public
void
setCreator
(
String
creator
)
{
this
.
creator
=
creator
;
}
public
Date
getUpdateTime
()
{
return
updateTime
;
}
public
void
setUpdateTime
(
Date
updateTime
)
{
this
.
updateTime
=
updateTime
;
}
public
SysUser
getUpdateUser
()
{
return
updateUser
;
}
public
void
setUpdateUser
(
SysUser
updateUser
)
{
this
.
updateUser
=
updateUser
;
}
public
String
getUpdateUserName
()
{
return
updateUserName
;
}
public
void
setUpdateUserName
(
String
updateUserName
)
{
this
.
updateUserName
=
updateUserName
;
}
public
Boolean
getValidate
()
{
return
validate
;
}
public
void
setValidate
(
Boolean
validate
)
{
this
.
validate
=
validate
;
}
public
String
getUnitLegalFirst
()
{
return
unitLegalFirst
;
}
public
void
setUnitLegalFirst
(
String
unitLegalFirst
)
{
this
.
unitLegalFirst
=
unitLegalFirst
;
}
public
String
getUnitLegalSecond
()
{
return
unitLegalSecond
;
}
public
void
setUnitLegalSecond
(
String
unitLegalSecond
)
{
this
.
unitLegalSecond
=
unitLegalSecond
;
}
public
Boolean
getCcc
()
{
return
isCcc
;
}
public
void
setCcc
(
Boolean
ccc
)
{
isCcc
=
ccc
;
}
public
Boolean
getExporttax
()
{
return
exporttax
;
}
public
void
setExporttax
(
Boolean
exporttax
)
{
this
.
exporttax
=
exporttax
;
}
public
String
getElement1
()
{
return
element1
;
}
public
void
setElement1
(
String
element1
)
{
this
.
element1
=
element1
;
}
public
BigDecimal
getFlag1
()
{
return
flag1
;
}
public
void
setFlag1
(
BigDecimal
flag1
)
{
this
.
flag1
=
flag1
;
}
public
String
getSelect1
()
{
return
select1
;
}
public
void
setSelect1
(
String
select1
)
{
this
.
select1
=
select1
;
}
public
BigDecimal
getSelectFlag1
()
{
return
selectFlag1
;
}
public
void
setSelectFlag1
(
BigDecimal
selectFlag1
)
{
this
.
selectFlag1
=
selectFlag1
;
}
public
String
getElement2
()
{
return
element2
;
}
public
void
setElement2
(
String
element2
)
{
this
.
element2
=
element2
;
}
public
BigDecimal
getFlag2
()
{
return
flag2
;
}
public
void
setFlag2
(
BigDecimal
flag2
)
{
this
.
flag2
=
flag2
;
}
public
String
getSelect2
()
{
return
select2
;
}
public
void
setSelect2
(
String
select2
)
{
this
.
select2
=
select2
;
}
public
BigDecimal
getSelectFlag2
()
{
return
selectFlag2
;
}
public
void
setSelectFlag2
(
BigDecimal
selectFlag2
)
{
this
.
selectFlag2
=
selectFlag2
;
}
public
String
getElement3
()
{
return
element3
;
}
public
void
setElement3
(
String
element3
)
{
this
.
element3
=
element3
;
}
public
BigDecimal
getFlag3
()
{
return
flag3
;
}
public
void
setFlag3
(
BigDecimal
flag3
)
{
this
.
flag3
=
flag3
;
}
public
String
getSelect3
()
{
return
select3
;
}
public
void
setSelect3
(
String
select3
)
{
this
.
select3
=
select3
;
}
public
BigDecimal
getSelectFlag3
()
{
return
selectFlag3
;
}
public
void
setSelectFlag3
(
BigDecimal
selectFlag3
)
{
this
.
selectFlag3
=
selectFlag3
;
}
public
String
getElement4
()
{
return
element4
;
}
public
void
setElement4
(
String
element4
)
{
this
.
element4
=
element4
;
}
public
BigDecimal
getFlag4
()
{
return
flag4
;
}
public
void
setFlag4
(
BigDecimal
flag4
)
{
this
.
flag4
=
flag4
;
}
public
String
getSelect4
()
{
return
select4
;
}
public
void
setSelect4
(
String
select4
)
{
this
.
select4
=
select4
;
}
public
BigDecimal
getSelectFlag4
()
{
return
selectFlag4
;
}
public
void
setSelectFlag4
(
BigDecimal
selectFlag4
)
{
this
.
selectFlag4
=
selectFlag4
;
}
public
String
getElement5
()
{
return
element5
;
}
public
void
setElement5
(
String
element5
)
{
this
.
element5
=
element5
;
}
public
BigDecimal
getFlag5
()
{
return
flag5
;
}
public
void
setFlag5
(
BigDecimal
flag5
)
{
this
.
flag5
=
flag5
;
}
public
String
getSelect5
()
{
return
select5
;
}
public
void
setSelect5
(
String
select5
)
{
this
.
select5
=
select5
;
}
public
BigDecimal
getSelectFlag5
()
{
return
selectFlag5
;
}
public
void
setSelectFlag5
(
BigDecimal
selectFlag5
)
{
this
.
selectFlag5
=
selectFlag5
;
}
public
String
getElement6
()
{
return
element6
;
}
public
void
setElement6
(
String
element6
)
{
this
.
element6
=
element6
;
}
public
BigDecimal
getFlag6
()
{
return
flag6
;
}
public
void
setFlag6
(
BigDecimal
flag6
)
{
this
.
flag6
=
flag6
;
}
public
String
getSelect6
()
{
return
select6
;
}
public
void
setSelect6
(
String
select6
)
{
this
.
select6
=
select6
;
}
public
BigDecimal
getSelectFlag6
()
{
return
selectFlag6
;
}
public
void
setSelectFlag6
(
BigDecimal
selectFlag6
)
{
this
.
selectFlag6
=
selectFlag6
;
}
public
String
getElement7
()
{
return
element7
;
}
public
void
setElement7
(
String
element7
)
{
this
.
element7
=
element7
;
}
public
BigDecimal
getFlag7
()
{
return
flag7
;
}
public
void
setFlag7
(
BigDecimal
flag7
)
{
this
.
flag7
=
flag7
;
}
public
String
getSelect7
()
{
return
select7
;
}
public
void
setSelect7
(
String
select7
)
{
this
.
select7
=
select7
;
}
public
BigDecimal
getSelectFlag7
()
{
return
selectFlag7
;
}
public
void
setSelectFlag7
(
BigDecimal
selectFlag7
)
{
this
.
selectFlag7
=
selectFlag7
;
}
public
String
getElement8
()
{
return
element8
;
}
public
void
setElement8
(
String
element8
)
{
this
.
element8
=
element8
;
}
public
BigDecimal
getFlag8
()
{
return
flag8
;
}
public
void
setFlag8
(
BigDecimal
flag8
)
{
this
.
flag8
=
flag8
;
}
public
String
getSelect8
()
{
return
select8
;
}
public
void
setSelect8
(
String
select8
)
{
this
.
select8
=
select8
;
}
public
BigDecimal
getSelectFlag8
()
{
return
selectFlag8
;
}
public
void
setSelectFlag8
(
BigDecimal
selectFlag8
)
{
this
.
selectFlag8
=
selectFlag8
;
}
public
String
getElement9
()
{
return
element9
;
}
public
void
setElement9
(
String
element9
)
{
this
.
element9
=
element9
;
}
public
BigDecimal
getFlag9
()
{
return
flag9
;
}
public
void
setFlag9
(
BigDecimal
flag9
)
{
this
.
flag9
=
flag9
;
}
public
String
getSelect9
()
{
return
select9
;
}
public
void
setSelect9
(
String
select9
)
{
this
.
select9
=
select9
;
}
public
BigDecimal
getSelectFlag9
()
{
return
selectFlag9
;
}
public
void
setSelectFlag9
(
BigDecimal
selectFlag9
)
{
this
.
selectFlag9
=
selectFlag9
;
}
public
String
getElement10
()
{
return
element10
;
}
public
void
setElement10
(
String
element10
)
{
this
.
element10
=
element10
;
}
public
BigDecimal
getFlag10
()
{
return
flag10
;
}
public
void
setFlag10
(
BigDecimal
flag10
)
{
this
.
flag10
=
flag10
;
}
public
String
getSelect10
()
{
return
select10
;
}
public
void
setSelect10
(
String
select10
)
{
this
.
select10
=
select10
;
}
public
BigDecimal
getSelectFlag10
()
{
return
selectFlag10
;
}
public
void
setSelectFlag10
(
BigDecimal
selectFlag10
)
{
this
.
selectFlag10
=
selectFlag10
;
}
public
String
getElement11
()
{
return
element11
;
}
public
void
setElement11
(
String
element11
)
{
this
.
element11
=
element11
;
}
public
BigDecimal
getFlag11
()
{
return
flag11
;
}
public
void
setFlag11
(
BigDecimal
flag11
)
{
this
.
flag11
=
flag11
;
}
public
String
getSelect11
()
{
return
select11
;
}
public
void
setSelect11
(
String
select11
)
{
this
.
select11
=
select11
;
}
public
BigDecimal
getSelectFlag11
()
{
return
selectFlag11
;
}
public
void
setSelectFlag11
(
BigDecimal
selectFlag11
)
{
this
.
selectFlag11
=
selectFlag11
;
}
public
String
getElement12
()
{
return
element12
;
}
public
void
setElement12
(
String
element12
)
{
this
.
element12
=
element12
;
}
public
BigDecimal
getFlag12
()
{
return
flag12
;
}
public
void
setFlag12
(
BigDecimal
flag12
)
{
this
.
flag12
=
flag12
;
}
public
String
getSelect12
()
{
return
select12
;
}
public
void
setSelect12
(
String
select12
)
{
this
.
select12
=
select12
;
}
public
BigDecimal
getSelectFlag12
()
{
return
selectFlag12
;
}
public
void
setSelectFlag12
(
BigDecimal
selectFlag12
)
{
this
.
selectFlag12
=
selectFlag12
;
}
public
String
getElement13
()
{
return
element13
;
}
public
void
setElement13
(
String
element13
)
{
this
.
element13
=
element13
;
}
public
BigDecimal
getFlag13
()
{
return
flag13
;
}
public
void
setFlag13
(
BigDecimal
flag13
)
{
this
.
flag13
=
flag13
;
}
public
String
getSelect13
()
{
return
select13
;
}
public
void
setSelect13
(
String
select13
)
{
this
.
select13
=
select13
;
}
public
BigDecimal
getSelectFlag13
()
{
return
selectFlag13
;
}
public
void
setSelectFlag13
(
BigDecimal
selectFlag13
)
{
this
.
selectFlag13
=
selectFlag13
;
}
public
String
getElement14
()
{
return
element14
;
}
public
void
setElement14
(
String
element14
)
{
this
.
element14
=
element14
;
}
public
BigDecimal
getFlag14
()
{
return
flag14
;
}
public
void
setFlag14
(
BigDecimal
flag14
)
{
this
.
flag14
=
flag14
;
}
public
String
getSelect14
()
{
return
select14
;
}
public
void
setSelect14
(
String
select14
)
{
this
.
select14
=
select14
;
}
public
BigDecimal
getSelectFlag14
()
{
return
selectFlag14
;
}
public
void
setSelectFlag14
(
BigDecimal
selectFlag14
)
{
this
.
selectFlag14
=
selectFlag14
;
}
public
String
getElement15
()
{
return
element15
;
}
public
void
setElement15
(
String
element15
)
{
this
.
element15
=
element15
;
}
public
BigDecimal
getFlag15
()
{
return
flag15
;
}
public
void
setFlag15
(
BigDecimal
flag15
)
{
this
.
flag15
=
flag15
;
}
public
String
getSelect15
()
{
return
select15
;
}
public
void
setSelect15
(
String
select15
)
{
this
.
select15
=
select15
;
}
public
BigDecimal
getSelectFlag15
()
{
return
selectFlag15
;
}
public
void
setSelectFlag15
(
BigDecimal
selectFlag15
)
{
this
.
selectFlag15
=
selectFlag15
;
}
public
String
getElement16
()
{
return
element16
;
}
public
void
setElement16
(
String
element16
)
{
this
.
element16
=
element16
;
}
public
BigDecimal
getFlag16
()
{
return
flag16
;
}
public
void
setFlag16
(
BigDecimal
flag16
)
{
this
.
flag16
=
flag16
;
}
public
String
getSelect16
()
{
return
select16
;
}
public
void
setSelect16
(
String
select16
)
{
this
.
select16
=
select16
;
}
public
BigDecimal
getSelectFlag16
()
{
return
selectFlag16
;
}
public
void
setSelectFlag16
(
BigDecimal
selectFlag16
)
{
this
.
selectFlag16
=
selectFlag16
;
}
public
String
getElement17
()
{
return
element17
;
}
public
void
setElement17
(
String
element17
)
{
this
.
element17
=
element17
;
}
public
BigDecimal
getFlag17
()
{
return
flag17
;
}
public
void
setFlag17
(
BigDecimal
flag17
)
{
this
.
flag17
=
flag17
;
}
public
String
getSelect17
()
{
return
select17
;
}
public
void
setSelect17
(
String
select17
)
{
this
.
select17
=
select17
;
}
public
BigDecimal
getSelectFlag17
()
{
return
selectFlag17
;
}
public
void
setSelectFlag17
(
BigDecimal
selectFlag17
)
{
this
.
selectFlag17
=
selectFlag17
;
}
public
String
getElement18
()
{
return
element18
;
}
public
void
setElement18
(
String
element18
)
{
this
.
element18
=
element18
;
}
public
BigDecimal
getFlag18
()
{
return
flag18
;
}
public
void
setFlag18
(
BigDecimal
flag18
)
{
this
.
flag18
=
flag18
;
}
public
String
getSelect18
()
{
return
select18
;
}
public
void
setSelect18
(
String
select18
)
{
this
.
select18
=
select18
;
}
public
BigDecimal
getSelectFlag18
()
{
return
selectFlag18
;
}
public
void
setSelectFlag18
(
BigDecimal
selectFlag18
)
{
this
.
selectFlag18
=
selectFlag18
;
}
public
String
getElement19
()
{
return
element19
;
}
public
void
setElement19
(
String
element19
)
{
this
.
element19
=
element19
;
}
public
BigDecimal
getFlag19
()
{
return
flag19
;
}
public
void
setFlag19
(
BigDecimal
flag19
)
{
this
.
flag19
=
flag19
;
}
public
String
getSelect19
()
{
return
select19
;
}
public
void
setSelect19
(
String
select19
)
{
this
.
select19
=
select19
;
}
public
BigDecimal
getSelectFlag19
()
{
return
selectFlag19
;
}
public
void
setSelectFlag19
(
BigDecimal
selectFlag19
)
{
this
.
selectFlag19
=
selectFlag19
;
}
public
String
getElement20
()
{
return
element20
;
}
public
void
setElement20
(
String
element20
)
{
this
.
element20
=
element20
;
}
public
BigDecimal
getFlag20
()
{
return
flag20
;
}
public
void
setFlag20
(
BigDecimal
flag20
)
{
this
.
flag20
=
flag20
;
}
public
String
getSelect20
()
{
return
select20
;
}
public
void
setSelect20
(
String
select20
)
{
this
.
select20
=
select20
;
}
public
BigDecimal
getSelectFlag20
()
{
return
selectFlag20
;
}
public
void
setSelectFlag20
(
BigDecimal
selectFlag20
)
{
this
.
selectFlag20
=
selectFlag20
;
}
public
BigDecimal
getOutRate
()
{
return
outRate
;
}
public
void
setOutRate
(
BigDecimal
outRate
)
{
this
.
outRate
=
outRate
;
}
@Override
public
String
toString
()
{
...
...
src/main/java/com/erry/iclear/dateInterface/interceptor/HsCodeInterceptor.java
View file @
5ad5365
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
...
...
src/main/java/com/erry/iclear/dateInterface/interceptor/SignInterceptor.java
View file @
5ad5365
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
...
...
src/main/java/com/erry/iclear/dateInterface/repository/DictionaryEntriesRepository.java
View file @
5ad5365
...
...
@@ -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
);
}
...
...
src/main/java/com/erry/iclear/dateInterface/repository/HsCodeRepository.java
View file @
5ad5365
...
...
@@ -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
...
...
src/main/java/com/erry/iclear/dateInterface/repository/IClearApiHsCodeLogRepository.java
View file @
5ad5365
...
...
@@ -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
);
}
...
...
src/main/java/com/erry/iclear/dateInterface/service/ApiService.java
View file @
5ad5365
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
{
...
...
src/main/java/com/erry/iclear/dateInterface/service/ChmConsignmentService.java
View file @
5ad5365
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
;
}
...
...
src/main/java/com/erry/iclear/dateInterface/service/FedexService.java
View file @
5ad5365
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不能为空
...
...
src/main/java/com/erry/iclear/dateInterface/service/HsCodeService.java
View file @
5ad5365
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
...
...
src/main/java/com/erry/iclear/dateInterface/service/IClearApiHsCodeLogService.java
View file @
5ad5365
...
...
@@ -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
;
}
...
...
src/main/java/com/erry/iclear/dateInterface/service/MawbDetailService.java
View file @
5ad5365
...
...
@@ -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
...
...
src/main/java/com/erry/iclear/dateInterface/service/MawbService.java
View file @
5ad5365
...
...
@@ -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
(
"保险费/率不能为空"
);
}
}
...
...
src/main/java/com/erry/iclear/dateInterface/service/OrigplacecodeMappingService.java
View file @
5ad5365
...
...
@@ -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
...
...
src/main/java/com/erry/iclear/dateInterface/task/IClearApiTask.java
View file @
5ad5365
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
){
...
...
src/test/java/com/erry/iclear/dateInterface/ApiTest.java
View file @
5ad5365
...
...
@@ -24,7 +24,7 @@ public class ApiTest {
//获取HSCODE接口地址
public
static
String
hscodeRequest
=
"hscode/hscodeRequest"
;
public
static
String
timeStamp
=
"16
49839249891
"
;
public
static
String
timeStamp
=
"16
24263798669
"
;
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
(
"DEMO
3"
+
"iClearExportDemo3"
+
"29497b9d80c51f8b
"
+
ApiTest
.
timeStamp
);
String
token
=
SHA256Util
.
getSHA256String
(
"DEMO
1"
+
"iClearExportDemo1"
+
"8c7f1108316abfb1
"
+
ApiTest
.
timeStamp
);
System
.
out
.
println
(
token
);
//D类申报的数据落地接口
...
...
Please
register
or
login
to post a comment