|
|
|
@ -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)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
|