From d3e19db6b31bbbd0a97f33f7f0c88c21abe57796 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 22 Dec 2025 15:13:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BA=BA=EF=BC=9Acsx=20?= =?UTF-8?q?=E6=8F=90=E4=BA=A4=E6=97=B6=E9=97=B4=EF=BC=9A2025=E5=B9=B412?= =?UTF-8?q?=E6=9C=8822=E6=97=A5=20=E6=8F=90=E4=BA=A4=E5=86=85=E5=AE=B9?= =?UTF-8?q?=EF=BC=9A=E8=AE=A1=E5=88=92=E7=BC=96=E5=88=B6=E6=8A=A5=E8=A1=A8?= =?UTF-8?q?=E8=BF=98=E6=AC=BE=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sys/plugin/report/PlanReportPlugin.java | 83 ++++++++++++++++--- 1 file changed, 71 insertions(+), 12 deletions(-) diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/PlanReportPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/PlanReportPlugin.java index 4a79523..6848972 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/PlanReportPlugin.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/PlanReportPlugin.java @@ -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 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 zdm, Map 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 zdm, Map 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" +