From 34d36a15f339d331d668d4063cfdff50cffa5800 Mon Sep 17 00:00:00 2001
From: zhou zhou <zozhouo3o@gmail.com>
Date: 星期五, 17 四月 2026 15:11:32 +0800
Subject: [PATCH] #导出服务

---
 rsf-server/src/main/java/com/vincent/rsf/server/common/service/ListExportService.java |   25 ++++++++++++++++++++++++-
 1 files changed, 24 insertions(+), 1 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/common/service/ListExportService.java b/rsf-server/src/main/java/com/vincent/rsf/server/common/service/ListExportService.java
index 7482860..be6e089 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/common/service/ListExportService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/common/service/ListExportService.java
@@ -3,6 +3,7 @@
 import com.vincent.rsf.framework.exception.CoolException;
 import com.vincent.rsf.server.common.domain.BaseParam;
 import com.vincent.rsf.server.common.utils.ExcelUtil;
+import org.apache.poi.ss.usermodel.Workbook;
 import org.springframework.stereotype.Service;
 
 import jakarta.servlet.http.HttpServletResponse;
@@ -35,6 +36,15 @@
             ListExportHandler<T, P> exportHandler,
             HttpServletResponse response
     ) throws Exception {
+        ExportWorkbook exportWorkbook = prepareExportWorkbook(map, paramBuilder, exportHandler);
+        ExcelUtil.build(exportWorkbook.workbook(), response);
+    }
+
+    public <T, P extends BaseParam> ExportWorkbook prepareExportWorkbook(
+            Map<String, Object> map,
+            Function<Map<String, Object>, P> paramBuilder,
+            ListExportHandler<T, P> exportHandler
+    ) {
         Map<String, Object> sanitizedMap = sanitizeExportMap(map);
         P baseParam = paramBuilder.apply(sanitizedMap);
         List<ExcelUtil.ExportColumn> columns = buildExportColumns(map);
@@ -50,7 +60,12 @@
                 .toList();
 
         ExcelUtil.ExportMeta exportMeta = buildExportMeta(map, rows.size(), exportHandler.defaultReportTitle());
-        ExcelUtil.build(ExcelUtil.create(rows, columns, exportMeta), response);
+        return new ExportWorkbook(
+                ExcelUtil.create(rows, columns, exportMeta),
+                rows.size(),
+                exportMeta,
+                columns
+        );
     }
 
     private Map<String, Object> sanitizeExportMap(Map<String, Object> map) {
@@ -171,4 +186,12 @@
         }
         return reportStyle;
     }
+
+    public record ExportWorkbook(
+            Workbook workbook,
+            int rowCount,
+            ExcelUtil.ExportMeta exportMeta,
+            List<ExcelUtil.ExportColumn> columns
+    ) {
+    }
 }

--
Gitblit v1.9.1