From 81e5d0b906419cd94fa94e132480618066efef95 Mon Sep 17 00:00:00 2001 From: chenshaoxin <1981897232@qq.com> Date: Mon, 28 Apr 2025 15:47:49 +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/4/23=2016?= =?UTF-8?q?=EF=BC=9A30=20=E5=86=85=E5=AE=B9:=E4=B8=8A=E5=88=92=E4=B8=8B?= =?UTF-8?q?=E6=8B=A8=EF=BC=88new=EF=BC=89=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../report/FinanceReportFormPlugin.java | 57 ++++++++++++++++--- .../report/domain/FinanceVarietyEnum.java | 20 +++++++ 2 files changed, 68 insertions(+), 9 deletions(-) diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/FinanceReportFormPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/FinanceReportFormPlugin.java index 259ceea..2d8b438 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/FinanceReportFormPlugin.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/FinanceReportFormPlugin.java @@ -40,7 +40,7 @@ import kd.bos.servicehelper.org.OrgUnitServiceHelper; import kd.bos.servicehelper.org.OrgViewType; import kd.bos.servicehelper.permission.PermissionServiceHelper; import shkd.sys.sys.plugin.report.domain.FinanceVarietyEnum; - +import java.util.stream.Collectors; import java.math.BigDecimal; import java.math.RoundingMode; import java.text.SimpleDateFormat; @@ -430,17 +430,56 @@ public class FinanceReportFormPlugin extends AbstractReportFormPlugin implement private void setavg(CreateColumnEvent event){ ReportList list = this.getView().getControl("reportlistap"); ReportListModel reportModel = (ReportListModel) list.getReportModel(); - int rowCount = reportModel.getReportTaskResult().getRowCount(); Map summaryValueMap = reportModel.getSummaryValueMap(); - for (int i = 0; i < FinanceVarietyEnum.avg.size(); i++) { - BigDecimal totalInAmt = (BigDecimal) summaryValueMap.get( FinanceVarietyEnum.avg.get(i)); - BigDecimal result = totalInAmt.divide(new BigDecimal(rowCount), 2, RoundingMode.HALF_UP); - summaryValueMap.put(FinanceVarietyEnum.avg.get(i),result.toString()); - } + List> nestedList = FinanceVarietyEnum.nestedList; + int rowCount = reportModel.getReportTaskResult().getRowCount(); + //获取数据集合 + DynamicObjectCollection rowData = reportModel.getRowData(0, rowCount); + List filteredList = rowData.stream() + .filter(obj -> !obj.getString("shkd_org").equals("合并抵消")) + .collect(Collectors.toList());//去除合并抵消 + for (List strings : nestedList) { + //金额合计 + BigDecimal total = filteredList.stream() + .map(obj -> obj.getBigDecimal(strings.get(0))) // 提取每个对象的getNumber()值 + .filter(number -> number != null) // 排除null值(如果有的话) + .reduce(BigDecimal.ZERO, BigDecimal::add); // 使用BigDecimal.ZERO作为初始值,并执行累加 + BigDecimal rzcbtotal = filteredList.stream() + .map(obj -> { + BigDecimal number = obj.getBigDecimal(strings.get(0)); // 获取getNumber() + BigDecimal number1 = obj.getBigDecimal(strings.get(1)); // 获取getNumber1() + + // 如果number或number1为null,视为0,避免NullPointerException + if (number == null) number = BigDecimal.ZERO; + if (number1 == null) number1 = BigDecimal.ZERO; + + return number.multiply(number1); // 计算乘积 + }) + .reduce(BigDecimal.ZERO, BigDecimal::add); // 累加所有乘积 + + BigDecimal qxtotal = filteredList.stream() + .map(obj -> { + BigDecimal number = obj.getBigDecimal(strings.get(0)); // 获取getNumber() + BigDecimal number1 = obj.getBigDecimal(strings.get(2)); // 获取getNumber1() + + // 如果number或number1为null,视为0,避免NullPointerException + if (number == null) number = BigDecimal.ZERO; + if (number1 == null) number1 = BigDecimal.ZERO; + + return number.multiply(number1); // 计算乘积 + }) + .reduce(BigDecimal.ZERO, BigDecimal::add); // 累加所有乘积 + + summaryValueMap.put(strings.get(1),total.compareTo(BigDecimal.ZERO) == 0?BigDecimal.ZERO.toString():rzcbtotal.divide(total, 2, RoundingMode.HALF_UP).toString()); + summaryValueMap.put(strings.get(2),total.compareTo(BigDecimal.ZERO) == 0?BigDecimal.ZERO.toString():qxtotal.divide(total, 2, RoundingMode.HALF_UP).toString()); + } +// for (int i = 0; i < FinanceVarietyEnum.avg.size(); i++) { +// BigDecimal totalInAmt = (BigDecimal) summaryValueMap.get( FinanceVarietyEnum.avg.get(i)); +// BigDecimal result = totalInAmt.divide(new BigDecimal(rowCount), 2, RoundingMode.HALF_UP); +// summaryValueMap.put(FinanceVarietyEnum.avg.get(i),result.toString()); +// } summaryValueMap.put("shkd_jtnbjkamount",new BigDecimal(0).toString()); - summaryValueMap.put("shkd_jtnbjkrzcb",new BigDecimal(0).toString()); - summaryValueMap.put("shkd_jtnbjkqx",new BigDecimal(0).toString()); } } diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/domain/FinanceVarietyEnum.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/domain/FinanceVarietyEnum.java index 361b606..efe05a2 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/domain/FinanceVarietyEnum.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/domain/FinanceVarietyEnum.java @@ -86,4 +86,24 @@ public class FinanceVarietyEnum { "shkd_11to13rzcb","shkd_11to13qx", "shkd_1to13jrcb","shkd_1to13qx" ); + + public static List> nestedList = Arrays.asList( + Arrays.asList("shkd_zqrzamount", "shkd_zqrzrzcb","shkd_zqrzqx"), + Arrays.asList("shkd_dqjkamount", "shkd_dqjkrzcb","shkd_dqjkqx"), + Arrays.asList("shkd_zcqldamount", "shkd_zcqldrzcb","shkd_zcqldqx"), + Arrays.asList("shkd_xmdkamount", "shkd_xmdkrzcb","shkd_xmdkqx"), + Arrays.asList("shkd_rzzlamount", "shkd_rzzlrzcb","shkd_rzzlqx"), + Arrays.asList("shkd_bxzjrzamount", "shkd_bxzjrzrzcb","shkd_bxzjrzqx"), + Arrays.asList("shkd_yfpjamount", "shkd_yfpjrzcb","shkd_yfpjqx"), + Arrays.asList("shkd_fjrqyjkamount", "shkd_fjrqyjkrzcb","shkd_fjrqyjkqx"), + Arrays.asList("shkd_qtzwrzamount", "shkd_qtzwrzrzcb","shkd_qtzwrzqx"), + Arrays.asList("shkd_oneotnineje", "shkd_oneotninerzcb","shkd_oneotnineqx"), + Arrays.asList("shkd_jtnbjkamount", "shkd_jtnbjkrzcb","shkd_jtnbjkqx"), + Arrays.asList("shkd_oneottenje", "shkd_oneottenrzcb","shkd_oneottenqx"), + Arrays.asList("shkd_yxzamount", "shkd_yxzrzcb","shkd_yxzqx"), + Arrays.asList("shkd_yxxtamount", "shkd_yxxtrzcb","shkd_yxxtqx"), + Arrays.asList("shkd_qtqyrzamount", "shkd_qtqyrzrzcb","shkd_qtqyrzqx"), + Arrays.asList("shkd_11to13je", "shkd_11to13rzcb","shkd_11to13qx"), + Arrays.asList("shkd_1to13je", "shkd_1to13jrcb","shkd_1to13qx") + ); }