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 |   56 ++++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 44 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 9825b39..9c3cf89 100644
--- a/src/main/java/com/ruoyi/basic/service/impl/ProductServiceImpl.java
+++ b/src/main/java/com/ruoyi/basic/service/impl/ProductServiceImpl.java
@@ -1,6 +1,8 @@
 package com.ruoyi.basic.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.basic.dto.ProductDto;
 import com.ruoyi.basic.dto.ProductTreeDto;
@@ -10,8 +12,11 @@
 import com.ruoyi.basic.pojo.ProductModel;
 import com.ruoyi.basic.service.IProductService;
 import com.ruoyi.common.utils.bean.BeanUtils;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.web.domain.AjaxResult;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -49,6 +54,12 @@
         return tree;
     }
 
+    @Override
+    public IPage<ProductModel> listPageProductModel(Page<ProductModel> page, ProductModel productModel) {
+        return productModelMapper.listPageProductModel(page, productModel);
+    }
+
+
     // 閫掑綊鏋勫缓瀛愯妭鐐�
     private List<ProductTreeDto> buildChildrenNodes(Long parentId) {
         // 鏌ヨ褰撳墠鐖惰妭鐐圭殑瀛愯妭鐐�
@@ -78,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