Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
F
finance-api
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Data-王博
finance-api
Commits
eaf659de
Commit
eaf659de
authored
Feb 22, 2017
by
Data-王博
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
湖北消金 - 因为时间范围的
parent
dd8a6d1e
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
52 additions
and
33 deletions
+52
-33
HuBeiReturnDiscScheduler.java
...ntgroup/financial/scheduler/HuBeiReturnDiscScheduler.java
+5
-2
HuBeiSendDiscScheduler.java
...uantgroup/financial/scheduler/HuBeiSendDiscScheduler.java
+0
-3
HuBeiServiceImpl.java
...n/quantgroup/financial/service/impl/HuBeiServiceImpl.java
+12
-10
ICompensationDayService.java
...tgroup/financial/service/sys/ICompensationDayService.java
+4
-0
CompensationDayServiceImpl.java
...inancial/service/sys/impl/CompensationDayServiceImpl.java
+10
-0
HubeiCFCUtil.java
src/main/java/cn/quantgroup/financial/util/HubeiCFCUtil.java
+4
-15
compensation-days.json
src/main/resources/compensation-days.json
+1
-1
HuBeiServiceTest.java
...ava/cn/quantgroup/financial/service/HuBeiServiceTest.java
+16
-2
No files found.
src/main/java/cn/quantgroup/financial/scheduler/HuBeiReturnDiscScheduler.java
View file @
eaf659de
...
...
@@ -52,12 +52,15 @@ public class HuBeiReturnDiscScheduler {
/**
* Seconds Minutes Hours DayofMonth Month DayofWeek
*/
@Scheduled
(
cron
=
"
0 0 2
0 * * ?"
)
@Scheduled
(
cron
=
"
1 0
0 * * ?"
)
public
void
dayScheduler
(){
if
(
scheduledJudgeService
.
isOpenScheduled
()){
try
{
logger
.
info
(
"HuBeiDayScheduler start "
);
HuBeiDocName
sendDebitDoc
=
iHuBeiCFCDao
.
getLastestDocByDataAndType
(
HubeiCFCDataType
.
SEND_DEBIT
,
new
Date
());
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTime
(
new
Date
());
calendar
.
set
(
Calendar
.
DATE
,
calendar
.
get
(
Calendar
.
DATE
)-
1
);
HuBeiDocName
sendDebitDoc
=
iHuBeiCFCDao
.
getLastestDocByDataAndType
(
HubeiCFCDataType
.
SEND_DEBIT
,
calendar
.
getTime
());
if
(
sendDebitDoc
==
null
){
logger
.
warn
(
"sendDebitDoc is null!!! , type={}"
,
HubeiCFCDataType
.
SEND_DEBIT
.
get
());
return
;
...
...
src/main/java/cn/quantgroup/financial/scheduler/HuBeiSendDiscScheduler.java
View file @
eaf659de
...
...
@@ -30,9 +30,6 @@ public class HuBeiSendDiscScheduler {
@Autowired
private
IHuBeiService
iHuBeiService
;
@Autowired
private
IHuBeiCFCDao
iHuBeiCFCDao
;
@Autowired
private
IScheduledJudgeService
scheduledJudgeService
;
...
...
src/main/java/cn/quantgroup/financial/service/impl/HuBeiServiceImpl.java
View file @
eaf659de
...
...
@@ -84,7 +84,7 @@ public class HuBeiServiceImpl implements IHuBeiService {
@Override
public
HuBeiCFCResponse
handleDiscData
(
HubeiCFCDataType
hubeiCFCDataType
,
String
docName
,
Long
docId
,
Byte
seqNo
){
String
applyDt
=
DateUtil
.
sampleDateFormatFormat
(
new
Date
());
// applyDt = "201702
1
3";//测试
// applyDt = "201702
2
3";//测试
return
handleDiscData
(
hubeiCFCDataType
,
docName
,
docId
,
seqNo
,
applyDt
);
}
...
...
@@ -129,6 +129,7 @@ public class HuBeiServiceImpl implements IHuBeiService {
if
(
logger
.
isDebugEnabled
()){
logger
.
info
(
"apiUrl={}, requestBody={}"
,
hubeiApiUrl
,
requestBody
);
}
logger
.
info
(
"apiUrl={}, requestBody={}"
,
hubeiApiUrl
,
requestBody
);
requestMap
.
put
(
HubeiCFCField
.
xmlString
,
requestBody
);
HttpResult
httpResult
=
NetUtil
.
postRequestUrl
(
hubeiApiUrl
,
requestMap
,
headerMap
,
SysConstant
.
retryOneNums
);
if
(
httpResult
.
getStatus
()==
NetUtil
.
RequestStatus
.
SUCCESS_STATUS
){
...
...
@@ -244,7 +245,7 @@ public class HuBeiServiceImpl implements IHuBeiService {
if
(
index
==
size
-
1
){
stringBuilder
.
append
(
huBeiHandlerDispatcher
.
builder
(
hubeiCFCDataType
,
history
));
}
else
{
stringBuilder
.
append
(
huBeiHandlerDispatcher
.
builder
(
hubeiCFCDataType
,
history
)).
append
(
"\r
\n
"
);
stringBuilder
.
append
(
huBeiHandlerDispatcher
.
builder
(
hubeiCFCDataType
,
history
)).
append
(
"\r"
);
}
HuBeiJsonBean
jsonBean
=
history
.
getData
();
//应扣不等于实扣 需要发送异常邮件
...
...
@@ -252,7 +253,7 @@ public class HuBeiServiceImpl implements IHuBeiService {
if
(
hubeiCFCDataType
.
get
().
compareTo
(
HubeiCFCDataType
.
RETURN_ADVANCE_REPAYMENT
.
get
())!=
0
){
if
(
jsonBean
!=
null
&&
jsonBean
.
getRepayAmount
()!=
null
&&
jsonBean
.
getReallyRepayAmount
()!=
null
){
if
(
jsonBean
.
getReallyRepayAmount
().
compareTo
(
BigDecimal
.
ZERO
)!=
0
&&
jsonBean
.
getRepayAmount
().
compareTo
(
jsonBean
.
getReallyRepayAmount
())!=
0
){
errorStringBuilder
.
append
(
huBeiHandlerDispatcher
.
builder
(
hubeiCFCDataType
,
history
)).
append
(
"\r
\n
"
);
errorStringBuilder
.
append
(
huBeiHandlerDispatcher
.
builder
(
hubeiCFCDataType
,
history
)).
append
(
"\r"
);
}
}
else
{
logger
.
info
(
"jsonBean is null, history={}"
,
JSON
.
toJSONString
(
history
));
...
...
@@ -302,12 +303,12 @@ public class HuBeiServiceImpl implements IHuBeiService {
* @return
*/
@Override
public
List
<
HuBeiHistory
>
getReturnDisc
(
HuBeiDocName
h
uBeiDocName
){
public
List
<
HuBeiHistory
>
getReturnDisc
(
HuBeiDocName
sendH
uBeiDocName
){
/**
* 当日送盘文件只有合同号 没有期数以及loanHistoryId
* 需要先查到对应的loanHistoryId 同时按最近一期未代偿的作为需要查的期数
*/
List
<
HuBeiHistory
>
sendHuBeiHistoryList
=
huBeiCFCDao
.
getListByDocNameId
(
h
uBeiDocName
.
getId
());
List
<
HuBeiHistory
>
sendHuBeiHistoryList
=
huBeiCFCDao
.
getListByDocNameId
(
sendH
uBeiDocName
.
getId
());
Set
<
String
>
contactNoSet
=
new
HashSet
<>();
Map
<
String
,
HuBeiHistory
>
contractMapHuiBeiHistory
=
new
HashMap
<>();
sendHuBeiHistoryList
.
forEach
(
huBeiHistroy
->{
...
...
@@ -354,9 +355,10 @@ public class HuBeiServiceImpl implements IHuBeiService {
* 如果今天是代偿日 通过loanHistoryId list 查询是代偿的还款计划
*/
Map
<
String
,
RepaymentPlanDetail
>
compensationContractMapRepayPlan
=
new
HashMap
<>();
if
(
compensationDayService
.
isCompensationDay
()){
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTime
(
sendHuBeiDocName
.
getCreateTime
());
if
(
compensationDayService
.
isCompensationDay
(
calendar
)){
//代偿日
Calendar
calendar
=
Calendar
.
getInstance
();
int
year
=
calendar
.
get
(
Calendar
.
YEAR
);
int
month
=
calendar
.
get
(
Calendar
.
MONTH
)+
1
;
Date
date
=
compensationDayService
.
getCompensationDay
(
year
,
month
);
...
...
@@ -404,7 +406,7 @@ public class HuBeiServiceImpl implements IHuBeiService {
BigDecimal
hubeiOverdueInterest
=
HubeiCFCUtil
.
caculateOverDueFee
(
repaymentPlanDetail
.
getDeadLine
(),
repayXyqbDetail
.
getPayCenterRepayAt
(),
repaymentPlanDetail
.
getPrincipal
());
//批扣
BigDecimal
reallyRepayAmount
=
repaymentPlanDetail
.
getPrincipal
().
add
(
repaymentPlanDetail
.
getInterest
()).
add
(
hubeiOverdueInterest
);
returnHuBeiHistoryList
.
add
(
deitHuiBeiHistory
(
history
,
h
uBeiDocName
.
getCreateTime
(),
reallyRepayAmount
,
HubeiCFCField
.
tradeCodeSuccess
));
returnHuBeiHistoryList
.
add
(
deitHuiBeiHistory
(
history
,
sendH
uBeiDocName
.
getCreateTime
(),
reallyRepayAmount
,
HubeiCFCField
.
tradeCodeSuccess
));
}
//去除第一个
repayXyqbDetailList
=
repayXyqbDetailList
.
subList
(
1
,
repayXyqbDetailList
.
size
());
...
...
@@ -425,12 +427,12 @@ public class HuBeiServiceImpl implements IHuBeiService {
BigDecimal
hubeiOverdueInterest
=
HubeiCFCUtil
.
caculateOverDueFee
(
repaymentPlanDetail
.
getDeadLine
(),
new
Date
(),
repaymentPlanDetail
.
getPrincipal
());
//批扣
BigDecimal
reallyRepayAmount
=
repaymentPlanDetail
.
getPrincipal
().
add
(
repaymentPlanDetail
.
getInterest
()).
add
(
hubeiOverdueInterest
);
returnHuBeiHistoryList
.
add
(
compensationHuiBeiHistory
(
history
,
h
uBeiDocName
.
getCreateTime
(),
reallyRepayAmount
));
returnHuBeiHistoryList
.
add
(
compensationHuiBeiHistory
(
history
,
sendH
uBeiDocName
.
getCreateTime
(),
reallyRepayAmount
));
continue
;
}
//未还款 批扣 实际还款金额零
returnHuBeiHistoryList
.
add
(
deitHuiBeiHistory
(
history
,
h
uBeiDocName
.
getCreateTime
(),
BigDecimal
.
ZERO
,
HubeiCFCField
.
tradeCodeNoTrade
));
returnHuBeiHistoryList
.
add
(
deitHuiBeiHistory
(
history
,
sendH
uBeiDocName
.
getCreateTime
(),
BigDecimal
.
ZERO
,
HubeiCFCField
.
tradeCodeNoTrade
));
}
return
returnHuBeiHistoryList
;
...
...
src/main/java/cn/quantgroup/financial/service/sys/ICompensationDayService.java
View file @
eaf659de
package
cn
.
quantgroup
.
financial
.
service
.
sys
;
import
java.util.Calendar
;
import
java.util.Date
;
/**
...
...
@@ -14,6 +15,9 @@ public interface ICompensationDayService {
*/
boolean
isCompensationDay
();
boolean
isCompensationDay
(
Calendar
calendar
);
/**
* 通过月查询代偿日
* @param month 1-12
...
...
src/main/java/cn/quantgroup/financial/service/sys/impl/CompensationDayServiceImpl.java
View file @
eaf659de
...
...
@@ -44,6 +44,16 @@ public class CompensationDayServiceImpl implements ICompensationDayService {
return
compensationDayBean
.
isCompensationDay
(
calendar
);
}
@Override
public
boolean
isCompensationDay
(
Calendar
calendar
)
{
int
year
=
calendar
.
get
(
Calendar
.
YEAR
);
CompensationDayBean
compensationDayBean
=
compensationDayBeanMap
.
get
(
"y"
+
year
);
if
(
compensationDayBean
==
null
){
LOGGER
.
error
(
"can`t find year={} compensation days information"
,
year
);
return
false
;
}
return
compensationDayBean
.
isCompensationDay
(
calendar
);
}
/**
* 通过月查询代偿日
* @param month 1-12
...
...
src/main/java/cn/quantgroup/financial/util/HubeiCFCUtil.java
View file @
eaf659de
...
...
@@ -168,31 +168,20 @@ public class HubeiCFCUtil {
calendar
.
set
(
Calendar
.
SECOND
,
0
);
calendar
.
set
(
Calendar
.
MINUTE
,
0
);
calendar
.
set
(
Calendar
.
HOUR_OF_DAY
,
0
);
calendar
.
set
(
Calendar
.
DATE
,
calendar
.
get
(
Calendar
.
DATE
)
-
1
);
Date
gtDate
=
calendar
.
getTime
();
calendar
.
set
(
Calendar
.
HOUR_OF_DAY
,
2
1
);
calendar
.
set
(
Calendar
.
DATE
,
calendar
.
get
(
Calendar
.
DATE
)
+
1
);
Date
ltDate
=
calendar
.
getTime
();
Date
[]
dates
=
new
Date
[]{
gtDate
,
ltDate
};
return
dates
;
}
/**
* 构建文件名
* @param hubeiCFCDataType
* @return
*/
public
static
String
getDocName
(
HubeiCFCDataType
hubeiCFCDataType
){
Calendar
calendar
=
Calendar
.
getInstance
();
int
hour
=
calendar
.
get
(
Calendar
.
HOUR
);
int
minute
=
calendar
.
get
(
Calendar
.
MINUTE
);
String
docName
=
new
StringBuilder
(
DateUtil
.
sampleDateFormatFormat
(
calendar
.
getTime
()))
.
append
(
"_"
).
append
(
HubeiCFCField
.
chanel_9009
)
.
append
(
"_"
).
append
(
HubeiCFCField
.
fileAlias
.
get
(
hubeiCFCDataType
)).
append
(
"01"
).
append
(
".txt"
).
toString
();
return
docName
;
}
public
static
String
getDocName
(
HubeiCFCDataType
hubeiCFCDataType
,
Byte
seqNo
){
Calendar
calendar
=
Calendar
.
getInstance
();
int
hour
=
calendar
.
get
(
Calendar
.
HOUR
);
int
minute
=
calendar
.
get
(
Calendar
.
MINUTE
);
//yyyyMMdd DateUtil.sampleDateFormatFormat(calendar.getTime())
//20170222
String
docName
=
new
StringBuilder
(
DateUtil
.
sampleDateFormatFormat
(
calendar
.
getTime
()))
.
append
(
"_"
).
append
(
HubeiCFCField
.
chanel_9009
)
.
append
(
"_"
).
append
(
HubeiCFCField
.
fileAlias
.
get
(
hubeiCFCDataType
)).
append
(
StringFormat
.
format0Right
(
seqNo
,
2
)).
append
(
".txt"
).
toString
();
...
...
src/main/resources/compensation-days.json
View file @
eaf659de
...
...
@@ -9,7 +9,7 @@
"y2017"
:
{
"year"
:
"2017"
,
"compensationDays"
:
[
"1-27"
,
"2-
16
"
,
"3-27"
,
"4-27"
,
"5-27"
,
"6-27"
,
"7-27"
,
"8-27"
,
"9-27"
,
"1-27"
,
"2-
27
"
,
"3-27"
,
"4-27"
,
"5-27"
,
"6-27"
,
"7-27"
,
"8-27"
,
"9-27"
,
"10-27"
,
"11-27"
,
"12-27"
]
},
...
...
src/test/java/cn/quantgroup/financial/service/HuBeiServiceTest.java
View file @
eaf659de
package
cn
.
quantgroup
.
financial
.
service
;
import
cn.quantgroup.financial.BootStarter
;
import
cn.quantgroup.financial.constant.EncodingConfig
;
import
cn.quantgroup.financial.constant.HubeiCFCDataType
;
import
cn.quantgroup.financial.dao.IHuBeiCFCDao
;
import
cn.quantgroup.financial.model.huibeicfc.HuBeiHistory
;
import
cn.quantgroup.financial.scheduler.HuBeiReturnDiscScheduler
;
import
cn.quantgroup.financial.scheduler.HuBeiSendDiscScheduler
;
import
cn.quantgroup.financial.service.sys.IMailService
;
import
org.apache.commons.codec.binary.Base64
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.slf4j.Logger
;
...
...
@@ -57,8 +59,9 @@ public class HuBeiServiceTest {
/**
* 扣款明细
*/
@Test
public
void
testReturnDebitDisc
(){
huBeiService
.
handleDiscData
(
HubeiCFCDataType
.
RETURN_BATCH_DEBIT
,
null
,
null
,
new
Integer
(
1
).
byteValue
());
huBeiService
.
handleDiscData
(
HubeiCFCDataType
.
RETURN_BATCH_DEBIT
,
null
,
188L
,
new
Integer
(
1
).
byteValue
());
}
/**
...
...
@@ -86,7 +89,7 @@ public class HuBeiServiceTest {
public
void
testGetSendDisc
(){
//20170119_9009_T01.txt
try
{
huBeiService
.
handleDiscData
(
HubeiCFCDataType
.
SEND_DEBIT
,
null
,
null
,
new
Integer
(
1
).
byteValue
(),
"201702
16
"
);
huBeiService
.
handleDiscData
(
HubeiCFCDataType
.
SEND_DEBIT
,
null
,
null
,
new
Integer
(
1
).
byteValue
(),
"201702
22
"
);
}
catch
(
Exception
e
)
{
logger
.
error
(
e
.
getMessage
(),
e
);
}
...
...
@@ -114,6 +117,17 @@ public class HuBeiServiceTest {
huBeiSendDiscScheduler
.
dayScheduler
();
}
@Test
public
void
parse
(){
String
line
=
"SFQxMDAwMDAyMDE2MTIxNzAwMjcwNDh85YiY5pWP5oyvfDIwfDQxMDgyNjE5OTIwNzA2MDUxNnxO\n"
+
"RnwyMDE3LTAzLTIwfDB8MjA0Ni44OHwwOXwyMDE2LTEyLTIyDUhUMTAwMDAwMjAxNjEyMTcwMDI3\n"
+
"MTk3fOaItOeni+e6onwyMHwyMTAxMDYxOTc2MDcxMDQ2NDV8TkZ8MjAxNy0wMy0xOXwwfDIwNDYu\n"
+
"ODh8MDl8MjAxNy0wMS0yMQ=="
;
String
result
=
(
new
String
(
Base64
.
decodeBase64
(
line
),
EncodingConfig
.
defaultCharset
));
System
.
out
.
println
(
result
);
}
@Test
public
void
testReturnScheduler
(){
huBeiReturnDiscScheduler
.
dayScheduler
();
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment