新增罚息计算定时任务

This commit is contained in:
lichaojie 2019-12-26 11:07:19 +08:00
parent f5a0c30dec
commit fa878c7249
3 changed files with 120 additions and 0 deletions

View File

@ -0,0 +1,50 @@
-- 罚息存储过程
CREATE PROCEDURE PROC_CALC_PENALTY(IN CALC_DATE VARCHAR(10))
BEGIN
-- 注意不要变动LC_PENALTY_INFO表的唯一性索引
-- 罚息存储过程
REPLACE INTO LC_PENALTY_INFO(ID,
PROJECT_ID,
PROJECT_PLAN_NUMBER,
CONTRACT_ID,
CONTRACT_PLAN_NUMBER,
PAYMENT_NUMBER,
PLAN_ID,
PLAN_DATE,
PLAN_LIST,
RENT_PLAN_DATE,
PLAN_PENALTY,
INPUTTIME)
SELECT TT.ID,
TT.PROJECT_ID,
TT.PROJECT_PLAN_NUMBER,
TT.CONTRACT_ID,
TT.CONTRACT_PLAN_NUMBER,
TT.PAYMENT_NUMBER,
TT.PLAN_ID,
CALC_DATE,
TT.PLAN_LIST,
TT.PLAN_DATE,
TT.PLAN_PENALTY,
TT.INPUTTIME
FROM (
SELECT IFNULL(LPI.ID, REPLACE(UUID(), '-', '')) ID,
LRPT.PROJECT_ID,
LRPT.PROJECT_PLAN_NUMBER,
LRPT.CONTRACT_ID,
LRPT.CONTRACT_PLAN_NUMBER,
LRPT.PAYMENT_NUMBER,
LRPT.ID AS PLAN_ID,
LRPT.PLAN_LIST,
LRPT.PLAN_DATE,
IFNULL(LPI.PLAN_PENALTY, 0) AS OLD_PLAN_PENALTY,
getRentPenalty(LRPT.PAYMENT_NUMBER, LRPT.PLAN_LIST, CALC_DATE) AS PLAN_PENALTY,
DATE_FORMAT(NOW(), '%Y/%m/%d %H:%i:%s') AS INPUTTIME
FROM LC_RENT_PLAN LRPT
LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID = LRPT.CONTRACT_ID
LEFT JOIN LC_PENALTY_INFO LPI ON LRPT.PAYMENT_NUMBER = LPI.PAYMENT_NUMBER AND LRPT.PLAN_LIST = LPI.PLAN_LIST
WHERE LCI.CONTRACT_STATUS = '31'
) TT
WHERE TT.PLAN_PENALTY <> TT.OLD_PLAN_PENALTY
AND TT.PLAN_PENALTY > 0;
END;

View File

@ -0,0 +1,18 @@
-- 罚息表增加唯一性限制
alter table lc_penalty_info
add constraint lc_penalty_info_pn_pl
unique (payment_number, plan_list);
-- 配置罚息计算定时任务
-- 1、插入罚息定时任务数据字典
INSERT INTO APZL.CODE_LIBRARY (CODENO, ITEMNO, ITEMNAME, BANKNO, SORTNO, ISINUSE, ITEMDESCRIBE, ITEMATTRIBUTE, RELATIVECODE, ATTRIBUTE1, ATTRIBUTE2,
ATTRIBUTE3, ATTRIBUTE4, ATTRIBUTE5, ATTRIBUTE6, ATTRIBUTE7, ATTRIBUTE8, INPUTUSER, INPUTORG, INPUTTIME, UPDATEUSER,
UPDATETIME, REMARK, HELPTEXT)
VALUES ('MissionName', 'com.tenwa.lease.app.quartzmession.CalcPenaltyJob', '每天定时计算罚息', '', '0590', '1', '每天定时计算罚息', '', '', '', '', '', '', '', '',
'', '', 'SYS_Designer', NULL, '2019/12/26 10:13:04', 'SYS_Designer', '2019/12/26 10:14:07', '', '');
-- 2、【定时任务管理】菜单
-- 新增:【执行任务类名】 选择 【每天定时生成罚息】,【描述】填入【每天定时生成罚息】,【是否再次执行过期任务】选择【否】,点击保存。
-- 3、【定时任务配置】菜单
-- 新增:【定时任务处理类】 选择 【每天定时生成罚息】【定时器描述】填入【每天定时生成罚息】【定时器状态】选择【运行】【定时器Cron表达式】为【0 0 22 * * ? *】,
-- 【定时任务开始时间】选择 【今天】,【定时任务结束时间】选择 【最大】,点击保存

View File

@ -0,0 +1,52 @@
package com.tenwa.lease.app.quartzmession;
import com.amarsoft.are.jbo.JBOException;
import com.amarsoft.are.jbo.JBOFactory;
import com.amarsoft.are.jbo.JBOTransaction;
import com.amarsoft.are.sql.Connection;
import com.amarsoft.awe.util.Transaction;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import java.sql.CallableStatement;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
/**
* 计算罚息定时任务
* @author lichaojie
*/
public class CalcPenaltyJob implements Job {
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
JBOTransaction tx;
Transaction tran = null;
try {
tx = JBOFactory.createJBOTransaction();
tran = Transaction.createTransaction(tx);
// 获取当前日期
String todayDateStr = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy/MM/dd"));
Connection connection = tran.getConnection(tran);
CallableStatement callableStatement = connection.prepareCall("{call PROC_CALC_PENALTY(?)}");
callableStatement.setString(1, todayDateStr);
callableStatement.execute();
callableStatement.close();
tran.commit();
} catch (Exception e) {
e.printStackTrace();
try {
if (tran != null) {
tran.rollback();
}
} catch (JBOException e1) {
e1.printStackTrace();
}
throw new JobExecutionException(e);
}
}
}