From c55bcf8a1a5b13fda052ffd2d53738b93d3e9fd5 Mon Sep 17 00:00:00 2001 From: chenshaoxin <1981897232@qq.com> Date: Fri, 17 Oct 2025 11:37:56 +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/10/17=2012?= =?UTF-8?q?=EF=BC=9A00=20=E5=86=85=E5=AE=B9:=E6=8A=A5=E8=A1=A8=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../report/AccountbankReportPlugin.java | 47 ++++++++++++++++--- 1 file changed, 40 insertions(+), 7 deletions(-) diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/AccountbankReportPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/AccountbankReportPlugin.java index 7524502..ecc7b40 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/AccountbankReportPlugin.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/AccountbankReportPlugin.java @@ -39,14 +39,13 @@ public class AccountbankReportPlugin extends AbstractReportListDataPlugin { } String selectFields="id,openorg.shkd_comcode as shkd_ssjtbm,openorg.shkd_comname as shkd_ssjtmc," + - "openorg.uniformsocialcreditcode as shkd_khdwbm,openorg.name as shkd_khdwmc," + + "openorg.uniformsocialcreditcode as shkd_khdwbm,openorg.name as shkd_khdwmc,shkd_namegzw as shkd_newkhdwmc," + "openorg.shkd_comlevel as shkd_khdwqyjc,acctname as shkd_zhmc,bankaccountnumber as shkd_yhzh," + "shkd_subcompany as shkd_sfwnbdwzh,bank.name as shkd_khhmc,bank.number as shkd_khhbm," + "bank.country.name as shkd_khhszgj,shkd_bank_head_office as shkd_khhzh,currency," + "acctstyle as shkd_zhytbm,case when issetbankinterface=1 then '是' else '否' end as shkd_ktyqjk,shkd_direct_time1 as shkd_ktyqsj," + "acctstyle as shkd_zhytmc,fundaccflag as shkd_jzjzzhbs,case when closedate IS NULL then acctstatus else (case when closedate>'"+dateList.get(0)+"' then 'normal' else 'closed' end) end as shkd_zhzt," + "case when closedate IS NULL then '9999-12-31' else to_char(closedate,'YYYY-MM-DD') end as shkd_xhrq," + -// "closedate as shkd_xhrq," + "opendate as shkd_khrq,'"+dateList.get(0)+"' as shkd_sjrq,case when ismoneypool=1 then '是' else '否' end as shkd_sfzjczh"; //银行账户数据集 DataSet accountbankDataSet = QueryServiceHelper.queryDataSet(this.getClass().getSimpleName(),"am_accountbank", @@ -66,18 +65,52 @@ public class AccountbankReportPlugin extends AbstractReportListDataPlugin { String[] fieldNames1 = finish.getRowMeta().getFieldNames(); - String[] newFieldNames1 = ReportUtils.ExpansionArray(fieldNames1, Arrays.asList("shkd_zhyeyb", "shkd_zhyebb", "shkd_zhyesj")); - //查询余额 + String[] newFieldNames1 = ReportUtils.ExpansionArray(fieldNames1, Arrays.asList("shkd_zhyeyb", "shkd_zhyesj")); + //查询日记账余额 StringBuilder sqlBuilder = new StringBuilder("/*dialect*/ \n"); - sqlBuilder.append("SELECT fbankacctid ,SUM(FDebitAmount-FCreditAmount) as shkd_zhyeyb,SUM(FDebitAmount*fexchangerate-FCreditAmount*fexchangerate) as shkd_zhyebb,fcurrencyid,MAX(FBizDate) as shkd_zhyesj\n" + - "FROM t_cas_bankjournal WHERE FBizDate<'"+dateList.get(0)+"' \n" + + sqlBuilder.append("SELECT fbankacctid ,SUM(FDebitAmount-FCreditAmount) as shkd_zhyeyb," + +// "SUM(FDebitAmount*fexchangerate-FCreditAmount*fexchangerate) as shkd_zhyebb," +//(本位币) + "fcurrencyid,MAX(FBizDate) as shkd_zhyesj\n" + + "FROM t_cas_bankjournal WHERE FBizDate<='"+dateList.get(0)+"' \n" + "GROUP BY fbankacctid, fcurrencyid"); DataSet res = DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"), sqlBuilder.toString());//财务云 JoinDataSet join1 = finish.join(res, JoinType.LEFT);//左连接 DataSet finish1 = join1.on("id", "fbankacctid").on("shkd_bz", "fcurrencyid").select(newFieldNames1).finish(); - return finish1; + + //查询指定日期的汇率 + StringBuilder sqlBuilder2 = new StringBuilder("/*dialect*/ \n"); + sqlBuilder2.append("WITH RankedExRates AS (\n" + + " SELECT\n" + + " FOrgCurID,\n" + + " FCurID,\n" + + " FExRate,\n" + + " FEffectDate,\n" + + " ROW_NUMBER() OVER (PARTITION BY FOrgCurID ORDER BY FEffectDate DESC) AS rn\n" + + " FROM \n" + + " t_bd_exrate\n" + + " WHERE \n" + + " FCurID = 1\n" + + " AND FEffectDate <= '"+dateList.get(0)+"' -- 替换为你的指定日期\n" + + ")\n" + + "SELECT\n" + + " FOrgCurID,\n" + + " FCurID,\n" + + " FExRate,\n" + + " FEffectDate\n" + + "FROM \n" + + " RankedExRates\n" + + "WHERE \n" + + " rn = 1;"); + DataSet hl = DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("sys"), sqlBuilder2.toString());//系统云 + String[] fieldNames2 = finish1.getRowMeta().getFieldNames(); + + String[] newFieldNames2 = ReportUtils.ExpansionArray(fieldNames2, Arrays.asList("FEffectDate","FExRate")); + JoinDataSet join2 = finish1.join(hl, JoinType.INNER); + DataSet finish2 = join2.on("shkd_bz", "FOrgCurID").select(newFieldNames2).finish(); + finish2=finish2.addField("FExRate*shkd_zhyeyb","shkd_zhyebb"); + return finish2; } }