4 小时以前 ed01be06d17f1159d32e7fa2133a32f2986d3b9f
yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/qc/indicatorresult/MesQcProductReportWordBuilderTest.java
@@ -62,13 +62,27 @@
            // 备注默认文案
            assertTrue(tables.get(3).getRow(0).getCell(1).getText().contains("检验结果仅对样品本身或本批次负责"));
            // 签字行留空(打印后手写),不得出现姓名
            // 签字行带出姓名:检验=检测人、复核=复核人、批准=审核人
            String signLine = doc.getParagraphs().stream()
                    .filter(p -> p.getText().contains("批准:"))
                    .findFirst().orElseThrow().getText();
            assertTrue(signLine.contains("检验:") && signLine.contains("复核:"));
            assertTrue(!signLine.contains("李博") && !signLine.contains("周亚洁") && !signLine.contains("包翠萍"),
                    "签字行应留空,不输出检验/复核/批准姓名");
            assertTrue(signLine.contains("检验:李博"), "检验应带出检测人姓名:" + signLine);
            assertTrue(signLine.contains("复核:周亚洁"), "复核应带出复核人姓名:" + signLine);
            assertTrue(signLine.contains("批准:包翠萍"), "批准应带出审核人姓名:" + signLine);
        }
    }
    @Test
    public void testBuildWithoutSigners() throws IOException {
        MesQcQcReportRespVO report = randomReport();
        report.setInspectorName(null).setAuditName("").setApproveName(null);
        byte[] docx = MesQcProductReportWordBuilder.build(report);
        try (InputStream in = new ByteArrayInputStream(docx); XWPFDocument doc = new XWPFDocument(in)) {
            String signLine = doc.getParagraphs().stream()
                    .filter(p -> p.getText().contains("批准:"))
                    .findFirst().orElseThrow().getText();
            assertTrue(signLine.contains("检验:") && signLine.contains("复核:") && signLine.contains("批准:"),
                    "未指定人员时仍保留三个栏位供手写:" + signLine);
        }
    }