From f754990c9e84b83d05200e0e9b31b2d1ca7759b0 Mon Sep 17 00:00:00 2001 From: chenshaoxin <1981897232@qq.com> Date: Fri, 30 May 2025 11:48:09 +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/5/29=2012?= =?UTF-8?q?=EF=BC=9A30=20=E5=86=85=E5=AE=B9:=E5=BC=80=E7=A5=A8=E7=99=BB?= =?UTF-8?q?=E8=AE=B0=E8=BD=AC=E6=8D=A2=E8=A7=84=E5=88=99=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../report/transbillreportnewPlugin.java | 114 ++++++++++++++---- 1 file changed, 91 insertions(+), 23 deletions(-) diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/transbillreportnewPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/transbillreportnewPlugin.java index 3bc9583..f14dc0e 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/transbillreportnewPlugin.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/transbillreportnewPlugin.java @@ -30,6 +30,7 @@ import kd.bos.orm.ORM; import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.orm.query.QFilterHint; +import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.DispatchServiceHelper; import kd.bos.servicehelper.QueryServiceHelper; import kd.ebg.aqap.common.core.utils.Sequence; @@ -41,6 +42,7 @@ import kd.ebg.aqap.formplugin.util.StringUtil; import kd.ebg.egf.common.entity.base.EBHeader; import kd.ebg.egf.common.model.bank.BankAcnt; import kd.ebg.egf.common.repository.acnt.BankAcntRepository; +import kd.tmc.cdm.common.constant.CdmEntityConst; import kd.tmc.fbp.common.enums.ReportOrgQueryWayEnum; import kd.tmc.fbp.common.helper.TmcBusinessBaseHelper; import kd.tmc.fbp.common.helper.TmcOrgDataHelper; @@ -278,19 +280,45 @@ public class transbillreportnewPlugin extends AbstractTmcTreeReportDataPlugin { Date startOfYear = calendar.getTime(); // 将年初日期格式化为字符串 - //业务单元数据集 - DataSet balanceDataSet = QueryServiceHelper.queryDataSet(this.getClass().getSimpleName(),"bd_accountbanks","id,number as shkd_orgnumber,name as shkd_org", null, null); + //获取建行的银行id + DynamicObject[] banks = BusinessDataServiceHelper.load("bd_finorginfo", "id", new QFilter("bank_cate.name", QCP.equals, "建设银行").toArray()); + List idList = Arrays.stream(banks) // 将 banks 数组转换为流 + .map(bank -> (Long)bank.get("id")) // 提取 id 字段并转换为字符串 + .collect(Collectors.toList()); // 收集到 List 中 + String bankids = idList.toString(); + bankids = bankids.substring(1, bankids.length() - 1); String startOfYearStr = sdf.format(startOfYear); StringBuilder sqlBuilder1 = new StringBuilder("/*dialect*/ "); - sqlBuilder1.append("SELECT faccountbankid as shkd_subacct, fcreatetime,famount as downamount, fvalibalance as upamount,fcurrencyid as currency \n" + - "FROM t_bei_bankbalance\n" + - "WHERE (faccountbankid, fcreatetime) IN (\n" + - " SELECT faccountbankid, MAX(fcreatetime)\n" + +// sqlBuilder1.append("SELECT faccountbankid as shkd_subacct, fcreatetime,famount as downamount, fvalibalance as upamount,fcurrencyid as currency \n" + +// "FROM t_bei_bankbalance\n" + +// "WHERE (faccountbankid, fcreatetime) IN (\n" + +// " SELECT faccountbankid, MAX(fcreatetime)\n" + +// " FROM t_bei_bankbalance\n" + +// " WHERE fcreatetime < '"+startOfYearStr+"'\n" + +// " GROUP BY faccountbankid\n" + +// ")"); + sqlBuilder1.append("SELECT \n" + + " shkd_subacct,fmodifytime,fbizdate,downamount,currency,fbankid,fk_shkd_depositbalance,\n" + + " CASE \n" + + " WHEN fbankid in (\n" + + bankids + + + " ) THEN upamount\n" + + " ELSE fk_shkd_depositbalance\n" + + " END AS upamount\n" + + "FROM (\n" + + " SELECT \n" + + " fmodifytime,fbizdate,faccountbankid AS shkd_subacct,famount AS downamount,fvalibalance AS upamount,fcurrencyid AS currency,fbankid,fk_shkd_depositbalance,\n" + + " ROW_NUMBER() OVER (\n" + + " PARTITION BY faccountbankid \n" + + " ORDER BY fbizdate DESC, fmodifytime DESC\n" + + " ) AS rn\n" + " FROM t_bei_bankbalance\n" + - " WHERE fcreatetime < '"+startOfYearStr+"'\n" + - " GROUP BY faccountbankid\n" + - ")"); + " WHERE fbizdate < '"+startOfYearStr+"'\n" + + ")\n" + + "WHERE rn = 1 "); + //年初余额 DataSet ncres = DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"), sqlBuilder1.toString());//财务云 ncres = addExchangeRateAndCurrencyUnit1(ncres, paramMap); @@ -331,14 +359,34 @@ public class transbillreportnewPlugin extends AbstractTmcTreeReportDataPlugin { //期末余额 StringBuilder sqlBuilder2 = new StringBuilder("/*dialect*/ "); - sqlBuilder2.append("SELECT faccountbankid as shkd_subacct, fcreatetime,famount as downamount, fvalibalance as upamount,fcurrencyid as currency \n" + - "FROM t_bei_bankbalance\n" + - "WHERE (faccountbankid, fcreatetime) IN (\n" + - " SELECT faccountbankid, MAX(fcreatetime)\n" + +// sqlBuilder2.append("SELECT faccountbankid as shkd_subacct, fcreatetime,famount as downamount, fvalibalance as upamount,fcurrencyid as currency \n" + +// "FROM t_bei_bankbalance\n" + +// "WHERE (faccountbankid, fcreatetime) IN (\n" + +// " SELECT faccountbankid, MAX(fcreatetime)\n" + +// " FROM t_bei_bankbalance\n" + +// " WHERE fcreatetime "+endQCP+" '"+enddate+"'\n" + +// " GROUP BY faccountbankid\n" + +// ")"); + sqlBuilder2.append("SELECT \n" + + " shkd_subacct,fmodifytime,fbizdate,downamount,currency,fbankid,fk_shkd_depositbalance,\n" + + " CASE \n" + + " WHEN fbankid in (\n" + + bankids + + + " ) THEN upamount\n" + + " ELSE fk_shkd_depositbalance\n" + + " END AS upamount\n" + + "FROM (\n" + + " SELECT \n" + + " fmodifytime,fbizdate,faccountbankid AS shkd_subacct,famount AS downamount,fvalibalance AS upamount,fcurrencyid AS currency,fbankid,fk_shkd_depositbalance,\n" + + " ROW_NUMBER() OVER (\n" + + " PARTITION BY faccountbankid \n" + + " ORDER BY fbizdate DESC, fmodifytime DESC\n" + + " ) AS rn\n" + " FROM t_bei_bankbalance\n" + - " WHERE fcreatetime "+endQCP+" '"+enddate+"'\n" + - " GROUP BY faccountbankid\n" + - ")"); + " WHERE fbizdate "+endQCP+" '"+enddate+"'\n" + + ")\n" + + "WHERE rn = 1 "); DataSet qmres = DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"), sqlBuilder2.toString());//财务云 qmres = addExchangeRateAndCurrencyUnit1(qmres, paramMap); qmres = qmres.select(new String[]{"shkd_subacct","upamount_report as shkd_qmkyye"}); @@ -348,14 +396,34 @@ public class transbillreportnewPlugin extends AbstractTmcTreeReportDataPlugin { //期初可用余额 StringBuilder sqlBuilder = new StringBuilder("/*dialect*/ "); - sqlBuilder.append("SELECT faccountbankid as shkd_subacct, fcreatetime,famount as downamount, fvalibalance as upamount,fcurrencyid as currency \n" + - "FROM t_bei_bankbalance\n" + - "WHERE (faccountbankid, fcreatetime) IN (\n" + - " SELECT faccountbankid, MAX(fcreatetime)\n" + +// sqlBuilder.append("SELECT faccountbankid as shkd_subacct, fcreatetime,famount as downamount, fvalibalance as upamount,fcurrencyid as currency \n" + +// "FROM t_bei_bankbalance\n" + +// "WHERE (faccountbankid, fcreatetime) IN (\n" + +// " SELECT faccountbankid, MAX(fcreatetime)\n" + +// " FROM t_bei_bankbalance\n" + +// " WHERE fcreatetime < '"+startdate+"'\n" + +// " GROUP BY faccountbankid\n" + +// ")"); + sqlBuilder.append("SELECT \n" + + " shkd_subacct,fmodifytime,fbizdate,downamount,currency,fbankid,fk_shkd_depositbalance,\n" + + " CASE \n" + + " WHEN fbankid in (\n" + + bankids + + + " ) THEN upamount\n" + + " ELSE fk_shkd_depositbalance\n" + + " END AS upamount \n" + + "FROM (\n" + + " SELECT \n" + + " fmodifytime,fbizdate,faccountbankid AS shkd_subacct,famount AS downamount,fvalibalance AS upamount,fcurrencyid AS currency,fbankid,fk_shkd_depositbalance,\n" + + " ROW_NUMBER() OVER (\n" + + " PARTITION BY faccountbankid \n" + + " ORDER BY fbizdate DESC, fmodifytime DESC\n" + + " ) AS rn\n" + " FROM t_bei_bankbalance\n" + - " WHERE fcreatetime < '"+startdate+"'\n" + - " GROUP BY faccountbankid\n" + - ")"); + " WHERE fbizdate < '"+startdate+"'\n" + + ")\n" + + "WHERE rn = 1 "); DataSet res = DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"), sqlBuilder.toString());//财务云 res = addExchangeRateAndCurrencyUnit1(res, paramMap); DataSet select = res.select(new String[]{"shkd_subacct","upamount_report as shkd_qckyye"});