From ca6f4ff736e1e8ad085fecd3ac378524bb7d2467 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E8=B4=B5=E5=BC=BA?= Date: Thu, 10 Jul 2025 18:18:25 +0800 Subject: [PATCH] =?UTF-8?q?=E7=90=86=E8=B4=A2=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 --- .../fi/plugin/report/FinancialFormReport.java | 6 ++- .../fi/fi/plugin/report/util/ReportUtils.java | 45 +++++++++++++++++-- 2 files changed, 46 insertions(+), 5 deletions(-) diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/report/FinancialFormReport.java b/main/java/shjh/jhzj7/fi/fi/plugin/report/FinancialFormReport.java index 2d090eb..b29fe4d 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/report/FinancialFormReport.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/report/FinancialFormReport.java @@ -161,6 +161,8 @@ public class FinancialFormReport extends AbstractReportFormPlugin implements Plu //ReportUtils.changeRowData(rowData,REPORT_FIELDS[0]); //过滤 ReportUtils.removeRowData(rowData,REPORT_FIELDS[9],DYNAMICS_FIELDS[1]); + //排序 + //ReportUtils.sortByDate(rowData,REPORT_FIELDS[9],false); //添加合计 // 需要配置求和的字段映射(目标字段,来源字段) List sumConfig = new ArrayList<>(); @@ -176,6 +178,7 @@ public class FinancialFormReport extends AbstractReportFormPlugin implements Plu ReportUtils.addTotalRowData(rowData,REPORT_FIELDS[0],"小计","合计",sumConfig); + } /** @@ -492,7 +495,7 @@ public class FinancialFormReport extends AbstractReportFormPlugin implements Plu Object pkValue = shdh.getPkValue(); DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(pkValue, "cim_redeem"); BigDecimal amount = dynamicObject.getBigDecimal("amount"); // 赎回金额字段名 - BigDecimal realrevenue = dynamicObject.getBigDecimal("revenueamount"); // 实际收益字段名 + BigDecimal realrevenue = dynamicObject.getBigDecimal("realrevenue"); // 实际收益字段名 if (amount != null) { sum = sum.add(amount).add(realrevenue); } @@ -657,6 +660,7 @@ public class FinancialFormReport extends AbstractReportFormPlugin implements Plu if (maxRedeemDate != null) { endDate = maxRedeemDate; row.set(REPORT_FIELDS[9], endDate); // 设置到期日 + expireDate=endDate; } } } diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/report/util/ReportUtils.java b/main/java/shjh/jhzj7/fi/fi/plugin/report/util/ReportUtils.java index dfc2840..5cfaf1e 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/report/util/ReportUtils.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/report/util/ReportUtils.java @@ -7,10 +7,7 @@ import kd.bos.entity.report.ReportColumn; import java.math.BigDecimal; import java.math.RoundingMode; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.List; +import java.util.*; public class ReportUtils { @@ -80,6 +77,46 @@ public class ReportUtils { rowData.add(0,totalRow); } + + /** + * 根据日期字段对行数据进行排序 + * @param rowData 要排序的数据集合 + * @param dateField 日期字段名 + * @param descending 是否降序排序(true-降序,false-升序) + */ + public static void sortByDate(DynamicObjectCollection rowData, String dateField, boolean descending) { + if (rowData == null || dateField == null || rowData.isEmpty()) { + return; + } + + List dataList = new ArrayList<>(rowData); + + Collections.sort(dataList, new Comparator() { + @Override + public int compare(DynamicObject o1, DynamicObject o2) { + Date date1 = o1.getDate(dateField); + Date date2 = o2.getDate(dateField); + + if (date1 == null && date2 == null) { + return 0; + } + if (date1 == null) { + return descending ? 1 : -1; + } + if (date2 == null) { + return descending ? -1 : 1; + } + + int comparison = date1.compareTo(date2); + return descending ? -comparison : comparison; + } + }); + + // 清空原集合并添加排序后的数据 + rowData.clear(); + rowData.addAll(dataList); + } + /** * 对小计行处理 * @param rowData 数据集合