fix:月度资金流入表优化

This commit is contained in:
maliang 2020-11-19 13:39:25 +08:00
parent 6d38d75ae2
commit d270fd7fcf

View File

@ -44,26 +44,49 @@ public class ReportRentMonth implements Job{
logger.info("【月度资金流入表】【ReportRentMonth】插入数据<<<<<<<<<<<<<");
Sqlca = Transaction.createTransaction(CacheLoaderFactory.getDataSource());
//初始化信审考核明细表
String deleteSql="delete from report_rent_month where report_month='"+month+"'";
String deleteSql="delete from report_rent_month where report_month='"+month+"' and data_flag='0'";
String insertSql="INSERT INTO report_rent_month ( report_month, report_date, rent, corpus, " +
"interest, all_remain_corpus, fact_rent, fact_corpus, fact_interest, fact_penalty, contract_count ) " +
"SELECT '"+month+"' AS report_month,'"+today+"' AS report_date,a1.rent,a1.corpus,a1.interest," +
"a2.all_remain_corpus,a3.fact_rent,a3.fact_corpus,a3.fact_interest,a3.fact_penalty,a2.contract_count " +
"FROM (SELECT 'month' AS report_month,sum( rrp.rent ) rent,sum( rrp.corpus ) corpus,sum( rrp.interest ) interest " +
"FROM report_rent_plan rrp,lb_contract_info lci " +
"WHERE rrp.contract_number = lci.CONTRACT_NUMBER AND lci.CONTRACT_STATUS >= 31 AND lci.CONTRACT_STATUS < 100 " +
"AND rrp.plan_date LIKE '%"+month+"%' ) a1," +
"(SELECT 'month' AS report_month,sum( vcorpusover ) all_remain_corpus,count( rrp.contract_number ) contract_count " +
"FROM contract_statis_car rrp,lb_contract_info lci " +
"WHERE rrp.contract_number = lci.CONTRACT_NUMBER " +
"AND lci.businesstype = '1' AND lci.CONTRACT_STATUS >= 31 AND lci.CONTRACT_STATUS < 100 ) a2," +
"(SELECT 'month' AS report_month,sum( lri.rent ) fact_rent,sum( lri.corpus ) fact_corpus," +
"sum( lri.interest ) fact_interest,sum( lri.penalty ) fact_penalty " +
"FROM LC_RENT_INCOME lri LEFT JOIN LB_CONTRACT_INFO lci ON lri.contract_id = lci.id " +
"WHERE lci.businesstype = '1' AND lri.hire_date LIKE '%"+month+"%' ) a3 " +
"WHERE a1.report_month = a2.report_month AND a1.report_month = a3.report_month";
"interest, all_remain_corpus, fact_rent, fact_corpus, fact_interest, fact_penalty, " +
"contract_count,sdhandling_charge,sdnominal_price,fact_money ,data_flag,subjectname,agreed_datepenalty) " +
"SELECT '"+month+"' AS report_month,'"+today+"' AS report_date," +
"a.rent+b.rent rent,a.corpus+b.corpus corpus,a.interest+b.interest interest,a.ALL_REMAIN_CORPUS+b.ALL_REMAIN_CORPUS ALL_REMAIN_CORPUS," +
"a3.fact_rent fact_rent,a3.fact_corpus,a3.fact_interest fact_interest,a3.fact_penalty," +
"a.contract_count+b.contract_count contract_count,a.SDHANDLING_CHARGE,a.SDNOMINAL_PRICE," +
"a3.fact_rent+a3.fact_penalty+a.AGREED_DATEPENALTY+a.SDHANDLING_CHARGE+a.SDNOMINAL_PRICE fact_money,0,a.subjectname,a.AGREED_DATEPENALTY" +
" from (select 'month' AS report_month,nvl(sum(t.rent),0) rent,nvl(sum(t.corpus),0) corpus,nvl(sum(t.interest),0) interest ," +
" nvl(sum(t.ALL_REMAIN_CORPUS ),0) ALL_REMAIN_CORPUS,nvl(count(t.CONTRACT_ID),0) contract_count," +
" nvl(sum(O.SDHANDLING_CHARGE),0) SDHANDLING_CHARGE,nvl(sum(SDNOMINAL_PRICE),0) SDNOMINAL_PRICE," +
"nvl(sum(AGREED_DATEPENALTY),0) AGREED_DATEPENALTY,lci.subjectname " +
" from LC_RENT_PLAN_HIS t,LC_FUND_RENT_ADJUST_TEMP O ,lb_contract_info lci WHERE t.contract_id = lci.id and t.FLOWUNID=O.FLOWUNID " +
" and exists (select OBJECTNO from (select vfm.OBJECTNO,max(let.FACT_DATE) FACT_DATE from VI_FLOW_MONITORING vfm,LC_EBANK_TEMP let" +
" where vfm.OBJECTNO=let.flowunid and vfm.PHASENAME='结束' and vfm.FLOW_NAME='提前结清' group by vfm.OBJECTNO) vl " +
" where FACT_DATE like '%"+month+"%' and vl.OBJECTNO=O.FLOWUNID) and t.PLAN_DATE like '%"+month+"%' group by lci.subjectname) a ," +
" (SELECT 'month' AS report_month,sum( rrp.rent ) rent,sum( rrp.corpus ) corpus,sum( rrp.interest ) interest ," +
" sum( rrp.ALL_REMAIN_CORPUS ) ALL_REMAIN_CORPUS,count(distinct rrp.contract_number) contract_count,lci.subjectname" +
" FROM report_rent_plan rrp,lb_contract_info lci " +
" WHERE rrp.contract_number = lci.CONTRACT_NUMBER AND lci.CONTRACT_STATUS >= 31 AND lci.CONTRACT_STATUS < 100 " +
" AND rrp.plan_date LIKE '%"+month+"%' group by lci.subjectname) b ," +
" (SELECT 'month' AS report_month,nvl(sum( lri.rent ),0) fact_rent,nvl(sum( lri.corpus ),0) fact_corpus, " +
" nvl(sum( lri.interest ),0) fact_interest,nvl(sum( lri.penalty ),0) fact_penalty,lci.subjectname " +
" FROM LC_RENT_INCOME lri LEFT JOIN LB_CONTRACT_INFO lci ON lri.contract_id = lci.id " +
" WHERE lci.businesstype = '1' AND lri.hire_date LIKE '%"+month+"%' group by lci.subjectname) a3 " +
" where a.report_month=b.report_month and a.report_month=a3.report_month" +
" and a.subjectname=b.subjectname and a.subjectname=a3.subjectname"
;
String deleteSql2="delete from report_rent_month where data_flag='1'";
String insertSql2="INSERT INTO report_rent_month(report_month, report_date,rent,corpus,interest,all_remain_corpus,data_flag,subjectname) " +
"SELECT left(rrp.PLAN_DATE, 7) report_month,'"+today+"' AS report_date,sum( rrp.rent ) rent,sum( rrp.corpus ) corpus," +
"sum( rrp.interest ) interest ,sum( rrp.ALL_REMAIN_CORPUS ) ALL_REMAIN_CORPUS,'1' ,lci.subjectname "+//,count(distinct rrp.contract_number) contract_count" +
" FROM report_rent_plan rrp,lb_contract_info lci " +
" WHERE rrp.contract_number = lci.CONTRACT_NUMBER AND lci.CONTRACT_STATUS >= 31 AND lci.CONTRACT_STATUS < 100 " +
" and str_to_date(replace(left(rrp.PLAN_DATE, 10), '/', '-'), '%Y-%m-%d') >=" +
" str_to_date('"+getNextMonthFirstDay()+"', '%Y-%m-%d') " +
" group by left(rrp.PLAN_DATE, 7),lci.subjectname";
Sqlca.executeSQL(new SqlObject(deleteSql));
Sqlca.executeSQL(new SqlObject(insertSql));
Sqlca.executeSQL(new SqlObject(deleteSql2));
Sqlca.executeSQL(new SqlObject(insertSql2));
Sqlca.commit();
}catch(Exception e){
logger.error("<<<<<<<<<<<<<<<<<<<<<<【月度资金流入表】【ReportRentMonth】插入数据>>>>>>>>>>>>>>>>>>>>>>>");
@ -85,8 +108,23 @@ public class ReportRentMonth implements Job{
}
}
/**
* 获得下月的第一天 格式yyyy/MM/dd
* @return
*/
public static String getNextMonthFirstDay(){
SimpleDateFormat dayFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.DAY_OF_MONTH,1);
calendar.add(Calendar.MONTH, 1);
return dayFormat.format(calendar.getTime());
}
public static void main(String[] args){
SimpleDateFormat dayFormat = new SimpleDateFormat("yyyy-MM-dd");
System.out.println("--"+dayFormat.format(new Date()).substring(0,7));
System.out.println("--"+getNextMonthFirstDay());
}
}