feat: match warehouse BOL print layout
This commit is contained in:
@@ -8,6 +8,7 @@ import com.baiyue.print.renderer.DispatchBolRenderer;
|
||||
import com.baiyue.print.renderer.PdfUnits;
|
||||
import jakarta.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import org.apache.pdfbox.Loader;
|
||||
import org.apache.pdfbox.pdmodel.PDDocument;
|
||||
@@ -40,4 +41,45 @@ class DispatchBolPdfServiceGenerationTest {
|
||||
assertThat(new PDFTextStripper().getText(pdf)).contains("BILL OF LADING", "洛杉矶仓", "DS-WH-20260911-692865", "TSTU2186171", "Total CTNS:", "4");
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void rendersDenseContinuationPageAndPrintsTotalOnlyOnLastPage() throws Exception {
|
||||
List<DispatchBolPdfDtos.CargoRow> firstRows = rows(1, 18);
|
||||
List<DispatchBolPdfDtos.CargoRow> continuationRows = rows(19, 44);
|
||||
DispatchBolPdfDtos.Document first = page(1, 2, firstRows);
|
||||
DispatchBolPdfDtos.Document second = page(2, 2, continuationRows);
|
||||
|
||||
var generated = service.generate(new DispatchBolPdfDtos.Request(DispatchBolPdfDtos.TEMPLATE,
|
||||
new DispatchBolPdfDtos.PageSpec(new BigDecimal("210"), new BigDecimal("297")),
|
||||
"dense-bol.pdf", List.of(first, second)));
|
||||
|
||||
try (PDDocument pdf = Loader.loadPDF(generated.content())) {
|
||||
assertThat(pdf.getNumberOfPages()).isEqualTo(2);
|
||||
PDFTextStripper stripper = new PDFTextStripper();
|
||||
stripper.setStartPage(1);
|
||||
stripper.setEndPage(1);
|
||||
String firstText = stripper.getText(pdf);
|
||||
stripper.setStartPage(2);
|
||||
stripper.setEndPage(2);
|
||||
String secondText = stripper.getText(pdf);
|
||||
assertThat(firstText).contains("BILL OF LADING", "PALLET-01", "1 / 2").doesNotContain("Total CTNS:");
|
||||
assertThat(secondText).contains("PALLET-44", "Total CTNS:", "44", "2 / 2").doesNotContain("SHIP FROM");
|
||||
}
|
||||
}
|
||||
|
||||
private DispatchBolPdfDtos.Document page(int pageNumber, int pageCount, List<DispatchBolPdfDtos.CargoRow> rows) {
|
||||
return new DispatchBolPdfDtos.Document("NOBLE LOGISTICS INC", "10767 7th Street", "ECHO", "14068390973 F",
|
||||
"09/14/2026 08:00 EDT", "—", "—", "IND9", "IND9", "—", "DS-WH-20260911-692865",
|
||||
"FBA19TEST", "PO-TEST", 44, pageNumber, pageCount, rows);
|
||||
}
|
||||
|
||||
private List<DispatchBolPdfDtos.CargoRow> rows(int start, int end) {
|
||||
List<DispatchBolPdfDtos.CargoRow> rows = new ArrayList<>();
|
||||
for (int index = start; index <= end; index++) {
|
||||
String pallet = index <= 4 ? "PALLET-01" : "PALLET-" + String.format("%02d", index);
|
||||
rows.add(new DispatchBolPdfDtos.CargoRow("D2250", pallet, "CLT2转IND9", "HDHK2608" + String.format("%06d", index),
|
||||
"FBA19TEST" + index + "-" + index + "件", "PO" + index, 1));
|
||||
}
|
||||
return rows;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user