diff --git a/src/main/java/com/xujie/modules/inspection/controller/InspectionController.java b/src/main/java/com/xujie/modules/inspection/controller/InspectionController.java index dc5ef8c..5592189 100644 --- a/src/main/java/com/xujie/modules/inspection/controller/InspectionController.java +++ b/src/main/java/com/xujie/modules/inspection/controller/InspectionController.java @@ -469,35 +469,35 @@ public class InspectionController { // Row 1: 空行 sheet.createRow(1).setHeightInPoints(10); - // Row 2-9: 基本信息区 + // Row 2-8: 基本信息区(模仿验货结果模板:标签/值合并单元格横向铺满明细表宽度) writeBasicInfo(sheet, header, labelStyle, valueStyle); - // Row 10: 空行 - sheet.createRow(10).setHeightInPoints(10); + // Row 9: 空行 + sheet.createRow(9).setHeightInPoints(10); - // Row 11: PO明细标题 - Row row11 = sheet.createRow(11); - row11.setHeightInPoints(22); - Cell poTitleCell = row11.createCell(0); + // Row 10: PO明细标题 + Row row10 = sheet.createRow(10); + row10.setHeightInPoints(22); + Cell poTitleCell = row10.createCell(0); poTitleCell.setCellValue("PO明细列表"); poTitleCell.setCellStyle(titleStyle); - sheet.addMergedRegion(new CellRangeAddress(11, 11, 0, 12)); + sheet.addMergedRegion(new CellRangeAddress(10, 10, 0, 12)); - // Row 12: PO表头 - Row row12 = sheet.createRow(12); - row12.setHeightInPoints(22); + // Row 11: PO表头 + Row row11 = sheet.createRow(11); + row11.setHeightInPoints(22); String[] poHeaders = {"序号", "PO号", "PO行号", "产品编码", "Item", "物料名称", "SKU", "一级物料分类", "二级物料分类", "验货数量", "检验通过数量", "运输方式", "CRD日期"}; for (int i = 0; i < poHeaders.length; i++) { - Cell cell = row12.createCell(i); + Cell cell = row11.createCell(i); cell.setCellValue(poHeaders[i]); cell.setCellStyle(headerStyle); } - // Row 13+: PO数据行 + // Row 12+: PO数据行 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); for (int i = 0; i < detailList.size(); i++) { InspectionRequestDetailSub detail = detailList.get(i); - Row dataRow = sheet.createRow(13 + i); + Row dataRow = sheet.createRow(12 + i); dataRow.setHeightInPoints(22); createCell(dataRow, 0, String.valueOf(i + 1), dataStyle); @@ -576,76 +576,46 @@ public class InspectionController { } /** - * 写入基本信息区 (Row 2-9) + * 写入基本信息区 (Row 2-8,模仿验货结果模板:每行两组「标签|值」,单元格合并后横向铺满明细表宽度) + * 每行四段:左标签(0-2列) | 左值(3-5列) | 右标签(6-8列) | 右值(9-12列) */ private void writeBasicInfo(Sheet sheet, InspectionRequestHeader header, CellStyle labelStyle, CellStyle valueStyle) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - // Row 2: 申请单号 | 值 | 供应商编码 | 值 - Row row2 = sheet.createRow(2); - row2.setHeightInPoints(22); - createCell(row2, 0, "申请单号", labelStyle); - createCell(row2, 1, header.getRequestNo(), valueStyle); - createCell(row2, 2, "供应商编码", labelStyle); - createCell(row2, 3, header.getSupplierNo(), valueStyle); - - // Row 3: 申请日期 | 值 | 供应商名称 | 值 - Row row3 = sheet.createRow(3); - row3.setHeightInPoints(22); - createCell(row3, 0, "申请日期", labelStyle); - createCell(row3, 1, header.getRequestDate() != null ? sdf.format(header.getRequestDate()) : "", valueStyle); - createCell(row3, 2, "供应商名称", labelStyle); - createCell(row3, 3, header.getSupplierName(), valueStyle); - - // Row 4: 建议验货日期 | 值 | Planner | 值 - Row row4 = sheet.createRow(4); - row4.setHeightInPoints(22); - createCell(row4, 0, "建议验货日期", labelStyle); - createCell(row4, 1, header.getNeedInspectDate() != null ? sdf.format(header.getNeedInspectDate()) : "", valueStyle); - createCell(row4, 2, "Planner", labelStyle); - createCell(row4, 3, header.getPlanner(), valueStyle); - - // Row 5: 计划验货日期 | 值 | 申请人员 | 值 - Row row5 = sheet.createRow(5); - row5.setHeightInPoints(22); - createCell(row5, 0, "计划验货日期", labelStyle); - createCell(row5, 1, header.getPlanStartDate() != null ? sdf.format(header.getPlanStartDate()) : "", valueStyle); - createCell(row5, 2, "申请人员", labelStyle); - createCell(row5, 3, header.getCreateBy(), valueStyle); - - // Row 6: 验货地址 | 值(合并B7:D7) - Row row6 = sheet.createRow(6); - row6.setHeightInPoints(22); - createCell(row6, 0, "验货地址", labelStyle); - createCell(row6, 1, header.getInspectAddress(), valueStyle); - createCell(row6, 2, "", valueStyle); - createCell(row6, 3, "", valueStyle); - sheet.addMergedRegion(new CellRangeAddress(6, 6, 1, 3)); - - // Row 7: 城市简称 | 值 | 联系人 | 值 - Row row7 = sheet.createRow(7); - row7.setHeightInPoints(22); - createCell(row7, 0, "城市简称", labelStyle); - createCell(row7, 1, header.getInspectCityShort(), valueStyle); - createCell(row7, 2, "联系人", labelStyle); - createCell(row7, 3, header.getInspectContract(), valueStyle); - - // Row 8: 状态 | 值 | QC人员 | 值 - Row row8 = sheet.createRow(8); - row8.setHeightInPoints(22); - createCell(row8, 0, "状态", labelStyle); - createCell(row8, 1, header.getStatus(), valueStyle); - createCell(row8, 2, "QC人员", labelStyle); - createCell(row8, 3, header.getQcOperator(), valueStyle); - - // Row 9: 备注 | 值(合并B10:D10) - Row row9 = sheet.createRow(9); - row9.setHeightInPoints(22); - createCell(row9, 0, "备注", labelStyle); - createCell(row9, 1, header.getRemark(), valueStyle); - createCell(row9, 2, "", valueStyle); - createCell(row9, 3, "", valueStyle); - sheet.addMergedRegion(new CellRangeAddress(9, 9, 1, 3)); + String[][] rows = { + {"申请单号", header.getRequestNo(), "供应商编码", header.getSupplierNo()}, + {"申请日期", header.getRequestDate() != null ? sdf.format(header.getRequestDate()) : "", "供应商名称", header.getSupplierName()}, + {"建议验货日期", header.getNeedInspectDate() != null ? sdf.format(header.getNeedInspectDate()) : "", "Planner", header.getPlanner()}, + {"计划验货日期", header.getPlanStartDate() != null ? sdf.format(header.getPlanStartDate()) : "", "申请人员", header.getCreateBy()}, + {"验货地址", header.getInspectAddress(), "城市简称", header.getInspectCityShort()}, + {"联系人", header.getInspectContract(), "状态", header.getStatus()}, + {"QC人员", header.getQcOperator(), "备注", header.getRemark()} + }; + + for (int i = 0; i < rows.length; i++) { + int rowIndex = 2 + i; + Row row = sheet.createRow(rowIndex); + row.setHeightInPoints(22); + String[] pair = rows[i]; + + for (int c = 0; c <= 2; c++) { + createCell(row, c, c == 0 ? pair[0] : "", labelStyle); + } + for (int c = 3; c <= 5; c++) { + createCell(row, c, c == 3 ? (pair[1] == null ? "" : pair[1]) : "", valueStyle); + } + for (int c = 6; c <= 8; c++) { + createCell(row, c, c == 6 ? pair[2] : "", labelStyle); + } + for (int c = 9; c <= 12; c++) { + createCell(row, c, c == 9 ? (pair[3] == null ? "" : pair[3]) : "", valueStyle); + } + + sheet.addMergedRegion(new CellRangeAddress(rowIndex, rowIndex, 0, 2)); + sheet.addMergedRegion(new CellRangeAddress(rowIndex, rowIndex, 3, 5)); + sheet.addMergedRegion(new CellRangeAddress(rowIndex, rowIndex, 6, 8)); + sheet.addMergedRegion(new CellRangeAddress(rowIndex, rowIndex, 9, 12)); + } } /**