From 23ec64ed997fc206fba9f0d6a84975f7b36c47be Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期日, 11 十月 2026 16:09:26 +0800
Subject: [PATCH] 天津-奇缘恒艺 录数据需求修改

---
 src/main/java/com/ruoyi/basic/service/impl/ProductModelServiceImpl.java |   25 +++++++++++++++++++------
 1 files changed, 19 insertions(+), 6 deletions(-)

diff --git a/src/main/java/com/ruoyi/basic/service/impl/ProductModelServiceImpl.java b/src/main/java/com/ruoyi/basic/service/impl/ProductModelServiceImpl.java
index 51e5441..9c1937b 100644
--- a/src/main/java/com/ruoyi/basic/service/impl/ProductModelServiceImpl.java
+++ b/src/main/java/com/ruoyi/basic/service/impl/ProductModelServiceImpl.java
@@ -18,8 +18,11 @@
 import com.ruoyi.common.utils.bean.BeanUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.sales.dto.LossProductModelDto;
 import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
 import com.ruoyi.sales.pojo.SalesLedgerProduct;
+import com.ruoyi.technology.mapper.TechnologyBomMapper;
+import com.ruoyi.technology.pojo.TechnologyBom;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -43,6 +46,7 @@
 
     private final ProductMapper productMapper;
     private final SalesLedgerProductMapper salesLedgerProductMapper;
+    private final TechnologyBomMapper technologyBomMapper;
     private ProductModelMapper productModelMapper;
 
     @Override
@@ -51,7 +55,8 @@
         String productCode = StringUtils.trim(productModelDto.getProductCode());
         productModelDto.setModel(model);
         productModelDto.setProductCode(productCode);
-        checkModelAndProductCodeUnique(model, productCode, productModelDto.getId());
+        // 浜у搧缂栧彿闈炲繀濉紝瑙勬牸鍨嬪彿鍦ㄥ悓涓�浜у搧涓嬪敮涓�
+        checkModelUnique(productModelDto.getProductId(), model, productModelDto.getId());
 
         if (productModelDto.getId() == null) {
             ProductModel productModel = new ProductModel();
@@ -62,18 +67,18 @@
         }
     }
 
-    private void checkModelAndProductCodeUnique(String model, String productCode, Long currentId) {
-        if (StringUtils.isEmpty(model) || StringUtils.isEmpty(productCode)) {
+    private void checkModelUnique(Long productId, String model, Long currentId) {
+        if (StringUtils.isEmpty(model)) {
             return;
         }
         LambdaQueryWrapper<ProductModel> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(ProductModel::getModel, model)
-                .eq(ProductModel::getProductCode, productCode)
+        queryWrapper.eq(ProductModel::getProductId, productId)
+                .eq(ProductModel::getModel, model)
                 .ne(currentId != null, ProductModel::getId, currentId)
                 .last("limit 1");
         ProductModel duplicateProductModel = productModelMapper.selectOne(queryWrapper);
         if (duplicateProductModel != null) {
-            throw new ServiceException("瀵瑰簲鐨勫瀷鍙�" + model + "鐨勪骇鍝佺紪鐮�" + productCode + "宸茬粡瀛樺湪");
+            throw new ServiceException("瀵瑰簲鐨勫瀷鍙�" + model + "宸茬粡瀛樺湪");
         }
     }
 
@@ -86,6 +91,14 @@
 
             throw new RuntimeException("宸茬粡瀛樺湪璇ヤ骇鍝佺殑閿�鍞彴璐﹀拰閲囪喘鍙拌处");
         }
+
+        // 鏄惁瀛樺湪BOM
+        List<TechnologyBom> technologyBoms = technologyBomMapper.selectList(new QueryWrapper<TechnologyBom>()
+                .lambda().in(TechnologyBom::getProductModelId, ids));
+        if (CollectionUtils.isNotEmpty(technologyBoms)) {
+            throw new RuntimeException("宸茬粡瀛樺湪璇ヤ骇鍝佺殑BOM鏁版嵁");
+        }
+
         return productModelMapper.deleteBatchIds(Arrays.asList(ids));
     }
 

--
Gitblit v1.9.3