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'
Hide whitespace changes
Inline
Side-by-side
Showing
29 changed files
with
448 additions
and
214 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
{
...
...
@@ -74,4 +73,4 @@ public class HsCodeInterface {
iClearApiHsCodeLogService
.
saveIClearApiHsCodeLog
(
iclearApiHsCodeLog
);
}
}
}
\ No newline at end of file
}
...
...
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
;
}
...
...
@@ -99,4 +99,4 @@ public class SignInterceptor extends HandlerInterceptorAdapter {
}
}
}
\ No newline at end of file
}
...
...
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,51 +57,7 @@ public class FedexService {
FedexMawb
result
=
null
;
try
{
log
.
info
(
"saveMawb start>>>>>>>>>>>"
);
//运单头部信息
FedexMawb
fedexMawb
=
new
FedexMawb
();
fedexMawb
.
setAppId
(
fedexc
.
getAppId
());
fedexMawb
.
setMsgId
(
fedexc
.
getMsgId
());
fedexMawb
.
setConsignmentCodeId
(
fedexc
.
getConsignmentId
());
fedexMawb
.
setType
(
fedexc
.
getConsType
());
//TODO 记录时为同一张表,用 '-->' 记录具体存放字段(方便查看,以免误解)
//运单号-->提单号
fedexMawb
.
setBillNo
(
fedexc
.
getConsignmentCode
());
//经营单位 --> 消费使用/生产销售单位名称
fedexMawb
.
setOwnerName
(
fedexc
.
getOperateUnitName
());
//经营单位海关编码 --> 消费使用/生产销售单位代码
fedexMawb
.
setOwnerCode
(
fedexc
.
getOperateUnitCode
());
//经营单位社会信用证代码 --> 消费使用/生产销售单位单位统一编码
fedexMawb
.
setOwnerCodeScc
(
fedexc
.
getOperateSCC
());
//发件人 --> 境内收发货人名称
fedexMawb
.
setTradeName
(
fedexc
.
getSender
());
//发件人海关编码 --> 境内收发货人编号
fedexMawb
.
setTradeCode
(
fedexc
.
getShipperCustomsCode
());
//发件人社会信用证代码 --> 生产核销单位统一信用代码---报关形式类型
fedexMawb
.
setTradeCodeScc
(
fedexc
.
getShipperSCC
());
fedexMawb
.
setEanNo
(
fedexc
.
getEanNo
());
//明细
List
<
FedexMawbDetail
>
mawbDetailList
=
new
ArrayList
<>();
if
(
fedexc
.
getConsignmentList
().
size
()>
0
){
for
(
FedexDetail
fedexcDetail
:
fedexc
.
getConsignmentList
()){
FedexMawbDetail
mawbDetail
=
new
FedexMawbDetail
();
mawbDetail
.
setDetailId
(
String
.
valueOf
(
fedexcDetail
.
getConsignmentDetailId
()));
mawbDetail
.
setGmodel
(
fedexcDetail
.
getModel
());
mawbDetail
.
setCodeTS
(
fedexcDetail
.
getSkuCode
());
mawbDetail
.
setGname
(
fedexcDetail
.
getSkuName
());
mawbDetail
.
setGqty
(
fedexcDetail
.
getKnockdownNumber
());
mawbDetail
.
setGunit
(
fedexcDetail
.
getKnockdownUnit
());
mawbDetail
.
setFirstUnit
(
fedexcDetail
.
getUnitLegalFirst
());
mawbDetail
.
setFirstQty
(
fedexcDetail
.
getQtyLegalFirst
());
mawbDetail
.
setSecondQty
(
fedexcDetail
.
getQtyLegalSecond
());
mawbDetail
.
setSecondUnit
(
fedexcDetail
.
getUnitLegalSecond
());
mawbDetail
.
setDeclTotal
(
fedexcDetail
.
getDeclaredAmount
());
mawbDetail
.
setTradeCurr
(
fedexcDetail
.
getCurrency
());
mawbDetail
.
setDeclaredWeight
(
fedexcDetail
.
getDeclaredWeight
());
mawbDetailList
.
add
(
mawbDetail
);
}
}
fedexMawb
.
setMawbDetailList
(
mawbDetailList
);
FedexMawb
fedexMawb
=
this
.
generateFedexMawb
(
fedexc
);
result
=
fedexMawbRepository
.
save
(
fedexMawb
);
log
.
info
(
"saveMawb end>>>>>>>>>>>"
);
}
catch
(
Exception
e
){
...
...
@@ -103,6 +66,57 @@ public class FedexService {
return
result
;
}
public
FedexMawb
generateFedexMawb
(
Fedexc
fedexc
){
//运单头部信息
FedexMawb
fedexMawb
=
new
FedexMawb
();
fedexMawb
.
setAppId
(
fedexc
.
getAppId
());
fedexMawb
.
setMsgId
(
fedexc
.
getMsgId
());
fedexMawb
.
setConsignmentCodeId
(
fedexc
.
getConsignmentId
());
fedexMawb
.
setType
(
fedexc
.
getConsType
());
//TODO 记录时为同一张表,用 '-->' 记录具体存放字段(方便查看,以免误解)
//运单号-->提单号
fedexMawb
.
setBillNo
(
fedexc
.
getConsignmentCode
());
//经营单位 --> 消费使用/生产销售单位名称
fedexMawb
.
setOwnerName
(
fedexc
.
getOperateUnitName
());
//经营单位海关编码 --> 消费使用/生产销售单位代码
fedexMawb
.
setOwnerCode
(
fedexc
.
getOperateUnitCode
());
//经营单位社会信用证代码 --> 消费使用/生产销售单位单位统一编码
fedexMawb
.
setOwnerCodeScc
(
fedexc
.
getOperateSCC
());
//发件人 --> 境内收发货人名称
fedexMawb
.
setTradeName
(
fedexc
.
getSender
());
//发件人海关编码 --> 境内收发货人编号
fedexMawb
.
setTradeCode
(
fedexc
.
getShipperCustomsCode
());
//发件人社会信用证代码 --> 生产核销单位统一信用代码---报关形式类型
fedexMawb
.
setTradeCodeScc
(
fedexc
.
getShipperSCC
());
fedexMawb
.
setEanNo
(
fedexc
.
getEanNo
());
//明细
List
<
FedexMawbDetail
>
mawbDetailList
=
new
ArrayList
<>();
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
()));
mawbDetail
.
setGmodel
(
fedexcDetail
.
getModel
());
mawbDetail
.
setCodeTS
(
fedexcDetail
.
getSkuCode
());
mawbDetail
.
setGname
(
fedexcDetail
.
getSkuName
());
mawbDetail
.
setGqty
(
fedexcDetail
.
getKnockdownNumber
());
mawbDetail
.
setGunit
(
fedexcDetail
.
getKnockdownUnit
());
mawbDetail
.
setFirstUnit
(
fedexcDetail
.
getUnitLegalFirst
());
mawbDetail
.
setFirstQty
(
fedexcDetail
.
getQtyLegalFirst
());
mawbDetail
.
setSecondQty
(
fedexcDetail
.
getQtyLegalSecond
());
mawbDetail
.
setSecondUnit
(
fedexcDetail
.
getUnitLegalSecond
());
mawbDetail
.
setDeclTotal
(
fedexcDetail
.
getDeclaredAmount
());
mawbDetail
.
setTradeCurr
(
fedexcDetail
.
getCurrency
());
mawbDetail
.
setDeclaredWeight
(
fedexcDetail
.
getDeclaredWeight
());
mawbDetailList
.
add
(
mawbDetail
);
}
}
fedexMawb
.
setMawbDetailList
(
mawbDetailList
);
return
fedexMawb
;
}
/**
* 校验主单
* @param 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
...
...
@@ -22,18 +24,26 @@ public class MawbDetailService {
public
void
saveMawbDetail
(
List
<
MawbDetail
>
mawbDetailList
){
log
.
info
(
""
);
log
.
info
(
""
);
}
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
...
...
@@ -27,13 +27,13 @@ public class DateUtils {
private
DateUtils
()
{
};
public
static
String
YEAR_MONTH
=
"yyyyMM"
;
public
static
String
SHORT_DATE
=
"yyyyMMdd"
;
/**
* 功能:计算两个日期之间相差多少天 ((date2-date1)后取整)
*
*
* @param date1 减日期
* @param date2 被减日期
* @return
...
...
@@ -47,12 +47,12 @@ public class DateUtils {
calendar1
.
set
(
Calendar
.
MINUTE
,
0
);
calendar1
.
set
(
Calendar
.
SECOND
,
0
);
calendar1
.
set
(
Calendar
.
MILLISECOND
,
0
);
calendar2
.
set
(
Calendar
.
HOUR_OF_DAY
,
0
);
calendar2
.
set
(
Calendar
.
MINUTE
,
0
);
calendar2
.
set
(
Calendar
.
SECOND
,
0
);
calendar2
.
set
(
Calendar
.
MILLISECOND
,
0
);
long
l
=
Math
.
abs
(
calendar2
.
getTimeInMillis
()
-
calendar1
.
getTimeInMillis
());
long
increaseDate
=
l
/
1000
/
60
/
60
/
24
;
if
((
l
%
(
1000
*
60
*
60
*
24
))
>
0
)
{
...
...
@@ -60,10 +60,10 @@ public class DateUtils {
}
return
(
int
)
increaseDate
;
}
/**
* date2 是否是date1 的下一天
*
*
* @param date1
* @param date2
* @return
...
...
@@ -77,7 +77,7 @@ public class DateUtils {
/**
* 功能:按yyyy-MM-dd HH:mm:ss 或 yyyy-MM-dd转换为日期
*
*
* @param s
* @return
* @throws Exception
...
...
@@ -108,7 +108,7 @@ public class DateUtils {
/**
* date1 > date2+before-->true
*
*
* @param date1
* @param date2
* @param before
...
...
@@ -133,7 +133,7 @@ public class DateUtils {
/**
* 功能:判断时间是否是凌晨(0-6),默认当前系统时间
*
*
* @param date
* @return
* @throws Exception
...
...
@@ -154,7 +154,7 @@ public class DateUtils {
/**
* 功能:根据传入的字符串,得到holdTime,得到的时间为1970年的HH:mm:ss
* 如果格式不对(不为例如:23:12:23或着23:56或着23),抛出异常
*
*
* @param str
* @return
*/
...
...
@@ -188,7 +188,7 @@ public class DateUtils {
/**
* 日期转为HoldTime格式HH:mm
*
*
* @param date
* @return
*/
...
...
@@ -202,7 +202,7 @@ public class DateUtils {
/**
* 功能:算出两个日期中所包含的月份
*
*
* @param fromDate
* @param toDate
* @return
...
...
@@ -237,7 +237,7 @@ public class DateUtils {
/**
* 功能:获取yyyyMM的年月
*
*
* @param date
* @return
*/
...
...
@@ -248,7 +248,7 @@ public class DateUtils {
/**
* 功能:获取yyyyMMdd的年月日
*
*
* @param date
* @return
*/
...
...
@@ -259,7 +259,7 @@ public class DateUtils {
/**
* 功能:获取yyyyMM的年月
*
*
* @param month
* @return
*/
...
...
@@ -274,8 +274,8 @@ public class DateUtils {
/**
* 功能:格式yyyyMMdd日期
*
*
*
*
* @param date
* @return
*/
...
...
@@ -290,7 +290,7 @@ public class DateUtils {
/**
* 功能:根据两个日期,算出某个月份的第一天,或者最后一天
*
*
* @param dateFrom
* @param dateTo
* @param month
...
...
@@ -334,7 +334,7 @@ public class DateUtils {
/**
* 功能:根据一个日期,算出是这个月中的第几天
*
*
* @param date
* @return
*/
...
...
@@ -346,7 +346,7 @@ public class DateUtils {
/**
* 功能:取出一个月中某天的日期
*
*
* @param month
* @param num
* @return
...
...
@@ -364,7 +364,7 @@ public class DateUtils {
/**
* 功能:得到本周第一天日期
*
*
* @return
*/
public
static
Date
getCurrentWeekMonday
()
{
...
...
@@ -387,7 +387,7 @@ public class DateUtils {
/**
* 功能:得到本周最后一天的日期
*
*
* @return
*/
public
static
Date
getCurrentWeekSaturday
()
{
...
...
@@ -408,7 +408,7 @@ public class DateUtils {
/**
* 功能:从指定日期移动一定的天数
*
*
* @param date
* @param day
* @return
...
...
@@ -426,7 +426,7 @@ public class DateUtils {
/**
* 功能:从当天日期移动一定的月数
*
*
* @param month
* @return
*/
...
...
@@ -442,7 +442,7 @@ public class DateUtils {
/**
* 功能:获取昨天
*
*
* @return
*/
public
static
Date
getYesterday
()
{
...
...
@@ -458,7 +458,7 @@ public class DateUtils {
/**
* 功能:根据某个日期,返回本月第一天
*
*
* @param date 任何一天
* @return Date 当月第一天
*/
...
...
@@ -475,7 +475,7 @@ public class DateUtils {
/**
* 功能:根据某个日期,返回本月最后一天
*
*
* @param date 任何一天
* @return Date 当月第一天
*/
...
...
@@ -494,7 +494,7 @@ public class DateUtils {
/**
* 功能:获取起始日期和终止日期之间的日期(包含起始和终止日期)
*
*
* @param startDate
* @param endDate
* @return
...
...
@@ -526,7 +526,7 @@ public class DateUtils {
/**
* 功能:取得两个日期中最小的日期,如果两个日期参数都为null则返回null
*
*
* @param date1
* @param date2
* @return Date or null
...
...
@@ -546,7 +546,7 @@ public class DateUtils {
/**
* 功能:取得两个日期中最大的日期,如果两个日期参数都为null则返回null
*
*
* @param date1
* @param date2
* @return
...
...
@@ -566,7 +566,7 @@ public class DateUtils {
/**
* 功能:获取指定日期和天数的星期几
*
*
* @param date 指定日期
* @param day 指定天数
* @return
...
...
@@ -584,7 +584,7 @@ public class DateUtils {
/**
* 功能:判断两个Date是否为一天
*
*
* @param date1
* @param date2
* @return
...
...
@@ -599,7 +599,7 @@ public class DateUtils {
/**
* 功能:把date1的小时,分钟,秒换成date2的小时,分钟,秒,返回换值后的date1
*
*
* @param date1
* @param date2
* @return
...
...
@@ -619,10 +619,10 @@ public class DateUtils {
return
cl1
.
getTime
();
}
/**
* 功能:把date1的小时,分钟,秒换成23:59:59
*
*
* @param date1
* @return yyyy-MM-dd 23:59:59
*/
...
...
@@ -638,7 +638,7 @@ public class DateUtils {
/**
* 功能:添加天数
*
*
* @param basicDate
* @param days 正、负 整数 或0
* @return
...
...
@@ -656,7 +656,7 @@ public class DateUtils {
/**
* 功能:对日期进行格式化输出
*
*
* @param date 日期
* @param format
* @return
...
...
@@ -675,7 +675,7 @@ public class DateUtils {
/**
* 功能:获取两个日期之间的天数
*
*
* @param dateFrom 起始日期
* @param dateEnd 结束日期
* @return
...
...
@@ -699,7 +699,7 @@ public class DateUtils {
/**
* 功能:把日期字符串格式化为日期类型
*
*
* @param datetext 日期字符串
* @param format 日期格式,如果不传则使用"yyyy-MM-dd HH:mm:ss"格式
* @return
...
...
@@ -730,7 +730,7 @@ public class DateUtils {
/**
* 功能:取得两天之间的日期数组,包含开始日期与结束日期
*
*
* @param startDateStr 开始日期
* @param endDateStr 结束日期
* @return Date[] 日期数组
...
...
@@ -748,7 +748,7 @@ public class DateUtils {
/**
* 功能:获取两日期之间的天数
*
*
* @param dateFrom 起始日期
* @param dateEnd 结束日期
* @return
...
...
@@ -776,7 +776,7 @@ public class DateUtils {
/**
* 功能: 待确定
*
*
* @param startDateStr
* @param endDateStr
* @return
...
...
@@ -804,7 +804,7 @@ public class DateUtils {
/**
* 功能:获取星期几 SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, and
* SATURDAY
*
*
* @param date
* @return
*/
...
...
@@ -819,7 +819,7 @@ public class DateUtils {
/**
* 功能:字符串转换为日期
*
*
* @param datetext yyyy/MM/dd
* @return
*/
...
...
@@ -834,14 +834,14 @@ public class DateUtils {
Date
date
=
df
.
parse
(
datetext
);
return
date
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
(
);
log
.
error
(
e
.
getMessage
(),
e
);
return
null
;
}
}
/**
* 功能: 添加Minute
*
*
* @param cdate
* @param amount
* @return
...
...
@@ -852,10 +852,10 @@ public class DateUtils {
cl
.
add
(
Calendar
.
MINUTE
,
amount
);
return
cl
.
getTime
();
}
/**
* 功能: 添加Hour
*
*
* @param cdate
* @param amount
* @return
...
...
@@ -866,10 +866,10 @@ public class DateUtils {
cl
.
add
(
Calendar
.
HOUR_OF_DAY
,
amount
);
return
cl
.
getTime
();
}
/**
* 功能: 添加Date
*
*
* @param cdate
* @param amount
* @return
...
...
@@ -883,7 +883,7 @@ public class DateUtils {
/**
* 功能: 添加Year
*
*
* @param basicDate
* @param year
* @return
...
...
@@ -895,14 +895,13 @@ public class DateUtils {
cal
.
add
(
GregorianCalendar
.
YEAR
,
year
);
return
formatDate
(
cal
.
getTime
(),
"yyyy-MM-dd"
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
""
;
}
}
/**
* 添加Month
*
*
* @param cdate
* @param amount
* @return
...
...
@@ -926,7 +925,7 @@ public class DateUtils {
/**
* 功能: 日期转换为字符串
*
*
* @param dd
* @return yyyy/MM/dd
*/
...
...
@@ -953,7 +952,7 @@ public class DateUtils {
/**
* 功能:根据某个日期,返回本月的天数
*
*
* @param date 本月任何一天
* @return 天数
*/
...
...
@@ -965,7 +964,7 @@ public class DateUtils {
/**
* 功能:获取指定日 开始本月的之后天数
*
*
* @param stringDate yyyy-MM-dd
* @return 天数(eg:"1,2,3,")
*/
...
...
@@ -982,7 +981,7 @@ public class DateUtils {
/**
* 功能:获取指定日 开始本月的之前天数
*
*
* @param stringDate yyyy-MM-dd
* @return 天数(eg:"1,2,3,")
*/
...
...
@@ -997,7 +996,7 @@ public class DateUtils {
/**
* 功能:获取指定日 开始本月的所有天数
*
*
* @param stringDate yyyy-MM-dd
* @return 天数(eg:"1,2,3,")
*/
...
...
@@ -1015,7 +1014,7 @@ public class DateUtils {
/**
* 功能:三个月的指定日期
*
*
* @param stringDate
* @return
*/
...
...
@@ -1029,7 +1028,7 @@ public class DateUtils {
/**
* 功能:根据某个日期,返回本月的所有日期数组
*
*
* @param date 给定日期
* @return 本月的所有日期数组
*/
...
...
@@ -1050,7 +1049,7 @@ public class DateUtils {
/**
* 功能:根据某个日期,返回monthNum个月的第一天数组
*
*
* @param date 开始日期
* @param monthNum 月份个数
* @return 每个月的第一天数组
...
...
@@ -1069,7 +1068,7 @@ public class DateUtils {
/**
* 功能:根据1个日期,返回N天之内的日期数组
*
*
* @param startDateStr 开始日期
* @param dayTimes 天数
* @return 这段时间之间的日期数组
...
...
@@ -1087,7 +1086,7 @@ public class DateUtils {
/**
* 功能:根据1个日期,返回N天之内的yy-MM月份数组
*
*
* @param startDateStr 开始日期
* @param dayTimes 天数
* @return 这段时间之间的日期数组
...
...
@@ -1116,7 +1115,7 @@ public class DateUtils {
/**
* 功能:根据1个日期,返回上N个月的第一天
*
*
* @param date 日期
* @param month 上N月
* @return 上N个月的第一天
...
...
@@ -1158,7 +1157,7 @@ public class DateUtils {
/**
* Get the date of monday in this week
*
*
* @return yyyy-MM-dd
*/
public
static
String
getMondayOfThisWeek
()
{
...
...
@@ -1186,7 +1185,7 @@ public class DateUtils {
/**
* Get the date of sunday in this week
*
*
* @return yyyy-MM-dd
*/
public
static
String
getSundayOfThisWeek
()
{
...
...
@@ -1214,7 +1213,7 @@ public class DateUtils {
/**
* Get the date of AfterDays
*
*
* @param day
* @return yyyy-MM-dd
*/
...
...
@@ -1237,7 +1236,7 @@ public class DateUtils {
/**
* Get data time in user's specific format
*
*
* @param strFormat
* @return String strDtTime
*/
...
...
@@ -1253,7 +1252,7 @@ public class DateUtils {
/**
* Get data time in yyyyMMddHHmmss format
*
*
* @return String strDtTime
*/
public
static
String
getDateTimeStamp
()
{
...
...
@@ -1265,7 +1264,7 @@ public class DateUtils {
/**
* Get date time in yyyyMMdd format
*
*
* @return String strDtTime
*/
public
static
String
getDateStamp
()
{
...
...
@@ -1277,7 +1276,7 @@ public class DateUtils {
/**
* Get date time in HHmmss format
*
*
* @return String strDtTime
*/
public
static
String
getTimeStamp
()
{
...
...
@@ -1289,7 +1288,7 @@ public class DateUtils {
/**
* Get date time in yyyy年MM月dd日hh:mm:ss format
*
*
* @return String sb
*/
public
static
String
getDateTimeCN
()
{
...
...
@@ -1320,7 +1319,7 @@ public class DateUtils {
/**
* Get date time in Hashmap
*
*
* @return a HashMap
*/
public
static
Map
<
String
,
Integer
>
getDateTimeToHashMap
()
{
...
...
@@ -1337,7 +1336,7 @@ public class DateUtils {
/**
* Format time 2005-10-08 10:03:41.0 to 2005-10-08 10:03:41 .
*
*
* @param str the time string
* @return String
*/
...
...
@@ -1400,7 +1399,7 @@ public class DateUtils {
/**
* 获取从start到end之间的日期(格式yyyyMM)
*
*
* @param start
* @param end
* @return
...
...
@@ -1415,10 +1414,10 @@ public class DateUtils {
}
return
months
;
}
/**
* 获取从start到end之间的日期(格式yyyyMMdd)
*
*
* @param start
* @param end
* @return
...
...
@@ -1433,10 +1432,10 @@ public class DateUtils {
}
return
days
;
}
/**
* 将字符串日期转换为Date
*
*
* @param s
* @return
*/
...
...
@@ -1463,10 +1462,10 @@ public class DateUtils {
}
}
}
/**
* 获取当期日期
*
* 获取当期日期
*
* @return
*/
public
static
Date
getCurrentDate
(){
...
...
@@ -1475,7 +1474,7 @@ public class DateUtils {
curDate
.
set
(
Calendar
.
MINUTE
,
0
);
curDate
.
set
(
Calendar
.
SECOND
,
0
);
curDate
.
set
(
Calendar
.
MILLISECOND
,
0
);
return
curDate
.
getTime
();
}
...
...
@@ -1495,4 +1494,4 @@ public class DateUtils {
public
static
Date
timeStampToDate
(
long
timeStamp
){
return
new
Date
(
timeStamp
);
}
}
\ No newline at end of file
}
...
...
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
...
...
@@ -38,4 +38,4 @@ api:
#传输海关回执地址
customs-url
:
https://apiuat.iclrccd-fedex.com/export/outbound/customs
#推送完整报文地址
complete-msg-url
:
https://apiuat.iclrccd-fedex.com/export/outbound/mawb
\ No newline at end of file
complete-msg-url
:
https://apiuat.iclrccd-fedex.com/export/outbound/mawb
...
...
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
...
...
@@ -35,4 +35,4 @@ api:
#传输海关回执地址
customs-url
:
https://apiuat.iclrccd-fedex.com/export/outbound/customs
#推送完整报文地址
complete-msg-url
:
https://apiuat.iclrccd-fedex.com/export/outbound/mawb
\ No newline at end of file
complete-msg-url
:
https://apiuat.iclrccd-fedex.com/export/outbound/mawb
...
...
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