From 139b678fb5381c95289988713063ffee169eb868 Mon Sep 17 00:00:00 2001 From: csx <1981897232@qq.com> Date: Tue, 20 Jan 2026 17:14:16 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BA=BA=EF=BC=9A=E9=99=88?= =?UTF-8?q?=E7=BB=8D=E9=91=AB=20=E6=97=A5=E6=9C=9F=EF=BC=9A2025/01/09=2017?= =?UTF-8?q?=EF=BC=9A30=20=E5=86=85=E5=AE=B9:=E6=8E=A8=E9=80=81=E5=85=B1?= =?UTF-8?q?=E4=BA=AB=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../report/InterestBearingRptListPlugin.java | 1470 +++++++++++++++++ 1 file changed, 1470 insertions(+) create mode 100644 sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/InterestBearingRptListPlugin.java 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 new file mode 100644 index 0000000..6b66d82 --- /dev/null +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/InterestBearingRptListPlugin.java @@ -0,0 +1,1470 @@ +package shkd.sys.sys.plugin.report; + +import kd.bos.algo.*; +import kd.bos.algo.input.CollectionInput; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.dataentity.entity.LocaleString; +import kd.bos.dataentity.metadata.clr.DataEntityPropertyCollection; +import kd.bos.db.DB; +import kd.bos.db.DBRoute; +import kd.bos.entity.report.*; +import kd.bos.logging.Log; +import kd.bos.logging.LogFactory; +import kd.bos.orm.ORM; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.servicehelper.QueryServiceHelper; +import kd.bos.util.StringUtils; +import kd.tmc.fbp.common.constant.Constants; +import kd.tmc.fbp.common.enums.BillStatusEnum; +import kd.tmc.fbp.common.helper.GuaranteeUseHelper; +import kd.tmc.fbp.common.helper.TmcBusinessBaseHelper; +import kd.tmc.fbp.common.helper.TmcDataServiceHelper; +import kd.tmc.fbp.common.util.EmptyUtil; +import kd.tmc.gm.common.helper.GuaranteeContractHelper; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; + +/** + * 唐天龙-带息债务统计表 + */ +public class InterestBearingRptListPlugin extends AbstractReportListDataPlugin { + public static final SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd"); + public static final SimpleDateFormat sdfDateYear = new SimpleDateFormat("yyyy"); + private static final Log logger = LogFactory.getLog(InterestBearingRptListPlugin.class); + + /** + * 过滤条件查询 + * @param reportQueryParam + * @param o + * @return + * @throws Throwable + */ + @Override + public DataSet query(ReportQueryParam reportQueryParam, Object o) throws Throwable { + // 获取过滤条件 + FilterInfo filterInfo = reportQueryParam.getFilter(); + FilterItemInfo bizDateFilter = filterInfo.getFilterItem("shkd_bizdate"); //日期 + FilterItemInfo amtUnitFilter = filterInfo.getFilterItem("shkd_amtunit"); //金额单位 + FilterItemInfo dateVarFilter = filterInfo.getFilterItem("shkd_datevar"); //期限数 + FilterItemInfo dateTypeFiler = filterInfo.getFilterItem("shkd_datetype"); //期限类型 + FilterItemInfo dataSelFilter = filterInfo.getFilterItem("shkd_datasel"); //数据查询维度 + FilterItemInfo startDateCaseFilter = filterInfo.getFilterItem("shkd_startintdatecase"); //借款时间开始 + FilterItemInfo startDateEndFilter = filterInfo.getFilterItem("shkd_startintdateend"); //借款时间结束 + FilterItemInfo expireDateCaseFilter = filterInfo.getFilterItem("shkd_expiredatecase"); //到期时间开始 + FilterItemInfo expireDateEndFilter = filterInfo.getFilterItem("shkd_expiredateend"); //到期时间结束 + FilterItemInfo ejCompanyFilter = filterInfo.getFilterItem("shkd_ejcompany"); //二级公司 + FilterItemInfo rzztFilter = filterInfo.getFilterItem("shkd_rzzt"); //融资主体 + FilterItemInfo zqrzhFilter = filterInfo.getFilterItem("shkd_zqrzh"); //金融机构(债权人总行) + FilterItemInfo rzpzFilter = filterInfo.getFilterItem("shkd_rzpz"); //融资品种 + FilterItemInfo finproductFilter = filterInfo.getFilterItem("shkd_finproduct"); //融资品种明细 + FilterItemInfo rzqdFilter = filterInfo.getFilterItem("shkd_rzqd"); //融资渠道 + FilterItemInfo blxmFilter = filterInfo.getFilterItem("shkd_blxm"); //表列项目 + FilterItemInfo dybbkmmcFilter = filterInfo.getFilterItem("shkd_dybbkmmc"); //对应报表科目项目 + FilterItemInfo guaranteewayFilter = filterInfo.getFilterItem("shkd_guaranteeway"); //用信方式(担保) + FilterItemInfo yearFilter = filterInfo.getFilterItem("shkd_year"); //年份 + FilterItemInfo stratyearFilter = filterInfo.getFilterItem("shkd_stratyear"); //还本付息开始年份 + + //下拉列表值查询不同类型数据 + String amtUnit = null; //金额单位 yuan/qyuan/wyuan/bwyuan/yyuan + String dateType = null; //期限类型 year/month/day + String dataSel = null; //数据查询维度 数据表:data1/融资主体汇总:datagp1/报表科目汇总:datagp2/金融机构汇总:datagp3/借款期限汇总:datagp4/到期时间汇总:datagp5/融资渠道汇总:datagp6 + String bizDate = null; //日期 + String dateVar = null; //期限数 + String startDateCase = null; //借款时间开始 + String startDateEnd = null; //借款时间结束 + String expireDateCase = null; //到期时间开始 + String expireDateEnd = null; //到期时间结束 + String whereEjCom = ""; //二级公司 + String whereRzzt = ""; //融资主体 + String whereZqrzh = ""; //金融机构(债权人总行) + String whereRzpz = ""; //融资品种 + String whereFinproduct = ""; //融资品种明细 + String whereRzqd = ""; //融资渠道 + String whereBlxm = ""; //表列项目 + String whereDybbkmmc = ""; //对应报表科目项目 + String whereGuaranteeway = ""; //用信方式(担保) + String year = null; //年份 + String stratyear = null; //还本付息开始年份 + + // 使用过滤条件创建QFilter + if(bizDateFilter != null && bizDateFilter.getValue() != null){ + bizDate = sdfDate.format(bizDateFilter.getValue()); //日期 + }else{ + bizDate = sdfDate.format(new Date()); //日期 + } + if(amtUnitFilter != null && amtUnitFilter.getValue() != null){ + amtUnit = amtUnitFilter.getValue().toString(); //金额单位 yuan/qyuan/wyuan/bwyuan/yyuan + } + if(dateVarFilter != null && dateVarFilter.getValue() != null){ + dateVar = dateVarFilter.getValue().toString(); //期限数 + } + if(dateTypeFiler != null && dateTypeFiler.getValue() != null){ + dateType = dateTypeFiler.getValue().toString(); //期限类型 year/month/day + } + if(dataSelFilter != null && dataSelFilter.getValue() != null){ + dataSel = dataSelFilter.getValue().toString(); //数据查询维度 数据表:data1/融资主体汇总:datagp1/报表科目汇总:datagp2/金融机构汇总:datagp3/借款期限汇总:datagp4/到期时间汇总:datagp5/融资渠道汇总:datagp6 + } + if(startDateCaseFilter != null && startDateCaseFilter.getValue() != null){ + startDateCase = sdfDate.format(startDateCaseFilter.getValue()); //借款时间开始 + } + if(startDateEndFilter != null && startDateEndFilter.getValue() != null){ + startDateEnd = sdfDate.format(startDateEndFilter.getValue()); //借款时间结束 + } + if(expireDateCaseFilter != null && expireDateCaseFilter.getValue() != null){ + expireDateCase = sdfDate.format(expireDateCaseFilter.getValue()); //到期时间开始 + } + if(expireDateEndFilter != null && expireDateEndFilter.getValue() != null){ + expireDateEnd = sdfDate.format(expireDateEndFilter.getValue()); //到期时间结束 + } + //二级公司 + if(ejCompanyFilter != null && ejCompanyFilter.getValue() != null){ + DynamicObjectCollection erCom = (DynamicObjectCollection) ejCompanyFilter.getValue(); + for(int i = 0;i= '"+jdFirstDay+"'\n" + + " AND to_char(t2.fstartintdate,'yyyy-MM-dd') <= '"+jdLastDay+"'\n" + + " GROUP BY fk_shkd_blxm,t4.fname) s3 ON s1.shkd_blxm = s3.shkd_blxm AND s1.shkd_rzpzmx = s3.shkd_rzpzmx\n" + + " LEFT JOIN (\n" + //本季度还款金额 + " SELECT CASE \n" + + " \tWHEN (t1.fk_shkd_blxm IS NULL OR t1.fk_shkd_blxm == ' ') THEN '无'\n" + + " \tWHEN (t1.fk_shkd_blxm == '01') THEN '权益融资'\n" + + " \tWHEN (t1.fk_shkd_blxm == '02') THEN '债务融资'\n" + + " \tELSE ' '\n" + + " END shkd_blxm,ISNULL(t4.fname,'无') shkd_rzpzmx,sum(t5.frepayamount) sumamt\n" + + " FROM t_cfm_loanbill t1 \n" + + " INNER JOIN t_cfm_loanbill_e t2 ON t1.fid = t2.FID \n" + + " LEFT JOIN t_cfm_financingvarieties t4 ON t1.ffinproductid = t4.fid\n" + + " inner JOIN t_cfm_repaymentbill_loans t5 ON t1.fid = t5.floanbillid\n" + + " inner JOIN t_cfm_repaymentbill t6 ON t5.fid = t6.fid\n" + + " WHERE (t2.floantype = 'loan' OR t2.floantype = 'sl' OR t2.floantype = 'bond') \n" + + " AND (t1.fdrawtype = 'drawed' OR t1.fdrawtype = 'partpayment') \n"+ //业务状态取 已发行/已提款和已部分还款 + " AND to_char(t6.fbizdate,'yyyy-MM-dd') >= '"+jdFirstDay+"'\n" + + " AND to_char(t6.fbizdate,'yyyy-MM-dd') <= '"+jdLastDay+"'\n" + + " GROUP BY fk_shkd_blxm,t4.fname) s4 ON s1.shkd_blxm = s4.shkd_blxm AND s1.shkd_rzpzmx = s4.shkd_rzpzmx\n" + + " LEFT JOIN (\n" + //本年提款金额 + " SELECT CASE \n" + + " \tWHEN (t1.fk_shkd_blxm IS NULL OR t1.fk_shkd_blxm == ' ') THEN '无'\n" + + " \tWHEN (t1.fk_shkd_blxm == '01') THEN '权益融资'\n" + + " \tWHEN (t1.fk_shkd_blxm == '02') THEN '债务融资'\n" + + " \tELSE ' '\n" + + " END shkd_blxm,ISNULL(t4.fname,'无') shkd_rzpzmx,sum(t1.fdrawamount) sumamt\n" + + " FROM t_cfm_loanbill t1 \n" + + " INNER JOIN t_cfm_loanbill_e t2 ON t1.fid = t2.FID \n" + + " LEFT JOIN t_cfm_financingvarieties t4 ON t1.ffinproductid = t4.fid\n" + + " WHERE (t2.floantype = 'loan' OR t2.floantype = 'sl' OR t2.floantype = 'bond') \n" + + " AND (t1.fdrawtype = 'drawed' OR t1.fdrawtype = 'partpayment') \n"+ //业务状态取 已发行/已提款和已部分还款 + " AND to_char(t2.fstartintdate,'yyyy') = '"+year+"'\n" + + " GROUP BY fk_shkd_blxm,t4.fname) s5 ON s1.shkd_blxm = s5.shkd_blxm AND s1.shkd_rzpzmx = s5.shkd_rzpzmx\n" + + " LEFT JOIN (\n" + //本年还款金额 + " SELECT CASE \n" + + " \tWHEN (t1.fk_shkd_blxm IS NULL OR t1.fk_shkd_blxm == ' ') THEN '无'\n" + + " \tWHEN (t1.fk_shkd_blxm == '01') THEN '权益融资'\n" + + " \tWHEN (t1.fk_shkd_blxm == '02') THEN '债务融资'\n" + + " \tELSE ' '\n" + + " END shkd_blxm,ISNULL(t4.fname,'无') shkd_rzpzmx,sum(t5.frepayamount) sumamt\n" + + " FROM t_cfm_loanbill t1 \n" + + " INNER JOIN t_cfm_loanbill_e t2 ON t1.fid = t2.FID \n" + + " LEFT JOIN t_cfm_financingvarieties t4 ON t1.ffinproductid = t4.fid\n" + + " inner JOIN t_cfm_repaymentbill_loans t5 ON t1.fid = t5.floanbillid\n" + + " inner JOIN t_cfm_repaymentbill t6 ON t5.fid = t6.fid\n" + + " WHERE (t2.floantype = 'loan' OR t2.floantype = 'sl' OR t2.floantype = 'bond') \n" + + " AND (t1.fdrawtype = 'drawed' OR t1.fdrawtype = 'partpayment') \n"+ //业务状态取 已发行/已提款和已部分还款 + " AND to_char(t6.fbizdate,'yyyy') = '"+year+"'\n" + + " GROUP BY fk_shkd_blxm,t4.fname) s6 ON s1.shkd_blxm = s6.shkd_blxm AND s1.shkd_rzpzmx = s6.shkd_rzpzmx\n" + + " LEFT JOIN (\n" + //季度后未融资提款金额 + " SELECT CASE \n" + + " \tWHEN (t1.fk_shkd_blxm IS NULL OR t1.fk_shkd_blxm == ' ') THEN '无'\n" + + " \tWHEN (t1.fk_shkd_blxm == '01') THEN '权益融资'\n" + + " \tWHEN (t1.fk_shkd_blxm == '02') THEN '债务融资'\n" + + " \tELSE ' '\n" + + " END shkd_blxm,ISNULL(t4.fname,'无') shkd_rzpzmx,sum(t1.fnotrepayamount) sumamt\n" + + " FROM t_cfm_loanbill t1 \n" + + " INNER JOIN t_cfm_loanbill_e t2 ON t1.fid = t2.FID \n" + + " LEFT JOIN t_cfm_financingvarieties t4 ON t1.ffinproductid = t4.fid\n" + + " WHERE (t2.floantype = 'loan' OR t2.floantype = 'sl' OR t2.floantype = 'bond') \n" + + " AND (t1.fdrawtype = 'drawed' OR t1.fdrawtype = 'partpayment') \n"+ //业务状态取 已发行/已提款和已部分还款 + " AND to_char(t2.fstartintdate,'yyyy-MM-dd') <= '"+jdLastDay+"'\n" + + " GROUP BY fk_shkd_blxm,t4.fname) s7 ON s1.shkd_blxm = s7.shkd_blxm AND s1.shkd_rzpzmx = s7.shkd_rzpzmx\n" + + " ORDER BY s1.shkd_blxm,s1.shkd_rzpzmx"; + DataSet dataSet = DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"), sql);//财务云 + // 分组后,进行合计(金额) + DataSet sumDataSet = dataSet.groupBy(new String[]{"shkd_blxmgp"}).sum("jdqianamt").sum("jdaddamt").sum("jdghamt").sum("yearaddamt").sum("yearghamt").sum("jdlastamt").finish(); + sumDataSet = sumDataSet.select("concat(shkd_blxmgp,'-金额合计') as shkd_blxmgp, jdqianamt,jdaddamt,jdghamt,yearaddamt,yearghamt,jdlastamt"); + // 由于分组计算之后,Dataset的字段少了一个,需要通过addField加回来,为之后union做准备 + sumDataSet = sumDataSet.addField("'-'", "shkd_rzpzmx"); + // 添加高亮字段,高亮字段将在界面规则里面生效 + dataSet = dataSet.addField("1", "shkd_light"); + sumDataSet = sumDataSet.addField("2", "shkd_light"); + // union前,需要保证两个dataSet的字段序列一致,因此这里对sumDataSet对象重新排列字段序列 + sumDataSet = sumDataSet.select("shkd_blxmgp,shkd_rzpzmx,jdqianamt,jdaddamt,jdghamt,yearaddamt,yearghamt,jdlastamt,shkd_light"); + // union,此时sumDataSet会续在dataSet的底部 + dataSet = dataSet.select("shkd_blxmgp,shkd_rzpzmx,jdqianamt,jdaddamt,jdghamt,yearaddamt,yearghamt,jdlastamt,shkd_light"); + DataSet unionDataSet = dataSet.union(sumDataSet); + // 按对应分组字段排序 + selData = unionDataSet.orderBy(new String[]{"shkd_blxmgp"}); + return selData; + } + + /** + * + * @param amtUnit 金额单位 + * @param dateType 日期类型 + * @param dataSel 数据类型 + * @param startDateCase 起始时间开始 + * @param startDateEnd 起始时间结束 + * @param expireDateCase 结束时间开始 + * @param expireDateEnd 结束时间结束 + * @return + */ + private DataSet selDataRows(String amtUnit, String dateType, String dataSel, String startDateCase, String startDateEnd, String expireDateCase, String expireDateEnd, + String whereEjCom,String whereRzzt,String whereZqrzh,String whereRzpz,String whereFinproduct,String whereRzqd,String whereBlxm,String whereDybbkmmc,String whereGuaranteeway, + String year) { + //年初未还金额 +// String selYearNcAmt1 = "(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+"')"; + String selYearNcAmt = "(SELECT s1.fdrawamount-sum(isnull(s3.fexdrawamount,0))\n" + + "FROM t_cfm_loanbill s1 \n" + + "INNER JOIN t_cfm_loanbill_e s2 ON s1.fid = s2.FID \n" + + "LEFT JOIN t_cfm_loanbill_rp_entry s3 ON s1.fid = s3.FID and to_char(s3.fexrepaymentdate,'yyyy') < '"+year+"'\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" + + "AND to_char(s2.fstartintdate,'yyyy') < '"+year+"'\n" + + "GROUP BY s1.fdrawamount)"; + + //年度新增金额 + String selYearAddAmt = "(SELECT sum(isnull(s1.fdrawamount,0))\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+"')"; + //年度已还金额 + String selYearYhkAmt = "(SELECT sum(isnull(s5.frepayamount,0)) sumamt\n" + + "FROM t_cfm_loanbill s1 \n" + + "INNER JOIN t_cfm_loanbill_e s2 ON s1.fid = s2.FID \n" + + "inner JOIN t_cfm_repaymentbill_loans s5 ON s1.fid = s5.floanbillid\n" + + "inner JOIN t_cfm_repaymentbill s6 ON s5.fid = s6.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 and s6.fbillstatus='C'\n" + + "GROUP BY to_char(s6.fbizdate,'yyyy') having to_char(s6.fbizdate,'yyyy') = '"+year+"')"; + //年末未还金额 + 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+"')"; + 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.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" + + "t2.ftextcreditor textcreditor,\n" + + " ISNULL(t7.fname,'无') shkd_rzpz1,t5.fname shkd_rzpzmx,\n" + + " CASE \n" + + " \tWHEN (t1.fk_shkd_rzqd IS NULL OR t1.fk_shkd_rzqd == ' ') THEN '无'\n" + + " \tWHEN (t1.fk_shkd_rzqd == '01') THEN '直接融资'\n" + + " \tWHEN (t1.fk_shkd_rzqd == '02') THEN '间接融资'\n" + + " \tELSE ' '\n" + + " END shkd_rzqd,\n" + + " CASE \n" + + " \tWHEN (t1.fk_shkd_blxm IS NULL OR t1.fk_shkd_blxm == ' ') THEN '无'\n" + + " \tWHEN (t1.fk_shkd_blxm == '01') THEN '权益融资'\n" + + " \tWHEN (t1.fk_shkd_blxm == '02') THEN '债务融资'\n" + + " \tELSE ' '\n" + + " END shkd_blxm,\n" + + " CASE \n" + + " \tWHEN (t1.fk_shkd_dybbkmmc IS NULL OR t1.fk_shkd_dybbkmmc == ' ') THEN '无'\n" + + " \tWHEN (t1.fk_shkd_dybbkmmc == '01') THEN '长期借款'\n" + + " \tWHEN (t1.fk_shkd_dybbkmmc == '02') THEN '一年内到期的非流动负债'\n" + + " \tWHEN (t1.fk_shkd_dybbkmmc == '03') THEN '短期借款'\n" + + " \tWHEN (t1.fk_shkd_dybbkmmc == '04') THEN '应付债券'\n" + + " \tWHEN (t1.fk_shkd_dybbkmmc == '05') THEN '其他权益工具'\n" + + " \tWHEN (t1.fk_shkd_dybbkmmc == '06') THEN '其他流动负债'\n" + + " \tWHEN (t1.fk_shkd_dybbkmmc == '07') THEN '实收资本'\n" + + " \tWHEN (t1.fk_shkd_dybbkmmc == '08') THEN '应付票据'\n" + + " \tWHEN (t1.fk_shkd_dybbkmmc == '09') THEN '长期应付款'\n" + + " \tWHEN (t1.fk_shkd_dybbkmmc == '10') THEN '其他应付款'\n" + + " \tWHEN (t1.fk_shkd_dybbkmmc == '11') THEN '其他非流动负债'\n" + + " \tWHEN (t1.fk_shkd_dybbkmmc == '12') THEN '租赁负债'\n" + + " \tELSE ' '\n" + + " END shkd_dybbkmmc,\n" + + " t2.fterm term,\n" + + " isnull(TIMESTAMPDIFF(day,t2.fstartintdate, t1.fexpiredate),0) xcday,\n" + + " 0.01 xcdate,\n" + + " to_char(t2.fstartintdate,'yyyy-MM-dd') startintdate,to_char(t1.fexpiredate,'yyyy-MM-dd') expiredate,\n"; + //计算元 + if(amtUnit == null || amtUnit.equals("yuan")){ + //元 + sql +=" "+selYearNcAmt+" selyearncamt,\n" ; //年初未还金额 + sql +=" "+selYearAddAmt+" selyearaddamt,\n" ;//年度新增金额 + sql +=" "+selYearYhkAmt+" selyearyhkamt,\n" ;//年度已还金额 + sql +=" "+selYearNmAmt+" selyearnmamt,\n" ;//年末未还金额 + sql +=" "+selBjAmt(" = '2025'")+" selbj2025,\n" ;//2025债务本金 + sql +=" "+selLxAmt(" = '2025'")+" sellx2025,\n" ;//2025债务利息 + sql +=" "+selBjAmt(" = '2026'")+" selbj2026,\n" ;//2026债务本金 + sql +=" "+selLxAmt(" = '2026'")+" sellx2026,\n" ;//2026债务利息 + sql +=" "+selBjAmt(" = '2027'")+" selbj2027,\n" ;//2027债务本金 + sql +=" "+selLxAmt(" = '2027'")+" sellx2027,\n" ;//2027债务利息 + sql +=" "+selBjAmt(" = '2028'")+" selbj2028,\n" ;//2028债务本金 + sql +=" "+selLxAmt(" = '2028'")+" sellx2028,\n" ;//2028债务利息 + sql +=" "+selBjAmt(" = '2029'")+" selbj2029,\n" ;//2029债务本金 + sql +=" "+selLxAmt(" = '2029'")+" sellx2029,\n" ;//2029债务利息 + sql +=" "+selBjAmt(" = '2030'")+" selbj2030,\n" ;//2030债务本金 + sql +=" "+selLxAmt(" = '2030'")+" sellx2030,\n" ;//2030债务利息 + sql +=" "+selBjAmt(" = '2031'")+" selbj2031,\n" ;//2031债务本金 + sql +=" "+selLxAmt(" = '2031'")+" sellx2031,\n" ;//2031债务利息 + sql +=" "+selBjAmt(" = '2032'")+" selbj2032,\n" ;//2032债务本金 + sql +=" "+selLxAmt(" = '2032'")+" sellx2032,\n" ;//2032债务利息 + sql +=" "+selBjAmt(" = '2033'")+" selbj2033,\n" ;//2033债务本金 + sql +=" "+selLxAmt(" = '2033'")+" sellx2033,\n" ;//2033债务利息 + sql +=" "+selBjAmt(" = '2034'")+" selbj2034,\n" ;//2034债务本金 + sql +=" "+selLxAmt(" = '2034'")+" sellx2034,\n" ;//2034债务利息 + sql +=" "+selBjAmt(" >= '2035'")+" selbj2035,\n" ;//2035年之后债务本金 + sql +=" "+selLxAmt(" >= '2035'")+" sellx2035,\n" ;//2035年之后债务利息 + sql +=" isnull(t1.fdrawamount,0) drawamount,\n" ; + }else if(amtUnit.equals("qyuan")){ + //千元 + sql +=" "+selYearNcAmt+"/1000 selyearncamt,\n" ; //年初未还金额 + sql +=" "+selYearAddAmt+"/1000 selyearaddamt,\n" ;//年度新增金额 + sql +=" "+selYearYhkAmt+"/1000 selyearyhkamt,\n" ;//年度已还金额 + sql +=" "+selYearNmAmt+"/1000 selyearnmamt,\n" ;//年末未还金额 + sql +=" "+selBjAmt(" = '2025'")+"/1000 selbj2025,\n" ;//2025债务本金 + sql +=" "+selLxAmt(" = '2025'")+"/1000 sellx2025,\n" ;//2025债务利息 + sql +=" "+selBjAmt(" = '2026'")+"/1000 selbj2026,\n" ;//2026债务本金 + sql +=" "+selLxAmt(" = '2026'")+"/1000 sellx2026,\n" ;//2026债务利息 + sql +=" "+selBjAmt(" = '2027'")+"/1000 selbj2027,\n" ;//2027债务本金 + sql +=" "+selLxAmt(" = '2027'")+"/1000 sellx2027,\n" ;//2027债务利息 + sql +=" "+selBjAmt(" = '2028'")+"/1000 selbj2028,\n" ;//2028债务本金 + sql +=" "+selLxAmt(" = '2028'")+"/1000 sellx2028,\n" ;//2028债务利息 + sql +=" "+selBjAmt(" = '2029'")+"/1000 selbj2029,\n" ;//2029债务本金 + sql +=" "+selLxAmt(" = '2029'")+"/1000 sellx2029,\n" ;//2029债务利息 + sql +=" "+selBjAmt(" = '2030'")+"/1000 selbj2030,\n" ;//2030债务本金 + sql +=" "+selLxAmt(" = '2030'")+"/1000 sellx2030,\n" ;//2030债务利息 + sql +=" "+selBjAmt(" = '2031'")+"/1000 selbj2031,\n" ;//2031债务本金 + sql +=" "+selLxAmt(" = '2031'")+"/1000 sellx2031,\n" ;//2031债务利息 + sql +=" "+selBjAmt(" = '2032'")+"/1000 selbj2032,\n" ;//2032债务本金 + sql +=" "+selLxAmt(" = '2032'")+"/1000 sellx2032,\n" ;//2032债务利息 + sql +=" "+selBjAmt(" = '2033'")+"/1000 selbj2033,\n" ;//2033债务本金 + sql +=" "+selLxAmt(" = '2033'")+"/1000 sellx2033,\n" ;//2033债务利息 + sql +=" "+selBjAmt(" = '2034'")+"/1000 selbj2034,\n" ;//2034债务本金 + sql +=" "+selLxAmt(" = '2034'")+"/1000 sellx2034,\n" ;//2034债务利息 + sql +=" "+selBjAmt(" >= '2035'")+"/1000 selbj2035,\n" ;//2035年之后债务本金 + sql +=" "+selLxAmt(" >= '2035'")+"/1000 sellx2035,\n" ;//2035年之后债务利息 + sql +=" isnull(t1.fdrawamount,0)/1000 drawamount,\n" ; + }else if(amtUnit.equals("wyuan")){ + //万元 + sql +=" "+selYearNcAmt+"/10000 selyearncamt,\n" ; //年初未还金额 + sql +=" "+selYearAddAmt+"/10000 selyearaddamt,\n" ;//年度新增金额 + sql +=" "+selYearYhkAmt+"/10000 selyearyhkamt,\n" ;//年度已还金额 + sql +=" "+selYearNmAmt+"/10000 selyearnmamt,\n" ;//年末未还金额 + sql +=" "+selBjAmt(" = '2025'")+"/10000 selbj2025,\n" ;//2025债务本金 + sql +=" "+selLxAmt(" = '2025'")+"/10000 sellx2025,\n" ;//2025债务利息 + sql +=" "+selBjAmt(" = '2026'")+"/10000 selbj2026,\n" ;//2026债务本金 + sql +=" "+selLxAmt(" = '2026'")+"/10000 sellx2026,\n" ;//2026债务利息 + sql +=" "+selBjAmt(" = '2027'")+"/10000 selbj2027,\n" ;//2027债务本金 + sql +=" "+selLxAmt(" = '2027'")+"/10000 sellx2027,\n" ;//2027债务利息 + sql +=" "+selBjAmt(" = '2028'")+"/10000 selbj2028,\n" ;//2028债务本金 + sql +=" "+selLxAmt(" = '2028'")+"/10000 sellx2028,\n" ;//2028债务利息 + sql +=" "+selBjAmt(" = '2029'")+"/10000 selbj2029,\n" ;//2029债务本金 + sql +=" "+selLxAmt(" = '2029'")+"/10000 sellx2029,\n" ;//2029债务利息 + sql +=" "+selBjAmt(" = '2030'")+"/10000 selbj2030,\n" ;//2030债务本金 + sql +=" "+selLxAmt(" = '2030'")+"/10000 sellx2030,\n" ;//2030债务利息 + sql +=" "+selBjAmt(" = '2031'")+"/10000 selbj2031,\n" ;//2031债务本金 + sql +=" "+selLxAmt(" = '2031'")+"/10000 sellx2031,\n" ;//2031债务利息 + sql +=" "+selBjAmt(" = '2032'")+"/10000 selbj2032,\n" ;//2032债务本金 + sql +=" "+selLxAmt(" = '2032'")+"/10000 sellx2032,\n" ;//2032债务利息 + sql +=" "+selBjAmt(" = '2033'")+"/10000 selbj2033,\n" ;//2033债务本金 + sql +=" "+selLxAmt(" = '2033'")+"/10000 sellx2033,\n" ;//2033债务利息 + sql +=" "+selBjAmt(" = '2034'")+"/10000 selbj2034,\n" ;//2034债务本金 + sql +=" "+selLxAmt(" = '2034'")+"/10000 sellx2034,\n" ;//2034债务利息 + sql +=" "+selBjAmt(" >= '2035'")+"/10000 selbj2035,\n" ;//2035年之后债务本金 + sql +=" "+selLxAmt(" >= '2035'")+"/10000 sellx2035,\n" ;//2035年之后债务利息 + sql +=" isnull(t1.fdrawamount,0)/10000 drawamount,\n" ; + }else if(amtUnit.equals("bwyuan")){ + //百万元 + sql +=" "+selYearNcAmt+"/1000000 selyearncamt,\n" ; //年初未还金额 + sql +=" "+selYearAddAmt+"/1000000 selyearaddamt,\n" ;//年度新增金额 + sql +=" "+selYearYhkAmt+"/1000000 selyearyhkamt,\n" ;//年度已还金额 + sql +=" "+selYearNmAmt+"/1000000 selyearnmamt,\n" ;//年末未还金额 + sql +=" "+selBjAmt(" = '2025'")+"/1000000 selbj2025,\n" ;//2025债务本金 + sql +=" "+selLxAmt(" = '2025'")+"/1000000 sellx2025,\n" ;//2025债务利息 + sql +=" "+selBjAmt(" = '2026'")+"/1000000 selbj2026,\n" ;//2026债务本金 + sql +=" "+selLxAmt(" = '2026'")+"/1000000 sellx2026,\n" ;//2026债务利息 + sql +=" "+selBjAmt(" = '2027'")+"/1000000 selbj2027,\n" ;//2027债务本金 + sql +=" "+selLxAmt(" = '2027'")+"/1000000 sellx2027,\n" ;//2027债务利息 + sql +=" "+selBjAmt(" = '2028'")+"/1000000 selbj2028,\n" ;//2028债务本金 + sql +=" "+selLxAmt(" = '2028'")+"/1000000 sellx2028,\n" ;//2028债务利息 + sql +=" "+selBjAmt(" = '2029'")+"/1000000 selbj2029,\n" ;//2029债务本金 + sql +=" "+selLxAmt(" = '2029'")+"/1000000 sellx2029,\n" ;//2029债务利息 + sql +=" "+selBjAmt(" = '2030'")+"/1000000 selbj2030,\n" ;//2030债务本金 + sql +=" "+selLxAmt(" = '2030'")+"/1000000 sellx2030,\n" ;//2030债务利息 + sql +=" "+selBjAmt(" = '2031'")+"/1000000 selbj2031,\n" ;//2031债务本金 + sql +=" "+selLxAmt(" = '2031'")+"/1000000 sellx2031,\n" ;//2031债务利息 + sql +=" "+selBjAmt(" = '2032'")+"/1000000 selbj2032,\n" ;//2032债务本金 + sql +=" "+selLxAmt(" = '2032'")+"/1000000 sellx2032,\n" ;//2032债务利息 + sql +=" "+selBjAmt(" = '2033'")+"/1000000 selbj2033,\n" ;//2033债务本金 + sql +=" "+selLxAmt(" = '2033'")+"/1000000 sellx2033,\n" ;//2033债务利息 + sql +=" "+selBjAmt(" = '2034'")+"/1000000 selbj2034,\n" ;//2034债务本金 + sql +=" "+selLxAmt(" = '2034'")+"/1000000 sellx2034,\n" ;//2034债务利息 + sql +=" "+selBjAmt(" >= '2035'")+"/1000000 selbj2035,\n" ;//2035年之后债务本金 + sql +=" "+selLxAmt(" >= '2035'")+"/1000000 sellx2035,\n" ;//2035年之后债务利息 + sql +=" isnull(t1.fdrawamount,0)/1000000 drawamount,\n" ; + }else if(amtUnit.equals("yyuan")){ + //亿元 + sql +=" "+selYearNcAmt+"/100000000 selyearncamt,\n" ; //年初未还金额 + sql +=" "+selYearAddAmt+"/100000000 selyearaddamt,\n" ;//年度新增金额 + sql +=" "+selYearYhkAmt+"/100000000 selyearyhkamt,\n" ;//年度已还金额 + sql +=" "+selYearNmAmt+"/100000000 selyearnmamt,\n" ;//年末未还金额 + sql +=" "+selBjAmt(" = '2025'")+"/100000000 selbj2025,\n" ;//2025债务本金 + sql +=" "+selLxAmt(" = '2025'")+"/100000000 sellx2025,\n" ;//2025债务利息 + sql +=" "+selBjAmt(" = '2026'")+"/100000000 selbj2026,\n" ;//2026债务本金 + sql +=" "+selLxAmt(" = '2026'")+"/100000000 sellx2026,\n" ;//2026债务利息 + sql +=" "+selBjAmt(" = '2027'")+"/100000000 selbj2027,\n" ;//2027债务本金 + sql +=" "+selLxAmt(" = '2027'")+"/100000000 sellx2027,\n" ;//2027债务利息 + sql +=" "+selBjAmt(" = '2028'")+"/100000000 selbj2028,\n" ;//2028债务本金 + sql +=" "+selLxAmt(" = '2028'")+"/100000000 sellx2028,\n" ;//2028债务利息 + sql +=" "+selBjAmt(" = '2029'")+"/100000000 selbj2029,\n" ;//2029债务本金 + sql +=" "+selLxAmt(" = '2029'")+"/100000000 sellx2029,\n" ;//2029债务利息 + sql +=" "+selBjAmt(" = '2030'")+"/100000000 selbj2030,\n" ;//2030债务本金 + sql +=" "+selLxAmt(" = '2030'")+"/100000000 sellx2030,\n" ;//2030债务利息 + sql +=" "+selBjAmt(" = '2031'")+"/100000000 selbj2031,\n" ;//2031债务本金 + sql +=" "+selLxAmt(" = '2031'")+"/100000000 sellx2031,\n" ;//2031债务利息 + sql +=" "+selBjAmt(" = '2032'")+"/100000000 selbj2032,\n" ;//2032债务本金 + sql +=" "+selLxAmt(" = '2032'")+"/100000000 sellx2032,\n" ;//2032债务利息 + sql +=" "+selBjAmt(" = '2033'")+"/100000000 selbj2033,\n" ;//2033债务本金 + sql +=" "+selLxAmt(" = '2033'")+"/100000000 sellx2033,\n" ;//2033债务利息 + sql +=" "+selBjAmt(" = '2034'")+"/100000000 selbj2034,\n" ;//2034债务本金 + sql +=" "+selLxAmt(" = '2034'")+"/100000000 sellx2034,\n" ;//2034债务利息 + sql +=" "+selBjAmt(" >= '2035'")+"/100000000 selbj2035,\n" ;//2035年之后债务本金 + 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" ; + sql +=" 0.01 zhrzcb,\n" ; + sql +=" 0.01 zhrzqx,\n" ; + sql +=" REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(CASE \n" + + " \tWHEN (t3.fguaranteeway IS NULL OR t3.fguaranteeway == ' ') AND (t4.fguarantee IS NULL OR t4.fguarantee == ' ') THEN ',无,'\n" + + " \tWHEN t3.fguaranteeway IS NULL OR t3.fguaranteeway == ' ' THEN t4.fguarantee\n" + + " \tELSE t3.fguaranteeway\n" + + " END,'2','保证'),'4','抵押'),'5','质押'),'6','其他'),'7','信用/无担保') guaranteeway,\n" + + " CASE \n" + + " \tWHEN (t6.dywkm IS NULL OR t6.dywkm == ' ') AND (t6.zywkm IS NULL OR t6.zywkm == ' ') THEN '无'\n" + + " \tWHEN (t6.dywkm IS NULL OR t6.dywkm == ' ') THEN t6.zywkm \n" + + " \tWHEN (t6.zywkm IS NULL OR t6.zywkm == ' ') THEN t6.dywkm \n" + + " \tELSE t6.dywkm || ',' || t6.zywkm \n" + + " END dbwkm,\n" + + " CASE \n" + + " \tWHEN (t6.dywname IS NULL OR t6.dywname == ' ') AND (t6.zywname IS NULL OR t6.zywname == ' ') THEN '无'\n" + + " \tWHEN (t6.dywname IS NULL OR t6.dywname == ' ') THEN t6.zywname \n" + + " \tWHEN (t6.zywname IS NULL OR t6.zywname == ' ') THEN t6.dywname \n" + + " \tELSE t6.dywname || ',' || t6.zywname \n" + + " END dbwname,\n" + + " concat(isnull((SELECT TOP 1 s1.frayearrate FROM t_cfm_loanbill_ra_entry s1 where s1.fid = t1.fid AND s1.fraeffectdate <= SYSDATE ORDER BY s1.fraeffectdate desc),0),'%') lilv," + + " t1.fdescription remark" + + " FROM t_cfm_loanbill t1 \n" + + " INNER JOIN t_cfm_loanbill_e t2 ON t1.fid = t2.FID \n" + + " INNER JOIN t_cfm_loanbill_t t3 ON t1.fid = t3.FID \n" + + " left JOIN t_cfm_loancontractbill t4 ON t2.floancontractbillid = t4.FID \n" + + " LEFT JOIN t_cfm_financingvarieties t5 ON t1.ffinproductid = t5.fid\n" + + " LEFT JOIN \n" + + " ( SELECT LISTAGG(s4.fpledgename, ',') dywname,LISTAGG(s2.fk_shkd_dbwsskm, ',') dywkm, \n" + + " LISTAGG(s5.fpledgename, ',') zywname,LISTAGG(s3.fk_shkd_dbwsskm1, ',') zywkm,\n" + + " s6.fgsrcbillno srcbillno\n" + + " FROM t_gm_guarcontract s1 \n" + + " left JOIN t_gm_guarcontract_mentry s2 ON s1.fid = s2.FID \n" + + " left JOIN t_gm_guarcontract_pentry s3 ON s1.fid = s3.FID \n" + + " left JOIN t_gm_pledgebill s4 ON s2.fplegid = s4.FID \n" + + " left JOIN t_gm_pledgebill s5 ON s3.fplegid = s5.FID \n" + + " left JOIN t_gm_guaranteeuse s6 ON s1.fid = s6.fguaranteecontractid \n" + + " WHERE (s1.fguaranteeway like '%mortgage%' OR s1.fguaranteeway like '%pledge%') \n" + + " AND s6.fgsrcbilltype LIKE 'cfm_loanbill%'\n" + +// " AND s1.fbillno = 'SIG5020000-DBHT-202502-0002'\n" + //---------------------担保合同编码条件 + " GROUP BY s6.fgsrcbillno ) t6 ON t1.fbillno = t6.srcbillno\n" + + " LEFT JOIN t_cfm_financingvarieties t7 ON t5.fparentid = t7.fid \n" + + " WHERE 1=1 AND (t2.floantype = 'loan' OR t2.floantype = 'sl' OR t2.floantype = 'bond') \n"+ //贷款类型为 普通贷款,银团贷款,债券发行 + " AND (t1.fdrawtype = 'drawed' OR t1.fdrawtype = 'partpayment') \n"; //业务状态取 已发行/已提款和已部分还款 + if(startDateCase != null){ + sql += " and to_char(t2.fstartintdate,'yyyy-MM-dd') >= '"+ startDateCase +"'\n"; //起始时间大于等于选择的借款时间开始 + } + if(startDateEnd != null){ + sql += " and to_char(t2.fstartintdate,'yyyy-MM-dd') <= '"+ startDateEnd +"'\n"; //起始时间小于等于选择的借款时间结束 + } + if(expireDateCase != null){ + sql += " and to_char(t1.fexpiredate,'yyyy-MM-dd') >= '"+ expireDateCase +"'\n"; //到期时间大于等于选择的到期时间开始 + } + if(expireDateEnd != null){ + sql += " and to_char(t1.fexpiredate,'yyyy-MM-dd') <= '"+ expireDateEnd +"'\n"; //到期时间小于等于选择的到期时间结束 + } + if(!StringUtils.isEmpty(whereEjCom)){ + sql += " and t1.fk_shkd_ejgs in ("+ whereEjCom.substring(1) +")\n"; //二级公司 + } + if(!StringUtils.isEmpty(whereRzzt)){ + sql += " and t2.forgid in ("+ whereRzzt.substring(1) +")\n"; //融资主体 + } + if(!StringUtils.isEmpty(whereZqrzh)){ + sql += " and t1.fk_shkd_zqrzh like '%"+ whereZqrzh +"%'\n"; //债权人总行 + } + if(!StringUtils.isEmpty(whereRzpz)){ + sql += " and t5.fparentid in ("+ whereRzpz.substring(1) +")\n"; //融资品种 + } + if(!StringUtils.isEmpty(whereFinproduct)){ + sql += " and t1.ffinproductid in ("+ whereFinproduct.substring(1) +")\n"; //融资品种明细 + } + if(!StringUtils.isEmpty(whereRzqd)){ + sql += " and t1.fk_shkd_rzqd in ("+ whereRzqd +")\n"; //融资渠道 + } + if(!StringUtils.isEmpty(whereBlxm)){ + sql += " and t1.fk_shkd_blxm in ("+ whereBlxm +")\n"; //表列项目 + } + if(!StringUtils.isEmpty(whereDybbkmmc)){ + sql += " and t1.fk_shkd_dybbkmmc in ("+ whereDybbkmmc +")\n"; //对应报表科目项目 + } + if(!StringUtils.isEmpty(whereGuaranteeway)){ + sql += " and t3.fguaranteeway in ("+ whereGuaranteeway +")\n"; //用信方式(担保) + } +// if(bizDate != null){ +// sql += " and to_char(t2.fstartintdate,'yyyy-MM-dd') <= '"+bizDate+"'\n"; //起始时间小于等于选择的时间 +// sql += " and to_char(t1.fexpiredate,'yyyy-MM-dd') >= '"+bizDate+"'\n"; //到期时间大于等于选择的时间 +// } +// if(dateVar != null){ +// sql += " AND t2.fterm like '%"+dateVar+"%'\n"; //期限条件like +// } +// sql += " and t1.fbillno in ('SIG1100000-TKCL-202510-0074','SIG1040100-JQFX-202502-0025','SIG5020000-TKCL-202502-0003')"; //---------------------提款处理单据编码条件 + /* + 获取查询条件的总金额 + */ + String selSumAmtSql = " /*dialect*/ SELECT sum(drawamount) sumamt FROM ("+sql+") sumAmt "; + DataSet selSumAmtRes = DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"), selSumAmtSql);//财务云 + DynamicObjectCollection sumAmtCollection = ORM.create().toPlainDynamicObjectCollection(selSumAmtRes.copy()); + BigDecimal sumAmt = sumAmtCollection.get(0).getBigDecimal("sumamt"); + /* + 开始根据选择的不同类型的报表格式返回不同的结果集 + */ + if(dataSel == null || dataSel.equals("data1")){ + String selSql = "/*dialect*/"; + selSql += sql; + //数据表查询 + 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_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","selyearncamt selyearncamt", + "selyearaddamt","selyearyhkamt","NullToZero(selyearncamt)+NullToZero(selyearaddamt)-NullToZero(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", + "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_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","sumbj","sumlx","yghlx"}).finish(); + DataSet dataRes2copy = dataRes2.copy(); + 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(dataRes3.copy()); + BigDecimal sumCb = BigDecimal.ZERO; //综合融资成本 + BigDecimal sumQx = BigDecimal.ZERO; //综合融资期限 + for(int i = 0;i 0){ + selData = buildDataByObjCollection(srcCollection); + }else{ + selData = dataRes2copy; + } + }else if(dataSel.equals("datagp1")){ + //融资主体汇总查询 + String groupSql = "/*dialect*/ SELECT orgid,sum(drawamount) sumamt,concat(ROUND((sum(drawamount)/"+sumAmt+")*100,4) ,'%') bili FROM ("+sql+") ss GROUP BY orgid"; + //数据表查询 + DataSet dataRes = DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"), groupSql);//财务云 + JoinDataSet join1 = dataRes.join(orgDataSet, JoinType.LEFT);//连接二级组织 + selData = join1.on("orgid","id").select(new String[]{"orgname gpname","sumamt","bili"}).finish(); + }else if(dataSel.equals("datagp2")){ + //报表科目汇总查询 + String groupSql = "/*dialect*/ SELECT shkd_dybbkmmc gpname,sum(drawamount) sumamt,concat(ROUND((sum(drawamount)/"+sumAmt+")*100,4) ,'%') bili FROM ("+sql+") ss GROUP BY shkd_dybbkmmc"; + //数据表查询 + selData = DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"), groupSql);//财务云 + }else if(dataSel.equals("datagp3")){ + //金融机构汇总查询 + String groupSql = "/*dialect*/ SELECT shkd_zqrzh gpname,sum(drawamount) sumamt,concat(ROUND((sum(drawamount)/"+sumAmt+")*100,4) ,'%') bili FROM ("+sql+") ss GROUP BY shkd_zqrzh"; + //数据表查询 + selData = DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"), groupSql);//财务云 + }else if(dataSel.equals("datagp4")){ + //借款期限汇总查询 + //一年及一下金额 + String termSqlAmt1 = "/*dialect*/ SELECT '1年及以下' gpname,sum(drawamount) sumamt,concat(ROUND((sum(drawamount)/"+sumAmt+")*100,4) ,'%') bili FROM ("+sql+") ss WHERE SUBSTRING_INDEX(term,'y',1) = term or term = '1y'"; + DataSet termAmtRs1 = DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"), termSqlAmt1);//财务云 + //一年至五年 + String termSqlAmt2 = "/*dialect*/ SELECT '1年(不含)至5年' gpname,sum(drawamount) sumamt,concat(ROUND((sum(drawamount)/"+sumAmt+")*100,4) ,'%') bili FROM ("+sql+") ss WHERE SUBSTRING_INDEX(term,'y',1) <> term AND term <> '1y' AND \n" + + " (SUBSTRING_INDEX(term,'y',1) >= 1 AND SUBSTRING_INDEX(term,'y',1) < 5) or term= '5y' "; + DataSet termAmtRs2 = DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"), termSqlAmt2);//财务云 + //五年至十年 + String termSqlAmt3 = "/*dialect*/ SELECT '5年(不含)至10年' gpname,sum(drawamount) sumamt,concat(ROUND((sum(drawamount)/"+sumAmt+")*100,4) ,'%') bili FROM ("+sql+") ss WHERE SUBSTRING_INDEX(term,'y',1) <> term AND term <> '5y' AND \n" + + " (SUBSTRING_INDEX(term,'y',1) >= 5 AND SUBSTRING_INDEX(term,'y',1) < 10) or term= '10y' "; + DataSet termAmtRs3 = DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"), termSqlAmt3);//财务云 + //十年至十五年 + String termSqlAmt4 = "/*dialect*/ SELECT '10年(不含)至15年' gpname,sum(drawamount) sumamt,concat(ROUND((sum(drawamount)/"+sumAmt+")*100,4) ,'%') bili FROM ("+sql+") ss WHERE SUBSTRING_INDEX(term,'y',1) <> term AND term <> '10y' AND \n" + + " (SUBSTRING_INDEX(term,'y',1) >= 10 AND SUBSTRING_INDEX(term,'y',1) < 15) or term= '15y'"; + DataSet termAmtRs4 = DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"), termSqlAmt4);//财务云 + //十五年至二十年 + String termSqlAmt5 = "/*dialect*/ SELECT '15年(不含)至20年' gpname,sum(drawamount) sumamt,concat(ROUND((sum(drawamount)/"+sumAmt+")*100,4) ,'%') bili FROM ("+sql+") ss WHERE SUBSTRING_INDEX(term,'y',1) <> term AND term <> '15y' AND \n" + + " (SUBSTRING_INDEX(term,'y',1) >= 15 AND SUBSTRING_INDEX(term,'y',1) < 20) or term= '20y' "; + DataSet termAmtRs5 = DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"), termSqlAmt5);//财务云 + //二十年以上 + String termSqlAmt6 = "/*dialect*/ SELECT '21年及以上' gpname,sum(drawamount) sumamt,concat(ROUND((sum(drawamount)/"+sumAmt+")*100,4) ,'%') bili FROM ("+sql+") ss WHERE SUBSTRING_INDEX(term,'y',1) <> term AND term <> '20y' AND \n" + + " (SUBSTRING_INDEX(term,'y',1) >= 20)"; + DataSet termAmtRs6 = DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"), termSqlAmt6);//财务云 + selData = termAmtRs1.union(termAmtRs2,termAmtRs3,termAmtRs4,termAmtRs5,termAmtRs6); //union all + }else if(dataSel.equals("datagp5")){ + //到期时间汇总查询 + String groupSql = "/*dialect*/ SELECT to_char(expiredate,'yyyy') gpname,sum(drawamount) sumamt,concat(ROUND((sum(drawamount)/"+sumAmt+")*100,4),'%') bili FROM ("+sql+") ss GROUP BY to_char(expiredate,'yyyy') order by to_char(expiredate,'yyyy')"; + //数据表查询 + selData = DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"), groupSql);//财务云 + }else if(dataSel.equals("datagp6")){ + //融资渠道汇总查询 (融资渠道+融资品种明细) + String groupSql = "/*dialect*/ SELECT shkd_rzqd gpname,shkd_rzpzmx gpname1,sum(drawamount) sumamt,ROUND((sum(drawamount)/"+sumAmt+")*100,4) bili FROM ("+sql+") ss GROUP BY shkd_rzqd,shkd_rzpzmx order by shkd_rzqd,shkd_rzpzmx"; + //数据表查询 + DataSet dataSet = DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"), groupSql);//财务云 + // 分组后,进行合计(金额) + DataSet sumDataSet = dataSet.groupBy(new String[]{"gpname"}).sum("sumamt").sum("bili").finish(); + sumDataSet = sumDataSet.select("concat(gpname,'-金额合计') as gpname, sumamt,bili"); + // 由于分组计算之后,Dataset的字段少了一个,需要通过addField加回来,为之后union做准备 + sumDataSet = sumDataSet.addField("'-'", "gpname1"); + // 添加高亮字段,高亮字段将在界面规则里面生效 + dataSet = dataSet.addField("1", "shkd_light"); + sumDataSet = sumDataSet.addField("2", "shkd_light"); + // union前,需要保证两个dataSet的字段序列一致,因此这里对sumDataSet对象重新排列字段序列 + sumDataSet = sumDataSet.select("gpname,gpname1,sumamt,concat(bili,'%') bili,shkd_light"); + // union,此时sumDataSet会续在dataSet的底部 + dataSet = dataSet.select("gpname,gpname1,sumamt,concat(bili,'%') bili,shkd_light"); + DataSet unionDataSet = dataSet.union(sumDataSet); + // 按组织名称排序,这样,底部的合计数据,就会与上面的组织名称排在一起 + selData = unionDataSet.orderBy(new String[]{"gpname"}); + }else if(dataSel.equals("datagp7")){ + //二级公司汇总查询 + String groupSql = "/*dialect*/ SELECT shkd_ejgs,sum(drawamount) sumamt,concat(ROUND((sum(drawamount)/"+sumAmt+")*100,4) ,'%') bili FROM ("+sql+") ss GROUP BY shkd_ejgs"; + //数据表查询 + DataSet dataRes = DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"), groupSql);//财务云 + JoinDataSet join1 = dataRes.join(orgDataSet, JoinType.LEFT);//连接二级组织 + selData = join1.on("shkd_ejgs","id").select(new String[]{"orgname gpname","sumamt","bili"}).finish(); + } + return selData; + } + + /** + * 根据年份查询本金 + * @return + */ + public String selBjAmt(String wheYear) { + String sql = "(SELECT sum(isnull(s3.fexdrawamount,0))\n" + + "FROM t_cfm_loanbill s1 \n" + + "INNER JOIN t_cfm_loanbill_e s2 ON s1.fid = s2.FID \n" + + "LEFT JOIN t_cfm_loanbill_rp_entry s3 ON s1.fid = s3.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" + + "and to_char(s3.fexrepaymentdate,'yyyy') "+wheYear+")"; + return sql; + } + + /** + * 根据年份查询利息 + * @return + */ + public String selLxAmt(String wheYear) { + String sql = "(SELECT sum(isnull(s3.finterestcalamount,0))\n" + + "FROM t_cfm_loanbill s1 \n" + + "INNER JOIN t_cfm_loanbill_e s2 ON s1.fid = s2.FID \n" + + "LEFT JOIN t_cfm_loanbill_ic_entry s3 ON s1.fid = s3.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" + + "and to_char(s3.finteresdate,'yyyy') "+wheYear+")"; + return sql; + } + + /** + * 查询结果实体转换数据结果集 + * @param finalTemp + * @return + */ + public DataSet buildDataByObjCollection(DynamicObjectCollection finalTemp) { + DataSet finish = null; + // 创建一个空的DataSet 将DynamicObjectCollection转化为DataSet + Collection coll = new ArrayList<>();//报表展示数据 + // 遍历修改后的数据的所有字段 + List displayFields = new ArrayList<>();//列标识 + DynamicObject object = finalTemp.get(0); + DataEntityPropertyCollection properties = object.getDataEntityType().getProperties(); + // 获取所有列标识 + properties.forEach(property -> { + if (!"id".equals(property.getName())) { + displayFields.add(property.getName()); + } + }); + logger.info("displayFields列标识:{}", displayFields); + + for (DynamicObject dataRow : finalTemp) { + // 将数据放入数组 + Object[] objects = new Object[displayFields.size()]; + for (int i = 0; i < displayFields.size(); i++) { + objects[i] = dataRow.get(displayFields.get(i)); + } + coll.add(objects); + } + + //构建列类型列表,为dataset构建做准备 + DataType stringType = DataType.StringType; + DataType dateType = DataType.DateType; + DataType bigDecimalType = DataType.BigDecimalType; + DataType longType = DataType.LongType; + DataType anyType = DataType.AnyType; + + List dataTypes = new ArrayList<>();//列类型列表 + + for (String field : displayFields) { +// if (field.contains("date")) { +// dataTypes.add(dateType); +// } else if (field.contains("amount") || field.contains("gdebtbalance")) { +// dataTypes.add(bigDecimalType); +// } else if (field.contains("gdebtcurrency")) { +// dataTypes.add(anyType); +// } else + if (field.equals("drawamount") || field.equals("zhrzcb") || field.equals("zhrzqx") + || field.contains("selyear") || field.contains("sellx") || field.contains("selbj") + || field.equals("sumbj") || field.equals("sumlx") || field.equals("yghlx")) { + dataTypes.add(bigDecimalType); + } else { + dataTypes.add(stringType); + } + } + logger.info("dataTypes数据类型:{}", dataTypes); + + RowMeta rowMeta = RowMetaFactory.createRowMeta(displayFields.toArray(new String[0]), dataTypes.toArray(new DataType[0])); + CollectionInput inputs = new CollectionInput(rowMeta, coll); + + try { + finish = Algo.create(this.getClass().getName()).createDataSet(inputs); + } catch (Exception e) { + logger.error("数据集创建失败:{}", e.getMessage()); + } + return finish; + } + + /** + * 显示列 + * @param columns + * @return + * @throws Throwable + */ + @Override + public List getColumns(List columns) throws Throwable { + //过滤条件 + FilterInfo filterInfo = this.getQueryParam().getFilter(); + FilterItemInfo amtUnitFilter = filterInfo.getFilterItem("shkd_amtunit"); //金额单位 + FilterItemInfo dataSelFilter = filterInfo.getFilterItem("shkd_datasel"); //数据查询维度 + FilterItemInfo dateTypeFiler = filterInfo.getFilterItem("shkd_datetype"); //期限类型 + //下拉列表值查询不同类型数据 + String amtUnit = null; //金额单位 yuan/qyuan/wyuan/bwyuan/yyuan + String dateSel = null; //数据查询维度 数据表:data1/融资主体汇总:datagp1/报表科目汇总:datagp2/金融机构汇总:datagp3/借款期限汇总:datagp4/到期时间汇总:datagp5/融资渠道汇总:datagp6 + String dateType = null; //期限类型 year/month/day + if(amtUnitFilter != null && amtUnitFilter.getValue() != null){ + amtUnit = amtUnitFilter.getValue().toString(); //金额单位 yuan/qyuan/wyuan/bwyuan/yyuan + } + if(dataSelFilter != null && dataSelFilter.getValue() != null){ + dateSel = dataSelFilter.getValue().toString(); //数据查询维度 数据表:data1/融资主体汇总:datagp1/报表科目汇总:datagp2/金融机构汇总:datagp3/借款期限汇总:datagp4/到期时间汇总:datagp5/融资渠道汇总:datagp6 + } + if(dateTypeFiler != null && dateTypeFiler.getValue() != null){ + dateType = dateTypeFiler.getValue().toString(); //期限类型 year/month/day + } + /* + 开始根据选择的不同类型的报表格式区分不同的显示 + */ + if(dateSel == null || dateSel.equals("data1")){ + //数据表查询 + ReportColumn billNo = createReportColumn("shkd_billno", "text", "单据编号"); + billNo.setHyperlink(true); + columns.add(billNo); + columns.add(createReportColumn("shkd_ejgs", "text", "二级公司名称")); + columns.add(createReportColumn("orgid", "text", "融资主体名称")); + columns.add(createReportColumn("shkd_zqrzh", "text", "金融机构")); + columns.add(createReportColumn("textcreditor", "text", "金融机构支行")); + columns.add(createReportColumn("shkd_rzpz1", "text", "融资品种")); + columns.add(createReportColumn("shkd_rzpzmx", "text", "融资品种明细")); + columns.add(createReportColumn("shkd_rzqd", "text", "融资渠道")); + columns.add(createReportColumn("shkd_blxm", "text", "表列项目")); + columns.add(createReportColumn("shkd_dybbkmmc", "text", "对应报表科目项目")); +// columns.add(createReportColumn("term", "text", "借款期限")); + //期限类型 year/month/day + if(dateType == null || dateType.equals("day")){ + columns.add(createReportColumn("xcdate", "text", "借款期限(天)")); + }else if(dateType.equals("month")){ + columns.add(createReportColumn("xcdate", "text", "借款期限(月)")); + }else if(dateType.equals("year")){ + columns.add(createReportColumn("xcdate", "text", "借款期限(年)")); + } + columns.add(createReportColumn("startintdate", "text", "借款时间")); + columns.add(createReportColumn("expiredate", "text", "到期时间")); + //年本金利息相关字段 + ReportColumnGroup bjlxEfg = new ReportColumnGroup(); + bjlxEfg.setCaption(new LocaleString("还本付息计划")); + bjlxEfg.setFieldKey("yearbjlxamt"); + DecimalReportColumn bj2025 = new DecimalReportColumn(); + DecimalReportColumn lx2025 = new DecimalReportColumn(); + DecimalReportColumn bj2026 = new DecimalReportColumn(); + DecimalReportColumn lx2026 = new DecimalReportColumn(); + DecimalReportColumn bj2027 = new DecimalReportColumn(); + DecimalReportColumn lx2027 = new DecimalReportColumn(); + DecimalReportColumn bj2028 = new DecimalReportColumn(); + DecimalReportColumn lx2028 = new DecimalReportColumn(); + DecimalReportColumn bj2029 = new DecimalReportColumn(); + DecimalReportColumn lx2029 = new DecimalReportColumn(); + DecimalReportColumn bj2030 = new DecimalReportColumn(); + DecimalReportColumn lx2030 = new DecimalReportColumn(); + DecimalReportColumn bj2031 = new DecimalReportColumn(); + DecimalReportColumn lx2031 = new DecimalReportColumn(); + DecimalReportColumn bj2032 = new DecimalReportColumn(); + DecimalReportColumn lx2032 = new DecimalReportColumn(); + DecimalReportColumn bj2033 = new DecimalReportColumn(); + DecimalReportColumn lx2033 = new DecimalReportColumn(); + DecimalReportColumn bj2034 = new DecimalReportColumn(); + DecimalReportColumn lx2034 = new DecimalReportColumn(); + DecimalReportColumn bj2035 = new DecimalReportColumn(); + DecimalReportColumn lx2035 = new DecimalReportColumn(); + DecimalReportColumn sumbj = new DecimalReportColumn(); + DecimalReportColumn sumlx = new DecimalReportColumn(); + //年条件金额相关字段 + ReportColumnGroup yearAmtEfg = new ReportColumnGroup(); + yearAmtEfg.setCaption(new LocaleString("债务余额(对外债务、不含权益工具)")); + yearAmtEfg.setFieldKey("yearamt"); + DecimalReportColumn ncAmt = new DecimalReportColumn(); + DecimalReportColumn yaddAmt = new DecimalReportColumn(); + DecimalReportColumn yhkAmt = new DecimalReportColumn(); + DecimalReportColumn nmAmt = new DecimalReportColumn(); + //金额 + DecimalReportColumn amt = new DecimalReportColumn(); + DecimalReportColumn yghlx = new DecimalReportColumn(); + if(amtUnit == null || amtUnit.equals("yuan")){ + //元 + ncAmt = createDecReportColumn("selyearncamt", "amount", "年初余额(元)"); + yaddAmt = createDecReportColumn("selyearaddamt", "amount", "本年新增(元)"); + yhkAmt = createDecReportColumn("selyearyhkamt", "amount", "本年减少(元)"); + nmAmt = createDecReportColumn("selyearnmamt", "amount", "年末余额(元)"); + bj2025 = createDecReportColumn("selbj2025", "amount", "2025债务本金(元)"); + lx2025 = createDecReportColumn("sellx2025", "amount", "2025债务利息(元)"); + bj2026 = createDecReportColumn("selbj2026", "amount", "2026债务本金(元)"); + lx2026 = createDecReportColumn("sellx2026", "amount", "2026债务利息(元)"); + bj2027 = createDecReportColumn("selbj2027", "amount", "2027债务本金(元)"); + lx2027 = createDecReportColumn("sellx2027", "amount", "2027债务利息(元)"); + bj2028 = createDecReportColumn("selbj2028", "amount", "2028债务本金(元)"); + lx2028 = createDecReportColumn("sellx2028", "amount", "2028债务利息(元)"); + bj2029 = createDecReportColumn("selbj2029", "amount", "2029债务本金(元)"); + lx2029 = createDecReportColumn("sellx2029", "amount", "2029债务利息(元)"); + bj2030 = createDecReportColumn("selbj2030", "amount", "2030债务本金(元)"); + lx2030 = createDecReportColumn("sellx2030", "amount", "2030债务利息(元)"); + bj2031 = createDecReportColumn("selbj2031", "amount", "2031债务本金(元)"); + lx2031 = createDecReportColumn("sellx2031", "amount", "2031债务利息(元)"); + bj2032 = createDecReportColumn("selbj2032", "amount", "2032债务本金(元)"); + lx2032 = createDecReportColumn("sellx2032", "amount", "2032债务利息(元)"); + bj2033 = createDecReportColumn("selbj2033", "amount", "2033债务本金(元)"); + lx2033 = createDecReportColumn("sellx2033", "amount", "2033债务利息(元)"); + bj2034 = createDecReportColumn("selbj2034", "amount", "2034债务本金(元)"); + lx2034 = createDecReportColumn("sellx2034", "amount", "2034债务利息(元)"); + bj2035 = createDecReportColumn("selbj2035", "amount", "2035年之后债务本金(元)"); + lx2035 = createDecReportColumn("sellx2035", "amount", "2035年之后债务利息(元)"); + sumbj = createDecReportColumn("sumbj", "amount", "合计本金(元)"); + sumlx = createDecReportColumn("sumlx", "amount", "合计利息(元)"); + yghlx = createDecReportColumn("yghlx", "amount", "本年已归还利息(元)"); + amt = createDecReportColumn("drawamount", "amount", "金额(元)"); + }else if(amtUnit.equals("qyuan")){ + //千元 + ncAmt = createDecReportColumn("selyearncamt", "amount", "年初余额(千元)"); + yaddAmt = createDecReportColumn("selyearaddamt", "amount", "本年新增(千元)"); + yhkAmt = createDecReportColumn("selyearyhkamt", "amount", "本年减少(千元)"); + nmAmt = createDecReportColumn("selyearnmamt", "amount", "年末余额(千元)"); + bj2025 = createDecReportColumn("selbj2025", "amount", "2025债务本金(千元)"); + lx2025 = createDecReportColumn("sellx2025", "amount", "2025债务利息(千元)"); + bj2026 = createDecReportColumn("selbj2026", "amount", "2026债务本金(千元)"); + lx2026 = createDecReportColumn("sellx2026", "amount", "2026债务利息(千元)"); + bj2027 = createDecReportColumn("selbj2027", "amount", "2027债务本金(千元)"); + lx2027 = createDecReportColumn("sellx2027", "amount", "2027债务利息(千元)"); + bj2028 = createDecReportColumn("selbj2028", "amount", "2028债务本金(千元)"); + lx2028 = createDecReportColumn("sellx2028", "amount", "2028债务利息(千元)"); + bj2029 = createDecReportColumn("selbj2029", "amount", "2029债务本金(千元)"); + lx2029 = createDecReportColumn("sellx2029", "amount", "2029债务利息(千元)"); + bj2030 = createDecReportColumn("selbj2030", "amount", "2030债务本金(千元)"); + lx2030 = createDecReportColumn("sellx2030", "amount", "2030债务利息(千元)"); + bj2031 = createDecReportColumn("selbj2031", "amount", "2031债务本金(千元)"); + lx2031 = createDecReportColumn("sellx2031", "amount", "2031债务利息(千元)"); + bj2032 = createDecReportColumn("selbj2032", "amount", "2032债务本金(千元)"); + lx2032 = createDecReportColumn("sellx2032", "amount", "2032债务利息(千元)"); + bj2033 = createDecReportColumn("selbj2033", "amount", "2033债务本金(千元)"); + lx2033 = createDecReportColumn("sellx2033", "amount", "2033债务利息(千元)"); + bj2034 = createDecReportColumn("selbj2034", "amount", "2034债务本金(千元)"); + lx2034 = createDecReportColumn("sellx2034", "amount", "2034债务利息(千元)"); + bj2035 = createDecReportColumn("selbj2035", "amount", "2035年之后债务本金(千元)"); + lx2035 = createDecReportColumn("sellx2035", "amount", "2035年之后债务利息(千元)"); + sumbj = createDecReportColumn("sumbj", "amount", "合计本金(千元)"); + sumlx = createDecReportColumn("sumlx", "amount", "合计利息(千元)"); + yghlx = createDecReportColumn("yghlx", "amount", "本年已归还利息(千元)"); + amt = createDecReportColumn("drawamount", "amount", "金额(千元)"); + }else if(amtUnit.equals("wyuan")){ + //万元 + ncAmt = createDecReportColumn("selyearncamt", "amount", "年初余额(万元)"); + yaddAmt = createDecReportColumn("selyearaddamt", "amount", "本年新增(万元)"); + yhkAmt = createDecReportColumn("selyearyhkamt", "amount", "本年减少(万元)"); + nmAmt = createDecReportColumn("selyearnmamt", "amount", "年末余额(万元)"); + bj2025 = createDecReportColumn("selbj2025", "amount", "2025债务本金(万元)"); + lx2025 = createDecReportColumn("sellx2025", "amount", "2025债务利息(万元)"); + bj2026 = createDecReportColumn("selbj2026", "amount", "2026债务本金(万元)"); + lx2026 = createDecReportColumn("sellx2026", "amount", "2026债务利息(万元)"); + bj2027 = createDecReportColumn("selbj2027", "amount", "2027债务本金(万元)"); + lx2027 = createDecReportColumn("sellx2027", "amount", "2027债务利息(万元)"); + bj2028 = createDecReportColumn("selbj2028", "amount", "2028债务本金(万元)"); + lx2028 = createDecReportColumn("sellx2028", "amount", "2028债务利息(万元)"); + bj2029 = createDecReportColumn("selbj2029", "amount", "2029债务本金(万元)"); + lx2029 = createDecReportColumn("sellx2029", "amount", "2029债务利息(万元)"); + bj2030 = createDecReportColumn("selbj2030", "amount", "2030债务本金(万元)"); + lx2030 = createDecReportColumn("sellx2030", "amount", "2030债务利息(万元)"); + bj2031 = createDecReportColumn("selbj2031", "amount", "2031债务本金(万元)"); + lx2031 = createDecReportColumn("sellx2031", "amount", "2031债务利息(万元)"); + bj2032 = createDecReportColumn("selbj2032", "amount", "2032债务本金(万元)"); + lx2032 = createDecReportColumn("sellx2032", "amount", "2032债务利息(万元)"); + bj2033 = createDecReportColumn("selbj2033", "amount", "2033债务本金(万元)"); + lx2033 = createDecReportColumn("sellx2033", "amount", "2033债务利息(万元)"); + bj2034 = createDecReportColumn("selbj2034", "amount", "2034债务本金(万元)"); + lx2034 = createDecReportColumn("sellx2034", "amount", "2034债务利息(万元)"); + bj2035 = createDecReportColumn("selbj2035", "amount", "2035年之后债务本金(万元)"); + lx2035 = createDecReportColumn("sellx2035", "amount", "2035年之后债务利息(万元)"); + sumbj = createDecReportColumn("sumbj", "amount", "合计本金(万元)"); + sumlx = createDecReportColumn("sumlx", "amount", "合计利息(万元)"); + yghlx = createDecReportColumn("yghlx", "amount", "本年已归还利息(万元)"); + amt = createDecReportColumn("drawamount", "amount", "金额(万元)"); + }else if(amtUnit.equals("bwyuan")){ + //百万元 + ncAmt = createDecReportColumn("selyearncamt", "amount", "年初余额(百万元)"); + yaddAmt = createDecReportColumn("selyearaddamt", "amount", "本年新增(百万元)"); + yhkAmt = createDecReportColumn("selyearyhkamt", "amount", "本年减少(百万元)"); + nmAmt = createDecReportColumn("selyearnmamt", "amount", "年末余额(百万元)"); + bj2025 = createDecReportColumn("selbj2025", "amount", "2025债务本金(百万元)"); + lx2025 = createDecReportColumn("sellx2025", "amount", "2025债务利息(百万元)"); + bj2026 = createDecReportColumn("selbj2026", "amount", "2026债务本金(百万元)"); + lx2026 = createDecReportColumn("sellx2026", "amount", "2026债务利息(百万元)"); + bj2027 = createDecReportColumn("selbj2027", "amount", "2027债务本金(百万元)"); + lx2027 = createDecReportColumn("sellx2027", "amount", "2027债务利息(百万元)"); + bj2028 = createDecReportColumn("selbj2028", "amount", "2028债务本金(百万元)"); + lx2028 = createDecReportColumn("sellx2028", "amount", "2028债务利息(百万元)"); + bj2029 = createDecReportColumn("selbj2029", "amount", "2029债务本金(百万元)"); + lx2029 = createDecReportColumn("sellx2029", "amount", "2029债务利息(百万元)"); + bj2030 = createDecReportColumn("selbj2030", "amount", "2030债务本金(百万元)"); + lx2030 = createDecReportColumn("sellx2030", "amount", "2030债务利息(百万元)"); + bj2031 = createDecReportColumn("selbj2031", "amount", "2031债务本金(百万元)"); + lx2031 = createDecReportColumn("sellx2031", "amount", "2031债务利息(百万元)"); + bj2032 = createDecReportColumn("selbj2032", "amount", "2032债务本金(百万元)"); + lx2032 = createDecReportColumn("sellx2032", "amount", "2032债务利息(百万元)"); + bj2033 = createDecReportColumn("selbj2033", "amount", "2033债务本金(百万元)"); + lx2033 = createDecReportColumn("sellx2033", "amount", "2033债务利息(百万元)"); + bj2034 = createDecReportColumn("selbj2034", "amount", "2034债务本金(百万元)"); + lx2034 = createDecReportColumn("sellx2034", "amount", "2034债务利息(百万元)"); + bj2035 = createDecReportColumn("selbj2035", "amount", "2035年之后债务本金(百万元)"); + lx2035 = createDecReportColumn("sellx2035", "amount", "2035年之后债务利息(百万元)"); + sumbj = createDecReportColumn("sumbj", "amount", "合计本金(百万元)"); + sumlx = createDecReportColumn("sumlx", "amount", "合计利息(百万元)"); + yghlx = createDecReportColumn("yghlx", "amount", "本年已归还利息(百万元)"); + amt = createDecReportColumn("drawamount", "amount", "金额(百万元)"); + }else if(amtUnit.equals("yyuan")){ + //亿元 + ncAmt = createDecReportColumn("selyearncamt", "amount", "年初余额(亿元)"); + yaddAmt = createDecReportColumn("selyearaddamt", "amount", "本年新增(亿元)"); + yhkAmt = createDecReportColumn("selyearyhkamt", "amount", "本年减少(亿元)"); + nmAmt = createDecReportColumn("selyearnmamt", "amount", "年末余额(亿元)"); + bj2025 = createDecReportColumn("selbj2025", "amount", "2025债务本金(亿元)"); + lx2025 = createDecReportColumn("sellx2025", "amount", "2025债务利息(亿元)"); + bj2026 = createDecReportColumn("selbj2026", "amount", "2026债务本金(亿元)"); + lx2026 = createDecReportColumn("sellx2026", "amount", "2026债务利息(亿元)"); + bj2027 = createDecReportColumn("selbj2027", "amount", "2027债务本金(亿元)"); + lx2027 = createDecReportColumn("sellx2027", "amount", "2027债务利息(亿元)"); + bj2028 = createDecReportColumn("selbj2028", "amount", "2028债务本金(亿元)"); + lx2028 = createDecReportColumn("sellx2028", "amount", "2028债务利息(亿元)"); + bj2029 = createDecReportColumn("selbj2029", "amount", "2029债务本金(亿元)"); + lx2029 = createDecReportColumn("sellx2029", "amount", "2029债务利息(亿元)"); + bj2030 = createDecReportColumn("selbj2030", "amount", "2030债务本金(亿元)"); + lx2030 = createDecReportColumn("sellx2030", "amount", "2030债务利息(亿元)"); + bj2031 = createDecReportColumn("selbj2031", "amount", "2031债务本金(亿元)"); + lx2031 = createDecReportColumn("sellx2031", "amount", "2031债务利息(亿元)"); + bj2032 = createDecReportColumn("selbj2032", "amount", "2032债务本金(亿元)"); + lx2032 = createDecReportColumn("sellx2032", "amount", "2032债务利息(亿元)"); + bj2033 = createDecReportColumn("selbj2033", "amount", "2033债务本金(亿元)"); + lx2033 = createDecReportColumn("sellx2033", "amount", "2033债务利息(亿元)"); + bj2034 = createDecReportColumn("selbj2034", "amount", "2034债务本金(亿元)"); + lx2034 = createDecReportColumn("sellx2034", "amount", "2034债务利息(亿元)"); + bj2035 = createDecReportColumn("selbj2035", "amount", "2035年之后债务本金(亿元)"); + lx2035 = createDecReportColumn("sellx2035", "amount", "2035年之后债务利息(亿元)"); + sumbj = createDecReportColumn("sumbj", "amount", "合计本金(亿元)"); + sumlx = createDecReportColumn("sumlx", "amount", "合计利息(亿元)"); + yghlx = createDecReportColumn("yghlx", "amount", "本年已归还利息(亿元)"); + amt = createDecReportColumn("drawamount", "amount", "金额(亿元)"); + } + //添加年相关四个金额且合计 + ncAmt.setSummary(1); + yaddAmt.setSummary(1); + yhkAmt.setSummary(1); + nmAmt.setSummary(1); + yearAmtEfg.getChildren().add(ncAmt);//添加下级分组 + yearAmtEfg.getChildren().add(yaddAmt);//添加下级分组 + yearAmtEfg.getChildren().add(yhkAmt);//添加下级分组 + yearAmtEfg.getChildren().add(nmAmt);//添加下级分组 + columns.add(yearAmtEfg); + //添加本金利息相关四个金额且合计 + bj2025.setSummary(1); + lx2025.setSummary(1); + bj2026.setSummary(1); + lx2026.setSummary(1); + bj2027.setSummary(1); + lx2027.setSummary(1); + bj2028.setSummary(1); + lx2028.setSummary(1); + bj2029.setSummary(1); + lx2029.setSummary(1); + bj2030.setSummary(1); + lx2030.setSummary(1); + bj2031.setSummary(1); + lx2031.setSummary(1); + bj2032.setSummary(1); + lx2032.setSummary(1); + bj2033.setSummary(1); + lx2033.setSummary(1); + bj2034.setSummary(1); + lx2034.setSummary(1); + bj2035.setSummary(1); + lx2035.setSummary(1); + sumbj.setSummary(1); + sumlx.setSummary(1); + bjlxEfg.getChildren().add(bj2025);//添加下级分组 + bjlxEfg.getChildren().add(lx2025);//添加下级分组 + bjlxEfg.getChildren().add(bj2026);//添加下级分组 + bjlxEfg.getChildren().add(lx2026);//添加下级分组 + bjlxEfg.getChildren().add(bj2027);//添加下级分组 + bjlxEfg.getChildren().add(lx2027);//添加下级分组 + bjlxEfg.getChildren().add(bj2028);//添加下级分组 + bjlxEfg.getChildren().add(lx2028);//添加下级分组 + bjlxEfg.getChildren().add(bj2029);//添加下级分组 + bjlxEfg.getChildren().add(lx2029);//添加下级分组 + bjlxEfg.getChildren().add(bj2030);//添加下级分组 + bjlxEfg.getChildren().add(lx2030);//添加下级分组 + bjlxEfg.getChildren().add(bj2031);//添加下级分组 + bjlxEfg.getChildren().add(lx2031);//添加下级分组 + bjlxEfg.getChildren().add(bj2032);//添加下级分组 + bjlxEfg.getChildren().add(lx2032);//添加下级分组 + bjlxEfg.getChildren().add(bj2033);//添加下级分组 + bjlxEfg.getChildren().add(lx2033);//添加下级分组 + bjlxEfg.getChildren().add(bj2034);//添加下级分组 + bjlxEfg.getChildren().add(lx2034);//添加下级分组 + bjlxEfg.getChildren().add(bj2035);//添加下级分组 + bjlxEfg.getChildren().add(lx2035);//添加下级分组 + bjlxEfg.getChildren().add(sumbj);//添加下级分组 + bjlxEfg.getChildren().add(sumlx);//添加下级分组 + columns.add(bjlxEfg); + //添加本年已归还利息行且合计 + yghlx.setSummary(1); + columns.add(yghlx); + //添加金额行且合计 + amt.setSummary(1); + columns.add(amt); + DecimalReportColumn zhrzcb = createDecReportColumn("zhrzcb", "decimal", "综合融资成本"); + DecimalReportColumn zhrzqx = createDecReportColumn("zhrzqx", "decimal", "综合融资期限"); + zhrzcb.setScale(6); + zhrzcb.setScale(6); + zhrzcb.setSummary(1); + zhrzqx.setSummary(1); + columns.add(zhrzcb); + columns.add(zhrzqx); + columns.add(createReportColumn("guaranteeway", "text", "用信方式")); + columns.add(createReportColumn("dbwkm", "text", "担保物科目")); + columns.add(createReportColumn("dbwname", "text", "担保物名称")); + columns.add(createReportColumn("lilv", "text", "利率")); + columns.add(createReportColumn("remark", "text", "备注")); + ReportColumn sumamt = createReportColumn("sumamt", "text", "总金额"); + sumamt.setHide(true); //隐藏是否高亮字段 + columns.add(sumamt); + ReportColumn sumzhrzcb = createReportColumn("sumzhrzcb", "text", "总综合融资成本"); + sumzhrzcb.setHide(true); //隐藏是否高亮字段 + columns.add(sumzhrzcb); + ReportColumn sumzhrzqx = createReportColumn("sumzhrzqx", "text", "总综合融资期限"); + sumzhrzqx.setHide(true); //隐藏是否高亮字段 + columns.add(sumzhrzqx); + }else if(dateSel.equals("datagp8")){ + //数据汇总表查询 + columns.add(createReportColumn("shkd_blxmgp", "text", "融资大类")); + columns.add(createReportColumn("shkd_rzpzmx", "text", "融资种类")); + if(amtUnit == null || amtUnit.equals("yuan")){ + //元 + columns.add(createReportColumn("jdqianamt", "amount", "季度初融资余额(元)")); + columns.add(createReportColumn("jdaddamt", "amount", "本季度新增额(元)")); + columns.add(createReportColumn("jdghamt", "amount", "本季度归还额(元)")); + columns.add(createReportColumn("yearaddamt", "amount", "本年累计新增融资额(元)")); + columns.add(createReportColumn("yearghamt", "amount", "本年累计归还额(元)")); + columns.add(createReportColumn("jdlastamt", "amount", "季度末融资余额(元)")); + }else if(amtUnit.equals("qyuan")){ + //千元 + columns.add(createReportColumn("jdqianamt", "amount", "季度初融资余额(千元)")); + columns.add(createReportColumn("jdaddamt", "amount", "本季度新增额(千元)")); + columns.add(createReportColumn("jdghamt", "amount", "本季度归还额(千元)")); + columns.add(createReportColumn("yearaddamt", "amount", "本年累计新增融资额(千元)")); + columns.add(createReportColumn("yearghamt", "amount", "本年累计归还额(千元)")); + columns.add(createReportColumn("jdlastamt", "amount", "季度末融资余额(千元)")); + }else if(amtUnit.equals("wyuan")){ + //万元 + columns.add(createReportColumn("jdqianamt", "amount", "季度初融资余额(万元)")); + columns.add(createReportColumn("jdaddamt", "amount", "本季度新增额(万元)")); + columns.add(createReportColumn("jdghamt", "amount", "本季度归还额(万元)")); + columns.add(createReportColumn("yearaddamt", "amount", "本年累计新增融资额(万元)")); + columns.add(createReportColumn("yearghamt", "amount", "本年累计归还额(万元)")); + columns.add(createReportColumn("jdlastamt", "amount", "季度末融资余额(万元)")); + }else if(amtUnit.equals("bwyuan")){ + //百万元 + columns.add(createReportColumn("jdqianamt", "amount", "季度初融资余额(百万元)")); + columns.add(createReportColumn("jdaddamt", "amount", "本季度新增额(百万元)")); + columns.add(createReportColumn("jdghamt", "amount", "本季度归还额(百万元)")); + columns.add(createReportColumn("yearaddamt", "amount", "本年累计新增融资额(百万元)")); + columns.add(createReportColumn("yearghamt", "amount", "本年累计归还额(百万元)")); + columns.add(createReportColumn("jdlastamt", "amount", "季度末融资余额(百万元)")); + }else if(amtUnit.equals("yyuan")){ + //亿元 + columns.add(createReportColumn("jdqianamt", "amount", "季度初融资余额(亿元)")); + columns.add(createReportColumn("jdaddamt", "amount", "本季度新增额(亿元)")); + columns.add(createReportColumn("jdghamt", "amount", "本季度归还额(亿元)")); + columns.add(createReportColumn("yearaddamt", "amount", "本年累计新增融资额(亿元)")); + columns.add(createReportColumn("yearghamt", "amount", "本年累计归还额(亿元)")); + columns.add(createReportColumn("jdlastamt", "amount", "季度末融资余额(亿元)")); + } + ReportColumn light = createReportColumn("shkd_light", "text", "是否高亮"); + light.setHide(true); //隐藏是否高亮字段 + columns.add(light); + }else { +// columns.remove(0); + if(dateSel.equals("datagp1")){ + //融资主体汇总查询 + columns.add(createReportColumn("gpname", "text", "融资主体")); + }else if(dateSel.equals("datagp2")){ + //报表科目汇总查询 + columns.add(createReportColumn("gpname", "text", "报表科目名称")); + }else if(dateSel.equals("datagp3")){ + //金融机构汇总查询 + columns.add(createReportColumn("gpname", "text", "金融机构")); + }else if(dateSel.equals("datagp4")){ + //借款期限汇总查询 + columns.add(createReportColumn("gpname", "text", "借款期限")); + }else if(dateSel.equals("datagp5")){ + //到期时间汇总查询 + columns.add(createReportColumn("gpname", "text", "到期时间")); + }else if(dateSel.equals("datagp6")){ + //融资渠道汇总查询 + columns.add(createReportColumn("gpname", "text", "融资渠道")); + columns.add(createReportColumn("gpname1", "text", "融资品种")); + ReportColumn light = createReportColumn("shkd_light", "text", "是否高亮"); + light.setHide(true); //隐藏是否高亮字段 + columns.add(light); + }else if(dateSel.equals("datagp7")){ + //二级公司汇总查询 + columns.add(createReportColumn("gpname", "text", "二级公司")); + } + //汇总金额字段 + if(amtUnit == null || amtUnit.equals("yuan")){ + //元 + columns.add(createReportColumn("sumamt", "amount", "金额(元)")); + }else if(amtUnit.equals("qyuan")){ + //千元 + columns.add(createReportColumn("sumamt", "amount", "金额(千元)")); + }else if(amtUnit.equals("wyuan")){ + //万元 + columns.add(createReportColumn("sumamt", "amount", "金额(万元)")); + }else if(amtUnit.equals("bwyuan")){ + //百万元 + columns.add(createReportColumn("sumamt", "amount", "金额(百元)")); + }else if(amtUnit.equals("yyuan")){ + //亿元 + columns.add(createReportColumn("sumamt", "amount", "金额(亿元)")); + } + columns.add(createReportColumn("bili", "text", "占比")); + } + + /* + 报表样式设置 + */ +// if (columns.get(0) instanceof ReportColumn) { +// ReportColumn reportColumn = (ReportColumn)columns.get(0); +// reportColumn.setCaption(new LocaleString("随便设置一个标题,修改列的字体颜色")); +// ColumnStyle style = new ColumnStyle(); +// style.setForeColor("#f90d58"); +// reportColumn.setStyle(style); +// } + + return columns; + } + + public ReportColumn createReportColumn(String fieldKey, String fieldType, String caption) { + ReportColumn column = new ReportColumn(); + column.setFieldKey(fieldKey); + column.setFieldType(fieldType); + column.setCaption(new LocaleString(caption)); + return column; + } + + public DecimalReportColumn createDecReportColumn(String fieldKey, String fieldType, String caption) { + DecimalReportColumn column = new DecimalReportColumn(); + column.setFieldKey(fieldKey); + column.setFieldType(fieldType); + column.setCaption(new LocaleString(caption)); + return column; + } + +}