From 0a093752addcc763849f23bd38cd7c0c6ae154a5 Mon Sep 17 00:00:00 2001 From: chenshaoxin <1981897232@qq.com> Date: Thu, 10 Jul 2025 16:15:26 +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/7/10=2017?= =?UTF-8?q?=EF=BC=9A00=20=E5=86=85=E5=AE=B9:=E9=93=B6=E8=A1=8C=E8=B4=A6?= =?UTF-8?q?=E6=88=B7=E6=8A=A5=E8=A1=A8=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../report/AccountbankReportPlugin.java | 123 ++++++++++++++++++ 1 file changed, 123 insertions(+) create mode 100644 sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/AccountbankReportPlugin.java 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 new file mode 100644 index 0000000..60ff9fa --- /dev/null +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/AccountbankReportPlugin.java @@ -0,0 +1,123 @@ +package shkd.sys.sys.plugin.report; + +import kd.bos.algo.DataSet; +import kd.bos.algo.JoinDataSet; +import kd.bos.algo.JoinType; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.db.DB; +import kd.bos.db.DBRoute; +import kd.bos.entity.report.AbstractReportListDataPlugin; +import kd.bos.entity.report.FastFilter; +import kd.bos.entity.report.FilterItemInfo; +import kd.bos.entity.report.ReportQueryParam; +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.QueryServiceHelper; +import kd.bos.util.CollectionUtils; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; + +public class AccountbankReportPlugin extends AbstractReportListDataPlugin { + + private static final Log logger = LogFactory.getLog(AccountbankReportPlugin.class); + + public List getListQFilter(ReportQueryParam reportQueryParam) { + //过滤条件数组 + ArrayList filters = new ArrayList<>(); + //初始化过滤数据 + List initFilter = reportQueryParam.getFilter().getFilterItems(); + if (CollectionUtils.isNotEmpty(initFilter)) { + for (FilterItemInfo filterItemInfo : initFilter) { +// QFilter filter = new QFilter(filterItemInfo.getPropName(), filterItemInfo.getCompareType(), filterItemInfo.getValue()); + QFilter filter = new QFilter(filterItemInfo.getPropName(), QCP.equals, filterItemInfo.getValue()); + filters.add(filter); + } + } + //快速过滤 + FastFilter fastFilter = reportQueryParam.getFilter().getFastFilter(); + if (fastFilter != null) { + List fastFilterList = reportQueryParam.getFilter().getFastFilter().getQFilters(); + //添加过滤条件 + if (CollectionUtils.isNotEmpty(fastFilterList)) { + filters.addAll(fastFilterList); + } + } + return filters; + } + @Override + public DataSet query(ReportQueryParam reportQueryParam, Object o) throws Throwable { + //获取筛选器的值 + List listQFilter = getListQFilter(reportQueryParam); + List dateList = new ArrayList<>(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + for (QFilter filter : listQFilter) { + if (filter.getProperty().contains("shkd_datefield")) { + dateList.add(sdf.format(filter.getValue())); + } + } + String selectFields="id,openorg.shkd_comcode as shkd_ssjtbm,openorg.shkd_comname as shkd_ssjtmc," + + "openorg.number as shkd_khdwbm,openorg.name as shkd_khdwmc," + + "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," + +// "123 as shkd_zhyeyb,123 as shkd_zhyebb,"+"'2025-07-09 11:31:12'"+" as shkd_zhyesj," + + "shkd_accounttype as shkd_zhytbm,case when issetbankinterface=1 then '是' else '否' end as shkd_ktyqjk,shkd_direct_time1 as shkd_ktyqsj," + + "shkd_accounttype 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,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", + selectFields + , null, null); + + String[] fieldNames = accountbankDataSet.getRowMeta().getFieldNames(); + // 创建一个新的数组,长度是原数组长度 + 2(因为要添加两个字段) + String[] newFieldNames = new String[fieldNames.length + 2]; + + // 将原来的字段名数组复制到新数组 + System.arraycopy(fieldNames, 0, newFieldNames, 0, fieldNames.length); + + // 添加两个新的字段到新数组的末尾 + newFieldNames[fieldNames.length] = "fid"; // 第一个新字段 + newFieldNames[fieldNames.length + 1] = "fbasedataid as shkd_bz"; // 第二个新字段 + + // 查询多选币别 + DataSet currencydata = DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("sys"), + "select fid,fbasedataid from t_bd_accountbanks_cur");//系统云 + + JoinDataSet join = accountbankDataSet.join(currencydata, JoinType.INNER);//内连接 + + DataSet finish = join.on("id", "fid").select(newFieldNames).finish(); + + String[] fieldNames1 = finish.getRowMeta().getFieldNames(); + // 创建一个新的数组,长度是原数组长度 + 2(因为要添加两个字段) + String[] newFieldNames1 = new String[fieldNames1.length + 2]; + + // 将原来的字段名数组复制到新数组 + System.arraycopy(fieldNames1, 0, newFieldNames1, 0, fieldNames1.length); + + // 添加两个新的字段到新数组的末尾 + newFieldNames1[fieldNames1.length] = "shkd_zhyeyb"; // 第一个新字段 + newFieldNames1[fieldNames1.length + 1] = "shkd_zhyebb"; // 第二个新字段 + newFieldNames1[fieldNames1.length + 2] = "shkd_zhyesj"; // 第三个新字段 +// DynamicObjectCollection srcCollection = ORM.create().toPlainDynamicObjectCollection(finish.copy()); + //查询余额 + 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 \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(); + DynamicObjectCollection srcCollection = ORM.create().toPlainDynamicObjectCollection(finish1.copy()); + return finish1; + } + + +}