liujie
2026-05-16 6f7cb955a2fbd54cfaac712537519af7b5707542
update
2个文件已修改
30 ■■■■■ 已修改文件
admin-server/src/main/java/com/estate/expert/admin/stat/report/render/WordNumberingSanitizer.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin-server/src/main/resources/templates/设备风险评估报告new.docx 补丁 | 查看 | 原始文档 | blame | 历史
admin-server/src/main/java/com/estate/expert/admin/stat/report/render/WordNumberingSanitizer.java
@@ -4,7 +4,10 @@
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFNumbering;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.apache.poi.xwpf.usermodel.XWPFTable;
import org.apache.poi.xwpf.usermodel.XWPFTableCell;
import org.apache.poi.xwpf.usermodel.XWPFTableRow;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTDecimalNumber;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTNumLvl;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTNumPr;
@@ -44,6 +47,9 @@
        }
        document.getTables().forEach(table -> table.getRows().forEach(row ->
                row.getTableCells().forEach(cell -> sanitizeCell(document, cell, normalizeDangerDetail))));
        if (normalizeDangerDetail) {
            boldSummaryRows(document, "综合得分");
        }
        document.getHeaderList().forEach(header -> header.getParagraphs().forEach(WordNumberingSanitizer::sanitizeParagraph));
        document.getFooterList().forEach(footer -> footer.getParagraphs().forEach(WordNumberingSanitizer::sanitizeParagraph));
    }
@@ -60,6 +66,30 @@
                row.getTableCells().forEach(innerCell -> sanitizeCell(document, innerCell, normalizeDangerDetail))));
    }
    private static void boldSummaryRows(XWPFDocument document, String markerText) {
        if (document == null || markerText == null || markerText.isBlank()) {
            return;
        }
        for (XWPFTable table : document.getTables()) {
            for (XWPFTableRow row : table.getRows()) {
                boolean summaryRow = row.getTableCells().stream()
                        .map(XWPFTableCell::getText)
                        .anyMatch(text -> text != null && text.contains(markerText));
                if (!summaryRow) {
                    continue;
                }
                for (XWPFTableCell cell : row.getTableCells()) {
                    for (XWPFParagraph paragraph : cell.getParagraphs()) {
                        for (XWPFRun run : paragraph.getRuns()) {
                            run.setBold(true);
                        }
                    }
                }
            }
        }
    }
    private static void normalizeDangerDetailHeadingNumbering(XWPFDocument document, List<XWPFParagraph> paragraphs) {
        boolean inDangerDetail = false;
        boolean pendingNewGroup = false;
admin-server/src/main/resources/templates/设备风险评估报告new.docx
Binary files differ