From 87519f0df32a22a68df0941fb06dd2c34861fbe4 Mon Sep 17 00:00:00 2001
From: buhuazhen <hua100783@gmail.com>
Date: 星期二, 07 四月 2026 14:32:17 +0800
Subject: [PATCH] feat(product): 新增根据产品ID批量查询产品规格功能
---
src/main/resources/mapper/basic/ProductModelMapper.xml | 18 ++++++++++++++++++
src/main/java/com/ruoyi/basic/controller/ProductController.java | 7 +++++--
src/main/java/com/ruoyi/basic/mapper/ProductModelMapper.java | 3 +++
src/main/java/com/ruoyi/basic/service/impl/ProductModelServiceImpl.java | 6 ++++++
src/main/java/com/ruoyi/basic/service/IProductModelService.java | 2 ++
5 files changed, 34 insertions(+), 2 deletions(-)
diff --git a/src/main/java/com/ruoyi/basic/controller/ProductController.java b/src/main/java/com/ruoyi/basic/controller/ProductController.java
index 252ab4d..5a08b10 100644
--- a/src/main/java/com/ruoyi/basic/controller/ProductController.java
+++ b/src/main/java/com/ruoyi/basic/controller/ProductController.java
@@ -3,6 +3,7 @@
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.google.common.collect.Lists;
import com.ruoyi.basic.dto.ProductDto;
import com.ruoyi.basic.dto.ProductModelDto;
import com.ruoyi.basic.dto.ProductModelExportDto;
@@ -27,6 +28,7 @@
import javax.servlet.http.HttpServletResponse;
import java.util.List;
+import java.util.stream.Collectors;
@RestController
@AllArgsConstructor
@@ -81,11 +83,12 @@
if (ids == null || ids.length == 0) {
return AjaxResult.error("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
}
+ List<ProductModel> productModels = productModelService.selectModelListByProductIds(Lists.newArrayList(ids));
// 妫�鏌ユ槸鍚︽湁閿�鍞晢鍝佽褰曞叧鑱旇浜у搧
LambdaQueryWrapper<SalesLedgerProduct> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.in(SalesLedgerProduct::getProductId, ids);
+ queryWrapper.in(SalesLedgerProduct::getProductModelId, productModels.stream().map(ProductModel::getId).collect(Collectors.toList()));
List<SalesLedgerProduct> salesLedgerProductList = salesLedgerProductService.list(queryWrapper);
- if (salesLedgerProductList.size() > 0) {
+ if (!salesLedgerProductList.isEmpty()) {
return AjaxResult.error("璇ヤ骇鍝佸瓨鍦ㄩ攢鍞�/閲囪喘璁板綍锛屼笉鑳藉垹闄�");
}
return toAjax(productService.delProductByIds(ids));
diff --git a/src/main/java/com/ruoyi/basic/mapper/ProductModelMapper.java b/src/main/java/com/ruoyi/basic/mapper/ProductModelMapper.java
index bddcca4..9e34897 100644
--- a/src/main/java/com/ruoyi/basic/mapper/ProductModelMapper.java
+++ b/src/main/java/com/ruoyi/basic/mapper/ProductModelMapper.java
@@ -7,6 +7,7 @@
import com.ruoyi.procurementrecord.dto.ProcurementPageDto;
import org.apache.ibatis.annotations.Param;
+import javax.validation.constraints.NotNull;
import java.util.List;
import java.util.Map;
@@ -26,4 +27,6 @@
ProductModel selectLatestRecord();
List<Map<String, Object>> getProductAndModelList();
+
+ List<ProductModel> selectModelListByProductIds(@NotNull @Param("ids") List<Long> ids);
}
diff --git a/src/main/java/com/ruoyi/basic/service/IProductModelService.java b/src/main/java/com/ruoyi/basic/service/IProductModelService.java
index dd268d6..149c091 100644
--- a/src/main/java/com/ruoyi/basic/service/IProductModelService.java
+++ b/src/main/java/com/ruoyi/basic/service/IProductModelService.java
@@ -26,6 +26,8 @@
List<ProductModel> selectModelList(ProductDto productDto);
+ List<ProductModel> selectModelListByProductIds(List<Long> ids);
+
/**
* 鏍规嵁id鏌ヨ浜у搧瑙勬牸鍒嗛〉鏌ヨ
* @param page
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 9382134..75bd333 100644
--- a/src/main/java/com/ruoyi/basic/service/impl/ProductModelServiceImpl.java
+++ b/src/main/java/com/ruoyi/basic/service/impl/ProductModelServiceImpl.java
@@ -25,6 +25,7 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
+import javax.validation.constraints.NotNull;
import java.util.*;
import java.util.stream.Collectors;
@@ -73,6 +74,11 @@
return productModelMapper.selectList(queryWrapper);
}
+ @Override
+ public List<ProductModel> selectModelListByProductIds(@NotNull List<Long> ids) {
+ return productModelMapper.selectModelListByProductIds(ids);
+ }
+
/**
* 鏍规嵁id鏌ヨ浜у搧瑙勬牸鍒嗛〉鏌ヨ
*
diff --git a/src/main/resources/mapper/basic/ProductModelMapper.xml b/src/main/resources/mapper/basic/ProductModelMapper.xml
index 317f5d9..2f84ce8 100644
--- a/src/main/resources/mapper/basic/ProductModelMapper.xml
+++ b/src/main/resources/mapper/basic/ProductModelMapper.xml
@@ -106,5 +106,23 @@
left join product p on p.id = pm.product_id
order by p.id,pm.id desc
</select>
+ <select id="selectModelListByProductIds" resultType="com.ruoyi.basic.pojo.ProductModel">
+ WITH RECURSIVE tree AS (
+ SELECT id
+ FROM product
+ WHERE id in <foreach item="id" collection="ids" open="(" separator="," close=")">
+ #{id}
+ </foreach>
+ UNION ALL
+
+ SELECT p.id
+ FROM product p
+ INNER JOIN tree t ON p.parent_id = t.id
+ )
+ SELECT t1.*
+ FROM product_model t1
+ INNER JOIN product t2 ON t1.product_id = t2.id
+ INNER JOIN tree t ON t2.id = t.id;
+ </select>
</mapper>
\ No newline at end of file
--
Gitblit v1.9.3