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
Jiaqi.xu
2022-09-20 14:45:29 +0800
Browse Files
Options
Browse Files
Download
Plain Diff
Commit
8bc9958c5cb21c2077c98ac11acea2b8d4d15b40
8bc9958c
2 parents
c6a93db5
d1393c88
Merge remote-tracking branch 'origin/master'
Show whitespace changes
Inline
Side-by-side
Showing
29 changed files
with
322 additions
and
88 deletions
doc/FedEx在线申报系统API - 数据推送接口(D类).docx
doc/FedEx在线申报系统API - 数据落地接口(C类).docx
sql/BASF校验接口.sql
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/FedexDetail.java
src/main/java/com/erry/iclear/dateInterface/api/request/Fedexc.java
src/main/java/com/erry/iclear/dateInterface/api/request/MawbDetail.java
src/main/java/com/erry/iclear/dateInterface/entity/TIClearApiCheckLog.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/IClearApiCheckLogRepository.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/DeclearTaskService.java
src/main/java/com/erry/iclear/dateInterface/service/DictionaryEntriesService.java
src/main/java/com/erry/iclear/dateInterface/service/FedexConsignmentService.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/task/IClearApiTask.java
src/main/java/com/erry/iclear/dateInterface/util/DateUtils.java
src/main/resources/application-dev.yml
src/main/resources/application-test.yml
src/main/resources/logback.xml
src/test/java/com/erry/iclear/dateInterface/ApiTest.java
src/test/java/com/erry/iclear/dateInterface/SendMawbFedex.java
doc/FedEx在线申报系统API - 数据推送接口(D类).docx
View file @
8bc9958
No preview for this file type
doc/FedEx在线申报系统API - 数据落地接口(C类).docx
View file @
8bc9958
No preview for this file type
sql/BASF校验接口.sql
0 → 100644
View file @
8bc9958
create
table
T_ICLEAR_API_CHECK_LOG
(
ID
bigint
primary
key
identity
(
1
,
1
),
request_appid
varchar
(
200
),
request_appkey
varchar
(
200
),
request_token
varchar
(
200
),
consignment_code
varchar
(
200
),
request_text
text
,
response_text
text
,
request_ip
varchar
(
200
),
create_time
datetime
,
success
int
,
code
varchar
(
200
),
)
src/main/java/com/erry/iclear/dateInterface/api/CustomsDataInterface.java
View file @
8bc9958
...
...
@@ -42,7 +42,7 @@ public class CustomsDataInterface {
private
ChmConsignmentDetailService
chmConsignmentDetailService
;
@ApiOperation
(
value
=
"推送主单数据"
,
httpMethod
=
"POST"
,
notes
=
"ex: http://192.168.1.75:8080/customs/sendMawb"
)
@ApiOperation
(
value
=
"
D类
推送主单数据"
,
httpMethod
=
"POST"
,
notes
=
"ex: http://192.168.1.75:8080/customs/sendMawb"
)
@PostMapping
(
"/sendMawb"
)
@ResponseBody
public
ResultRS
sendMawb
(
HttpServletRequest
request
...
...
@@ -109,12 +109,12 @@ public class CustomsDataInterface {
sw
.
stop
();
// //3、TODO 校验子单
//
sw.start("checkMawbDetail");
//
result=mawbDetailServicel.checkMawbDetail(mawb);
//
if(!result.getSuccess()){
//
return result;
//
}
//
sw.stop();
sw
.
start
(
"checkMawbDetail"
);
result
=
mawbDetailServicel
.
checkMawbDetail
(
mawb
);
if
(!
result
.
getSuccess
()){
return
result
;
}
sw
.
stop
();
//4、保存运单到iclear中
...
...
src/main/java/com/erry/iclear/dateInterface/api/FedexDataInterface.java
View file @
8bc9958
...
...
@@ -12,7 +12,9 @@ import com.erry.iclear.dateInterface.api.response.ResultRS;
import
com.erry.iclear.dateInterface.entity.ChmConsignment
;
import
com.erry.iclear.dateInterface.entity.DeclaredInfo
;
import
com.erry.iclear.dateInterface.entity.IClearApiLog
;
import
com.erry.iclear.dateInterface.entity.TIClearApiCheckLog
;
import
com.erry.iclear.dateInterface.repository.ChmConsignmentRepository
;
import
com.erry.iclear.dateInterface.repository.IClearApiCheckLogRepository
;
import
com.erry.iclear.dateInterface.service.*
;
import
com.erry.iclear.dateInterface.util.JsonToJava
;
import
com.erry.iclear.dateInterface.util.StringUtil
;
...
...
@@ -58,11 +60,74 @@ public class FedexDataInterface {
@Autowired
private
ChmConsignmentRepository
chmConsignmentRepository
;
@Autowired
private
IClearApiCheckLogRepository
iClearApiCheckLogRepository
;
@Value
(
"${api.address.iclear-submit-url}"
)
String
iclearCSubmitUrl
;
@ApiOperation
(
value
=
"Fedex推送运单数据"
,
httpMethod
=
"POST"
,
notes
=
"ex: http://192.168.1.75:8080/fedex/sendMawbFedex"
)
@ApiOperation
(
value
=
"BASF运单数据校验接口"
,
httpMethod
=
"POST"
,
notes
=
"ex: http://192.168.1.75:8080/fedex/checkBASFMawbFedex"
)
@PostMapping
(
"/checkBASFMawbFedex"
)
@ResponseBody
public
ResultRS
checkBASFMawbFedex
(
HttpServletRequest
request
,
@RequestBody
Fedexc
fedexc
)
throws
HttpProcessException
{
String
appId
=(
String
)
request
.
getHeader
(
"Appid"
);
String
appKey
=(
String
)
request
.
getHeader
(
"Appkey"
);
String
timeStamp
=(
String
)
request
.
getHeader
(
"TimeStamp"
);
String
token
=(
String
)
request
.
getHeader
(
"Token"
);
String
addr
=
request
.
getRemoteAddr
();
TIClearApiCheckLog
tIclearApiCheckLog
=
new
TIClearApiCheckLog
();
tIclearApiCheckLog
.
setRequestAppid
(
appId
);
tIclearApiCheckLog
.
setRequestAppkey
(
appKey
);
tIclearApiCheckLog
.
setRequestIp
(
addr
);
tIclearApiCheckLog
.
setRequestToken
(
token
);
tIclearApiCheckLog
.
setConsignmentCode
(
fedexc
.
getConsignmentCode
());
tIclearApiCheckLog
.
setCreateTime
(
new
Date
());
tIclearApiCheckLog
.
setRequestText
(
new
String
(
"requestHeader[appId:"
+
appId
+
","
+
"appKey:"
+
appKey
+
","
+
"timeStamp:"
+
timeStamp
+
","
+
"token:"
+
token
)
+
"],"
+
fedexc
.
toString
()
);
TIClearApiCheckLog
tiClearApiCheckLogSave
=
iClearApiCheckLogRepository
.
save
(
tIclearApiCheckLog
);
log
.
info
(
"checkBASFMawbFedex:"
+
fedexc
.
toString
());
log
.
info
(
"appId:{},appKey:{},timeStamp:{},token:{}"
,
appId
,
appKey
,
timeStamp
,
token
);
ResultRS
result
=
fedexService
.
checkBasfInterfaceData
(
fedexc
);
StopWatch
sw
=
new
StopWatch
(
"checkBASFMawbFedex"
);
sw
.
start
(
"generate FedexMawb"
);
fedexc
.
setAppId
(
appId
);
FedexMawb
saveMawbFedexResult
=
fedexService
.
generateFedexMawb
(
fedexc
);
sw
.
stop
();
sw
.
start
(
"checkFedexMawb"
);
String
msg
=
result
.
getMsg
();
String
iclearCheckMsg
=
fedexService
.
checkFedexMawb
(
saveMawbFedexResult
).
getMsg
();
result
.
setMsg
(
msg
+
";"
+
iclearCheckMsg
);
sw
.
stop
();
log
.
info
(
sw
.
prettyPrint
());
if
(
result
.
getSuccess
()){
result
.
setSuccess
(
Boolean
.
TRUE
);
result
.
setCode
(
"0"
);
}
tiClearApiCheckLogSave
.
setResponseText
(
result
.
getMsg
());
tiClearApiCheckLogSave
.
setCode
(
result
.
getCode
());
tiClearApiCheckLogSave
.
setSuccess
(
result
.
getSuccess
());
iClearApiCheckLogRepository
.
save
(
tiClearApiCheckLogSave
);
log
.
info
(
result
.
toString
());
return
result
;
}
@ApiOperation
(
value
=
"C类Fedex推送运单数据"
,
httpMethod
=
"POST"
,
notes
=
"ex: http://192.168.1.75:8080/fedex/sendMawbFedex"
)
@PostMapping
(
"/sendMawbFedex"
)
@ResponseBody
public
ResultRS
sendMawbFedex
(
HttpServletRequest
request
...
...
@@ -283,4 +348,5 @@ public class FedexDataInterface {
result
.
setCode
(
"0"
);
return
result
;
}
}
...
...
src/main/java/com/erry/iclear/dateInterface/api/HsCodeInterface.java
View file @
8bc9958
...
...
@@ -57,8 +57,7 @@ public class HsCodeInterface {
return
resultHsCode
;
}
}
catch
(
Exception
ex
){
log
.
error
(
ex
.
getMessage
());
ex
.
printStackTrace
();
log
.
error
(
ex
.
getMessage
(),
ex
);
resultHsCode
=
new
ResultHsCode
(
Boolean
.
FALSE
,
"30101"
,
"数据查询异常"
,
null
);
return
resultHsCode
;
}
finally
{
...
...
src/main/java/com/erry/iclear/dateInterface/api/request/FedexDetail.java
View file @
8bc9958
...
...
@@ -30,7 +30,7 @@ public class FedexDetail {
private
Long
basfId
;
@Column
(
name
=
"CONSIGNMENTDETAILID"
)
@NotNull
(
message
=
"参数consignmentDetailId不能为空"
)
//
@NotNull(message="参数consignmentDetailId不能为空")
private
Long
consignmentDetailId
;
@ApiModelProperty
(
value
=
"商品编号"
)
...
...
src/main/java/com/erry/iclear/dateInterface/api/request/Fedexc.java
View file @
8bc9958
...
...
@@ -50,7 +50,7 @@ public class Fedexc implements Serializable {
@ApiModelProperty
(
value
=
"运单ID"
,
name
=
"consignmentId"
,
example
=
"运单记录的唯一ID"
)
@Column
(
name
=
"CONSIGNMENTID"
)
@NotNull
(
message
=
"参数consignmentId不能为空!"
)
//
@NotNull(message="参数consignmentId不能为空!")
// @NotBlank(message="参数consignmentId不能为空!")
private
Long
consignmentId
;
...
...
src/main/java/com/erry/iclear/dateInterface/api/request/MawbDetail.java
View file @
8bc9958
...
...
@@ -114,7 +114,6 @@ public class MawbDetail implements Serializable{
private
String
secondUnit
;
@ApiModelProperty
(
value
=
"第二法定数量"
)
@NotNull
(
message
=
"参数secondQty不能为空"
)
@Column
(
name
=
"SECONDQTY"
)
private
Integer
secondQty
;
...
...
src/main/java/com/erry/iclear/dateInterface/entity/TIClearApiCheckLog.java
0 → 100644
View file @
8bc9958
package
com
.
erry
.
iclear
.
dateInterface
.
entity
;
import
com.erry.iclear.dateInterface.common.BaseModel
;
import
lombok.Data
;
import
javax.persistence.*
;
import
java.util.Date
;
/**
* BASF校验接口日志表
*
* sql/BASF校验接口.sql
*/
@Entity
@Table
(
name
=
"T_ICLEAR_API_CHECK_LOG"
)
@Data
public
class
TIClearApiCheckLog
extends
BaseModel
{
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
@Column
(
name
=
"ID"
)
private
Long
id
;
@Column
(
name
=
"request_appid"
)
private
String
requestAppid
;
@Column
(
name
=
"request_appkey"
)
private
String
requestAppkey
;
@Column
(
name
=
"request_token"
)
private
String
requestToken
;
@Column
(
name
=
"consignment_code"
)
private
String
consignmentCode
;
@Column
(
name
=
"request_text"
)
private
String
requestText
;
@Column
(
name
=
"response_text"
)
private
String
responseText
;
@Column
(
name
=
"request_ip"
)
private
String
requestIp
;
@Column
(
name
=
"create_time"
)
private
Date
createTime
;
@Column
(
name
=
"success"
)
private
Boolean
success
;
@Column
(
name
=
"code"
)
private
String
code
;
}
src/main/java/com/erry/iclear/dateInterface/interceptor/HsCodeInterceptor.java
View file @
8bc9958
...
...
@@ -36,22 +36,22 @@ public class HsCodeInterceptor extends HandlerInterceptorAdapter {
//String uri = request.getRequestURI();
if
(
StringUtils
.
isBlank
(
appId
)){
this
.
returnJson
(
response
,
false
,
"10016"
,
"Appid
不能为空"
);
this
.
returnJson
(
response
,
false
,
"10016"
,
"Appid不能为空"
);
return
false
;
}
if
(
StringUtils
.
isBlank
(
appkey
)){
this
.
returnJson
(
response
,
false
,
"10017"
,
"Appkey
不能为空"
);
this
.
returnJson
(
response
,
false
,
"10017"
,
"Appkey不能为空"
);
return
false
;
}
if
(
StringUtils
.
isBlank
(
timeStamp
)){
this
.
returnJson
(
response
,
false
,
"10018"
,
"TimeStamp
不能为空"
);
this
.
returnJson
(
response
,
false
,
"10018"
,
"TimeStamp不能为空"
);
return
false
;
}
if
(
StringUtils
.
isBlank
(
token
)){
this
.
returnJson
(
response
,
false
,
"10013"
,
"token
不能为空"
);
this
.
returnJson
(
response
,
false
,
"10013"
,
"token不能为空"
);
return
false
;
}
...
...
src/main/java/com/erry/iclear/dateInterface/interceptor/SignInterceptor.java
View file @
8bc9958
...
...
@@ -35,22 +35,22 @@ public class SignInterceptor extends HandlerInterceptorAdapter {
if
(
StringUtils
.
isBlank
(
appId
)){
this
.
returnJson
(
response
,
false
,
"10016"
,
"Appid
不能为空"
);
this
.
returnJson
(
response
,
false
,
"10016"
,
"Appid不能为空"
);
return
false
;
}
if
(
StringUtils
.
isBlank
(
appkey
)){
this
.
returnJson
(
response
,
false
,
"10017"
,
"Appkey
不能为空"
);
this
.
returnJson
(
response
,
false
,
"10017"
,
"Appkey不能为空"
);
return
false
;
}
if
(
StringUtils
.
isBlank
(
timeStamp
)){
this
.
returnJson
(
response
,
false
,
"10018"
,
"TimeStamp
不能为空"
);
this
.
returnJson
(
response
,
false
,
"10018"
,
"TimeStamp不能为空"
);
return
false
;
}
if
(
StringUtils
.
isBlank
(
token
)){
this
.
returnJson
(
response
,
false
,
"10013"
,
"token
不能为空"
);
this
.
returnJson
(
response
,
false
,
"10013"
,
"token不能为空"
);
return
false
;
}
...
...
src/main/java/com/erry/iclear/dateInterface/repository/IClearApiCheckLogRepository.java
0 → 100644
View file @
8bc9958
package
com
.
erry
.
iclear
.
dateInterface
.
repository
;
import
com.erry.iclear.dateInterface.entity.IClearApiLog
;
import
com.erry.iclear.dateInterface.entity.TIClearApiCheckLog
;
import
org.hibernate.annotations.DynamicInsert
;
import
org.hibernate.annotations.DynamicUpdate
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.JpaSpecificationExecutor
;
import
org.springframework.stereotype.Repository
;
import
org.springframework.transaction.annotation.Transactional
;
/**
* @author Administrator
*/
@DynamicUpdate
@DynamicInsert
@Repository
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
interface
IClearApiCheckLogRepository
extends
JpaRepository
<
TIClearApiCheckLog
,
Integer
>,
JpaSpecificationExecutor
<
TIClearApiCheckLog
>
{
}
src/main/java/com/erry/iclear/dateInterface/service/ApiService.java
View file @
8bc9958
...
...
@@ -139,6 +139,7 @@ public class ApiService {
//推送时间
declearTask
.
setPushTime
(
new
Date
());
String
objJson
=
JsonToJava
.
toJson
(
d
);
log
.
info
(
"推送海关回执json: "
+
objJson
);
//推送海关回执数据
String
json
=
HttpUtils
.
doPost
(
this
.
customsUrl
,
objJson
,
headerMap
);
//接口响应时间
...
...
@@ -160,12 +161,12 @@ public class ApiService {
log
.
info
(
"海关回执推送失败,推送相应码为:"
+
tokenResult
.
getErrorcode
()
+
",推送ID为:"
+
d
.
getId
());
}
}
catch
(
Exception
ex
){
log
.
error
(
"推送海关回执异常:"
+
ex
.
getMessage
(),
ex
);
//接口响应时间
declearTask
.
setResponseTime
(
new
Date
());
declearTask
.
setResponseResults
(
"99999"
);
declearTask
.
setResponseContent
(
ex
.
getMessage
());
declearTaskList
.
add
(
declearTask
);
ex
.
printStackTrace
();
}
});
declearTaskList
.
forEach
(
declearTask
->
{
...
...
@@ -203,7 +204,7 @@ public class ApiService {
});
this
.
sendMawb
(
token
,
mawbList
);
}
catch
(
Exception
ex
){
ex
.
printStackTrace
(
);
log
.
error
(
"pushMawbAcc"
,
ex
);
}
}
/**
...
...
@@ -261,7 +262,7 @@ public class ApiService {
declearTask
.
setResponseResults
(
"99999"
);
declearTask
.
setResponseContent
(
ex
.
getMessage
());
declearTaskList
.
add
(
declearTask
);
ex
.
printStackTrace
(
);
log
.
error
(
"sendMawb"
,
ex
);
}
});
declearTaskList
.
forEach
(
declearTask
->
{
...
...
src/main/java/com/erry/iclear/dateInterface/service/ChmConsignmentService.java
View file @
8bc9958
...
...
@@ -234,8 +234,7 @@ public class ChmConsignmentService {
}
catch
(
Exception
e
){
result
=
null
;
e
.
printStackTrace
();
log
.
error
(
"convertToChmConsignment() error:"
+
e
.
getMessage
());
log
.
error
(
"sendMawb"
,
e
);
}
return
result
;
}
...
...
@@ -292,8 +291,7 @@ public class ChmConsignmentService {
}
}
catch
(
Exception
e
){
result
=
null
;
e
.
printStackTrace
();
log
.
error
(
"convertToChmConsignmentFedex() error:"
+
e
.
getMessage
());
log
.
error
(
"convertToChmConsignmentFedex() error:"
+
e
.
getMessage
(),
e
);
}
return
result
;
}
...
...
@@ -430,8 +428,7 @@ public class ChmConsignmentService {
result
.
setOverseasConsigneeEname
(
consignment
.
getOverseasConsignorFnCname
());
}
catch
(
Exception
e
){
result
=
null
;
e
.
printStackTrace
();
log
.
error
(
"convertToChmConsignment() error:"
+
e
.
getMessage
());
log
.
error
(
"convertToChmConsignment() error:"
+
e
.
getMessage
(),
e
);
}
return
result
;
}
...
...
src/main/java/com/erry/iclear/dateInterface/service/DeclearTaskService.java
View file @
8bc9958
...
...
@@ -45,7 +45,7 @@ public class DeclearTaskService{
declareTaskRepository
.
saveAll
(
declareTaskList
);
}
}
catch
(
Exception
e
){
e
.
printStackTrace
(
);
log
.
error
(
e
.
getMessage
(),
e
);
}
}
...
...
@@ -70,7 +70,7 @@ public class DeclearTaskService{
declareTaskRepository
.
saveAll
(
declareTaskList
);
}
}
catch
(
Exception
e
){
e
.
printStackTrace
(
);
log
.
error
(
e
.
getMessage
(),
e
);
}
}
...
...
src/main/java/com/erry/iclear/dateInterface/service/DictionaryEntriesService.java
View file @
8bc9958
...
...
@@ -27,8 +27,7 @@ public class DictionaryEntriesService {
try
{
result
=
dictionaryEntriesRepository
.
findAllDictionaryEntries
();
}
catch
(
Exception
e
){
e
.
printStackTrace
();
log
.
error
(
"getAllDictionaryEntries() error:"
+
e
.
getMessage
());
log
.
error
(
e
.
getMessage
(),
e
);
}
return
result
;
}
...
...
src/main/java/com/erry/iclear/dateInterface/service/FedexConsignmentService.java
View file @
8bc9958
...
...
@@ -3,12 +3,14 @@ package com.erry.iclear.dateInterface.service;
import
com.erry.iclear.dateInterface.api.request.FedexConsignment
;
import
com.erry.iclear.dateInterface.api.request.ConsignmentDetail
;
import
com.erry.iclear.dateInterface.entity.DeclaredInfo
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
import
java.util.List
;
@Service
@Slf4j
public
class
FedexConsignmentService
{
public
List
<
FedexConsignment
>
fedexConsignmentList
(
List
<
DeclaredInfo
>
consignment
){
...
...
@@ -62,7 +64,7 @@ public class FedexConsignmentService {
fedexConsignmentList
.
add
(
fedexConsignment
);
}
}
catch
(
Exception
e
){
e
.
printStackTrace
(
);
log
.
error
(
e
.
getMessage
(),
e
);
}
return
fedexConsignmentList
;
}
...
...
src/main/java/com/erry/iclear/dateInterface/service/FedexService.java
View file @
8bc9958
...
...
@@ -11,15 +11,22 @@ import com.erry.iclear.dateInterface.entity.ChmConsignmentDetail;
import
com.erry.iclear.dateInterface.repository.FedexMawbRepository
;
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.stereotype.Service
;
import
javax.persistence.*
;
import
javax.validation.Valid
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.stream.Collectors
;
/**
* @author Administrator
...
...
@@ -50,6 +57,16 @@ public class FedexService {
FedexMawb
result
=
null
;
try
{
log
.
info
(
"saveMawb start>>>>>>>>>>>"
);
FedexMawb
fedexMawb
=
this
.
generateFedexMawb
(
fedexc
);
result
=
fedexMawbRepository
.
save
(
fedexMawb
);
log
.
info
(
"saveMawb end>>>>>>>>>>>"
);
}
catch
(
Exception
e
){
log
.
error
(
"saveMawb() error:"
+
e
.
getMessage
());
}
return
result
;
}
public
FedexMawb
generateFedexMawb
(
Fedexc
fedexc
){
//运单头部信息
FedexMawb
fedexMawb
=
new
FedexMawb
();
fedexMawb
.
setAppId
(
fedexc
.
getAppId
());
...
...
@@ -75,7 +92,8 @@ public class FedexService {
fedexMawb
.
setEanNo
(
fedexc
.
getEanNo
());
//明细
List
<
FedexMawbDetail
>
mawbDetailList
=
new
ArrayList
<>();
if
(
fedexc
.
getConsignmentList
().
size
()>
0
){
List
<
FedexDetail
>
consignmentList
=
fedexc
.
getConsignmentList
();
if
(
Objects
.
nonNull
(
consignmentList
)
&&
consignmentList
.
size
()>
0
){
for
(
FedexDetail
fedexcDetail
:
fedexc
.
getConsignmentList
()){
FedexMawbDetail
mawbDetail
=
new
FedexMawbDetail
();
mawbDetail
.
setDetailId
(
String
.
valueOf
(
fedexcDetail
.
getConsignmentDetailId
()));
...
...
@@ -95,12 +113,8 @@ public class FedexService {
}
}
fedexMawb
.
setMawbDetailList
(
mawbDetailList
);
result
=
fedexMawbRepository
.
save
(
fedexMawb
);
log
.
info
(
"saveMawb end>>>>>>>>>>>"
);
}
catch
(
Exception
e
){
log
.
error
(
"saveMawb() error:"
+
e
.
getMessage
());
}
return
result
;
return
fedexMawb
;
}
/**
...
...
@@ -145,7 +159,56 @@ public class FedexService {
result
.
setMsg
(
iclearCheckResponseResult
.
getMessage
());
log
.
info
(
"<<<<<<<< checkMawb start >>>>>>>>>> mawb:"
+
gson
.
toJson
(
fedexMawb
)
+
" result :"
+
result
.
getSuccess
()
+
" iclear check response : "
+
json
+
" status : "
+
result
.
getSuccess
());
}
catch
(
Exception
e
){
log
.
error
(
"checkMawb() error:"
+
e
.
getMessage
());
log
.
error
(
"checkMawb() error:"
,
e
);
}
return
result
;
}
/**
* 校验BASF接口信息
* @param fedexc
* @return
*/
public
ResultRS
checkBasfInterfaceData
(
Fedexc
fedexc
){
ResultRS
result
=
new
ResultRS
(
Boolean
.
FALSE
,
""
,
""
);
if
(
Objects
.
equals
(
fedexc
,
null
)){
result
.
setCode
(
"-7"
);
result
.
setMsg
(
"请求信息不能为空"
);
}
else
{
List
<
String
>
msgList
=
new
ArrayList
<>();
// 参数consignmentCode不能为空
String
consignmentCode
=
fedexc
.
getConsignmentCode
();
if
(
StringUtils
.
isEmpty
(
consignmentCode
)){
msgList
.
add
(
"参数consignmentCode不能为空"
);
}
// 参数consignmentId不能为空
// Long consignmentId = fedexc.getConsignmentId();
// if(Objects.isNull(consignmentId)){
// msgList.add("参数consignmentId不能为空");
// }
// 参数consType不能为空
String
consType
=
fedexc
.
getConsType
();
if
(
StringUtils
.
isEmpty
(
consType
)){
msgList
.
add
(
"参数consType不能为空"
);
}
// 参数sender不能为空
String
sender
=
fedexc
.
getSender
();
if
(
StringUtils
.
isEmpty
(
sender
)){
msgList
.
add
(
"参数sender不能为空"
);
}
// 参数shipperSCC不能为空
String
shipperSCC
=
fedexc
.
getShipperSCC
();
if
(
StringUtils
.
isEmpty
(
shipperSCC
)){
msgList
.
add
(
"参数shipperSCC不能为空"
);
}
if
(
msgList
.
size
()
>
0
){
String
join
=
msgList
.
stream
().
collect
(
Collectors
.
joining
(
";"
));
result
.
setCode
(
"-7"
);
result
.
setMsg
(
join
);
}
}
return
result
;
}
...
...
src/main/java/com/erry/iclear/dateInterface/service/HsCodeService.java
View file @
8bc9958
...
...
@@ -61,8 +61,7 @@ public class HsCodeService {
resultHsCode
.
setMsg
(
"操作成功"
);
resultHsCode
.
setHsCodeResultList
(
hsCodeList
);
}
catch
(
Exception
ex
){
log
.
error
(
ex
.
getMessage
());
ex
.
printStackTrace
();
log
.
error
(
ex
.
getMessage
(),
ex
);
resultHsCode
.
setSuccess
(
Boolean
.
FALSE
);
resultHsCode
.
setCode
(
"30101"
);
resultHsCode
.
setMsg
(
"数据查询异常"
);
...
...
@@ -83,8 +82,8 @@ public class HsCodeService {
resultHsCode
.
setMsg
(
"操作成功"
);
resultHsCode
.
setHsCodeResultList
(
hsCodeList
);
}
catch
(
Exception
ex
){
log
.
error
(
ex
.
getMessage
());
ex
.
printStackTrace
();
log
.
error
(
ex
.
getMessage
()
,
ex
);
resultHsCode
.
setSuccess
(
Boolean
.
FALSE
);
resultHsCode
.
setCode
(
"30101"
);
resultHsCode
.
setMsg
(
"数据查询异常"
);
...
...
src/main/java/com/erry/iclear/dateInterface/service/IClearApiHsCodeLogService.java
View file @
8bc9958
...
...
@@ -44,7 +44,7 @@ public class IClearApiHsCodeLogService {
rs
=
true
;
}
}
catch
(
Exception
ex
){
ex
.
printStackTrace
(
);
log
.
error
(
ex
.
getMessage
(),
ex
);
}
return
rs
;
}
...
...
src/main/java/com/erry/iclear/dateInterface/service/MawbDetailService.java
View file @
8bc9958
...
...
@@ -5,10 +5,12 @@ import com.erry.iclear.dateInterface.api.request.MawbDetail;
import
com.erry.iclear.dateInterface.api.response.ResultRS
;
import
com.erry.iclear.dateInterface.repository.MawbDetailRepository
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
import
java.util.Objects
;
/**
* @author Administrator
...
...
@@ -29,11 +31,19 @@ public class MawbDetailService {
public
ResultRS
checkMawbDetail
(
Mawb
mawb
){
ResultRS
result
=
new
ResultRS
(
Boolean
.
FALSE
,
null
,
null
);
ResultRS
result
=
new
ResultRS
(
Boolean
.
FALSE
,
"30002"
,
null
);
try
{
for
(
MawbDetail
detail
:
mawb
.
getMawbDetailList
())
{
String
secondUnit
=
detail
.
getSecondUnit
();
if
(
StringUtils
.
isNotEmpty
(
secondUnit
))
{
Integer
secondQty
=
detail
.
getSecondQty
();
if
(
Objects
.
isNull
(
secondQty
))
{
result
.
setMsg
(
"参数secondQty不能为空"
);
return
result
;
}
}
}
result
.
setSuccess
(
Boolean
.
TRUE
);
}
catch
(
Exception
e
){
log
.
error
(
"checkMawbDetail() error:"
+
e
.
getMessage
());
...
...
src/main/java/com/erry/iclear/dateInterface/task/IClearApiTask.java
View file @
8bc9958
...
...
@@ -103,7 +103,8 @@ public class IClearApiTask {
this
.
token
=
tokenResult
.
getData
().
getToken
();
}
}
catch
(
Exception
ex
){
ex
.
printStackTrace
();
log
.
error
(
ex
.
getMessage
(),
ex
);
}
}
if
(
this
.
token
==
null
){
...
...
src/main/java/com/erry/iclear/dateInterface/util/DateUtils.java
View file @
8bc9958
...
...
@@ -834,7 +834,7 @@ public class DateUtils {
Date
date
=
df
.
parse
(
datetext
);
return
date
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
(
);
log
.
error
(
e
.
getMessage
(),
e
);
return
null
;
}
}
...
...
@@ -895,7 +895,6 @@ public class DateUtils {
cal
.
add
(
GregorianCalendar
.
YEAR
,
year
);
return
formatDate
(
cal
.
getTime
(),
"yyyy-MM-dd"
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
""
;
}
}
...
...
src/main/resources/application-dev.yml
View file @
8bc9958
spring
:
datasource
:
url
:
jdbc:sqlserver://40.73.78.157:1433;DatabaseName=IClear
Uat
url
:
jdbc:sqlserver://40.73.78.157:1433;DatabaseName=IClear
Dev
username
:
sa
password
:
Fedex_123
driver-class-name
:
com.microsoft.sqlserver.jdbc.SQLServerDriver
...
...
src/main/resources/application-test.yml
View file @
8bc9958
spring
:
datasource
:
url
:
jdbc:sqlserver://40.73.78.157:1433;DatabaseName=IClear
Dev
url
:
jdbc:sqlserver://40.73.78.157:1433;DatabaseName=IClear
Uat
username
:
sa
password
:
Fedex_123
driver-class-name
:
com.microsoft.sqlserver.jdbc.SQLServerDriver
...
...
src/main/resources/logback.xml
View file @
8bc9958
...
...
@@ -39,6 +39,10 @@
<appender-ref
ref=
"CONSOLE"
/>
<appender-ref
ref=
"FILE"
/>
</root>
<root
level=
"error"
>
<appender-ref
ref=
"CONSOLE"
/>
<appender-ref
ref=
"FILE"
/>
</root>
</springProfile>
<springProfile
name=
"prod"
>
...
...
@@ -46,6 +50,10 @@
<appender-ref
ref=
"CONSOLE"
/>
<appender-ref
ref=
"FILE"
/>
</root>
<root
level=
"error"
>
<appender-ref
ref=
"CONSOLE"
/>
<appender-ref
ref=
"FILE"
/>
</root>
</springProfile>
...
...
src/test/java/com/erry/iclear/dateInterface/ApiTest.java
View file @
8bc9958
...
...
@@ -24,17 +24,17 @@ public class ApiTest {
//获取HSCODE接口地址
public
static
String
hscodeRequest
=
"hscode/hscodeRequest"
;
public
static
String
timeStamp
=
"164
9839249891
"
;
public
static
String
timeStamp
=
"164
5153943
"
;
public
static
String
appId
=
"IDE"
;
public
static
String
appKey
=
"iClearExport"
;
//需要申请
public
static
String
security
=
"b
92131f03f19a348
"
;
public
static
String
security
=
"b
b348f1ba6ab7cc1
"
;
public
static
void
main
(
String
[]
args
)
throws
Exception
{
//D类申报的数据落地接口
//
ApiTest.sendMawb();
ApiTest
.
sendMawb
();
//C类申报的数据落地接口
ApiTest
.
sendMawbBasf
();
//
ApiTest.sendMawbBasf();
//C类EDI数据接口
// ApiTest.selectDecListBasf();
//C类回执数据接口
...
...
@@ -51,34 +51,34 @@ public class ApiTest {
String
masbJson
=
"{\"ieFlag\":\"E\",\"type\":\"EX\",\"agentCode\":\"1111980005\",\"agentName\":\"联邦快递(中国)有限公司\",\"billNo\":\"202204141\",\"contrNo\":\"3006622200\",\"customMaster\":\"0208\",\"cutMode\":\"601\",\"declTrnRel\":\"0\",\"distinatePort\":\"DEU000\",\"ediId\":\"001\",\"feeCurr\":\"EUR\",\"feeMark\":\"3\",\"feeRate\":110.9,\"grossWet\":4.6,\"iePort\":\"0101\",\"insurCurr\":\"EUR\",\"insurMark\":\"3\",\"insurRate\":0.74,\"netWt\":32,\"ownerCode\":\"3118962277\",\"ownerName\":\"测试核销单位\",\"packNo\":1,\"tradeCountry\":\"USA\",\"tradeMode\":\"110\",\"tradeCode\":\"32099616DM\",\"trafMode\":\"5\",\"tradeName\":\"测试发件人\",\"transMode\":\"1\",\"wrapType\":\"23\",\"tradeCodeScc\":\"A74125896321456987\",\"ownerCodeScc\":\"913100007421296207\",\"tradeAreaCode\":\"DEU\",\"entyPortCode\":\"310302\",\"goodsPlace\":\"\",\"declareName\":\"Jimmy shen\",\"overseasConsigneeEname\":\"PRYSMIAN KABEL UND SYSTEME GMBH\",\"mawbDetailList\":[{\"detailId\":\"204\",\"classMark\":\"\",\"codeTS\":\"8504409999\",\"declPrice\":3365,\"declTotal\":3365,\"dutyMode\":\"1\",\"exgNo\":\"\",\"exgVersion\":\"\",\"firstUnit\":\"007\",\"firstQty\":1,\"originCountry\":\"CHN\",\"secondUnit\":\"035\",\"secondQty\":1,\"tradeCurr\":\"EUR\",\"useTo\":\"03\",\"destinationCountry\":\"DEU\",\"ciqCode\":\"\",\"destCode\":\"110102\",\"districtCode\":\"44079\",\"gno\":1,\"gname\":\"变频调速装置\",\"gmodel\":\"4|0|控制电机用|240KW|西门子/SIEMENS|6RA8081-6GV62-0AA0|||\",\"gqty\":1,\"gunit\":\"007\"}]}"
;
System
.
out
.
println
(
new
Date
(
Long
.
valueOf
(
timeStamp
)));
String
token
=
SHA256Util
.
getSHA256String
(
"
IDE"
+
"iClearExport
"
+
ApiTest
.
security
+
ApiTest
.
timeStamp
);
String
token
=
SHA256Util
.
getSHA256String
(
"
DEMO1"
+
"iClearExportDemo1
"
+
ApiTest
.
security
+
ApiTest
.
timeStamp
);
System
.
out
.
println
(
token
);
Header
[]
headers
=
HttpHeader
.
custom
()
.
other
(
"Content-Type"
,
"application/json"
)
.
other
(
"Appid"
,
ApiTest
.
appId
)
.
other
(
"appKey"
,
ApiTest
.
appKey
)
.
other
(
"TimeStamp"
,
ApiTest
.
timeStamp
)
.
other
(
"token"
,
token
)
.
build
();
HCB
hcb
=
HCB
.
custom
()
.
timeout
(
20000
)
.
pool
(
100
,
10
)
.
sslpv
(
SSLs
.
SSLProtocolVersion
.
TLSv1_2
)
.
ssl
()
.
retry
(
3
);
//String url = "https://40.73.78.157:8780/customs/sendMawb";
String
url
=
ApiTest
.
url
+
ApiTest
.
sendMawb
;
HttpConfig
config
=
HttpConfig
.
custom
()
.
headers
(
headers
)
.
url
(
url
)
.
encoding
(
"utf-8"
)
.
client
(
hcb
.
build
())
// .json(new Gson().toJson(createMawb()));
.
json
(
masbJson
);
System
.
out
.
println
(
HttpClientUtil
.
post
(
config
));
//
Header[] headers = HttpHeader.custom()
//
.other("Content-Type", "application/json")
//
.other("Appid", ApiTest.appId)
//
.other("appKey", ApiTest.appKey)
//
.other("TimeStamp", ApiTest.timeStamp)
//
.other("token", token)
//
.build();
//
//
HCB hcb = HCB.custom()
//
.timeout(20000)
//
.pool(100, 10)
//
.sslpv(SSLs.SSLProtocolVersion.TLSv1_2)
//
.ssl()
//
.retry(3);
//
//
//String url = "https://40.73.78.157:8780/customs/sendMawb";
//
String url = ApiTest.url + ApiTest.sendMawb;
//
HttpConfig config = HttpConfig.custom()
//
.headers(headers)
//
.url(url)
//
.encoding("utf-8")
//
.client(hcb.build())
//
//
.json(new Gson().toJson(createMawb()));
//
.json(masbJson);
//
System.out.println(HttpClientUtil.post(config));
}
/**
...
...
src/test/java/com/erry/iclear/dateInterface/SendMawbFedex.java
View file @
8bc9958
...
...
@@ -35,8 +35,8 @@ public class SendMawbFedex {
*/
public
static
void
sendMawbBasf
()
throws
Exception
{
//申报数据:consignmentCode 运单号需要修改
String
json
=
"{\"consignmentCode\":\"2
71002102051\",\"consignmentId\":164535620,\"consType\":\"C\",\"sender\":\"巴斯夫护理化学品(上海)有限公司\",\"shipperCustomsCode\":\"3119920047\",\"shipperSCC\":\"91310000607239894U\",\"operateUnitName\":\"巴斯夫护理化学品(上海)有限公司\",\"operateUnitCode\":\"3119920047\",\"operateSCC\":\"91310000607239894U\",\"consignmentList\":[{\"consignmentDetailId\":83010676,\"skuCode\":\"2917341090\",\"skuName\":\"邻苯二甲酸二丁酯\",\"model\":\"品名:邻苯二甲酸二丁酯 |品牌类型:0|出口享惠情况:0|成分含量:100% 邻苯二甲酸二丁酯|用途:化学分析用试剂,实验用途|GTIN:|CAS:|其他[非必报要素,请根据实际情况填报]:|\",\"knockdownNumber\":1,\"knockdownUnit\":\"035\",\"qtyLegalFirst\":1,\"unitLegalFirst\":\"035\",\"qtyLegalSecond\":\"1.0000\",\"unitLegalSecond\":\"\",\"declaredAmount\":10
,\"currency\":\"USD\",\"declaredWeight\":1}]}"
;
String
json
=
"{\"consignmentCode\":\"2
81833508306\",\"consignmentId\":14054615,\"consType\":\"C\",\"sender\":\"鲁泰纺织股份有限公司\",\"operateUnitName\":\"鲁泰纺织股份有限公司\",\"operateUnitCode\":\"3703930116\",\"operateSCC\":\"91370302613281175K\",\"shipperCustomsCode\":\"3703930116\",\"shipperSCC\":\"91370302613281175K\",\"EANNo\":\"0000000001\",\"consignmentList\":[{\"consignmentDetailId\":15815679,\"skuCode\":\"4205001090\",\"skuName\":\"其他动物皮革制的坐具套\",\"model\":\"品名:其他动物皮革制的坐具套|品牌类型:0|出口享惠情况:0|材质[皮革或再生皮革]:皮革|GTIN:|CAS:|其他[非必报要素,请根据实际情况填报]:|\",\"knockdownNumber\":1,\"knockdownUnit\":\"035\",\"qtyLegalFirst\":1,\"unitLegalFirst\":\"035\",\"declaredAmount\":1
,\"currency\":\"USD\",\"declaredWeight\":1}]}"
;
System
.
out
.
println
(
json
);
String
token
=
SHA256Util
.
getSHA256String
(
SendMawbFedex
.
appId
+
SendMawbFedex
.
appKey
+
SendMawbFedex
.
security
+
SendMawbFedex
.
timeStamp
);
System
.
out
.
println
(
token
);
//消息头
...
...
Please
register
or
login
to post a comment