3 小时以前 ed01be06d17f1159d32e7fa2133a32f2986d3b9f
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/indicatorresult/MesQcProductReportWordBuilder.java
@@ -18,7 +18,8 @@
 * 产品检验单(纸质"××产品质量检验单"版式)Word 构建器
 *
 * 版式:标题(公司 + 产品检验单)→ 表头信息 5 行 → 检验项目/检验结果 两列矩阵 →
 * 判定结论(自动带出检验结果)/质检专用章(留空盖章)→ 备注 → 检验/复核/批准签字行。
 * 判定结论(自动带出检验结果)/质检专用章(留空盖章)→ 备注 →
 * 检验/复核/批准签字行(分别带出检测人、复核人、审核人姓名)。
 * 不含技术指标列;分组项不展示,录入项平铺;平行测量多值顿号合并。
 */
public class MesQcProductReportWordBuilder {
@@ -53,7 +54,7 @@
            writeItemTable(doc, report);
            writeConclusionTable(doc, report);
            writeRemarkTable(doc, report);
            writeSignLine(doc);
            writeSignLine(doc, report);
            doc.write(out);
            return out.toByteArray();
        }
@@ -172,12 +173,23 @@
    // ========== 签字行 ==========
    /** 签字行固定留空,与判定结论/质检专用章一致,打印后手写 */
    private static void writeSignLine(XWPFDocument doc) {
    /**
     * 签字行:检验/复核/批准分别带出检测人(inspectorUserId)、复核人(auditUserId)、
     * 审核人(approveUserId)姓名;未指定人员时该段留空,打印后手写
     */
    private static void writeSignLine(XWPFDocument doc, MesQcQcReportRespVO report) {
        XWPFParagraph paragraph = doc.createParagraph();
        paragraph.setAlignment(ParagraphAlignment.LEFT);
        paragraph.setSpacingBefore(400);
        addRun(paragraph, "检验:         复核:         批准:        ", 12, true);
        String text = "检验:" + signName(report.getInspectorName())
                + "    复核:" + signName(report.getAuditName())
                + "    批准:" + signName(report.getApproveName());
        addRun(paragraph, text, 12, true);
    }
    /** 签名段:有姓名则打印姓名并留签名余量,无姓名则整段留空便于手写 */
    private static String signName(String name) {
        return notBlank(name) ? name + "   " : "     ";
    }
    // ========== 表格基础 ==========