From ea2f070bfc30d0dc89fdc0ece80d440321132c1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Thu, 7 May 2026 21:14:55 +0800 Subject: [PATCH] =?UTF-8?q?hs=E7=A0=81=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MaterialBaseInfoApplicationService.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/materialBaseInfo/MaterialBaseInfoApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialBaseInfo/MaterialBaseInfoApplicationService.java index 8879dc1c6..065e374f3 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/materialBaseInfo/MaterialBaseInfoApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialBaseInfo/MaterialBaseInfoApplicationService.java @@ -444,6 +444,8 @@ public class MaterialBaseInfoApplicationService { if (StringUtils.isBlank(row.getHsCode()) && StringUtils.isNotBlank(row.getHsCodeImport())) { row.setHsCode(row.getHsCodeImport().trim()); } + // Excel 表头错位或重复时,HS 可能被读入「物料条形码」列;与 HS 完全相同时视为误填,保留 hsCode、清空条码 + normalizeImportBarCodeWhenDuplicateOfHs(row); fillOrganizationName(row, loginUser); String shipperCode = StringUtils.defaultString(row.getShipperCode(), ""); @@ -964,6 +966,25 @@ public class MaterialBaseInfoApplicationService { } } + /** + * 导入约定:「HS码/HS编码」与「物料条形码」为不同列。模板表头错位或两列误填相同 HS 时, + * barCode 会与 hsCode 相同;此时保留 hsCode,清空主表/子表条码,避免 HS 写入 bar_code。 + */ + private void normalizeImportBarCodeWhenDuplicateOfHs(MaterialBaseInfoDTO row) { + if (row == null) { + return; + } + if (StringUtils.isBlank(row.getBarCode())) { + row.setBarCode(null); + return; + } + row.setBarCode(row.getBarCode().trim()); + String hs = StringUtils.isNotBlank(row.getHsCode()) ? row.getHsCode().trim() : ""; + if (StringUtils.isNotBlank(hs) && row.getBarCode().equals(hs)) { + row.setBarCode(null); + } + } + private List buildImportBarCodeList(MaterialBaseInfoDTO row) { if (StringUtils.isBlank(row.getBarCode())) { return null;