From c8f35fe54d79edb70c41d028517da7e1868bb2de Mon Sep 17 00:00:00 2001 From: root Date: Tue, 2 Dec 2025 21:45:03 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B8=A6=E6=81=AF=E5=80=BA=E5=8A=A1=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=E6=8A=A5=E8=A1=A8=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../report/InterestBearingFromListPlugin.java | 4 +- .../report/InterestBearingRptListPlugin.java | 79 ++++++++++++++++--- 2 files changed, 72 insertions(+), 11 deletions(-) diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/InterestBearingFromListPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/InterestBearingFromListPlugin.java index 4810d98..e25f3bb 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/InterestBearingFromListPlugin.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/InterestBearingFromListPlugin.java @@ -242,7 +242,9 @@ public class InterestBearingFromListPlugin extends AbstractReportFormPlugin impl Object dataSel = this.getModel().getValue("shkd_datasel"); //数据查询维度 if(dataSel == null || dataSel.toString().equals("data1")){ for(SummaryEvent event : summaryEvents){ - if(event.getColumnName().equals("drawamount") || event.getColumnName().contains("selyear")){ + if(event.getColumnName().equals("drawamount") || event.getColumnName().contains("selyear") + || event.getColumnName().equals("sumbj") || event.getColumnName().equals("sumlx") + || event.getColumnName().equals("bnyghlx")){ BigDecimal sumAmt = ((BigDecimal)event.getSrcSummaryValue()).setScale(2,RoundingMode.HALF_UP); event.setFormatSummaryValue(sumAmt); break; diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/InterestBearingRptListPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/InterestBearingRptListPlugin.java index f927e96..6ed9ac2 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/InterestBearingRptListPlugin.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/InterestBearingRptListPlugin.java @@ -403,18 +403,18 @@ public class InterestBearingRptListPlugin extends AbstractReportListDataPlugin { "AND t1.FBILLNO = s1.FBILLNO \n" + "GROUP BY to_char(s6.fbizdate,'yyyy') having to_char(s6.fbizdate,'yyyy') = '"+year+"')"; //年末未还金额 - String selYearNmAmt = "(SELECT sum(sum(isnull(s1.fnotrepayamount,0)))\n" + + String selYearNmAmt = "(SELECT sum(sum(isnull(s1.fnotrepayamount,0))) yearwhamt\n" + "FROM t_cfm_loanbill s1 \n" + "INNER JOIN t_cfm_loanbill_e s2 ON s1.fid = s2.FID \n" + "WHERE (s2.floantype = 'loan' OR s2.floantype = 'sl' OR s2.floantype = 'bond') \n" + "AND (s1.fdrawtype = 'drawed' OR s1.fdrawtype = 'partpayment') \n" + "AND t1.FBILLNO = s1.FBILLNO \n" + - "GROUP BY to_char(s2.fstartintdate,'yyyy') having to_char(s2.fstartintdate,'yyyy') > '"+year+"')"; + "GROUP BY to_char(s2.fstartintdate,'yyyy') having to_char(s2.fstartintdate,'yyyy') = '"+year+"')"; DataSet selData = null; //业务单元数据集 DataSet orgDataSet = QueryServiceHelper.queryDataSet(this.getClass().getSimpleName(),"bos_org","id,number as orgnumber,name as orgname", null, null); // 查询提款处理和债券发行。这两PC布局属于一个单据 - String sql = "/*dialect*/ SELECT t1.FBILLNO shkd_billno,t1.fk_shkd_ejgs shkd_ejgs,t2.forgid orgid,\n" + + String sql = "/*dialect*/ SELECT t1.fid shkd_billid,t1.FBILLNO shkd_billno,t1.fk_shkd_ejgs shkd_ejgs,t2.forgid orgid,\n" + "CASE \n" + " \tWHEN (t1.fk_shkd_zqrzh IS NULL OR t1.fk_shkd_rzqd == '') THEN ' '\n" + " END shkd_zqrzh,\n" + @@ -599,6 +599,9 @@ public class InterestBearingRptListPlugin extends AbstractReportListDataPlugin { sql +=" "+selLxAmt(" >= '2035'")+"/100000000 sellx2035,\n" ;//2035年之后债务利息 sql +=" isnull(t1.fdrawamount,0)/100000000 drawamount,\n" ; } + sql +=" 0.01 yghlx,\n" ;//已归还利息 + sql +=" 0.01 sumbj,\n" ;//前面年份本金合计 + sql +=" 0.01 sumlx,\n" ;//前面年份利息合计 sql +=" 0.01 sumamt,\n" ; sql +=" 0.01 sumzhrzcb,\n" ; sql +=" 0.01 sumzhrzqx,\n" ; @@ -708,20 +711,50 @@ public class InterestBearingRptListPlugin extends AbstractReportListDataPlugin { //数据表查询 DataSet dataRes = DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"), selSql);//财务云 JoinDataSet join1 = dataRes.join(orgDataSet, JoinType.LEFT);//连接二级组织 - DataSet dataRes1 = join1.on("shkd_ejgs","id").select(new String[]{"shkd_billno","orgname shkd_ejgs","orgid","shkd_zqrzh","textcreditor","shkd_rzpz1","shkd_rzpzmx", - "shkd_rzqd","shkd_blxm","shkd_dybbkmmc","term","xcday","xcdate","startintdate","expiredate","selyearncamt+selyearaddamt-selyearyhkamt selyearncamt", + DataSet dataRes1 = join1.on("shkd_ejgs","id").select(new String[]{"shkd_billid","shkd_billno","orgname shkd_ejgs","orgid","shkd_zqrzh","textcreditor","shkd_rzpz1","shkd_rzpzmx", + "shkd_rzqd","shkd_blxm","shkd_dybbkmmc","term","xcday","xcdate","startintdate","expiredate","NullToZero(selyearncamt)+NullToZero(selyearaddamt)-NullToZero(selyearyhkamt) selyearncamt", "selyearaddamt","selyearyhkamt","selyearnmamt","drawamount","sumamt","sumzhrzcb","sumzhrzqx","zhrzcb","zhrzqx","SubStr(guaranteeway, 1, LEN(guaranteeway)-2) guaranteeway", "dbwkm","dbwname","lilv","remark", "selbj2025","sellx2025","selbj2026","sellx2026","selbj2027","sellx2027","selbj2028","sellx2028","selbj2029","sellx2029","selbj2030","sellx2030", - "selbj2031","sellx2031","selbj2032","sellx2032","selbj2033","sellx2033","selbj2034","sellx2034","selbj2035","sellx2035"}).finish(); + "selbj2031","sellx2031","selbj2032","sellx2032","selbj2033","sellx2033","selbj2034","sellx2034","selbj2035","sellx2035", + "NullToZero(selbj2025)+NullToZero(selbj2026)+NullToZero(selbj2027)+NullToZero(selbj2028)+NullToZero(selbj2029)+NullToZero(selbj2030)+"+ + "NullToZero(selbj2031)+NullToZero(selbj2032)+NullToZero(selbj2033)+NullToZero(selbj2034)+NullToZero(selbj2035) sumbj", + "NullToZero(sellx2025)+NullToZero(sellx2026)+NullToZero(sellx2027)+NullToZero(sellx2028)+NullToZero(sellx2029)+NullToZero(sellx2030)+"+ + "NullToZero(sellx2031)+NullToZero(sellx2032)+NullToZero(sellx2033)+NullToZero(sellx2034)+NullToZero(sellx2035) sumlx","yghlx"}).finish(); JoinDataSet join2 = dataRes1.join(orgDataSet, JoinType.LEFT);//连接融资主体 - DataSet dataRes2 = join2.on("orgid","id").select(new String[]{"shkd_billno","shkd_ejgs","orgname orgid","shkd_zqrzh","textcreditor","shkd_rzpz1","shkd_rzpzmx","shkd_rzqd", + DataSet dataRes2 = join2.on("orgid","id").select(new String[]{"shkd_billid","shkd_billno","shkd_ejgs","orgname orgid","shkd_zqrzh","textcreditor","shkd_rzpz1","shkd_rzpzmx","shkd_rzqd", "shkd_blxm","shkd_dybbkmmc","term","xcday","xcdate","startintdate","expiredate","drawamount","selyearncamt", "selyearaddamt","selyearyhkamt","selyearnmamt","sumamt","sumzhrzcb","sumzhrzqx","zhrzcb","zhrzqx","guaranteeway","dbwkm","dbwname","lilv","remark", "selbj2025","sellx2025","selbj2026","sellx2026","selbj2027","sellx2027","selbj2028","sellx2028","selbj2029","sellx2029","selbj2030","sellx2030", - "selbj2031","sellx2031","selbj2032","sellx2032","selbj2033","sellx2033","selbj2034","sellx2034","selbj2035","sellx2035"}).finish(); + "selbj2031","sellx2031","selbj2032","sellx2032","selbj2033","sellx2033","selbj2034","sellx2034","selbj2035","sellx2035","sumbj","sumlx","yghlx"}).finish(); + String selhxSql = " /*dialect*/ select"; + //计算元 + if(amtUnit == null || amtUnit.equals("yuan")){ + //元 + selhxSql +=" sum(isnull(factualinstamt,0)) selyghlx,\n" ;//本年已归还利息year + }else if(amtUnit.equals("qyuan")){ + //千元 + selhxSql +=" sum(isnull(factualinstamt,0))/1000 selyghlx,\n" ;//本年已归还利息year + }else if(amtUnit.equals("wyuan")){ + //万元 + selhxSql +=" sum(isnull(factualinstamt,0))/10000 selyghlx,\n" ;//本年已归还利息year + }else if(amtUnit.equals("bwyuan")){ + //百万元 + selhxSql +=" sum(isnull(factualinstamt,0))/1000000 selyghlx,\n" ;//本年已归还利息year + }else if(amtUnit.equals("yyuan")){ + //亿元 + selhxSql +=" sum(isnull(factualinstamt,0))/100000000 selyghlx,\n" ;//本年已归还利息year + } + selhxSql +="s1.fsourcebillid souid from t_cfm_interestbill s1 where s1.finstbillctg = 'payinterst' and to_char(s1.fbizdate,'yyyy') = '"+year+"' group by s1.fsourcebillid "; + DataSet selhxDate = DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"), selhxSql);//财务云 + JoinDataSet join3 = dataRes2.join(selhxDate, JoinType.LEFT);//连接归还利息 + DataSet dataRes3 = join3.on("shkd_billid","souid").select(new String[]{"shkd_billid","shkd_billno","shkd_ejgs","orgid","shkd_zqrzh","textcreditor","shkd_rzpz1","shkd_rzpzmx","shkd_rzqd", + "shkd_blxm","shkd_dybbkmmc","term","xcday","xcdate","startintdate","expiredate","drawamount","selyearncamt", + "selyearaddamt","selyearyhkamt","selyearnmamt","sumamt","sumzhrzcb","sumzhrzqx","zhrzcb","zhrzqx","guaranteeway","dbwkm","dbwname","lilv","remark", + "selbj2025","sellx2025","selbj2026","sellx2026","selbj2027","sellx2027","selbj2028","sellx2028","selbj2029","sellx2029","selbj2030","sellx2030", + "selbj2031","sellx2031","selbj2032","sellx2032","selbj2033","sellx2033","selbj2034","sellx2034","selbj2035","sellx2035","sumbj","sumlx","selyghlx yghlx"}).finish(); //根据结果集重新计算两个日期相差的格式 - DynamicObjectCollection srcCollection = ORM.create().toPlainDynamicObjectCollection(dataRes2.copy()); + DynamicObjectCollection srcCollection = ORM.create().toPlainDynamicObjectCollection(dataRes3.copy()); BigDecimal sumCb = BigDecimal.ZERO; //综合融资成本 BigDecimal sumQx = BigDecimal.ZERO; //综合融资期限 for(int i = 0;i