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