From f70b446282ac914241a18901505442a0853bec27 Mon Sep 17 00:00:00 2001 From: wangyu <823267011@qq.com> Date: Sat, 27 Jun 2026 15:03:17 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E5=8D=95=E5=85=83=E6=A0=BC?= =?UTF-8?q?=E5=90=88=E5=B9=B6=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../listener/ErpDeliveryExcelListener.java | 22 +++++++++++++++++++ .../impl/ErpPurchasePlanServiceImpl.java | 16 +++++++------- 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/klp-erp/src/main/java/com/klp/erp/listener/ErpDeliveryExcelListener.java b/klp-erp/src/main/java/com/klp/erp/listener/ErpDeliveryExcelListener.java index f7c9121d4..e210686d8 100644 --- a/klp-erp/src/main/java/com/klp/erp/listener/ErpDeliveryExcelListener.java +++ b/klp-erp/src/main/java/com/klp/erp/listener/ErpDeliveryExcelListener.java @@ -58,6 +58,11 @@ public class ErpDeliveryExcelListener extends AnalysisEventListener cd = e.getCellData(); + if (cd == null) { + return true; + } + if (cd.getType() == com.alibaba.excel.enums.CellDataTypeEnum.EMPTY) { + return true; + } + String s = cd.getStringValue(); + return s == null || s.trim().isEmpty(); + } catch (Throwable t) { + return false; + } + } + @Override public void doAfterAllAnalysed(AnalysisContext context) { // no-op diff --git a/klp-erp/src/main/java/com/klp/erp/service/impl/ErpPurchasePlanServiceImpl.java b/klp-erp/src/main/java/com/klp/erp/service/impl/ErpPurchasePlanServiceImpl.java index 6e9417dca..1db84a07a 100644 --- a/klp-erp/src/main/java/com/klp/erp/service/impl/ErpPurchasePlanServiceImpl.java +++ b/klp-erp/src/main/java/com/klp/erp/service/impl/ErpPurchasePlanServiceImpl.java @@ -389,23 +389,21 @@ public class ErpPurchasePlanServiceImpl implements IErpPurchasePlanService { batch.setFileName(StringUtils.isNotBlank(fileName) ? fileName : "到货表"); deliveryBatchMapper.insert(batch); - // 6) 合并单元格向下填充 + 单位换算 + 落库 + WMS到货标记 + // 6) 落库 + 单位换算 + WMS到货标记 + // 合并单元格:车号(F)几卷共用一车 → 向下填充让每卷都带车号; + // 数量(G=整车总重)/件数(H=整车件数) 是「整车合计」,只记在该车首行(其余行留空), + // 避免按行重复计数(用户:一共3件,不是每行3件)。 String lastTruckNo = null; - BigDecimal lastTruckWeight = null; - Integer lastPieceCount = null; int count = 0; int matched = 0; for (ErpPurchasePlanDeliveryImportVo row : rows) { if (StringUtils.isNotBlank(row.getTruckNo())) { lastTruckNo = row.getTruckNo(); - lastTruckWeight = row.getTruckWeight(); - lastPieceCount = row.getPieceCount(); } if (StringUtils.isBlank(row.getCoilNo()) && row.getCoilWeight() == null) { continue; } boolean arrived = StringUtils.isNotBlank(row.getCoilNo()) && wmsArrivedSet.contains(normCoil(row.getCoilNo())); - BigDecimal truckWeight = row.getTruckWeight() != null ? row.getTruckWeight() : lastTruckWeight; ErpPurchasePlanDelivery d = new ErpPurchasePlanDelivery(); d.setPlanId(planId); d.setBatchId(batch.getBatchId()); @@ -415,9 +413,11 @@ public class ErpPurchasePlanServiceImpl implements IErpPurchasePlanService { d.setSpec(row.getSpec()); d.setCoilNo(row.getCoilNo()); d.setCoilWeight(convertWeight(row.getCoilWeight(), kgConverted)); + // 车号:每卷归属的车(向下填充) d.setTruckNo(StringUtils.isNotBlank(row.getTruckNo()) ? row.getTruckNo() : lastTruckNo); - d.setTruckWeight(convertWeight(truckWeight, kgConverted)); - d.setPieceCount(row.getPieceCount() != null ? row.getPieceCount() : lastPieceCount); + // 整车总重 / 件数:整车合计,仅该车首行有值,不向下填充 + d.setTruckWeight(convertWeight(row.getTruckWeight(), kgConverted)); + d.setPieceCount(row.getPieceCount()); d.setSalesCode(row.getSalesCode()); d.setArrivalStation(row.getArrivalStation()); deliveryMapper.insert(d);