Browse Source

产品信息校验修改

yzc 11 months ago
parent
commit
889ca80a06

+ 45 - 45
hx-item/src/main/java/com/fjhx/item/service/product/impl/ProductInfoServiceImpl.java

@@ -304,38 +304,13 @@ public class ProductInfoServiceImpl extends ServiceImpl<ProductInfoMapper, Produ
 
         // 赋值产品编号
         productInfoDto.setCode(CodeEnum.PRODUCT.getCode());
-        //检查【产品名称】和【规格型号】不能同时重复,但可以单项重复。
-        long nameAndSpecCount = this.count(q -> q
-                .eq(ProductInfo::getName, productInfoDto.getName())
-                .eq(ProductInfo::getSpec, productInfoDto.getSpec())
-                .eq(ProductInfo::getCompanyId, companyId)
-        );
-        if (nameAndSpecCount != 0) {
-            throw new ServiceException("同名称同规格的产品已存在");
-        }
-        // 排除不为空的自定义编码重复
-        long count = this.count(q -> q.eq(ProductInfo::getCustomCode, productInfoDto.getCustomCode())
-                .ne(ProductInfo::getCustomCode, "")
-                .eq(ProductInfo::getCompanyId, companyId)
-        );
-        if (count != 0) {
-            throw new ServiceException("产品自定义编码重复");
-        }
-        // 排除不为空的条码编号重复
-        long count1 = this.count(q -> q.eq(ProductInfo::getBarCode, productInfoDto.getBarCode())
-                .ne(ProductInfo::getBarCode, "")
-                .eq(ProductInfo::getCompanyId, companyId)
-        );
-        if (count1 != 0) {
-            throw new ServiceException("产品条码编码重复");
-        }
+
+        //检查产品信息
+        checkProductInfo(productInfoDto);
 
         //操作ftp文件
         editFtpFile(productInfoDto);
 
-//        //保存原材料信息
-//        saveOrEditRawMaterial(productInfoDto);
-
         this.save(productInfoDto);
         ObsFileUtil.saveFile(productInfoDto.getFileList(), productInfoDto.getId());
         ObsFileUtil.saveFile(productInfoDto.getProdFileList(), productInfoDto.getId(), 2);
@@ -360,23 +335,9 @@ public class ProductInfoServiceImpl extends ServiceImpl<ProductInfoMapper, Produ
     public void edit(ProductInfoDto productInfoDto) {
         // 禁止产品编号修改
         productInfoDto.setCode(null);
-        //检查【产品名称】和【规格型号】不能同时重复,但可以单项重复。
-        long nameAndSpecCount = this.count(q -> q
-                .ne(ProductInfo::getId, productInfoDto.getId())
-                .eq(ProductInfo::getName, productInfoDto.getName())
-                .eq(ProductInfo::getSpec, productInfoDto.getSpec())
-        );
-        if (nameAndSpecCount != 0) {
-            throw new ServiceException("同名称同规格的产品已存在");
-        }
-        // 排除不为空的自定义编码重复
-        long count = this.count(q -> q
-                .ne(ProductInfo::getId, productInfoDto.getId())
-                .eq(ProductInfo::getCustomCode, productInfoDto.getCustomCode())
-                .ne(ProductInfo::getCustomCode, ""));
-        if (count != 0) {
-            throw new ServiceException("产品自定义编码重复");
-        }
+
+        //检查产品信息
+        checkProductInfo(productInfoDto);
 
         //操作ftp文件
         editFtpFile(productInfoDto);
@@ -404,6 +365,45 @@ public class ProductInfoServiceImpl extends ServiceImpl<ProductInfoMapper, Produ
         saveOrEditCustomInfo(productInfoDto);
     }
 
+
+    /**
+     * 检查产品信息
+     */
+    private synchronized void checkProductInfo(ProductInfoDto dto) {
+        //检查【产品名称】和【规格型号】不能同时重复,但可以单项重复。
+        long nameAndSpecCount = this.count(q -> q
+                .ne(ObjectUtil.isNotEmpty(dto.getId()), ProductInfo::getId, dto.getId())
+                .eq(ProductInfo::getName, dto.getName())
+                .eq(ProductInfo::getLength, dto.getLength())
+                .eq(ProductInfo::getWidth, dto.getWidth())
+                .eq(ProductInfo::getHeight, dto.getHeight())
+                .eq(ProductInfo::getColor, dto.getColor())
+                .eq(ProductInfo::getCustomCode, dto.getCustomCode())
+        );
+        if (nameAndSpecCount != 0) {
+            throw new ServiceException("同名称同规格的产品已存在");
+        }
+
+        // 排除不为空的自定义编码重复
+        long count = this.count(q -> q
+                .ne(ObjectUtil.isNotEmpty(dto.getId()), ProductInfo::getId, dto.getId())
+                .eq(ProductInfo::getCustomCode, dto.getCustomCode())
+                .ne(ProductInfo::getCustomCode, ""));
+        if (count != 0) {
+            throw new ServiceException("产品自定义编码重复");
+        }
+
+        // 排除不为空的条码编号重复
+        long count1 = this.count(q -> q
+                .ne(ObjectUtil.isNotEmpty(dto.getId()), ProductInfo::getId, dto.getId())
+                .eq(ProductInfo::getBarCode, dto.getBarCode())
+                .ne(ProductInfo::getBarCode, "")
+        );
+        if (count1 != 0) {
+            throw new ServiceException("产品条码编码重复");
+        }
+    }
+
     /**
      * 保存产品定制信息
      */