From f5c9d4c54da8d60d8b798f67679263a8aec1607f Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期三, 15 四月 2026 11:16:48 +0800
Subject: [PATCH] feat: 库存区分产品大类
---
src/main/java/com/ruoyi/basic/service/impl/ProductServiceImpl.java | 51 +++++++++++++++++++++++++++++++++++++++------------
1 files changed, 39 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 b93e14a..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;
@@ -52,6 +54,10 @@
return tree;
}
+ @Override
+ public IPage<ProductModel> listPageProductModel(Page<ProductModel> page, ProductModel productModel) {
+ return productModelMapper.listPageProductModel(page, productModel);
+ }
// 閫掑綊鏋勫缓瀛愯妭鐐�
@@ -83,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