2019-12-24 17:28:52 +08:00

57 lines
12 KiB
Java

package com.tenwa.lease.app.quartzmession;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import com.amarsoft.are.jbo.JBOException;
import com.amarsoft.awe.util.Transaction;
/**
* 每月跑批静态池数据
* @author xiezhiwen
*/
public class StaticDataRunBatch implements Job{
private static final Logger logger = LogManager.getLogger(StaticDataRunBatch.class);// 引入logger日志
public void execute(JobExecutionContext arg0) throws JobExecutionException {
Transaction Sqlca=null;
try{
// Sqlca = Transaction.createTransaction(CacheLoaderFactory.getDataSource());
Sqlca = Transaction.createTransaction("als");
String create_time = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss").format(new Date());
String deleteSql="DELETE FROM LV_STATIC_POOL WHERE DATE_FORMAT(CREATE_TIME,'%Y/%m')=DATE_FORMAT(NOW(),'%Y/%m')";
Sqlca.executeSQL(deleteSql);
// 将当月跑批数据插入静态池表
String insertSql="INSERT INTO LV_STATIC_POOL (SELECT REPLACE(UUID(),'-',''),LFI.FACT_DATE AS F1,B1.REPORT_MONTH AS F2,CASE WHEN LFI.FACT_DATE = DATE_FORMAT(NOW(), '%Y/%m') THEN IFNULL(LFI.NEW_CORPUS, 0.00) ELSE '0.00' END AS F3,CASE WHEN LFI.FACT_DATE = DATE_FORMAT(NOW(), '%Y/%m') THEN IFNULL(LFI.NEW_CORPUS_SUM,0) ELSE '0' END AS F4,IFNULL(LFI.YMWCBJ, 0.00) AS F5,IFNULL(LFI.OVER_CON, 0) AS F6,IFNULL(LFI.ZCDKYE, 0.00) AS F7,IFNULL(LFI.YQ_1_30_MONEY, 0.00) AS F8,IFNULL(LFI.YQ_1_30_SUM, 0) AS F9,IFNULL(LFI.YQ_31_60_MONEY, 0.00) AS F10,IFNULL(LFI.YQ_31_60_SUM, 0) AS F11,IFNULL(LFI.YQ_61_90_MONEY, 0.00) AS F12,IFNULL(LFI.YQ_61_90_SUM, 0) AS F13,IFNULL(LFI.YQ_91_120_MONEY, 0.00) AS F14,IFNULL(LFI.YQ_91_120_SUM, 0) AS F15,IFNULL(LFI.YQ_121_150_MONEY, 0.00) AS F16,IFNULL(LFI.YQ_121_150_SUM, 0) AS F17,IFNULL(LFI.YQ_151_180_MONEY, 0.00) AS F18,IFNULL(LFI.YQ_151_180_SUM, 0) AS F19,IFNULL(LFI.YQ_180_MONEY, 0.00) AS F20,IFNULL(LFI.YQ_180_SUM, 0) AS F21,IFNULL(LFI.YNBJHSK, 0.00) AS F22,IFNULL(LFI.YNBFZCJE, 0.00) AS F23,IFNULL(LFI.YNQBZCJE, 0.00) AS F24,IFNULL(LFI.XNBJCHJE, 0.00) AS F25,'0.00' AS F26,'0.00' AS F27,'0.00' AS F28,IFNULL(LFI.DYHSKZE, 0.00) AS F29,'0.00' AS F30,'"+create_time+"' AS CREATE_TIME FROM (SELECT DATE_FORMAT(NOW(), '%Y/%m') AS REPORT_MONTH FROM DUAL)B1 LEFT JOIN (SELECT DATE_FORMAT(LFI.FACT_DATE, '%Y/%m') FACT_DATE,SUM(IFNULL(LRP.CORPUS, 0)) AS NEW_CORPUS,SUM(IFNULL(LRP.CORPUS, 0)) - SUM(IFNULL(LRI.CORPUS, 0)) AS YMWCBJ,COUNT(LFI.CONTRACT_ID) AS NEW_CORPUS_SUM,COUNT(LCI.ID) AS OVER_CON,SUM(LRP2.CORPUS) AS ZCDKYE,SUM(IFNULL(LRP3.YQ_1_30_MONEY, 0.00)) AS YQ_1_30_MONEY,SUM(IFNULL(LRP3.YQ_1_30_SUM, 0)) AS YQ_1_30_SUM,SUM(IFNULL(LRP4.YQ_31_60_MONEY, 0.00)) AS YQ_31_60_MONEY,SUM(IFNULL(LRP4.YQ_31_60_SUM, 0)) AS YQ_31_60_SUM,SUM(IFNULL(LRP5.YQ_61_90_MONEY, 0.00)) AS YQ_61_90_MONEY,SUM(IFNULL(LRP5.YQ_61_90_SUM, 0)) AS YQ_61_90_SUM,SUM(IFNULL(LRP6.YQ_91_120_MONEY, 0.00)) AS YQ_91_120_MONEY,SUM(IFNULL(LRP6.YQ_91_120_SUM, 0)) AS YQ_91_120_SUM,SUM(IFNULL(LRP7.YQ_121_150_MONEY, 0.00)) AS YQ_121_150_MONEY,SUM(IFNULL(LRP7.YQ_121_150_SUM, 0)) AS YQ_121_150_SUM,SUM(IFNULL(LRP8.YQ_151_180_MONEY, 0.00)) AS YQ_151_180_MONEY,SUM(IFNULL(LRP8.YQ_151_180_SUM, 0)) AS YQ_151_180_SUM,SUM(IFNULL(LRP9.YQ_180_MONEY, 0.00)) AS YQ_180_MONEY,SUM(IFNULL(LRP9.YQ_180_SUM, 0)) AS YQ_180_SUM,SUM(IFNULL(LRP10.YNBJHSK, 0.00)) AS YNBJHSK,SUM(IFNULL(LRI2.YNBFZCJE, 0.00)) AS YNBFZCJE,SUM(IFNULL(LFRA.YNQBZCJE, 0.00)) AS YNQBZCJE,SUM(IFNULL(LRI3.XNBJCHJE, 0.00)) AS XNBJCHJE,SUM(IFNULL(LRI4.DYHSKZE, 0.00)) AS DYHSKZE FROM (SELECT CONTRACT_ID,MAX(FACT_DATE) AS FACT_DATE FROM LC_FUND_INCOME WHERE FEE_TYPE = 'feetype10' AND EBANK_STATUS = '05' GROUP BY CONTRACT_ID) LFI LEFT JOIN (SELECT CONTRACT_ID,SUM(CORPUS) AS CORPUS FROM LC_RENT_PLAN GROUP BY CONTRACT_ID) LRP ON LRP.CONTRACT_ID = LFI.CONTRACT_ID LEFT JOIN (SELECT CONTRACT_ID,SUM(CORPUS) AS CORPUS FROM LC_RENT_INCOME WHERE DATE_FORMAT(HIRE_DATE,'%Y/%m')<=DATE_FORMAT(NOW(),'%Y/%m') GROUP BY CONTRACT_ID) LRI ON LRI.CONTRACT_ID = LRP.CONTRACT_ID LEFT JOIN (SELECT ID FROM LB_CONTRACT_INFO WHERE (CONTRACT_STATUS = '31' OR (CONTRACT_STATUS = '100' AND EXISTS(SELECT 1 FROM LC_FUND_RENT_ADJUST WHERE DATE_FORMAT(PAYDAY_ADJUST,'%Y/%m')>DATE_FORMAT(NOW(),'%Y/%m')))) GROUP BY ID ) LCI ON LCI.ID = LFI.CONTRACT_ID LEFT JOIN (SELECT CONTRACT_ID,SUM(CORPUS) AS CORPUS FROM LC_RENT_PLAN LRP WHERE NOT EXISTS (SELECT 1 FROM VI_OVERDUE_CONTRACT VOC WHERE VOC.CONTRACT_ID = LRP.CONTRACT_ID) AND LRP.PLAN_DATE >= DATE_FORMAT(NOW(), '%Y/%m/%d') GROUP BY LRP.CONTRACT_ID) LRP2 ON LRP2.CONTRACT_ID = LRP.CONTRACT_ID LEFT JOIN (SELECT VOC.CONTRACT_ID,SUM(IFNULL(LRP.CORPUS, 0)) - SUM(IFNULL(LRI.CORPUS, 0)) AS YQ_1_30_MONEY,COUNT(VOC.CONTRACT_ID) AS YQ_1_30_SUM FROM VI_OVERDUE_CONTRACT VOC LEFT JOIN (SELECT CONTRACT_ID,SUM(CORPUS) AS CORPUS FROM LC_RENT_PLAN GROUP BY CONTRACT_ID) LRP ON LRP.CONTRACT_ID = VOC.CONTRACT_ID LEFT JOIN (SELECT CONTRACT_ID,SUM(CORPUS) AS CORPUS FROM LC_RENT_INCOME GROUP BY CONTRACT_ID) LRI ON LRI.CONTRACT_ID = LRP.CONTRACT_ID WHERE VOC.OVERDUE_DAY BETWEEN 1 AND 30 GROUP BY VOC.CONTRACT_ID) LRP3 ON LRP3.CONTRACT_ID = LRP.CONTRACT_ID LEFT JOIN (SELECT VOC.CONTRACT_ID,SUM(IFNULL(LRP.CORPUS, 0)) - SUM(IFNULL(LRI.CORPUS, 0)) AS YQ_31_60_MONEY,COUNT(VOC.CONTRACT_ID) AS YQ_31_60_SUM FROM VI_OVERDUE_CONTRACT VOC LEFT JOIN (SELECT CONTRACT_ID,SUM(CORPUS) AS CORPUS FROM LC_RENT_PLAN GROUP BY CONTRACT_ID) LRP ON LRP.CONTRACT_ID = VOC.CONTRACT_ID LEFT JOIN (SELECT CONTRACT_ID,SUM(CORPUS) AS CORPUS FROM LC_RENT_INCOME GROUP BY CONTRACT_ID) LRI ON LRI.CONTRACT_ID = LRP.CONTRACT_ID WHERE VOC.OVERDUE_DAY BETWEEN 31 AND 60 GROUP BY VOC.CONTRACT_ID) LRP4 ON LRP4.CONTRACT_ID = LRP.CONTRACT_ID LEFT JOIN (SELECT VOC.CONTRACT_ID,SUM(IFNULL(LRP.CORPUS, 0)) - SUM(IFNULL(LRI.CORPUS, 0)) AS YQ_61_90_MONEY,COUNT(VOC.CONTRACT_ID) AS YQ_61_90_SUM FROM VI_OVERDUE_CONTRACT VOC LEFT JOIN (SELECT CONTRACT_ID,SUM(CORPUS) AS CORPUS FROM LC_RENT_PLAN GROUP BY CONTRACT_ID) LRP ON LRP.CONTRACT_ID = VOC.CONTRACT_ID LEFT JOIN (SELECT CONTRACT_ID,SUM(CORPUS) AS CORPUS FROM LC_RENT_INCOME GROUP BY CONTRACT_ID) LRI ON LRI.CONTRACT_ID = LRP.CONTRACT_ID WHERE VOC.OVERDUE_DAY BETWEEN 61 AND 90 GROUP BY VOC.CONTRACT_ID) LRP5 ON LRP5.CONTRACT_ID = LRP.CONTRACT_ID LEFT JOIN (SELECT VOC.CONTRACT_ID,SUM(IFNULL(LRP.CORPUS, 0)) - SUM(IFNULL(LRI.CORPUS, 0)) AS YQ_91_120_MONEY,COUNT(VOC.CONTRACT_ID) AS YQ_91_120_SUM FROM VI_OVERDUE_CONTRACT VOC LEFT JOIN (SELECT CONTRACT_ID,SUM(CORPUS) AS CORPUS FROM LC_RENT_PLAN GROUP BY CONTRACT_ID) LRP ON LRP.CONTRACT_ID = VOC.CONTRACT_ID LEFT JOIN (SELECT CONTRACT_ID,SUM(CORPUS) AS CORPUS FROM LC_RENT_INCOME GROUP BY CONTRACT_ID) LRI ON LRI.CONTRACT_ID = LRP.CONTRACT_ID WHERE VOC.OVERDUE_DAY BETWEEN 91 AND 120 GROUP BY VOC.CONTRACT_ID) LRP6 ON LRP6.CONTRACT_ID = LRP.CONTRACT_ID LEFT JOIN (SELECT VOC.CONTRACT_ID,SUM(IFNULL(LRP.CORPUS, 0)) - SUM(IFNULL(LRI.CORPUS, 0)) AS YQ_121_150_MONEY,COUNT(VOC.CONTRACT_ID) AS YQ_121_150_SUM FROM VI_OVERDUE_CONTRACT VOC LEFT JOIN (SELECT CONTRACT_ID,SUM(CORPUS) AS CORPUS FROM LC_RENT_PLAN GROUP BY CONTRACT_ID) LRP ON LRP.CONTRACT_ID = VOC.CONTRACT_ID LEFT JOIN (SELECT CONTRACT_ID,SUM(CORPUS) AS CORPUS FROM LC_RENT_INCOME GROUP BY CONTRACT_ID) LRI ON LRI.CONTRACT_ID = LRP.CONTRACT_ID WHERE VOC.OVERDUE_DAY BETWEEN 121 AND 150 GROUP BY VOC.CONTRACT_ID) LRP7 ON LRP7.CONTRACT_ID = LRP.CONTRACT_ID LEFT JOIN (SELECT VOC.CONTRACT_ID,SUM(IFNULL(LRP.CORPUS, 0)) - SUM(IFNULL(LRI.CORPUS, 0)) AS YQ_151_180_MONEY,COUNT(VOC.CONTRACT_ID) AS YQ_151_180_SUM FROM VI_OVERDUE_CONTRACT VOC LEFT JOIN (SELECT CONTRACT_ID,SUM(CORPUS) AS CORPUS FROM LC_RENT_PLAN GROUP BY CONTRACT_ID) LRP ON LRP.CONTRACT_ID = VOC.CONTRACT_ID LEFT JOIN (SELECT CONTRACT_ID,SUM(CORPUS) AS CORPUS FROM LC_RENT_INCOME GROUP BY CONTRACT_ID) LRI ON LRI.CONTRACT_ID = LRP.CONTRACT_ID WHERE VOC.OVERDUE_DAY BETWEEN 151 AND 180 GROUP BY VOC.CONTRACT_ID) LRP8 ON LRP8.CONTRACT_ID = LRP.CONTRACT_ID LEFT JOIN (SELECT VOC.CONTRACT_ID,SUM(IFNULL(LRP.CORPUS, 0)) - SUM(IFNULL(LRI.CORPUS, 0)) AS YQ_180_MONEY,COUNT(VOC.CONTRACT_ID) AS YQ_180_SUM FROM VI_OVERDUE_CONTRACT VOC LEFT JOIN (SELECT CONTRACT_ID,SUM(CORPUS) AS CORPUS FROM LC_RENT_PLAN GROUP BY CONTRACT_ID) LRP ON LRP.CONTRACT_ID = VOC.CONTRACT_ID LEFT JOIN (SELECT CONTRACT_ID,SUM(CORPUS) AS CORPUS FROM LC_RENT_INCOME GROUP BY CONTRACT_ID) LRI ON LRI.CONTRACT_ID = LRP.CONTRACT_ID WHERE VOC.OVERDUE_DAY > 180 GROUP BY VOC.CONTRACT_ID) LRP9 ON LRP9.CONTRACT_ID = LRP.CONTRACT_ID LEFT JOIN (SELECT CONTRACT_ID,SUM(CORPUS) AS YNBJHSK FROM LC_RENT_PLAN WHERE DATE_FORMAT(PLAN_DATE, '%Y/%m') = DATE_FORMAT(NOW(), '%Y/%m') GROUP BY CONTRACT_ID) LRP10 ON LRP10.CONTRACT_ID = LRP.CONTRACT_ID LEFT JOIN (SELECT LRI.CONTRACT_ID,SUM(LRI.CORPUS) AS YNBFZCJE FROM(SELECT CONTRACT_ID,PLAN_LIST,SUM(CORPUS) AS CORPUS FROM LC_RENT_INCOME WHERE DATE_FORMAT(HIRE_DATE, '%Y/%m') = DATE_FORMAT(NOW(), '%Y/%m') GROUP BY CONTRACT_ID,PLAN_LIST) LRI LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID = LRI.CONTRACT_ID AND LRP.PLAN_LIST = LRI.PLAN_LIST WHERE DATE_FORMAT(LRP.PLAN_DATE, '%Y/%m') > DATE_FORMAT(NOW(), '%Y/%m') GROUP BY LRI.CONTRACT_ID) LRI2 ON LRI2.CONTRACT_ID = LRP.CONTRACT_ID LEFT JOIN (SELECT LFRA.CONTRACT_ID,SUM(IFNULL(LRI2.CORPUS, 0))-SUM(IFNULL(HIS.CORPUS, 0)) AS YNQBZCJE FROM LC_FUND_RENT_ADJUST LFRA LEFT JOIN (SELECT CONTRACT_ID,MAX(PLAN_LIST) AS PLAN_LIST,MAX(HIRE_DATE) AS HIRE_DATE FROM LC_RENT_INCOME GROUP BY CONTRACT_ID) LRI ON LRI.CONTRACT_ID = LFRA.CONTRACT_ID LEFT JOIN (SELECT CONTRACT_ID,HIRE_DATE,SUM(CORPUS) AS CORPUS FROM LC_RENT_INCOME GROUP BY CONTRACT_ID,HIRE_DATE) LRI2 ON LRI2.CONTRACT_ID = LRI.CONTRACT_ID AND DATE_FORMAT(LRI2.HIRE_DATE,'%Y/%m')=DATE_FORMAT(LRI.HIRE_DATE,'%Y/%m') LEFT JOIN (SELECT CONTRACT_ID,PLAN_DATE,SUM(CORPUS) AS CORPUS FROM LC_RENT_PLAN_HIS GROUP BY CONTRACT_ID,PLAN_DATE)HIS ON HIS.CONTRACT_ID=LRI2.CONTRACT_ID AND DATE_FORMAT(HIS.PLAN_DATE,'%Y/%m')=DATE_FORMAT(LRI2.HIRE_DATE,'%Y/%m') WHERE DATE_FORMAT(LRI.HIRE_DATE, '%Y/%m') = DATE_FORMAT(NOW(), '%Y/%m') GROUP BY LFRA.CONTRACT_ID) LFRA ON LFRA.CONTRACT_ID = LRP.CONTRACT_ID LEFT JOIN (SELECT LRP.CONTRACT_ID,SUM(IFNULL(LRI.CORPUS, 0.00)) AS XNBJCHJE FROM(SELECT CONTRACT_ID,PLAN_LIST,SUM(CORPUS) AS CORPUS FROM LC_RENT_INCOME WHERE DATE_FORMAT(HIRE_DATE, '%Y/%m') = DATE_FORMAT(NOW(), '%Y/%m') GROUP BY CONTRACT_ID,PLAN_LIST) LRI LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID = LRI.CONTRACT_ID AND LRP.PLAN_LIST = LRI.PLAN_LIST WHERE DATE_FORMAT(LRP.PLAN_DATE, '%Y/%m') < DATE_FORMAT(NOW(), '%Y/%m') GROUP BY LRP.CONTRACT_ID) LRI3 ON LRI3.CONTRACT_ID = LRP.CONTRACT_ID LEFT JOIN (SELECT CONTRACT_ID,SUM(IFNULL(CORPUS, 0)) AS DYHSKZE FROM LC_RENT_INCOME WHERE DATE_FORMAT(HIRE_DATE, '%Y/%m') = DATE_FORMAT(NOW(), '%Y/%m') GROUP BY CONTRACT_ID) LRI4 ON LRI4.CONTRACT_ID = LRP.CONTRACT_ID GROUP BY DATE_FORMAT(LFI.FACT_DATE, '%Y/%m')) LFI ON LFI.FACT_DATE <= B1.REPORT_MONTH)";
int con = Sqlca.executeSQL(insertSql);
Sqlca.commit();
logger.info("静态池数据跑批成功,《《《条数:"+con+"《《《《时间:"+create_time+"《《《"+insertSql);
logger.info("静态池数据跑批成功,《《《条数:"+con+"《《《《时间:"+create_time+"《《《"+insertSql);
logger.info("静态池数据跑批成功,《《《条数:"+con+"《《《《时间:"+create_time+"《《《"+insertSql);
}catch(Exception e){
logger.info("<<<<<<<<<<<<<<<<<<<<<<静态池数据跑批定时任务执行异常>>>>>>>>>>>>>>>>>>>>>>");
logger.info("<<<<<<<<<<<<<<<<<<<<<<静态池数据跑批定时任务执行异常>>>>>>>>>>>>>>>>>>>>>>");
logger.info("<<<<<<<<<<<<<<<<<<<<<<静态池数据跑批定时任务执行异常>>>>>>>>>>>>>>>>>>>>>>");
try {
Sqlca.rollback();
} catch (JBOException e1) {
e1.printStackTrace();
}
e.printStackTrace();
}finally {
if(Sqlca!=null) {
try {
Sqlca.commit();
Sqlca.disConnect();
} catch (JBOException e) {
e.printStackTrace();
}
}
}
}
}