From 2b47345d7252d194a504bbcd4287108f39eb4003 Mon Sep 17 00:00:00 2001 From: weiyunlong Date: Wed, 9 Apr 2025 17:19:16 +0800 Subject: [PATCH] =?UTF-8?q?-=20[x]=20=E5=BC=BA=E5=BC=B1=E5=85=B1=E4=BA=AB?= =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E4=BC=98=E5=8C=96(=E5=B0=8F=E8=AE=A1=20Stron?= =?UTF-8?q?gSharingQueryPlugin=20)=20-=20[x]=20=E5=BC=BA=E5=BC=B1=E5=85=B1?= =?UTF-8?q?=E4=BA=AB=E6=8A=A5=E8=A1=A8=E4=BC=98=E5=8C=96(=E5=90=88?= =?UTF-8?q?=E8=AE=A1=20StrongSharingFormPlugin)=20-=20[x]=20=E4=BB=98?= =?UTF-8?q?=E6=AC=BE=E5=8D=95=E6=8E=A8=E9=80=81=E8=B4=B9=E6=8E=A7(?= =?UTF-8?q?=E4=BA=BA=E5=91=98=E7=BC=96=E7=A0=81=E4=BC=98=E5=8C=96)=20--s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fi/plugin/operate/PaybillOperation.java | 8 ++-- .../report/StrongSharingFormPlugin.java | 46 +++++++++++++++++++ .../report/StrongSharingQueryPlugin.java | 31 ++++++++++--- 3 files changed, 75 insertions(+), 10 deletions(-) create mode 100644 main/java/shjh/jhzj7/fi/fi/plugin/report/StrongSharingFormPlugin.java diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/operate/PaybillOperation.java b/main/java/shjh/jhzj7/fi/fi/plugin/operate/PaybillOperation.java index 9f6a055..b67e33b 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/operate/PaybillOperation.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/operate/PaybillOperation.java @@ -139,10 +139,10 @@ public class PaybillOperation extends AbstractOperationServicePlugIn implements } } } -// header.put("FM_UserCode", FM_UserCode);//员工工号,配置表(shjh_fksqr) -// header.put("FM_CreateUserCode", FM_CreateUserCode);// 创建人工号 - header.put("FM_UserCode", "GH017994");//员工工号,配置表(shjh_fksqr) - header.put("FM_CreateUserCode", "GH017994");// 创建人工号 + header.put("FM_UserCode", FM_UserCode);//员工工号,配置表(shjh_fksqr) + header.put("FM_CreateUserCode", FM_CreateUserCode);// 创建人工号 +// header.put("FM_UserCode", "GH017994");//员工工号,配置表(shjh_fksqr) +// header.put("FM_CreateUserCode", "GH017994");// 创建人工号 String FM_ExpenseTypeCode = ""; if (null!= bill.getDynamicObject("shjh_bizbig")) { diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/report/StrongSharingFormPlugin.java b/main/java/shjh/jhzj7/fi/fi/plugin/report/StrongSharingFormPlugin.java new file mode 100644 index 0000000..505a599 --- /dev/null +++ b/main/java/shjh/jhzj7/fi/fi/plugin/report/StrongSharingFormPlugin.java @@ -0,0 +1,46 @@ +package shjh.jhzj7.fi.fi.plugin.report; + +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.entity.report.ReportQueryParam; +import kd.bos.report.plugin.AbstractReportFormPlugin; +import kd.sdk.plugin.Plugin; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.Calendar; +import java.util.Date; +import java.util.Iterator; +import java.util.concurrent.TimeUnit; + +/** + * 报表界面插件 + * 强弱共享报表界面插件 + */ +public class StrongSharingFormPlugin extends AbstractReportFormPlugin implements Plugin { + + @Override + public void processRowData(String gridPK, DynamicObjectCollection rowData, ReportQueryParam queryParam) { + super.processRowData(gridPK, rowData, queryParam); + + BigDecimal shjh_amountjz = new BigDecimal("0");//合计_基准日期-余额 + BigDecimal shjh_amounttn = new BigDecimal("0");//合计_同年比较日期-余额 + + for (DynamicObject rowDatum : rowData) { + //银行名称(shjh_bankname)包含小计 汇总 (1.基准日期-余额(shjh_amountjz) 2.同年比较日期-余额(shjh_amounttn)) + if (rowDatum.getString("shjh_bankname").contains("小计")){ + BigDecimal amountjz = rowDatum.getBigDecimal("shjh_amountjz"); + shjh_amountjz=shjh_amountjz.add(amountjz);//基准日期-余额 + BigDecimal amounttn = rowDatum.getBigDecimal("shjh_amounttn"); + shjh_amounttn=shjh_amounttn.add(amounttn);//同年比较日期-余额 + } + } + DynamicObject dynamicObject = new DynamicObject(rowData.getDynamicObjectType()); + dynamicObject.set("shjh_orgnumber","合计");//组织编码 + dynamicObject.set("shjh_amountjz",shjh_amountjz); + dynamicObject.set("shjh_amounttn",shjh_amounttn); + rowData.add(dynamicObject); + + } + +} diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/report/StrongSharingQueryPlugin.java b/main/java/shjh/jhzj7/fi/fi/plugin/report/StrongSharingQueryPlugin.java index 9a2ea37..b103e60 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/report/StrongSharingQueryPlugin.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/report/StrongSharingQueryPlugin.java @@ -183,8 +183,8 @@ public class StrongSharingQueryPlugin extends AbstractReportListDataPlugin imple } } } - result1.print(true); - result2.print(true); +// result1.print(true); +// result2.print(true); // 根据资金组织编码名称,银行名称进行左连接 DataSet finalResult = result1.leftJoin(result2) @@ -192,11 +192,30 @@ public class StrongSharingQueryPlugin extends AbstractReportListDataPlugin imple .on("shjh_bankname", "shjh_bankname") .on("shjh_orgnumber", "shjh_orgnumber") .on("shjh_companyisshare", "shjh_companyisshare") - .select(new String[]{"shjh_orgnumber", "shjh_orgname", "shjh_bankname", "banknumber","shjh_companyisshare", - "shjh_amountjz", "shjh_amounttn"}) + .select(new String[]{ "shjh_bankname","shjh_orgnumber", "shjh_orgname","shjh_companyisshare", "shjh_amountjz", "shjh_amounttn"}) .finish(); - finalResult.print(true); +// finalResult.print(true); - return finalResult; + //分组小计 银行名称 基准余额,同年比较余额 + DataSet groupDataSet = finalResult.groupBy(new String[]{"shjh_bankname"}).sum("shjh_amountjz").sum("shjh_amounttn").finish(); + // 由于分组计算之后,Dataset的字段少了一个,需要通过addField加回来,为之后union做准备 + groupDataSet = groupDataSet + .addField("NULL", "shjh_companyisshare")//公司属性:强共享/弱共享 + .addField("'-'", "shjh_orgnumber")//组织编码 + .addField("'-'","shjh_orgname");//组织名称 + + StringBuilder selectExpression = new StringBuilder(); + selectExpression.append("shjh_bankname,shjh_orgnumber,shjh_orgname,shjh_companyisshare,shjh_amountjz,shjh_amounttn"); + + // 应用SELECT转换 + groupDataSet = groupDataSet.select("concat(shjh_bankname+'小计') as "+ selectExpression); + // union前,需要保证两个dataSet的字段序列一致,因此这里对sumDataSet对象重新排列字段序列 + groupDataSet = groupDataSet.select(String.valueOf(selectExpression)); + // union,此时groupDataSet会续在dataSet的底部 + DataSet unionDataSet = finalResult.union(groupDataSet); + +// return unionDataSet; + // 按组织名称排序,这样,底部的合计数据,就会与上面的组织名称排在一起 + return unionDataSet.orderBy(new String[]{"shjh_bankname"}); } }