From 78e70bb892fd12843ead1b5bbbe5de2c23967ded Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期三, 15 四月 2026 13:30:16 +0800
Subject: [PATCH] fix: 入库修改销售订单状态

---
 src/main/java/com/ruoyi/basic/service/impl/ProductServiceImpl.java |   45 +++++++++++++++++++++++++++++++++------------
 1 files changed, 33 insertions(+), 12 deletions(-)

diff --git a/src/main/java/com/ruoyi/basic/service/impl/ProductServiceImpl.java b/src/main/java/com/ruoyi/basic/service/impl/ProductServiceImpl.java
index fdf2dd3..9c3cf89 100644
--- a/src/main/java/com/ruoyi/basic/service/impl/ProductServiceImpl.java
+++ b/src/main/java/com/ruoyi/basic/service/impl/ProductServiceImpl.java
@@ -89,27 +89,48 @@
 
     @Override
     public int addOrEditProduct(ProductDto productDto) {
+        checkDuplicateName(productDto);
         if (productDto.getId() == null) {
-            // 鏂板浜у搧閫昏緫
-            if (productDto.getParentId() == null) {
-                // 鑻ユ湭鎸囧畾鐖惰妭鐐癸紝榛樿涓烘牴鑺傜偣锛坧arentId 璁句负 null锛�
-                productDto.setParentId(null);
-            } else {
-                // 妫�鏌ョ埗鑺傜偣鏄惁瀛樺湪锛堝彲閫夛紝鏍规嵁涓氬姟闇�姹傦級
+            if (productDto.getParentId() != null) {
                 Product parent = productMapper.selectById(productDto.getParentId());
                 if (parent == null) {
-                    throw new IllegalArgumentException("鐖惰妭鐐逛笉瀛樺湪锛屾棤娉曟坊鍔犲瓙浜у搧");
+                    throw new IllegalArgumentException("鐖惰妭鐐逛笉瀛樺湪");
                 }
             }
-            return productMapper.insert(productDto);
+            Product product = new Product();
+            BeanUtils.copyProperties(productDto, product);
+            return productMapper.insert(product);
         } else {
-            // 缂栬緫浜у搧閫昏緫
-            // 妫�鏌ヤ骇鍝佹槸鍚﹀瓨鍦紙鍙�夛紝鏍规嵁涓氬姟闇�姹傦級
             Product existingProduct = productMapper.selectById(productDto.getId());
             if (existingProduct == null) {
-                throw new IllegalArgumentException("瑕佺紪杈戠殑浜у搧涓嶅瓨鍦�");
+                throw new IllegalArgumentException("浜у搧涓嶅瓨鍦�");
             }
-            return productMapper.updateById(productDto);
+            Product product = new Product();
+            BeanUtils.copyProperties(productDto, product);
+            return productMapper.updateById(product);
+        }
+    }
+
+    /**
+     * 鏍¢獙鍚岀骇鐩綍涓嬫槸鍚﹀瓨鍦ㄩ噸澶嶅悕绉�
+     */
+    private void checkDuplicateName(ProductDto productDto) {
+        LambdaQueryWrapper<Product> queryWrapper = new LambdaQueryWrapper<>();
+
+        if (productDto.getParentId() == null) {
+            queryWrapper.isNull(Product::getParentId);
+        } else {
+            queryWrapper.eq(Product::getParentId, productDto.getParentId());
+        }
+
+        queryWrapper.eq(Product::getProductName, productDto.getProductName());
+
+        if (productDto.getId() != null) {
+            queryWrapper.ne(Product::getId, productDto.getId());
+        }
+
+        if (productMapper.selectCount(queryWrapper) > 0) {
+            throw new IllegalArgumentException("鍦ㄨ灞傜骇涓嬪凡瀛樺湪鍚嶄负 [" + productDto.getProductName() + "] 鐨勪骇鍝�");
         }
     }
 

--
Gitblit v1.9.3