diff --git a/src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelExcelServiceImpl.java b/src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelExcelServiceImpl.java index ac4eb085..ebfc5d44 100644 --- a/src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelExcelServiceImpl.java +++ b/src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelExcelServiceImpl.java @@ -1464,14 +1464,14 @@ public class CoDelExcelServiceImpl implements CoDelExcelService { int rows = sheet.getPhysicalNumberOfRows(); // 根据图片分析Excel列位置: - // 列A (索引0): 序号 (itemNo) - 对应发货通知单明细的序号 - // 列B (索引1): 箱数 (boxQty) - 需要检测是否合并来判断是否合箱 - // 列C (索引2): SKU/PN - // 列D (索引3): SO - // 列E (索引4): 数量 (qty) - // 列F (索引5): 卷数 (rolls) - // 列G (索引6): 毛重 (grossWeight) - // 列H (索引7): 发票号 (invoice) + // 列A (索引0): SKU/PN + // 列B (索引1): SO + // 列C (索引2): 数量 (qty) + // 列D (索引3): 卷数 (rolls) + // 列E (索引4): 毛重 (grossWeight) + // 列F (索引5): 发票号 (invoice) + // 列G (索引6): 序号 (itemNo) - 对应发货通知单明细的序号 + // 列H (索引7): 箱数 (boxQty) - 需要检测是否合并来判断是否合箱 // 遍历每一行(从第二行开始,第一行是表头) int groupSeqNo = 0; // 箱子的组号 @@ -1482,19 +1482,19 @@ public class CoDelExcelServiceImpl implements CoDelExcelService { continue; } - // 验证发票号是否匹配(列H,索引7) - if (row.getCell(7) != null && !inData.getCmcInvoice().equals(getStringCellValue(row, 7))) { + // 验证发票号是否匹配(列F,索引5) + if (row.getCell(5) != null && !inData.getCmcInvoice().equals(getStringCellValue(row, 5))) { continue; } // 验证必填字段 - if (row.getCell(0) == null) { + if (row.getCell(6) == null) { throw new RuntimeException("第" + (j + 1) + "行的序号不能为空!"); } - if (row.getCell(2) == null) { + if (row.getCell(0) == null) { throw new RuntimeException("第" + (j + 1) + "行的SKU/PN不能为空!"); } - if (row.getCell(4) == null) { + if (row.getCell(2) == null) { throw new RuntimeException("第" + (j + 1) + "行的数量不能为空!"); } @@ -1506,32 +1506,32 @@ public class CoDelExcelServiceImpl implements CoDelExcelService { excelData.setBuNo(inData.getBuNo()); excelData.setDelNo(inData.getDelNo()); - // 读取序号(对应发货通知单明细的itemNo) - Integer notifyDetailItemNo = getIntegerCellValue(row, 0); - excelData.setNotifyDetailItemNo(notifyDetailItemNo); + // 读取SKU/PN(列A,索引0) + excelData.setPn(getStringCellValue(row, 0)); - // 读取SKU/PN - excelData.setPn(getStringCellValue(row, 2)); + // 读取SO(列B,索引1) + //excelData.setPoNo(getStringCellValue(row, 1)); - // 读取SO - //excelData.setPoNo(getStringCellValue(row, 3)); + // 读取数量(列C,索引2) + excelData.setQty(getNumericCellValueOrDefault(row, 2, "数量")); - // 读取数量 - excelData.setQty(getNumericCellValueOrDefault(row, 4, "数量")); + // 读取卷数(列D,索引3) + BigDecimal rolls = getNumericCellValueOrDefault(row, 3); - // 读取箱数(列B,索引1)- 用于判断是否合箱 - BigDecimal boxQty = getNumericCellValueOrDefault(row, 1); + // 读取毛重(列E,索引4) + BigDecimal grossWeight = getNumericCellValueOrDefault(row, 4); - // 读取卷数(列F,索引5) - BigDecimal rolls = getNumericCellValueOrDefault(row, 5); + // 读取序号(列G,索引6)- 对应发货通知单明细的itemNo + Integer notifyDetailItemNo = getIntegerCellValue(row, 6); + excelData.setNotifyDetailItemNo(notifyDetailItemNo); - // 读取毛重(列G,索引6) - BigDecimal grossWeight = getNumericCellValueOrDefault(row, 6); + // 读取箱数(列H,索引7)- 用于判断是否合箱 + BigDecimal boxQty = getNumericCellValueOrDefault(row, 7); // 验证合并单元格的一致性:如果箱数列合并,卷数和毛重列也必须合并 - boolean boxQtyMerged = isCellInMergedRegion(sheet, j, 1); - boolean rollsMerged = isCellInMergedRegion(sheet, j, 5); - boolean grossWeightMerged = isCellInMergedRegion(sheet, j, 6); + boolean boxQtyMerged = isCellInMergedRegion(sheet, j, 7); + boolean rollsMerged = isCellInMergedRegion(sheet, j, 3); + boolean grossWeightMerged = isCellInMergedRegion(sheet, j, 4); if (boxQtyMerged != rollsMerged || boxQtyMerged != grossWeightMerged) { throw new RuntimeException("第" + (j + 1) + "行错误:箱数、卷数、毛重列的合并状态必须一致!" + @@ -1543,7 +1543,7 @@ public class CoDelExcelServiceImpl implements CoDelExcelService { // 判断是否是新的箱子: // 1. 如果箱数列有值且不在合并区域中,或者是合并区域的第一行,则是新箱子 // 2. 如果箱数列没有值或者在合并区域中但不是第一行,则属于上一个箱子 - if (boxQty != null && !isMergedCellButNotFirst(sheet, j, 1)) { + if (boxQty != null && !isMergedCellButNotFirst(sheet, j, 7)) { // 新的箱子 groupSeqNo++; excelData.setBoxQty(boxQty);