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