Browse Source

fix: 动环巡检报告目录调整

feature/agg
wangguangyuan 2 months ago
parent
commit
f37f7bbecc
2 changed files with 26 additions and 6 deletions
  1. +25
    -5
      inspect-main/inspect-main-task/src/main/java/com/inspect/resultmain/controller/DonghuanReportExportController.java
  2. +1
    -1
      inspect-main/inspect-main-task/src/main/resources/report/wordparts/styles.xml

+ 25
- 5
inspect-main/inspect-main-task/src/main/java/com/inspect/resultmain/controller/DonghuanReportExportController.java View File

@ -61,9 +61,12 @@ import java.util.zip.ZipOutputStream;
* + 仿宋_GB2312 16pt 浅蓝副标题 + 封面签署表(初审/校对/审核/巡检日期)</li>
* <li>标题:报告标题 方正小标宋简体 22pt(二号)不加粗;一级标题:黑体 16pt(三号);
* 二级标题:仿宋_GB2312 16pt(三号)</li>
* <li><b>章节编号(与模板一致):标题使用 Word 多级自动编号 —— 一级「一、」、二级「(一)」、
* 三级「1.」、四级「(1)」(见 {@link #createHeadingNumbering}),标题文字里不再写手写序号;
* 各级标题带 outlineLvl 大纲级别,Word 导航窗格与「引用 → 目录」可直接生成目录</b></li>
* <li><b>段落样式:正文/表格用「正文」(Normal),章节标题用「标题 2 / 标题 3 …」
* (标题 1 留出不用,给报告标题或上层文档)</b>;标题样式定义在
* {@code report/wordparts/styles.xml}(heading 1~5),自带大纲级别,
* 导航窗格与「引用 → 目录」可直接生成目录。标题同时使用 Word 多级自动编号 —— 一级「一、」、
* 二级「(一)」、三级「1.」、四级「(1)」(见 {@link #createHeadingNumbering}),
* 编号级别不随标题样式级别变化,标题文字里也不再写手写序号</li>
* <li><b>表格宽度:通篇统一 {@link #TABLE_W} = 8844 twips(= 版心宽,与模板一致),
* 列宽由 {@code COLS_*} 常量按总和 8844 分配,tblLayout=fixed、表格居中,
* 保证所有表格左右边界完全对齐且不越出版心</b></li>
@ -641,6 +644,19 @@ public class DonghuanReportExportController extends BaseController {
STNumberFormat.DECIMAL, STNumberFormat.DECIMAL};
/** 各级编号字体(模板:一级黑体,其余仿宋_GB2312) */
private static final String[] HEADING_NUM_FONT = {FONT_HEAD, FONT_BODY, FONT_BODY, FONT_BODY};
/**
* 各级标题使用的段落样式 id:定义在 {@code report/wordparts/styles.xml},
* 样式名沿用 Word 内置的 heading 1~5(中文界面即「标题 1」~「标题 5」)。
* <p>
* 注意:标题<b>从「标题 2」开始</b>,「标题 1」留给报告标题/上层文档不使用,
* 因此样式与大纲级别都比编号级别高一级(见 {@link #HEADING_LEVEL_OFFSET})。
*/
private static final String[] HEADING_STYLE_ID = {"Heading2", "Heading3", "Heading4", "Heading5"};
/**
* 标题级别起始偏移:标题从「标题 2」开始(一级留出),所以段落样式、大纲级别 = 编号级别 + 1;
* 编号本身仍是一级「一、」、二级「(一)」…(编号级别不变,字体字号也不变)。
*/
private static final int HEADING_LEVEL_OFFSET = 1;
/**
* 创建章节标题的多级自动编号定义(与机器人巡检报告模板一致),返回 numId。
@ -682,7 +698,8 @@ public class DonghuanReportExportController extends BaseController {
}
/**
* 章节标题段落:多级自动编号 + 大纲级别;一级标题黑体三号,二级及以下仿宋_GB2312 三号(与模板一致)。
* 章节标题段落:挂「标题 1 / 标题 2 …」段落样式 + 多级自动编号 + 大纲级别;
* 一级标题黑体三号,二级及以下仿宋_GB2312 三号(与模板一致)。
*
* @param level 编号级别,取 {@link #LVL_1} / {@link #LVL_2} / {@link #LVL_3} / {@link #LVL_4}
*/
@ -690,6 +707,8 @@ public class DonghuanReportExportController extends BaseController {
BigInteger numId, int before, int after) {
String font = (level == LVL_1) ? FONT_HEAD : FONT_BODY;
XWPFParagraph p = addPara(doc, text, font, SZ_HEAD_THIRD, false, false, null, null, before, after);
// 段落样式(正文=默认 Normal,标题=标题 1/2/3/4),与模板一样通过样式体现层级
p.setStyle(HEADING_STYLE_ID[Math.min(level, HEADING_STYLE_ID.length - 1)]);
setHeadingNumbering(p, level, numId);
setFirstLineIndentOneChar(p, SZ_HEAD_THIRD); // 标题首行缩进 1 字符
setKeepNext(p);
@ -704,8 +723,9 @@ public class DonghuanReportExportController extends BaseController {
ilvl.setVal(BigInteger.valueOf(level));
CTDecimalNumber numIdNum = numPr.isSetNumId() ? numPr.getNumId() : numPr.addNewNumId();
numIdNum.setVal(numId);
// 大纲级别 = 编号级别 + 偏移(标题从「标题 2」开始,故 +1),与段落样式级别保持一致
CTDecimalNumber outlineLvl = pPr.isSetOutlineLvl() ? pPr.getOutlineLvl() : pPr.addNewOutlineLvl();
outlineLvl.setVal(BigInteger.valueOf(level));
outlineLvl.setVal(BigInteger.valueOf(level + HEADING_LEVEL_OFFSET));
}
/**


+ 1
- 1
inspect-main/inspect-main-task/src/main/resources/report/wordparts/styles.xml
File diff suppressed because it is too large
View File


Loading…
Cancel
Save