From f57064d2fa563ee4cfeeccd715850ba8b8aa4f60 Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期一, 18 五月 2026 09:44:33 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_New_pro' into dev_宁夏_英泽防锈

---
 src/main/java/com/ruoyi/basic/service/impl/ProductModelServiceImpl.java |   43 +++++++++++++++++++++++++++++++++++++++----
 1 files changed, 39 insertions(+), 4 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 c44ee24..be34fc0 100644
--- a/src/main/java/com/ruoyi/basic/service/impl/ProductModelServiceImpl.java
+++ b/src/main/java/com/ruoyi/basic/service/impl/ProductModelServiceImpl.java
@@ -18,14 +18,20 @@
 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;
 import org.springframework.web.multipart.MultipartFile;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 /**
@@ -40,10 +46,16 @@
 
     private final ProductMapper productMapper;
     private final SalesLedgerProductMapper salesLedgerProductMapper;
+    private final TechnologyBomMapper technologyBomMapper;
     private ProductModelMapper productModelMapper;
 
     @Override
     public int addOrEditProductModel(ProductModelDto productModelDto) {
+        String model = StringUtils.trim(productModelDto.getModel());
+        String productCode = StringUtils.trim(productModelDto.getProductCode());
+        productModelDto.setModel(model);
+        productModelDto.setProductCode(productCode);
+        checkModelAndProductCodeUnique(model, productCode, productModelDto.getId());
 
         if (productModelDto.getId() == null) {
             ProductModel productModel = new ProductModel();
@@ -51,6 +63,21 @@
             return productModelMapper.insert(productModel);
         } else {
             return productModelMapper.updateById(productModelDto);
+        }
+    }
+
+    private void checkModelAndProductCodeUnique(String model, String productCode, Long currentId) {
+        if (StringUtils.isEmpty(model) || StringUtils.isEmpty(productCode)) {
+            return;
+        }
+        LambdaQueryWrapper<ProductModel> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(ProductModel::getModel, model)
+                .eq(ProductModel::getProductCode, productCode)
+                .ne(currentId != null, ProductModel::getId, currentId)
+                .last("limit 1");
+        ProductModel duplicateProductModel = productModelMapper.selectOne(queryWrapper);
+        if (duplicateProductModel != null) {
+            throw new ServiceException("瀵瑰簲鐨勫瀷鍙�" + model + "鐨勪骇鍝佺紪鐮�" + productCode + "宸茬粡瀛樺湪");
         }
     }
 
@@ -63,6 +90,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));
     }
 
@@ -70,9 +105,6 @@
     public List<ProductModel> selectModelList(ProductDto productDto) {
         LambdaQueryWrapper<ProductModel> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(ProductModel::getProductId, productDto.getId());
-        queryWrapper.eq(productDto.getCreateUser() != null, ProductModel::getCreateUser, productDto.getCreateUser());
-        queryWrapper.eq(productDto.getDeptId() != null, ProductModel::getDeptId, productDto.getDeptId());
-        queryWrapper.in(productDto.getDeptIds() != null && productDto.getDeptIds().length > 0, ProductModel::getDeptId, Arrays.asList(productDto.getDeptIds()));
         return productModelMapper.selectList(queryWrapper);
     }
 
@@ -121,6 +153,9 @@
                 ProductModel item = productModelList.get(i);
                 int rowNum = i + 2;
 
+                if (StringUtils.isEmpty(item.getProductCode())) {
+                    return AjaxResult.error("绗� " + rowNum + " 琛屽鍏ュけ璐�: [浜у搧缂栫爜] 涓嶈兘涓虹┖");
+                }
                 if (StringUtils.isEmpty(item.getModel())) {
                     return AjaxResult.error("绗� " + rowNum + " 琛屽鍏ュけ璐�: [瑙勬牸鍨嬪彿] 涓嶈兘涓虹┖");
                 }

--
Gitblit v1.9.3