Files
CN_Gather/entrance/src/test/java/com/njcn/DynamicTableTest.java
hongawen 8caaf95427 ADD: 添加项目配置文档和开发指南
- 新增 CLAUDE.md 项目架构和开发指导文档
- 添加 Gitea本地协作开发服务器配置指南
- 完善检测模块架构分析文档
- 增加报告生成和Word文档处理工具指南
- 添加动态表格和结果服务测试用例
- 更新应用配置和VS Code开发环境设置

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-24 16:49:40 +08:00

175 lines
6.6 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.njcn;
import com.njcn.gather.tools.report.util.Docx4jUtil;
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
import org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart;
import org.docx4j.wml.ObjectFactory;
import org.docx4j.wml.P;
import org.docx4j.wml.Tbl;
import javax.xml.bind.JAXBElement;
import java.io.File;
import java.util.Arrays;
import java.util.List;
/**
* 动态表格生成测试
*
* @author hongawen
* @version 1.0
* @date 2025/9/21
*/
public class DynamicTableTest {
public static void main(String[] args) {
try {
// 测试场景12个回路7个检测项目与result.png一致
testScenario1();
// 测试场景21个回路只检测电压和频率
testScenario2();
// 测试场景34个回路多个检测项目
testScenario3();
System.out.println("所有测试场景执行完成!");
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 测试场景12个回路7个检测项目模拟result.png的数据
*/
public static void testScenario1() throws Exception {
System.out.println("=== 测试场景12个回路7个检测项目 ===");
// 创建Word文档
WordprocessingMLPackage wordPackage = WordprocessingMLPackage.createPackage();
MainDocumentPart mainDocumentPart = wordPackage.getMainDocumentPart();
ObjectFactory factory = new ObjectFactory();
// 1. 添加标题
P titleP = factory.createP();
Docx4jUtil.createTitle(factory, titleP, "检测结果场景12回路7项目", 32, true);
mainDocumentPart.getContent().add(titleP);
// 2. 检测项目配置
List<String> testItems = Arrays.asList(
"电压",
"电压不平衡度",
"电流不平衡度",
"谐波电压",
"谐波电流",
"间谐波电压",
"短时间闪变"
);
// 3. 检测结果数据模拟result.png中的数据
String[][] testResults = {
{"不合格", "不合格"}, // 电压
{"无法比较", "无法比较"}, // 电压不平衡度
{"合格", "合格"}, // 电流不平衡度
{"合格", "合格"}, // 谐波电压
{"合格", "合格"}, // 谐波电流
{"不合格", "不合格"}, // 间谐波电压
{"无法比较", "无法比较"} // 短时间闪变
};
// 4. 定义回路名称
List<String> circuitNames = Arrays.asList("测量回路 1", "测量回路 2");
// 5. 生成动态表格(包含说明内容)
JAXBElement<Tbl> table = Docx4jUtil.createDynamicTestResultTable(
factory, testItems, circuitNames, testResults, "不合格",
"部分值", "200", "去除最大最小值");
mainDocumentPart.getContent().add(table);
// 6. 保存文档
File outputFile = new File("检测结果_场景1_2回路7项目.docx");
wordPackage.save(outputFile);
System.out.println("文档已保存:" + outputFile.getAbsolutePath());
}
/**
* 测试场景21个回路只检测电压和频率
*/
public static void testScenario2() throws Exception {
System.out.println("=== 测试场景21个回路2个检测项目 ===");
WordprocessingMLPackage wordPackage = WordprocessingMLPackage.createPackage();
MainDocumentPart mainDocumentPart = wordPackage.getMainDocumentPart();
ObjectFactory factory = new ObjectFactory();
// 标题
P titleP = factory.createP();
Docx4jUtil.createTitle(factory, titleP, "检测结果场景21回路2项目", 32, true);
mainDocumentPart.getContent().add(titleP);
// 简单的检测项目
List<String> testItems = Arrays.asList("电压", "频率");
// 1个回路的检测结果
String[][] testResults = {
{"不合格"}, // 电压
{"合格"} // 频率
};
// 定义回路名称
List<String> circuitNames = Arrays.asList("#1母线");
// 生成表格(包含说明内容)
JAXBElement<Tbl> table = Docx4jUtil.createDynamicTestResultTable(
factory, testItems, circuitNames, testResults, "不合格",
"任意值", "100", "取第一个满足条件的数据");
mainDocumentPart.getContent().add(table);
File outputFile = new File("检测结果_场景2_1回路2项目.docx");
wordPackage.save(outputFile);
System.out.println("文档已保存:" + outputFile.getAbsolutePath());
}
/**
* 测试场景34个回路多个检测项目
*/
public static void testScenario3() throws Exception {
System.out.println("=== 测试场景34个回路5个检测项目 ===");
WordprocessingMLPackage wordPackage = WordprocessingMLPackage.createPackage();
MainDocumentPart mainDocumentPart = wordPackage.getMainDocumentPart();
ObjectFactory factory = new ObjectFactory();
// 标题
P titleP = factory.createP();
Docx4jUtil.createTitle(factory, titleP, "检测结果场景34回路5项目", 32, true);
mainDocumentPart.getContent().add(titleP);
// 检测项目
List<String> testItems = Arrays.asList(
"电压", "频率", "电压不平衡度", "谐波电压", "间谐波电压"
);
// 4个回路的检测结果
String[][] testResults = {
{"不合格", "合格", "合格", "不合格"}, // 电压
{"合格", "合格", "合格", "合格"}, // 频率
{"无法比较", "无法比较", "合格", "合格"}, // 电压不平衡度
{"合格", "不合格", "合格", "合格"}, // 谐波电压
{"不合格", "不合格", "不合格", "合格"} // 间谐波电压
};
// 定义回路名称(自定义名称示例)
List<String> circuitNames = Arrays.asList("主变高压侧", "主变低压侧", "备用线路1", "备用线路2");
// 生成表格(包含说明内容)
JAXBElement<Tbl> table = Docx4jUtil.createDynamicTestResultTable(
factory, testItems, circuitNames, testResults, "不合格",
"平均值", "300", "取算术平均值");
mainDocumentPart.getContent().add(table);
File outputFile = new File("检测结果_场景3_4回路5项目.docx");
wordPackage.save(outputFile);
System.out.println("文档已保存:" + outputFile.getAbsolutePath());
}
}