提交人:csx

提交时间:2025年12月22日
提交内容:计划编制报表还款调整
This commit is contained in:
root 2025-12-22 15:13:22 +08:00
parent 4c6244d80f
commit d3e19db6b3
1 changed files with 71 additions and 12 deletions

View File

@ -43,15 +43,13 @@ public class PlanReportPlugin extends AbstractReportListDataPlugin {
put("续贷", "fdetailext17");
put("新增融资", "fdetailext18");
put("预计存量金融债务余额", "fdetailext20");
put("归还性质", "fdetailext7");
put("计划金额", "fplanamt");
}};
private static final String DANGYUE_SELECT = "fbillno," +
"fstartdate_yyyyMM as dangyueqijian," +
"fbankcateid as fbankcateid1," +
"total_fdetailext12 as total_fdetailext12," +
"total_fdetailext13 as total_fdetailext13," +
"total_fdetailext15 as shkd_dytqhk," +
"total_fdetailext16 as shkd_dydqhk," +
"total_fdetailext17 as shkd_dyxd," +
"total_fdetailext18 as shkd_dyxzrz," +
"total_fdetailext20 as shkd_dyyjcljrzwye";
@ -59,12 +57,20 @@ public class PlanReportPlugin extends AbstractReportListDataPlugin {
private static final String XIAYUE_SELECT = "" +
"fstartdate_yyyyMM as xiayueqijian," +
"fbankcateid as fbankcateid," +
"total_fdetailext15 as shkd_xytqhk," +
"total_fdetailext16 as shkd_xydqhk," +
"total_fdetailext17 as shkd_xyxd," +
"total_fdetailext18 as shkd_xyxzrz," +
"total_fdetailext20 as shkd_xyyjcljrzwye";
private static final String GDZCBJ_DANGYUE_SELECT = "" +
"fbankcateid as fbankcateid2," +
"total_tqhk as shkd_dytqhk," +
"total_dqhk as shkd_dydqhk";
private static final String GDZCBJ_XIAYUE_SELECT = "" +
"fbankcateid as fbankcateid3," +
"total_tqhk as shkd_xytqhk," +
"total_dqhk as shkd_xydqhk";
@Override
public DataSet query(ReportQueryParam reportQueryParam, Object o) throws Throwable {
List<QFilter> listQFilter = ReportUtils.getListQFilter(reportQueryParam);
@ -93,8 +99,6 @@ public class PlanReportPlugin extends AbstractReportListDataPlugin {
//获取计划编制里的融资计划
QFilter qFilter = new QFilter("name", QCP.equals, "融资计划");
qFilter=qFilter.and(new QFilter("reportperiod",QCP.equals,shkd_qj.getLong("id")));
DynamicObject[] load = BusinessDataServiceHelper.load("fpm_report", "id", qFilter.toArray());
logger.info("找到:"+load.length+"个融资计划");
DynamicObject fpm_report = BusinessDataServiceHelper.loadSingle("fpm_report", qFilter.toArray());
if (fpm_report==null){
logger.info("融资计划未找到");
@ -127,8 +131,8 @@ public class PlanReportPlugin extends AbstractReportListDataPlugin {
DataSet dataSet_sum = DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"),
"SELECT\n" +
""+zdm.get("金融机构")+" AS bankcate,\n" +
"SUM(fdetailext12) AS shkd_cljrzwye,\n" +
"SUM(fdetailext13) AS shkd_yxsx\n" +
"SUM("+zdm.get("存量金融债务余额")+") AS shkd_cljrzwye,\n" +
"SUM("+zdm.get("有效授信(流贷)")+") AS shkd_yxsx\n" +
"FROM\n" +
"t_fpm_reportdatadetail\n" +
"WHERE\n" +
@ -136,6 +140,33 @@ public class PlanReportPlugin extends AbstractReportListDataPlugin {
"GROUP BY "+zdm.get("金融机构")+" ");//财务云
JoinDataSet join1 = finish.join(dataSet_sum, JoinType.LEFT);
finish = join1.on("shkd_jrjg", "bankcate").select(finish.getRowMeta().getFieldNames(),new String[]{"shkd_cljrzwye", "shkd_yxsx"}).finish();
//获取刚兑支出-本金
QFilter qFilter1 = new QFilter("name", QCP.equals, "刚兑支出-本金");
qFilter1=qFilter1.and(new QFilter("reportperiod",QCP.equals,shkd_qj.getLong("id")));
DynamicObject gdzcbj = BusinessDataServiceHelper.loadSingle("fpm_report", qFilter1.toArray());
if (gdzcbj!=null){
long gdzcbjid = gdzcbj.getLong("id");
StringBuilder gdzcbjdangyuesqlBuilder=getgdzcbjsql(gdzcbjid,zdm,dangyue,shkd_km);
DataSet gdzcbjdangyueres = DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"), gdzcbjdangyuesqlBuilder.toString());//财务云
gdzcbjdangyueres= gdzcbjdangyueres.select(GDZCBJ_DANGYUE_SELECT);
JoinDataSet join2 = finish.join(gdzcbjdangyueres, JoinType.FULL);
finish = join2.on("shkd_jrjg", "fbankcateid2").select(finish.getRowMeta().getFieldNames(),new String[]{"fbankcateid2","shkd_dytqhk", "shkd_dydqhk"}).finish();
finish=finish.updateField("shkd_jrjg","(case when shkd_jrjg!=null and shkd_jrjg!=' ' then shkd_jrjg else fbankcateid2 end)");
StringBuilder gdzcbjxiayuesqlBuilder=getgdzcbjsql(gdzcbjid,zdm,xiayueyue,shkd_km);
DataSet gdzcbjxiayueres = DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"), gdzcbjxiayuesqlBuilder.toString());//财务云
gdzcbjxiayueres= gdzcbjxiayueres.select(GDZCBJ_XIAYUE_SELECT);
JoinDataSet join3 = finish.join(gdzcbjxiayueres, JoinType.FULL);
finish = join3.on("shkd_jrjg", "fbankcateid3").select(finish.getRowMeta().getFieldNames(),new String[]{"fbankcateid3","shkd_xytqhk", "shkd_xydqhk"}).finish();
finish=finish.updateField("shkd_jrjg","(case when shkd_jrjg!=null and shkd_jrjg!=' ' then shkd_jrjg else fbankcateid3 end)");
}else {
finish=finish.addField("0","shkd_dytqhk");
finish=finish.addField("0","shkd_dydqhk");
finish=finish.addField("0","shkd_xytqhk");
finish=finish.addField("0","shkd_xydqhk");
}
//小计
finish=finish.addField("(case when shkd_dyxd!=null then shkd_dyxd else 0 end)+(case when shkd_dyxzrz!=null then shkd_dyxzrz else 0 end)-(case when shkd_dytqhk!=null then shkd_dytqhk else 0 end)-(case when shkd_dydqhk!=null then shkd_dydqhk else 0 end)","shkd_dyxj");
finish=finish.addField("(case when shkd_xyxd!=null then shkd_xyxd else 0 end)+(case when shkd_xyxzrz!=null then shkd_xyxzrz else 0 end)-(case when shkd_xytqhk!=null then shkd_xytqhk else 0 end)-(case when shkd_xydqhk!=null then shkd_xydqhk else 0 end)","shkd_xyxj");
@ -149,6 +180,36 @@ public class PlanReportPlugin extends AbstractReportListDataPlugin {
return finish;
}
private StringBuilder getgdzcbjsql(long id, Map<String, String> zdm, Map<String, Date> dateMap, DynamicObject shkd_km) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String start = sdf.format(dateMap.get("start"));
String end = sdf.format(dateMap.get("end"));
StringBuilder sqlBuilder = new StringBuilder("/*dialect*/ ");
sqlBuilder.append("" +
"//合计\n" +
"SELECT\n" +
"t1.fbillno as fbillno,\n" +
" DATE_FORMAT(t4.fstartdate, '%Y%m') AS fstartdate_yyyyMM, -- 按照年月分组\n" +
" t2."+zdm.get("金融机构")+" as fbankcateid, -- 金融机构\n" +
" SUM(CASE WHEN t2."+zdm.get("归还性质")+" = '提前还款' THEN t3."+zdm.get("计划金额")+" ELSE 0 END) AS total_tqhk, --提前还款总和\n" +
" SUM(CASE WHEN t2."+zdm.get("归还性质")+" = '到期还款' THEN t3."+zdm.get("计划金额")+" ELSE 0 END) AS total_dqhk --到期还款总和\n" +
"FROM\n" +
" t_fpm_report t1 -- 主表\n" +
"INNER JOIN t_fpm_reportdatadetail t2 ON t1.fid = t2.fid -- 明细数据\n" +
"INNER JOIN t_fpm_reportdatamain t3 ON t2.fmaindimdataid = t3.FEntryID -- 维度表\n" +
"INNER JOIN t_fpm_member_e t4 ON t3.fperiodmemid = t4.fid -- 期间维度\n" +
"WHERE\n" +
" t1.fid = "+id+" AND\n" +
" t4.fstartdate>='"+start+"' AND\n" +
" t4.fstartdate<='"+end+"' AND\n" +
" t2."+zdm.get("金融机构")+" IS NOT NULL AND t2."+zdm.get("金融机构")+"!=' ' \n");
sqlBuilder.append("GROUP BY\n" +
" DATE_FORMAT(t4.fstartdate, '%Y%m'), -- 直接在 GROUP BY 中使用原始表达式\n" +
" t2."+zdm.get("金融机构")+", -- 按照金融机构分组\n" +
" t1.fbillno");
return sqlBuilder;
}
private StringBuilder getsql(long id, Map<String, String> zdm, Map<String, Date> dateMap,DynamicObject shkd_km) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
@ -161,8 +222,6 @@ public class PlanReportPlugin extends AbstractReportListDataPlugin {
"t1.fbillno as fbillno,\n" +
" DATE_FORMAT(t4.fstartdate, '%Y%m') AS fstartdate_yyyyMM, -- 按照年月分组\n" +
" t2."+zdm.get("金融机构")+" as fbankcateid, -- 金融机构\n" +
" SUM(t2."+zdm.get("存量金融债务余额")+") AS total_fdetailext12, -- 存量金融债务余额总和\n" +
" SUM(t2."+zdm.get("有效授信(流贷)")+") AS total_fdetailext13, -- 有效授信总和(流贷)\n" +
" SUM(t2."+zdm.get("提前还款")+") AS total_fdetailext15, -- 提前还款总和\n" +
" SUM(t2."+zdm.get("到期还款")+") AS total_fdetailext16, -- 到期还款总和\n" +
" SUM(t2."+zdm.get("续贷")+") AS total_fdetailext17, -- 续贷总和\n" +