Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
B
bb
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
abs_pom
bb
Commits
377f02ed
Commit
377f02ed
authored
Apr 20, 2020
by
zhaoyang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
删除QUARTZJOB
parent
a1ec79b6
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
0 additions
and
1229 deletions
+0
-1229
app/biz/shared/src/main/java/com/abssqr/plat/biz/shared/scheduler/QuartzScheduler.java
+0
-3
app/biz/shared/src/main/java/com/abssqr/plat/biz/shared/scheduler/job/acct/AcctDaySwitchJob.java
+0
-44
app/biz/shared/src/main/java/com/abssqr/plat/biz/shared/scheduler/job/keeper/AbssqrKeeperJob.java
+0
-48
app/biz/shared/src/main/java/com/abssqr/plat/biz/shared/scheduler/job/keeper/JobKeeperHandler.java
+0
-38
app/biz/shared/src/main/java/com/abssqr/plat/biz/shared/scheduler/job/keeper/node/AbstractKeeperNode.java
+0
-134
app/biz/shared/src/main/java/com/abssqr/plat/biz/shared/scheduler/job/keeper/node/AstModCompleteCheckKeeper.java
+0
-98
app/biz/shared/src/main/java/com/abssqr/plat/biz/shared/scheduler/job/keeper/node/AstModTransformKeeper.java
+0
-64
app/biz/shared/src/main/java/com/abssqr/plat/biz/shared/scheduler/job/keeper/node/DataCheckKeeper.java
+0
-265
app/biz/shared/src/main/java/com/abssqr/plat/biz/shared/scheduler/job/keeper/node/HostHeartJobKeeper.java
+0
-65
app/biz/shared/src/main/java/com/abssqr/plat/biz/shared/scheduler/job/keeper/node/PlanAstStatJobKeeper.java
+0
-66
app/biz/shared/src/main/java/com/abssqr/plat/biz/shared/scheduler/job/keeper/node/PlanDailyKeeper.java
+0
-73
app/biz/shared/src/main/java/com/abssqr/plat/biz/shared/scheduler/job/keeper/node/TransferDispatcherKeeper.java
+0
-72
app/biz/shared/src/main/java/com/abssqr/plat/biz/shared/scheduler/job/plan/PlanDailyJob.java
+0
-153
app/web/src/main/java/com/abssqr/plat/web/controller/job/JobController.java
+0
-106
No files found.
app/biz/shared/src/main/java/com/abssqr/plat/biz/shared/scheduler/QuartzScheduler.java
View file @
377f02ed
...
...
@@ -31,9 +31,6 @@ public class QuartzScheduler {
@Autowired
@Qualifier
(
"quartzDataSource"
)
private
DataSource
dataSource
;
@Autowired
private
AbssqrJobCollector
jobScheduler
;
@Bean
public
SchedulerFactoryBean
schedulerFactoryBean
()
throws
IOException
{
...
...
app/biz/shared/src/main/java/com/abssqr/plat/biz/shared/scheduler/job/acct/AcctDaySwitchJob.java
deleted
100644 → 0
View file @
a1ec79b6
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package
com
.
abssqr
.
plat
.
biz
.
shared
.
scheduler
.
job
.
acct
;
import
com.abssqr.plat.biz.shared.scheduler.BaseQuartzJob
;
import
com.abssqr.plat.core.service.accounting.OrgAcctDayComponent
;
import
com.general.system.common.util.LogUtil
;
import
org.quartz.DisallowConcurrentExecution
;
import
org.quartz.PersistJobDataAfterExecution
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Component
;
/**
* 会计日切换定时任务调度
* @author bangis.wangdf
* @version com.abssqr.plat.biz.shared.scheduler.job.acctday: AcctDaySwitchJob.java, v 0.1 2019-12-11 11:07 bangis
* .wangdf Exp $
*/
@PersistJobDataAfterExecution
@DisallowConcurrentExecution
@Component
public
class
AcctDaySwitchJob
extends
BaseQuartzJob
{
/**
* 每天 0 1/5 * * * ?
*/
@Value
(
"${sync.quartz.acctday.switch:0 1/5 * * * ?}"
)
private
String
cron
;
@Autowired
private
OrgAcctDayComponent
orgAcctDayComponent
;
@Override
protected
String
getCronExpr
()
{
return
cron
;
}
@Override
protected
void
doExecute
()
{
LogUtil
.
info
(
LOGGER
,
"会计日切换任务执行"
);
orgAcctDayComponent
.
acctDaySwitch
();
}
}
app/biz/shared/src/main/java/com/abssqr/plat/biz/shared/scheduler/job/keeper/AbssqrKeeperJob.java
deleted
100644 → 0
View file @
a1ec79b6
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package
com
.
abssqr
.
plat
.
biz
.
shared
.
scheduler
.
job
.
keeper
;
import
com.abssqr.plat.biz.shared.scheduler.BaseQuartzJob
;
import
com.general.system.common.util.LogUtil
;
import
com.general.system.common.util.SystemDateUtil
;
import
org.quartz.DisallowConcurrentExecution
;
import
org.quartz.PersistJobDataAfterExecution
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Component
;
/**
* 任务监控 异常通知
* @author hanfei
* @version $Id: AbssqrJobKeeper.java, v 0.1 2019-07-26 1:06 PM hanfei Exp $
*/
@PersistJobDataAfterExecution
@DisallowConcurrentExecution
@Component
public
class
AbssqrKeeperJob
extends
BaseQuartzJob
{
@Autowired
private
JobKeeperHandler
jobKeeperHandler
;
/**
* 间隔5分钟监控 执行情况
*/
@Value
(
"${sync.quartz.plan.keeper}"
)
private
String
cron
;
@Override
protected
String
getCronExpr
()
{
return
cron
;
}
@Override
protected
boolean
isRequestRecovery
()
{
return
true
;
}
@Override
protected
void
doExecute
()
{
LogUtil
.
info
(
LOGGER
,
"任务监控 总执行器"
);
// 执行任务监控执行器
jobKeeperHandler
.
execute
(
SystemDateUtil
.
getSystemDate
());
}
}
app/biz/shared/src/main/java/com/abssqr/plat/biz/shared/scheduler/job/keeper/JobKeeperHandler.java
deleted
100644 → 0
View file @
a1ec79b6
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package
com
.
abssqr
.
plat
.
biz
.
shared
.
scheduler
.
job
.
keeper
;
import
com.abssqr.plat.biz.shared.scheduler.job.keeper.node.AbstractKeeperNode
;
import
com.general.system.common.util.LogUtil
;
import
com.general.system.util.adapter.pipeline.AbstractMultiplePipeline
;
import
com.google.common.collect.Lists
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
java.util.Date
;
/**
* 任务监控器执行链
*
* @author hanfei
* @version $Id: JobKeeperExecute.java, v 0.1 2019-07-26 2:32 PM hanfei Exp $
*/
@Component
public
class
JobKeeperHandler
extends
AbstractMultiplePipeline
<
Date
>
{
protected
final
Logger
LOGGER
=
LoggerFactory
.
getLogger
(
getClass
());
@Autowired
(
required
=
false
)
private
AbstractKeeperNode
[]
abstractKeeperNodes
;
@Override
public
void
initHandlers
()
{
LogUtil
.
info
(
LOGGER
,
"任务监控 总执行器"
);
super
.
setHandlers
(
Lists
.
newArrayList
(
abstractKeeperNodes
));
}
}
app/biz/shared/src/main/java/com/abssqr/plat/biz/shared/scheduler/job/keeper/node/AbstractKeeperNode.java
deleted
100644 → 0
View file @
a1ec79b6
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package
com
.
abssqr
.
plat
.
biz
.
shared
.
scheduler
.
job
.
keeper
.
node
;
import
com.abssqr.plat.common.facade.model.plan.PlanBase
;
import
com.abssqr.plat.common.model.domain.job.JobControl
;
import
com.abssqr.plat.common.model.exception.AbssqrBizException
;
import
com.abssqr.plat.common.model.repo.job.JobControlRepository
;
import
com.abssqr.plat.core.service.accounting.OrgAcctDayComponent
;
import
com.abssqr.plat.core.service.notice.AbssqrNoticeManager
;
import
com.general.system.common.model.IEnum
;
import
com.general.system.util.adapter.pipeline.AbstractMultiplePipelineNode
;
import
org.apache.commons.lang3.StringUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
java.time.LocalDate
;
import
java.time.ZoneId
;
import
java.util.Calendar
;
import
java.util.Date
;
import
java.util.Set
;
/**
* 任务监控执行器节点 基类
*
* @author hanfei
* @version $Id: AbstractKeeperNode.java, v 0.1 2019-07-26 2:55 PM hanfei Exp $
*/
public
abstract
class
AbstractKeeperNode
extends
AbstractMultiplePipelineNode
<
Date
>
{
protected
final
Logger
LOGGER
=
LoggerFactory
.
getLogger
(
getClass
());
@Autowired
private
JobControlRepository
jobControlRepository
;
@Autowired
protected
AbssqrNoticeManager
abssqrNoticeManager
;
@Autowired
protected
OrgAcctDayComponent
orgAcctDayComponent
;
/**
* 执行次数
*/
protected
Long
execTimes
=
1L
;
@Override
protected
Void
handle
(
Date
systemDate
)
{
if
(
this
.
judge
(
getWatchJob
())){
doHandle
(
systemDate
);
}
return
null
;
}
/**
* 判断监控job是否启用
* @param watchJob
* @return
*/
private
boolean
judge
(
String
watchJob
)
{
if
(
StringUtils
.
isNotBlank
(
watchJob
)){
JobControl
jobControl
=
jobControlRepository
.
selectByJobName
(
watchJob
);
if
(
jobControl
.
getIsEff
().
isYes
()){
return
true
;
}
return
false
;
}
return
true
;
}
public
void
sendBussinessNotice
(
PlanBase
planEntity
,
String
bizCode
,
String
content
,
Set
<
String
>
receivers
)
{
abssqrNoticeManager
.
sendBusinessNotice
(
planEntity
,
bizCode
,
getBizType
(),
content
,
receivers
);
}
public
void
sendSystemNotice
(
String
bizTitle
,
String
bizCode
,
String
content
,
Set
<
String
>
receivers
)
{
abssqrNoticeManager
.
sendSystemNotice
(
bizTitle
,
bizCode
,
getBizType
(),
content
,
receivers
);
}
public
Set
<
String
>
getAdminReceivers
()
{
return
abssqrNoticeManager
.
getAdminReceivers
();
}
/**
* 获取指定时间
* @param currentTime
* @param deadline y M d h m s/h m s
* @return
*/
protected
Date
getDeadLineTime
(
Date
currentTime
,
String
deadline
)
{
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTime
(
currentTime
);
String
[]
times
=
deadline
.
split
(
" "
);
if
(
times
.
length
==
6
)
{
calendar
.
set
(
Calendar
.
YEAR
,
Integer
.
valueOf
(
times
[
0
]));
calendar
.
set
(
Calendar
.
MONTH
,
Integer
.
valueOf
(
times
[
1
])
-
1
);
calendar
.
set
(
Calendar
.
DAY_OF_MONTH
,
Integer
.
valueOf
(
times
[
2
]));
calendar
.
set
(
Calendar
.
HOUR_OF_DAY
,
Integer
.
valueOf
(
times
[
3
]));
calendar
.
set
(
Calendar
.
MINUTE
,
Integer
.
valueOf
(
times
[
4
]));
calendar
.
set
(
Calendar
.
SECOND
,
Integer
.
valueOf
(
times
[
5
]));
}
else
if
(
times
.
length
==
3
)
{
calendar
.
set
(
Calendar
.
HOUR_OF_DAY
,
Integer
.
valueOf
(
times
[
0
]));
calendar
.
set
(
Calendar
.
MINUTE
,
Integer
.
valueOf
(
times
[
1
]));
calendar
.
set
(
Calendar
.
SECOND
,
Integer
.
valueOf
(
times
[
2
]));
}
else
{
throw
new
AbssqrBizException
(
"deadline格式不正确"
);
}
return
calendar
.
getTime
();
}
/**
* 获取当前的标准日期
* @return
*/
public
Date
getCurrentStanderDate
(){
return
Date
.
from
(
LocalDate
.
now
()
.
atStartOfDay
(
ZoneId
.
systemDefault
())
.
toInstant
());
}
protected
abstract
IEnum
getBizType
();
protected
abstract
String
getWatchJob
();
protected
abstract
Void
doHandle
(
Date
date
);
}
app/biz/shared/src/main/java/com/abssqr/plat/biz/shared/scheduler/job/keeper/node/AstModCompleteCheckKeeper.java
deleted
100644 → 0
View file @
a1ec79b6
package
com
.
abssqr
.
plat
.
biz
.
shared
.
scheduler
.
job
.
keeper
.
node
;
import
com.abssqr.plat.common.facade.enums.AbssqrNoticeTypeEnum
;
import
com.abssqr.plat.common.facade.enums.PlanTaskTypeEnum
;
import
com.abssqr.plat.common.facade.enums.SyncTaskTypeEnum
;
import
com.abssqr.plat.common.facade.enums.TaskStatusEnum
;
import
com.abssqr.plat.common.facade.model.plan.PlanBase
;
import
com.abssqr.plat.common.model.domain.plan.PlanTaskLog
;
import
com.abssqr.plat.common.model.domain.task.ctr.AstSyncTaskCtrLog
;
import
com.abssqr.plat.common.model.enums.OrgCodeEnum
;
import
com.abssqr.plat.common.model.enums.OrgTypeEnum
;
import
com.abssqr.plat.common.model.repo.plan.PlanTaskLogRepo
;
import
com.abssqr.plat.common.model.repo.task.AstSyncTaskCtrRepo
;
import
com.general.system.common.model.IEnum
;
import
com.general.system.common.util.LogUtil
;
import
com.general.system.common.util.SystemDateUtil
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
java.text.SimpleDateFormat
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Set
;
import
java.util.stream.Collectors
;
/**
* 模型转换完成通知
*/
@Component
public
class
AstModCompleteCheckKeeper
extends
AbstractKeeperNode
{
@Autowired
PlanTaskLogRepo
planTaskLogRepo
;
@Autowired
AstSyncTaskCtrRepo
astSyncTaskCtrRepo
;
@Override
protected
Void
doHandle
(
Date
date
)
{
for
(
OrgCodeEnum
orgCodeEnum
:
OrgCodeEnum
.
values
())
{
if
(
orgCodeEnum
.
getType
()
==
OrgTypeEnum
.
ABS
)
{
continue
;
}
LogUtil
.
info
(
LOGGER
,
"模型转换完成监控-start"
);
Date
execDate
=
orgAcctDayComponent
.
getTrfAcctDay
().
getStandardDate
();
List
<
PlanTaskLog
>
tasks
=
planTaskLogRepo
.
getTasks
(
execDate
,
PlanTaskTypeEnum
.
AST_MOD_COMPLETE_CHECK
);
List
<
String
>
orgCodes
=
tasks
.
stream
().
map
(
PlanTaskLog:
:
getPlanNo
).
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isEmpty
(
orgCodes
)
||
!
orgCodes
.
contains
(
orgCodeEnum
.
getCode
()))
{
AstSyncTaskCtrLog
lastTaskLog
=
astSyncTaskCtrRepo
.
getTaskLogByExecDate
(
execDate
,
SyncTaskTypeEnum
.
AST_MOD
,
orgCodeEnum
.
getCode
());
if
(
lastTaskLog
!=
null
)
{
//如果同步完成
if
(
TaskStatusEnum
.
SUCCESS
.
getCode
().
equals
(
lastTaskLog
.
getStatus
().
getCode
()))
{
PlanTaskLog
planTaskLog
=
new
PlanTaskLog
();
planTaskLog
.
setExecDate
(
execDate
);
planTaskLog
.
setPlanNo
(
orgCodeEnum
.
getCode
());
planTaskLog
.
setTaskType
(
PlanTaskTypeEnum
.
AST_MOD_COMPLETE_CHECK
);
planTaskLogRepo
.
createTask
(
planTaskLog
);
Set
<
String
>
receivers
=
super
.
getAdminReceivers
();
Date
compelteDate
=
SystemDateUtil
.
getSystemDate
();
PlanBase
planBase
=
new
PlanBase
();
sendBussinessNotice
(
planBase
,
orgCodeEnum
.
getCode
(),
buildNoticeMessage
(
execDate
,
compelteDate
,
orgCodeEnum
),
receivers
);
}
}
}
}
LogUtil
.
info
(
LOGGER
,
"模型转换完成监控-end"
);
return
null
;
}
private
String
buildNoticeMessage
(
Date
currDate
,
Date
completeDate
,
OrgCodeEnum
orgCodeEnum
)
{
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
SimpleDateFormat
sdf2
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
String
currAccDateStr
=
sdf
.
format
(
currDate
);
String
completeDateStr
=
sdf2
.
format
(
completeDate
);
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"机构["
);
sb
.
append
(
orgCodeEnum
.
getCode
());
sb
.
append
(
"]"
);
sb
.
append
(
currAccDateStr
);
sb
.
append
(
"模型转换任务已完成 完成时间为:"
);
sb
.
append
(
completeDateStr
);
return
sb
.
toString
();
}
@Override
protected
IEnum
getBizType
()
{
return
AbssqrNoticeTypeEnum
.
AstModCompleteCheck
;
}
@Override
protected
String
getWatchJob
()
{
return
"Wk1009AstSyncDispatcher"
;
}
}
app/biz/shared/src/main/java/com/abssqr/plat/biz/shared/scheduler/job/keeper/node/AstModTransformKeeper.java
deleted
100644 → 0
View file @
a1ec79b6
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package
com
.
abssqr
.
plat
.
biz
.
shared
.
scheduler
.
job
.
keeper
.
node
;
import
com.abssqr.plat.common.dal.sync.auto.resultmap.MfsFailSyncBill
;
import
com.abssqr.plat.common.facade.enums.AbssqrNoticeTypeEnum
;
import
com.abssqr.plat.common.facade.enums.TaskStatusEnum
;
import
com.abssqr.plat.common.model.wk.repo.WkMfsSyncCtrRepo
;
import
com.general.system.common.model.IEnum
;
import
com.general.system.common.util.LogUtil
;
import
com.general.system.common.util.MessageUtil
;
import
com.google.common.collect.Lists
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Component
;
import
java.util.Date
;
import
java.util.Set
;
/**
* 资产同步模型转换 异常监控
*
* @author hanfei
* @version $Id: AstSyncDispatcherKeeper.java, v 0.1 2019-07-26 2:31 PM hanfei Exp $
*/
@Component
public
class
AstModTransformKeeper
extends
AbstractKeeperNode
{
@Autowired
private
WkMfsSyncCtrRepo
wkMfsSyncCtrRepo
;
@Value
(
"${wkabs.org.zhaolian:1009}"
)
private
String
zhaolianOrgCode
;
@Override
protected
Void
doHandle
(
Date
accountDate
)
{
LogUtil
.
info
(
LOGGER
,
"资产模型转换任务监控-start"
);
MfsFailSyncBill
bill
=
wkMfsSyncCtrRepo
.
countFailSyncBill
(
null
,
execTimes
,
Lists
.
newArrayList
(
TaskStatusEnum
.
INIT
.
getCode
(),
TaskStatusEnum
.
EXECUTING
.
getCode
(),
TaskStatusEnum
.
FAILURE
.
getCode
()));
if
(
bill
!=
null
&&
bill
.
getCnt
()
>
0
)
{
// 获取用户
String
msg
=
MessageUtil
.
formatMsg
(
"模型转换异常,异常数量[{0}],最大重试次数[{1}]"
,
bill
.
getCnt
(),
bill
.
getMaxExecTimes
());
LogUtil
.
info
(
LOGGER
,
msg
);
// 获取用户
Set
<
String
>
receivers
=
super
.
getAdminReceivers
();
sendSystemNotice
(
"资产同步模型转换告警"
,
zhaolianOrgCode
,
msg
,
receivers
);
}
LogUtil
.
info
(
LOGGER
,
"资产模型转换任务监控-end"
);
return
null
;
}
@Override
protected
IEnum
getBizType
()
{
return
AbssqrNoticeTypeEnum
.
WkMfsModTransform
;
}
@Override
protected
String
getWatchJob
()
{
return
"Wk1009AstSyncDispatcher"
;
}
}
app/biz/shared/src/main/java/com/abssqr/plat/biz/shared/scheduler/job/keeper/node/DataCheckKeeper.java
deleted
100644 → 0
View file @
a1ec79b6
/**
* abssqr.com Inc.
* Copyright (c) 2017-2020 All Rights Reserved.
*/
package
com
.
abssqr
.
plat
.
biz
.
shared
.
scheduler
.
job
.
keeper
.
node
;
import
com.abssqr.plat.common.dal.mysql.auto.resultmap.AstLogAmt
;
import
com.abssqr.plat.common.dal.mysql.auto.resultmap.CapitalOrderAmt
;
import
com.abssqr.plat.common.dal.mysql.auto.resultmap.ClearingLogCntAndId
;
import
com.abssqr.plat.common.facade.enums.AbssqrNoticeTypeEnum
;
import
com.abssqr.plat.common.facade.enums.PlanCapitalTransTypeEnum
;
import
com.abssqr.plat.common.facade.enums.StageChangeTypeEnum
;
import
com.abssqr.plat.common.facade.enums.SyncTaskTypeEnum
;
import
com.abssqr.plat.common.facade.enums.TransCodeEnum
;
import
com.abssqr.plat.common.model.domain.job.JobControl
;
import
com.abssqr.plat.common.model.repo.clearing.PlanClearingLogRepo
;
import
com.abssqr.plat.common.model.repo.clearing.PlanClearingOrderRepo
;
import
com.abssqr.plat.common.model.repo.job.JobControlRepository
;
import
com.abssqr.plat.common.model.repo.plan.PlanAstLogRepository
;
import
com.abssqr.plat.common.model.repo.plan.PlanCapitalOrderRepo
;
import
com.abssqr.plat.common.model.repo.plan.PlanRepo
;
import
com.abssqr.plat.common.model.repo.task.AstSyncTaskCtrRepo
;
import
com.abssqr.plat.core.service.accounting.OrgAcctDayComponent
;
import
com.general.system.common.model.IEnum
;
import
com.general.system.common.model.Money
;
import
com.general.system.common.util.LogUtil
;
import
com.general.system.common.util.MessageUtil
;
import
com.general.system.common.util.StringUtil
;
import
com.google.common.collect.Lists
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Optional
;
/**
* 内部校验
*
* @author xiachenxiang
* @version com.abssqr.plat.biz.shared.scheduler.job.keeper.node: DataCheckKeeper.java, v 0.1 2020-01-06 4:40 PM xiachenxiang Exp $
*/
@Component
public
class
DataCheckKeeper
extends
AbstractKeeperNode
{
@Autowired
private
JobControlRepository
jobControlRepository
;
@Autowired
private
AstSyncTaskCtrRepo
astSyncTaskCtrRepo
;
@Autowired
private
PlanRepo
planRepo
;
@Autowired
private
PlanCapitalOrderRepo
planCapitalOrderRepo
;
@Autowired
private
PlanClearingLogRepo
planClearingLogRepo
;
@Autowired
private
PlanClearingOrderRepo
planClearingOrderRepo
;
@Autowired
private
PlanAstLogRepository
planAstLogRepository
;
@Autowired
private
OrgAcctDayComponent
orgAcctDayComponent
;
@Override
protected
Void
doHandle
(
Date
sysDate
)
{
JobControl
jobControl
=
jobControlRepository
.
selectByJobName
(
"DataCheckKeeper"
);
if
(!
jobControl
.
getIsEff
().
isYes
())
{
LogUtil
.
warn
(
LOGGER
,
"忽略[{0}--{1}]定时任务"
,
"DataCheckKeeper"
,
jobControl
.
getIsEff
());
return
null
;
}
Date
curDate
=
orgAcctDayComponent
.
getTrfAcctDay
().
getStandardDate
();
//获取已完成的机构
List
<
String
>
orgCodeChecks
=
astSyncTaskCtrRepo
.
getLastStatusFinishedOrgCodes
(
curDate
,
SyncTaskTypeEnum
.
AST_MOD
);
if
(
CollectionUtils
.
isEmpty
(
orgCodeChecks
))
{
return
null
;
}
// 支付单数量为0
if
(!
capitalCntIsZero
())
{
return
null
;
}
StringBuffer
sb
=
new
StringBuffer
();
boolean
eq
=
true
;
LogUtil
.
info
(
LOGGER
,
"[DataCheckKeeper]-[{0}]数据核对start"
,
curDate
);
for
(
String
spvNo
:
orgCodeChecks
)
{
eq
&=
checkData
(
spvNo
,
curDate
,
sb
,
TransCodeEnum
.
REPO
);
eq
&=
checkData
(
spvNo
,
curDate
,
sb
,
TransCodeEnum
.
BUY_AST
);
}
if
(!
eq
&&
sb
.
length
()>
0
){
String
msg
=
sb
.
toString
();
if
(!
StringUtil
.
isEmpty
(
msg
))
{
super
.
sendSystemNotice
(
"内部数据核验"
,
(
String
)
getBizType
().
getCode
(),
msg
,
super
.
getAdminReceivers
());
}
}
LogUtil
.
info
(
LOGGER
,
"[DataCheckKeeper]-[{0}]数据核对end"
,
curDate
);
return
null
;
}
/**
* 还款校验
* 清算金额 = 结算金额
* 结算金额 = 支付单实际交易金额
* 支付单交易金额 = 计划水位变更金额
*
* @param spvNo
* @param date
* @param sb
* @param transCodeEnum
*/
private
boolean
checkData
(
String
spvNo
,
Date
date
,
StringBuffer
sb
,
TransCodeEnum
transCodeEnum
)
{
Map
<
String
,
List
<
String
>>
planMap
=
planRepo
.
getPlanBySpvs
(
Lists
.
newArrayList
(
spvNo
));
List
<
String
>
planList
=
planMap
.
get
(
spvNo
);
if
(
CollectionUtils
.
isEmpty
(
planList
)){
planList
=
Lists
.
newArrayList
();
}
if
(
transCodeEnum
==
TransCodeEnum
.
REPO
)
{
planList
.
add
(
spvNo
);
}
Money
planAdd
=
new
Money
();
Money
spvAdd
=
new
Money
();
boolean
eq
=
true
;
for
(
String
planNo
:
planList
)
{
// 清算 结算金额校验
ClearingLogCntAndId
start
=
planClearingLogRepo
.
getHisMaxIdAndCnt
(
date
,
planNo
,
transCodeEnum
);
Money
clearAmt
=
new
Money
();
if
(
transCodeEnum
==
TransCodeEnum
.
BUY_AST
&&
planNo
.
equals
(
spvNo
))
{
clearAmt
=
planClearingLogRepo
.
getClearAmtByCntPtyCode
(
date
,
planNo
,
transCodeEnum
);
}
else
{
clearAmt
=
planClearingLogRepo
.
getHisAmtByPlanNo
(
date
,
planNo
,
transCodeEnum
);
}
Money
clrOrderAmt
=
planClearingOrderRepo
.
getAmtByPlanNo
(
date
,
planNo
,
transCodeEnum
);
eq
=
checkData
(
clearAmt
,
clrOrderAmt
,
start
,
transCodeEnum
,
planNo
,
date
,
sb
,
"[{0}]清算金额与结算金额不一致,清算金额[{1}],结算金额[{2}],事件[{3}]"
);
if
(!
eq
)
{
return
eq
;
}
// 结算 支付
CapitalOrderAmt
capitalOrderAmt
=
planCapitalOrderRepo
.
getHisAmtByPlanNo
(
date
,
planNo
,
PlanCapitalTransTypeEnum
.
getCapitalTransTypeByTransfer
(
transCodeEnum
,
!
planNo
.
equals
(
spvNo
)));
Money
payableAmt
=
Optional
.
ofNullable
(
capitalOrderAmt
).
map
(
CapitalOrderAmt:
:
getPayableAmt
).
orElseGet
(
Money:
:
new
);
eq
=
checkData
(
clrOrderAmt
,
payableAmt
,
start
,
transCodeEnum
,
planNo
,
date
,
sb
,
"[{0}]结算金额与支付金额不一致,结算金额[{1}],支付金额[{2}],事件[{3}]"
);
if
(!
eq
)
{
return
eq
;
}
// 支付 水位
// 还款事件
// 放款池水位减 = 放款池支付交易金额
// 放款池水位加 = 放款池支付交易金额 + 关联受让池水位加
// 放款池水位加 = 结算交易金额 + 关联受让池水位加
List
<
AstLogAmt
>
astLogAmtList
=
planAstLogRepository
.
getAmtByPlanNo
(
date
,
planNo
,
transCodeEnum
);
if
(
CollectionUtils
.
isEmpty
(
astLogAmtList
))
{
LogUtil
.
warn
(
LOGGER
,
"[{0}]不存在事件[{1}]对应的水位记录"
,
planNo
,
transCodeEnum
.
getCode
());
return
false
;
}
if
(
transCodeEnum
==
TransCodeEnum
.
REPO
)
{
Optional
<
AstLogAmt
>
AstAddLogAmt
=
astLogAmtList
.
stream
().
filter
(
item
->
item
.
getChangeType
().
equals
(
StageChangeTypeEnum
.
ADD
.
getCode
())).
findFirst
();
if
(!
AstAddLogAmt
.
isPresent
())
{
LogUtil
.
error
(
LOGGER
,
"[{0}]不存在事件[{1}]对应的水位增加记录"
,
planNo
,
transCodeEnum
.
getCode
());
}
if
(!
planNo
.
equals
(
spvNo
))
{
Money
amt
=
AstAddLogAmt
.
get
().
getAmt
();
Money
transAmt
=
Optional
.
ofNullable
(
capitalOrderAmt
).
map
(
CapitalOrderAmt:
:
getTransAmt
).
orElseGet
(
Money:
:
new
);
eq
=
checkData
(
transAmt
,
amt
,
start
,
transCodeEnum
,
planNo
,
date
,
sb
,
"[{0}]交易金额与水位变化金额不一致,交易金额[{1}],水位变化金额[{2}],事件[{3}]"
);
if
(!
eq
)
{
return
eq
;
}
planAdd
.
addTo
(
amt
);
}
else
{
Money
amt
=
AstAddLogAmt
.
get
().
getAmt
();
spvAdd
.
addTo
(
amt
);
planAdd
.
addTo
(
capitalOrderAmt
.
getTransAmt
());
}
// 水位扣减
Optional
<
AstLogAmt
>
AstSubLogAmt
=
astLogAmtList
.
stream
().
filter
(
item
->
item
.
getChangeType
().
equals
(
StageChangeTypeEnum
.
SUB
.
getCode
())).
findFirst
();
if
(
AstSubLogAmt
.
isPresent
())
{
Money
amt
=
AstSubLogAmt
.
get
().
getAmt
();
eq
=
checkData
(
capitalOrderAmt
.
getTransAmt
(),
amt
,
start
,
transCodeEnum
,
planNo
,
date
,
sb
,
"[{0}]交易金额与水位变化金额不一致,交易金额[{1}],水位变化金额[{2}],事件[{3}]"
);
if
(!
eq
)
{
return
eq
;
}
}
}
else
{
Money
amt
=
astLogAmtList
.
get
(
0
).
getAmt
();
eq
=
checkData
(
capitalOrderAmt
.
getTransAmt
(),
amt
,
start
,
transCodeEnum
,
planNo
,
date
,
sb
,
"[{0}]交易金额与水位变化金额不一致,交易金额[{1}],水位变化金额[{2}],事件[{3}]"
);
if
(!
eq
)
{
return
eq
;
}
}
}
eq
=
spvAdd
.
subtract
(
planAdd
).
isZero
();
if
(!
eq
)
{
sb
.
append
(
MessageUtil
.
formatMsg
(
"[{0}]交易金额与水位变化金额不一致,交易金额[{1}],水位变化金额[{2}],事件[{3}]"
,
spvNo
,
spvAdd
,
planAdd
,
transCodeEnum
.
getCode
()));
}
return
eq
;
}
/**
* 校验左右金额是否相等
* 当金额不等 、 清算数据相等且支付单数量为0的时候加入错误信息
*
* @param left
* @param right
* @param start 开始时的数据
* @param transCodeEnum 交易类型
* @param planNo 计划编号
* @param date 日期
* @param sb
* @param msg
* @return
*/
private
boolean
checkData
(
Money
left
,
Money
right
,
ClearingLogCntAndId
start
,
TransCodeEnum
transCodeEnum
,
String
planNo
,
Date
date
,
StringBuffer
sb
,
String
msg
)
{
left
=
left
==
null
?
new
Money
()
:
left
;
right
=
right
==
null
?
new
Money
()
:
right
;
boolean
flag
=
left
.
subtract
(
right
).
isZero
();
if
(!
flag
&&
checkClearEq
(
start
,
transCodeEnum
,
planNo
,
date
)
&&
this
.
capitalCntIsZero
())
{
sb
.
append
(
MessageUtil
.
formatMsg
(
msg
,
planNo
,
left
,
right
,
transCodeEnum
.
getCode
()));
}
return
flag
;
}
/**
* 校验清算数据是否一致
*
* @param start 开始时的数据
* @param transCodeEnum 交易码
* @param planNo 计划编号
* @param date 会计日
* @return
*/
private
boolean
checkClearEq
(
ClearingLogCntAndId
start
,
TransCodeEnum
transCodeEnum
,
String
planNo
,
Date
date
)
{
ClearingLogCntAndId
end
=
planClearingLogRepo
.
getHisMaxIdAndCnt
(
date
,
planNo
,
transCodeEnum
);
if
(
start
.
getCnt
()
!=
null
&&
end
.
getCnt
()
!=
null
&&
start
.
getMaxId
()
!=
null
&&
end
.
getMaxId
()
!=
null
)
{
return
start
.
getCnt
().
intValue
()
==
end
.
getCnt
().
intValue
()
&&
start
.
getMaxId
().
intValue
()
==
end
.
getMaxId
().
intValue
();
}
return
false
;
}
/**
* 支付单是否为0
*
* @return
*/
private
boolean
capitalCntIsZero
()
{
return
planCapitalOrderRepo
.
getActiveCntByType
(
null
).
intValue
()
==
0
;
}
@Override
protected
IEnum
getBizType
()
{
return
AbssqrNoticeTypeEnum
.
DataCheck
;
}
@Override
protected
String
getWatchJob
()
{
return
null
;
}
}
app/biz/shared/src/main/java/com/abssqr/plat/biz/shared/scheduler/job/keeper/node/HostHeartJobKeeper.java
deleted
100644 → 0
View file @
a1ec79b6
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*//*
package com.abssqr.plat.biz.shared.scheduler.job.keeper.node;
import com.abssqr.plat.common.facade.enums.AbssqrNoticeTypeEnum;
import com.abssqr.plat.common.facade.system.HostInfo;
import com.abssqr.plat.core.service.host.HostManager;
import com.general.system.common.model.IEnum;
import com.general.system.common.util.LogUtil;
import com.general.system.common.util.MessageUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.List;
import java.util.Set;
*/
/**
* 心跳任务 异常监控
* <p>
* 心跳30分钟执行一次 超过30分钟没有心跳的默认系统挂掉了
*
* @author xiachenxiang
* @version com.abssqr.plat.biz.shared.scheduler.job.keeper.node: HostHeartKeeper.java, v 0.1 2019-09-17 1:59 PM xiachenxiang Exp $
*//*
@Component
public class HostHeartJobKeeper extends AbstractKeeperNode {
@Autowired
private HostManager hostManager;
private static final Integer OVER_TIME = 31;
@Override
protected Void doHandle(Date date) {
LogUtil.info(LOGGER, "心跳任务监控-start");
List<HostInfo> hostInfoList = hostManager.listOvertimeHost(date, OVER_TIME);
if (hostInfoList != null && hostInfoList.size() > 0) {
String msg = MessageUtil.formatMsg("检测到超时主机有[{0}]台,请排查具体原因!", hostInfoList.size());
// 获取用户
Set<String> receivers = super.getAdminReceivers();
super.sendNotice("主机连接超时告警", AbssqrNoticeTypeEnum.HostHeart.getCode(), msg, receivers);
}
LogUtil.info(LOGGER, "心跳任务监控-end");
return null;
}
@Override
protected IEnum getBizType() {
return AbssqrNoticeTypeEnum.HostHeart;
}
@Override
protected String getWatchJob() {
return null;
}
}
*/
app/biz/shared/src/main/java/com/abssqr/plat/biz/shared/scheduler/job/keeper/node/PlanAstStatJobKeeper.java
deleted
100644 → 0
View file @
a1ec79b6
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package
com
.
abssqr
.
plat
.
biz
.
shared
.
scheduler
.
job
.
keeper
.
node
;
import
cn.hutool.core.date.DateUtil
;
import
com.abssqr.plat.common.facade.enums.AbssqrNoticeTypeEnum
;
import
com.abssqr.plat.common.facade.enums.OrgAstStatStatusEnum
;
import
com.abssqr.plat.common.model.repo.ast.PlanAstStatTaskRepo
;
import
com.general.system.common.model.IEnum
;
import
com.general.system.common.util.LogUtil
;
import
com.general.system.common.util.MessageUtil
;
import
com.general.system.common.util.SystemDateUtil
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Component
;
import
java.util.Date
;
import
java.util.Set
;
/**
* 放款计划统计任务监控
*
* @author hanfei
* @version $Id: PlanAstStatJobKeeper.java, v 0.1 2019-07-26 2:28 PM hanfei Exp $
*/
@Component
public
class
PlanAstStatJobKeeper
extends
AbstractKeeperNode
{
@Autowired
private
PlanAstStatTaskRepo
planAstStatTaskRepo
;
@Override
protected
Void
doHandle
(
Date
date
)
{
LogUtil
.
info
(
LOGGER
,
"放款计划统计任务监控-start"
);
Date
currentTime
=
getCurrentStanderDate
();
Date
deadLine
=
DateUtil
.
offsetMinute
(
currentTime
,
-
20
).
toJdkDate
();
Long
count
=
planAstStatTaskRepo
.
countByStatusAndTime
(
deadLine
,
OrgAstStatStatusEnum
.
PROCESS
.
getCode
());
if
(
count
!=
null
&&
count
>
0
)
{
String
msg
=
MessageUtil
.
formatMsg
(
"放款计划统计任务告警,有[{0}]个任务超过10分钟未完成,请排查具体原因"
,
count
);
// 获取用户
Set
<
String
>
receivers
=
super
.
getAdminReceivers
();
sendSystemNotice
(
"放款计划统计任务告警"
,
"ALL"
,
msg
,
receivers
);
}
LogUtil
.
info
(
LOGGER
,
"放款计划统计任务监控-end"
);
return
null
;
}
@Override
public
IEnum
getBizType
()
{
return
AbssqrNoticeTypeEnum
.
PlanAstStat
;
}
@Override
protected
String
getWatchJob
()
{
return
"PlanAstStatTaskDispatcher"
;
}
}
app/biz/shared/src/main/java/com/abssqr/plat/biz/shared/scheduler/job/keeper/node/PlanDailyKeeper.java
deleted
100644 → 0
View file @
a1ec79b6
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*//*
package com.abssqr.plat.biz.shared.scheduler.job.keeper.node;
import com.abssqr.plat.biz.shared.scheduler.job.plan.PlanDailyJob;
import com.abssqr.plat.common.facade.enums.AbssqrNoticeTypeEnum;
import com.abssqr.plat.common.model.repo.plan.PlanRepo;
import com.general.system.common.model.IEnum;
import com.general.system.common.util.LogUtil;
import com.general.system.common.util.MessageUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.Set;
*/
/**
* 每日计划任务监控
*
* @author xiachenxiang
* @version com.abssqr.plat.biz.shared.scheduler.job.keeper.node: PlanDailyKeeper.java, v 0.1 2019-09-27 2:04 PM xiachenxiang Exp $
*//*
//@Component
public class PlanDailyKeeper extends AbstractKeeperNode {
@Autowired
private PlanRepo planRepo;
@Value("${wkabs.planDaily.zhaolian.deadline:8 0 0}")
private String deadline;
@Value("${wkabs.org.zhaolian:1009}")
private String zhaolianOrgCode;
@Override
protected IEnum getBizType() {
return AbssqrNoticeTypeEnum.PlanDailyKeeper;
}
@Override
protected String getWatchJob() {
return PlanDailyJob.class.getName();
}
@Override
protected Void doHandle(Date date) {
LogUtil.info(LOGGER, "每日计划任务监控-start");
// 判断是否大于指定时间
Date currentTime = date;
Date deadlineTime = super.getDeadLineTime(currentTime, deadline);
if (currentTime.compareTo(deadlineTime) > 0) {
Date curDate = SystemDayUtil.getDay().getStandardDate();
Long count = planRepo.getFailDailyCount(curDate);
if (count != null && count > 0) {
String msg = MessageUtil.formatMsg("每日计划任务监控到有[{0}]条失败任务,请排查具体原因!", count);
LogUtil.info(LOGGER, msg);
// 获取用户
Set<String> receivers = super.getAdminReceivers();
super.sendSystemNotice("每日计划任务告警", zhaolianOrgCode, msg, receivers);
}
}
LogUtil.info(LOGGER, "每日计划任务监控-end");
return null;
}
}
*/
app/biz/shared/src/main/java/com/abssqr/plat/biz/shared/scheduler/job/keeper/node/TransferDispatcherKeeper.java
deleted
100644 → 0
View file @
a1ec79b6
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*//*
package com.abssqr.plat.biz.shared.scheduler.job.keeper.node;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.abssqr.plat.common.dal.mysql.auto.dao.TrTaskDAO;
import com.abssqr.plat.common.dal.mysql.auto.resultmap.TransferFailTaskStat;
import com.abssqr.plat.common.facade.enums.AbssqrNoticeTypeEnum;
import com.abssqr.plat.common.facade.enums.TaskStatusEnum;
import com.abssqr.plat.common.facade.model.CommonPlanEntity;
import com.abssqr.plat.common.facade.model.plan.PlanBase;
import com.general.system.common.model.IEnum;
import com.general.system.common.util.DateTimeUtil;
import com.general.system.common.util.LogUtil;
import com.general.system.common.util.MessageUtil;
import com.general.system.tool.util.ToolUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.List;
import java.util.Set;
*/
/**
* 资产转让任务监控
*
* @author hanfei
* @version $Id: TransferDispatcherKeeper.java, v 0.1 2019-07-26 2:30 PM hanfei Exp $
*//*
//@Component
public class TransferDispatcherKeeper extends AbstractKeeperNode {
@Autowired
private TrTaskDAO trTaskDAO;
@Value("${wkabs.org.zhaolian:1009}")
private String zhaolianOrgCode;
@Override
protected Void doHandle(Date accountDate) {
LogUtil.info(LOGGER, "资产转让任务监控-start");
Long cnt = trTaskDAO.countFailTrTask(DateUtil.beginOfDay(accountDate), execTimes);
if (cnt != null && cnt > 0) {
String msg = MessageUtil.formatMsg("资产转让任务监控到有[{0}]条失败任务,请排查具体原因!", cnt);
LogUtil.info(LOGGER, msg);
// 获取用户
Set<String> receivers = super.getAdminReceivers();
super.sendSystemNotice("资产转让任务告警", zhaolianOrgCode, msg, receivers);
LogUtil.info(LOGGER, "资产转让任务监控-end");
}
return null;
}
@Override
public IEnum getBizType() {
return AbssqrNoticeTypeEnum.TransferAst;
}
@Override
protected String getWatchJob() {
return "trTaskDispatcher";
}
}
*/
app/biz/shared/src/main/java/com/abssqr/plat/biz/shared/scheduler/job/plan/PlanDailyJob.java
deleted
100644 → 0
View file @
a1ec79b6
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package
com
.
abssqr
.
plat
.
biz
.
shared
.
scheduler
.
job
.
plan
;
import
java.util.Date
;
import
java.util.List
;
import
com.abssqr.plat.biz.shared.handler.PlanSettleHandler
;
import
com.abssqr.plat.biz.shared.scheduler.BaseQuartzJob
;
import
com.abssqr.plat.common.facade.enums.PlanStatusEnum
;
import
com.abssqr.plat.common.facade.model.plan.PlanBase
;
import
com.abssqr.plat.common.model.repo.plan.PlanRepo
;
import
com.abssqr.plat.core.service.accounting.OrgAcctDayComponent
;
import
com.general.system.bpm.enums.ApproveStatusEnum
;
import
com.general.system.common.util.DateTimeUtil
;
import
com.general.system.common.util.LogUtil
;
import
com.general.system.common.util.VarChecker
;
import
com.general.system.tool.util.ToolUtil
;
import
com.google.common.collect.Lists
;
import
org.quartz.DisallowConcurrentExecution
;
import
org.quartz.PersistJobDataAfterExecution
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Component
;
import
org.springframework.transaction.TransactionStatus
;
import
org.springframework.transaction.support.TransactionCallbackWithoutResult
;
import
org.springframework.transaction.support.TransactionTemplate
;
/**
* 计划资产需求统计任务
*
* @author zhenxuan.luo
* @version com.abssqr.plat.biz.shared.scheduler.job.plan: PlanPackGenJob.java, v 0.1 2019-06-18 21:19 zhenxuan.luo
* Exp $
*/
@PersistJobDataAfterExecution
@DisallowConcurrentExecution
@Component
public
class
PlanDailyJob
extends
BaseQuartzJob
{
private
final
static
Logger
LOGGER
=
LoggerFactory
.
getLogger
(
PlanDailyJob
.
class
);
@Autowired
private
PlanSettleHandler
planSettleHandler
;
@Autowired
private
TransactionTemplate
transactionTemplate
;
@Autowired
private
PlanRepo
planRepo
;
@Autowired
private
OrgAcctDayComponent
orgAcctDayComponent
;
/**
* 每天 45 7/20 * * * ?
*/
@Value
(
"${sync.quartz.plan.daily}"
)
private
String
cron
;
@Override
protected
String
getCronExpr
()
{
return
cron
;
}
@Override
protected
boolean
isRequestRecovery
()
{
return
true
;
}
@Override
public
void
doExecute
()
{
Date
curDate
=
orgAcctDayComponent
.
getTrfAcctDay
().
getStandardDate
();
LogUtil
.
info
(
LOGGER
,
"[DailyJob]-[{0}]计划每日处理任务start"
,
curDate
);
// 查询计划
List
<
PlanBase
>
planBaseList
=
planRepo
.
getPlansByStatusList
(
null
,
Lists
.
newArrayList
(
PlanStatusEnum
.
ONGOING
,
PlanStatusEnum
.
PREPARING
));
if
(
ToolUtil
.
isEmpty
(
planBaseList
))
{
return
;
}
for
(
PlanBase
planEntity
:
planBaseList
)
{
transactionTemplate
.
execute
(
new
TransactionCallbackWithoutResult
()
{
@Override
protected
void
doInTransactionWithoutResult
(
TransactionStatus
status
)
{
try
{
//执行计划每日任务
lockEntityAndExecute
(
curDate
,
planEntity
);
}
catch
(
Exception
e
)
{
LogUtil
.
error
(
LOGGER
,
e
,
"{0}[{1}]日切获取锁失败"
,
planEntity
.
getPlanType
().
getDesc
(),
planEntity
);
}
}
});
}
}
/**
* 计划状态变更
*
* @param curDate
* @param planEntity
* @return
*/
public
void
lockEntityAndExecute
(
Date
curDate
,
PlanBase
planEntity
)
{
//顺序不可逆。如果先执行存续期任务可能会漏掉当日变更为存续期的计划
LogUtil
.
info
(
LOGGER
,
"{0}[{1}]日初计划状态变更任务执行"
,
planEntity
.
getPlanType
().
getDesc
(),
planEntity
.
getPlanNo
());
// 承接池计划 加锁
PlanBase
planBase
=
planRepo
.
lockPlanByNo
(
planEntity
.
getPlanNo
());
VarChecker
.
checkNotNull
(
planBase
,
"计划查询加锁为空[{0}]"
,
planBase
.
getPlanNo
());
if
(
PlanStatusEnum
.
PREPARING
==
planBase
.
getStatus
()
&&
DateTimeUtil
.
calcDayDiff
(
curDate
,
planBase
.
getBeginDate
())
>=
0L
&&
planBase
.
getApproveStatus
()
==
ApproveStatusEnum
.
PASSED
)
{
// 变更状态
planBase
.
setStatus
(
PlanStatusEnum
.
ONGOING
);
}
// 执行 计划每日业务
this
.
onGoingPlansTask
(
curDate
,
planBase
);
// 承接池状态与时间变更
planBase
.
setLastUpdateDate
(
curDate
);
planRepo
.
updatePlan
(
planBase
);
}
/**
* 存续期任务
*
* @param curDate
* @param planEntity
*/
private
void
onGoingPlansTask
(
Date
curDate
,
PlanBase
planEntity
)
{
if
(
PlanStatusEnum
.
ONGOING
==
planEntity
.
getStatus
())
{
//存续期任务执行
if
(
planEntity
.
getLastUpdateDate
()
!=
null
&&
DateTimeUtil
.
calcDayDiff
(
curDate
,
planEntity
.
getLastUpdateDate
())
<=
0
)
{
LogUtil
.
info
(
LOGGER
,
"{0}[{1}]最近更新日期为[{2}],跳过执行"
,
planEntity
.
getPlanType
().
getDesc
(),
planEntity
.
getPlanNo
(),
planEntity
.
getLastUpdateDate
());
return
;
}
LogUtil
.
info
(
LOGGER
,
"{0}[{1}]日初任务执行"
,
planEntity
.
getPlanType
().
getDesc
(),
planEntity
.
getPlanNo
());
/**
* 以下执行顺序不能调换
*/
// 结息
planSettleHandler
.
execute
(
planEntity
,
curDate
);
}
}
}
\ No newline at end of file
app/web/src/main/java/com/abssqr/plat/web/controller/job/JobController.java
deleted
100644 → 0
View file @
a1ec79b6
/**
* abssqr.com Inc.
* Copyright (c) 2017-2018 All Rights Reserved.
*/
package
com
.
abssqr
.
plat
.
web
.
controller
.
job
;
//import com.abssqr.plat.biz.shared.scheduler.job.plan.LenderOrgAstClearingOrderJob;
//import com.abssqr.plat.biz.shared.scheduler.job.plan.LenderOrgAstStatJob;
import
java.util.List
;
import
com.abssqr.plat.biz.shared.scheduler.job.plan.PlanDailyJob
;
import
com.abssqr.plat.common.facade.model.account.Account
;
import
com.abssqr.plat.common.facade.model.plan.PlanBase
;
import
com.abssqr.plat.common.facade.service.AccountService
;
import
com.abssqr.plat.common.model.repo.plan.PlanRepo
;
import
com.abssqr.plat.common.model.repo.report.PlanReportRepo
;
import
com.abssqr.plat.common.model.repo.task.AstSyncTaskCtrRepo
;
import
com.abssqr.plat.core.service.accounting.OrgAcctDayComponent
;
import
com.abssqr.plat.core.service.plan.PlanManager
;
import
cn.hutool.core.date.DateUtil
;
import
com.general.enhanced.controller.annotation.RestJsonController
;
import
com.general.system.common.model.BaseResult
;
import
com.general.system.common.util.VarChecker
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RequestParam
;
/**
* job 手工出发
*
* @author yaphet
* @version com.abssqr.admin.web.controller.product: ProductController.java, v 0.1 2018-03-02 下午3:32 yaphet Exp $
*/
@RestJsonController
public
class
JobController
{
@Autowired
private
AstSyncTaskCtrRepo
astSyncTaskCtrRepo
;
@Autowired
private
PlanManager
planManager
;
@Autowired
private
PlanRepo
planRepo
;
@Autowired
private
PlanDailyJob
planDailyJob
;
@Autowired
private
PlanReportRepo
planReportRepo
;
@Autowired
private
AccountService
accountService
;
@Autowired
private
OrgAcctDayComponent
orgAcctDayComponent
;
/**
* 每日处理
*
* @return
* @description
*/
@RequestMapping
(
path
=
"/job/planDailyJob.json"
,
method
=
RequestMethod
.
GET
)
public
BaseResult
<
Boolean
>
planDailyJob
()
{
planDailyJob
.
doExecute
();
return
BaseResult
.
success
(
null
);
}
/**
* 查询账户余额
*
* @return
* @description
*/
@RequestMapping
(
path
=
"/acct/balance/all.json"
,
method
=
RequestMethod
.
GET
)
public
List
<
Account
>
allBalance
()
{
return
accountService
.
queryBalance
();
}
/**
* 初始化计划 日报基础数据
*
* @param planNo
* @param date
* @return
*/
@RequestMapping
(
path
=
"/report/default.json"
,
method
=
RequestMethod
.
GET
)
public
BaseResult
<
Boolean
>
initDefaultReport001
(
@RequestParam
String
planNo
,
@RequestParam
String
date
)
{
// 校验计划
PlanBase
planBase
=
planManager
.
getPlanFullByNo
(
planNo
);
VarChecker
.
checkNotNull
(
planBase
,
"错误的计划编号"
);
// 初始化上一日空值报表基础数据
int
cnt
=
planReportRepo
.
defaultRPT001Init
(
planNo
,
DateUtil
.
parseDate
(
date
));
return
BaseResult
.
success
(
cnt
);
}
}
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