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"});