From fe6928c3bfc64132d345e9f7f645686c90a0376d Mon Sep 17 00:00:00 2001 From: "han\\hanst" Date: Wed, 9 Sep 2026 10:14:53 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=B2=E8=A2=AB=E7=89=A9=E6=96=99=E7=BB=91?= =?UTF-8?q?=E5=AE=9A=EF=BC=8C=E4=B8=8D=E8=83=BD=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sys/modules/ecss/mapper/CoDelMapper.java | 6 +++++ .../ecss/service/impl/CoDelServiceImpl.java | 23 +++++++++++++++++++ .../resources/mapper/ecss/CoDelMapper.xml | 14 +++++++++++ .../mapper/part/PartInformationMapper.xml | 3 +++ 4 files changed, 46 insertions(+) diff --git a/src/main/java/com/xujie/sys/modules/ecss/mapper/CoDelMapper.java b/src/main/java/com/xujie/sys/modules/ecss/mapper/CoDelMapper.java index 52dfd14b..25c118ce 100644 --- a/src/main/java/com/xujie/sys/modules/ecss/mapper/CoDelMapper.java +++ b/src/main/java/com/xujie/sys/modules/ecss/mapper/CoDelMapper.java @@ -118,6 +118,12 @@ public interface CoDelMapper { void deleteHsCode(EcssHsCodeData inData); + /** + * 按工厂+BU+品名+品牌查询已绑定该HS品名的物料编码。 + * 删除品名前必须先拦截,避免物料上的品名引用悬空。 + */ + List listPartNosBoundByHsCode(EcssHsCodeData inData); + List searchPropertiesItemList(@Param("site") String site, @Param("itemNo")String itemNo, @Param("buNo") String buNo, diff --git a/src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelServiceImpl.java b/src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelServiceImpl.java index a0be3b3d..67c65436 100644 --- a/src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelServiceImpl.java +++ b/src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelServiceImpl.java @@ -407,6 +407,29 @@ public class CoDelServiceImpl implements CoDelService { @Override @Transactional public void deleteHsCode(EcssHsCodeData data) { + if (StringUtils.isBlank(data.getHsCodeDesc()) || StringUtils.isBlank(data.getBuNo())) { + throw new RuntimeException("品名或BU不能为空。"); + } + if (StringUtils.isBlank(data.getSite())) { + data.setSite(coDelMapper.getSiteByBu(data.getBuNo())); + } + if (StringUtils.isBlank(data.getBrand())) { + data.setBrand("无"); + } + // 删除前按工厂+BU+品名+品牌校验物料绑定;有引用则禁止删除,避免物料 HS 品名悬空 + List boundPartNos = coDelMapper.listPartNosBoundByHsCode(data); + if (boundPartNos != null && !boundPartNos.isEmpty()) { + int total = boundPartNos.size(); + int displayLimit = 30; + List displayList = total > displayLimit ? boundPartNos.subList(0, displayLimit) : boundPartNos; + String partNoText = String.join("、", displayList); + String suffix = total > displayLimit ? " 等,共" + total + "个" : ""; + log.warn("删除HS品名失败,存在物料绑定. site={}, buNo={}, hsCodeDesc={}, brand={}, partCount={}", + data.getSite(), data.getBuNo(), data.getHsCodeDesc(), data.getBrand(), total); + throw new RuntimeException("品名【" + data.getHsCodeDesc() + "】品牌【" + data.getBrand() + + "】已被物料(" + partNoText + suffix+")绑定,不能删除。"); + } + PartSubPropertiesValueData propertiesData = new PartSubPropertiesValueData(); propertiesData.setSite(data.getSite()); propertiesData.setBuNo(data.getBuNo()); diff --git a/src/main/resources/mapper/ecss/CoDelMapper.xml b/src/main/resources/mapper/ecss/CoDelMapper.xml index 929c2dc6..f1c0aa16 100644 --- a/src/main/resources/mapper/ecss/CoDelMapper.xml +++ b/src/main/resources/mapper/ecss/CoDelMapper.xml @@ -420,6 +420,17 @@ delete from ecss_hsCode where site=#{site} and buNo=#{buNo} and hsCodeDesc=#{hsCodeDesc} and ISNULL(brand,'无') = ISNULL(#{brand},'无') + + +