From 781e8477493d420d5ce11bf3b5f4fe43e45c2c06 Mon Sep 17 00:00:00 2001 From: gjh <1421wake> Date: Thu, 4 Sep 2025 15:14:27 +0800 Subject: [PATCH] =?UTF-8?q?word=E6=A8=A1=E6=9D=BF=E5=AF=BC=E5=87=BAdemov5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-modules/ruoyi-demo/pom.xml | 8 +- .../org/dromara/demo/domain/CheckItem.java | 7 - .../org/dromara/demo/domain/ReportData.java | 2 +- .../dromara/demo/domain/WordExportTest.java | 197 ++++++++++++++++++ .../demo/domain/WordReportExporter.java | 3 - .../src/main/resources/score_template.docx | Bin 0 -> 30373 bytes 6 files changed, 205 insertions(+), 12 deletions(-) create mode 100644 ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/WordExportTest.java create mode 100644 ruoyi-modules/ruoyi-demo/src/main/resources/score_template.docx diff --git a/ruoyi-modules/ruoyi-demo/pom.xml b/ruoyi-modules/ruoyi-demo/pom.xml index 1140c33..560ea6e 100644 --- a/ruoyi-modules/ruoyi-demo/pom.xml +++ b/ruoyi-modules/ruoyi-demo/pom.xml @@ -14,13 +14,19 @@ demo模块 - + org.apache.poi poi-ooxml 5.2.4 + + + cn.afterturn + easypoi-spring-boot-starter + 4.4.0 + diff --git a/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/CheckItem.java b/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/CheckItem.java index dc3b91d..76724c5 100644 --- a/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/CheckItem.java +++ b/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/CheckItem.java @@ -23,13 +23,6 @@ public class CheckItem { private String checkProject; - /** - * 具体检查子项描述 - * 示例值:"站房清洁与规范管理" - * 表示该项目下的具体考核条目 - */ - private String checkItem; - // TODO 需要设置集合 private List checkItemBasis; diff --git a/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/ReportData.java b/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/ReportData.java index 0d9d04f..4f3dc66 100644 --- a/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/ReportData.java +++ b/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/ReportData.java @@ -23,7 +23,7 @@ public class ReportData { /** 运维单位,如:上海环保科技有限公司 */ private String operationUnit; - /** 检查时间,格式:yyyy-MM-dd */ + /** 检查时间,格式:yyyy-MM-dd HH:mm:ss */ private LocalDateTime checkTime; /** 检查人员,多人用顿号或逗号分隔,如:张三、李四 */ diff --git a/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/WordExportTest.java b/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/WordExportTest.java new file mode 100644 index 0000000..8d30d9f --- /dev/null +++ b/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/WordExportTest.java @@ -0,0 +1,197 @@ +package org.dromara.demo.domain; + +import cn.afterturn.easypoi.word.WordExportUtil; +import cn.hutool.json.JSONUtil; +import org.apache.poi.xwpf.usermodel.XWPFDocument; +import org.jetbrains.annotations.NotNull; + +import java.io.*; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.Map; + +public class WordExportTest { + + public static void main(String[] args) throws Exception { + // 1. 准备数据(用户填写的内容) + Map data = getData(); + + // 2. 从 classpath 根目录加载模板文件:resources/score_template.docx + InputStream templateIs = WordExportTest.class + .getClassLoader() + .getResourceAsStream("score_template.docx"); // ✅ 路径已调整 + + if (templateIs == null) { + System.err.println("❌ 模板文件未找到!请检查路径:classpath:score_template.docx"); + return; + } + + System.out.println("✅ 模板加载成功!"); + + // 3. 创建临时文件(因为 EasyPOI exportWord07 不支持 InputStream) + File tempFile = File.createTempFile("temp_template", ".docx"); + tempFile.deleteOnExit(); + + try (FileOutputStream fos = new FileOutputStream(tempFile)) { + byte[] buffer = new byte[1024]; + int len; + while ((len = templateIs.read(buffer)) != -1) { + fos.write(buffer, 0, len); + } + } + + // 4. ✅ 使用 EasyPOI 填充模板(传 File) + XWPFDocument document = WordExportUtil.exportWord07(String.valueOf(tempFile), data); + + // 5. 导出到本地 + String outputPath = "D:\\Users\\14212\\Desktop\\评分报告.docx"; // 可改为你的路径 + try (FileOutputStream out = new FileOutputStream(outputPath)) { + document.write(out); + } + + // 6. 关闭资源 + document.close(); + templateIs.close(); + + System.out.println("✅ Word 文件已生成:" + outputPath); + } + + @NotNull + private static Map getData() { + // 1. 准备数据(用户填写的内容) + Map data = new LinkedHashMap<>(); + data.put("siteName", "临安区龙岗镇站"); + data.put("checkDateTime", "2025-09-04 10:30"); + data.put("operationUnit", "XX有限公司"); + data.put("checkPeople", "李工"); + data.put("totalScore", "140"); // 28项 × 5分 = 140 + // === 简单粗暴:score_01 到 score_28 全部设为 5 === + for (int i = 1; i <= 28; i++) { + data.put("score_" + String.format("%02d", i), "5"); + } + // -------------------- 零气测试 -------------------- + double zero_flow = 5.0; // 零气MFC设定流量(L/min) + double zero_std = 4.98; // 标准流量计实测值(L/min) + // -------------------- 标气测试 -------------------- + double span_flow = 100.0; // 标气MFC设定流量(ml/min) + double span_std = 101.5; // 标准流量计实测值(ml/min) + + data.put("zero_flow", String.valueOf(zero_flow)); + data.put("zero_std", String.valueOf(zero_std)); + data.put("zero_error", calcError(zero_flow, zero_std)); // 自动计算 + + data.put("span_flow", String.valueOf(span_flow)); + data.put("span_std", String.valueOf(span_std)); + data.put("span_error", calcError(span_flow, span_std)); // 自动计算 + + // -------------------- SO2 流量测试 -------------------- + double soDisplay = 0.8; // SO2显示流量(L/min) + double soStd = 0.78; // 标准流量计测值(L/min) + + data.put("so_display", String.valueOf(soDisplay)); + data.put("so_std", String.valueOf(soStd)); + data.put("so_error", calcError(soDisplay, soStd)); // 自动计算:相对误差 + + // -------------------- SO2 浓度测试 -------------------- + double soConcOutput = 500.0; // 标气稀释输出浓度(ppb) + double soConcResponse = 492.0; // 仪器响应浓度(ppb) + + data.put("so_conc_output", String.valueOf(soConcOutput)); + data.put("so_conc_response", String.valueOf(soConcResponse)); + data.put("so_conc_error", calcError(soConcResponse, soConcOutput)); // (响应 - 输出)/输出 × 100% + + // -------------------- t90响应时间(用户填写,不参与计算)-------------------- + data.put("so_time", "4.2"); // 用户手动填写,单位:min,不参与任何计算 + + + // -------------------- NO2 流量测试 -------------------- + double noDisplay = 0.8; + double noStd = 0.78; + + data.put("no_display", String.valueOf(noDisplay)); + data.put("no_std", String.valueOf(noStd)); + data.put("no_error", calcError(noDisplay, noStd)); // 自动计算:相对误差 + + // -------------------- NO 浓度测试 -------------------- + double noConcOutput = 500.0; // 标气稀释输出浓度(ppb) + double noConcResponse = 492.0; // 仪器响应浓度(ppb) + + data.put("no_conc_output", String.valueOf(noConcOutput)); + data.put("no_conc_response", String.valueOf(noConcResponse)); + data.put("no_conc_error", calcError(noConcResponse, noConcOutput)); // (响应 - 输出)/输出 × 100% + + // -------------------- t90响应时间(用户填写,不参与计算)-------------------- + data.put("no_time", "4.2"); // 用户手动填写,单位:min,不参与任何计算 + + + // -------------------- CO 流量测试 -------------------- + double coDisplay = 0.8; // SO2显示流量(L/min) + double coStd = 0.78; // 标准流量计测值(L/min) + + data.put("co_display", String.valueOf(coDisplay)); + data.put("co_std", String.valueOf(coStd)); + data.put("co_error", calcError(coDisplay, coStd)); // 自动计算:相对误差 + + // -------------------- NO2 浓度测试 -------------------- + double coConcOutput = 500.0; // 标气稀释输出浓度(ppb) + double coConcResponse = 492.0; // 仪器响应浓度(ppb) + + data.put("co_conc_output", String.valueOf(coConcOutput)); + data.put("co_conc_response", String.valueOf(coConcResponse)); + data.put("co_conc_error", calcError(coConcResponse, coConcOutput)); // (响应 - 输出)/输出 × 100% + + // -------------------- t90响应时间(用户填写,不参与计算)-------------------- + data.put("co_time", "4.2"); // 用户手动填写,单位:min,不参与任何计算 + + + double oDisplay = 0.8; // SO2显示流量(L/min) + double oStd = 0.78; // 标准流量计测值(L/min) + + data.put("o_display", String.valueOf(oDisplay)); + data.put("o_std", String.valueOf(oStd)); + data.put("o_error", calcError(oDisplay, oStd)); // 自动计算:相对误差 + + double oConcOutput = 500.0; // 标气稀释输出浓度(ppb) + double oConcResponse = 492.0; // 仪器响应浓度(ppb) + + data.put("o_conc_output", String.valueOf(oConcOutput)); + data.put("o_conc_response", String.valueOf(oConcResponse)); + data.put("o_conc_error", calcError(oConcResponse, oConcOutput)); // (响应 - 输出)/输出 × 100% + // -------------------- t90响应时间(用户填写,不参与计算)-------------------- + data.put("o_time", "4.2"); // 用户手动填写,单位:min,不参与任何计算 + + //----------PM10 测试---------- + double pm10Display = 0.8; + double pm10Std = 0.78; + + data.put("pm10_display", String.valueOf(pm10Display)); + data.put("pm10_std", String.valueOf(pm10Std)); + data.put("pm10_error", calcError(pm10Display, pm10Std)); // 自动计算:相对误差 + + data.put("pm10_k", 0.8); + data.put("k0_A", 0.8); + + + //----------PM2 测试---------- + double pm2Display = 0.8; + double pm2Std = 0.78; + + data.put("pm2_display", String.valueOf(pm2Display)); + data.put("pm2_std", String.valueOf(pm2Std)); + data.put("pm2_error", calcError(pm2Display, pm2Std)); // 自动计算:相对误差 + + data.put("pm2_k", 0.5); + data.put("k0_B", 0.5); + + System.out.println("✅ 数据准备完成!"); + System.out.println(JSONUtil.toJsonStr(data)); + return data; + } + + // 工具方法:计算相对误差,保留1位小数 + private static String calcError(double mfcFlow, double stdFlow) { + if (Math.abs(stdFlow) < 0.0001) return "0.0"; // 防止除0 + double error = (mfcFlow - stdFlow) / stdFlow * 100; + return String.format("%.1f", error); + } +} diff --git a/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/WordReportExporter.java b/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/WordReportExporter.java index cd7b74f..a0ded01 100644 --- a/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/WordReportExporter.java +++ b/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/WordReportExporter.java @@ -318,7 +318,6 @@ public class WordReportExporter { CheckItem item1 = new CheckItem(); item1.setCheckProject("01站房环境保障情况(5分)"); - item1.setCheckItem("站房环境是否清洁,是否符合监测要求"); item1.setItemScore(2); item1.setObtainedScore(1); item1.setScoringBasis(List.of( @@ -335,7 +334,6 @@ public class WordReportExporter { CheckItem item2 = new CheckItem(); item2.setCheckProject("01站房环境保障情况(5分)"); - item2.setCheckItem("站房温度是否控制在25±5℃,相对湿度控制在80%以下)"); item2.setItemScore(3); item2.setObtainedScore(3); item2.setScoringBasis(List.of("1)仪器运行正常;")); @@ -348,7 +346,6 @@ public class WordReportExporter { CheckItem item3 = new CheckItem(); item3.setCheckProject("02采样系统维护效果(10分)"); - item3.setCheckItem("采样口距离地面、房顶高度、周围空间是否符合《规范》(注1)要求"); item3.setItemScore(3); item3.setObtainedScore(3); item3.setScoringBasis(List.of("1)仪器运行正常;")); diff --git a/ruoyi-modules/ruoyi-demo/src/main/resources/score_template.docx b/ruoyi-modules/ruoyi-demo/src/main/resources/score_template.docx new file mode 100644 index 0000000000000000000000000000000000000000..e1ddff0654c7b47abbeac4628c6ffc22c9f3ed3c GIT binary patch literal 30373 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 G>Hh#z6KmK2 literal 0 HcmV?d00001