From 5b2c9ae479a1b7a0c4e3b15910b090f8b20cf4fe Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期三, 08 四月 2026 17:35:30 +0800
Subject: [PATCH] yys 1.产品表,规格表变成一对一
---
src/main/java/com/ruoyi/basic/service/impl/ProductModelServiceImpl.java | 129 ++++++++++++++++++-------------------------
1 files changed, 54 insertions(+), 75 deletions(-)
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 b2918bd..dd16598 100644
--- a/src/main/java/com/ruoyi/basic/service/impl/ProductModelServiceImpl.java
+++ b/src/main/java/com/ruoyi/basic/service/impl/ProductModelServiceImpl.java
@@ -28,6 +28,7 @@
import com.ruoyi.sales.service.impl.CommonFileServiceImpl;
import lombok.AllArgsConstructor;
import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.ListUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
@@ -62,28 +63,25 @@
if(StringUtils.isEmpty(productModelDto.getProductName())){
throw new RuntimeException("浜у搧鍚嶇О涓嶈兘涓虹┖");
}
- Product product = productMapper.selectOne(new LambdaQueryWrapper<Product>()
-// .eq(Product::getModel, productModelDto.getModel())
- .eq(Product::getProductName, productModelDto.getProductName()));
+ // 浜у搧琛� - 瑙勬牸琛ㄥ彉鎴愪竴瀵逛竴
+
if (productModelDto.getId() == null) {
- if(product == null){
- product = new Product();
- product.setProductName(productModelDto.getProductName());
- productMapper.insert(product);
- }
+ Product product1 = new Product();
+ product1.setProductName(productModelDto.getProductName());
+ productMapper.insert(product1);
ProductModel productModel = new ProductModel();
BeanUtils.copyProperties(productModelDto,productModel);
- productModel.setProductId(product.getId());
+ productModel.setProductId(product1.getId());
productModelMapper.insert(productModel);
if(CollectionUtils.isNotEmpty(productModelDto.getTempFileIds())){
commonFileService.migrateTempFilesToFormal(productModel.getId(), productModelDto.getTempFileIds());
}
return 1;
} else {
- Product product1 = productMapper.selectById(productModelDto.getProductId());
- if(product1 != null){
- product1.setProductName(productModelDto.getProductName());
- productMapper.updateById(product1);
+ Product product = productMapper.selectById(productModelDto.getProductId());
+ if(product != null){
+ product.setProductName(productModelDto.getProductName());
+ productMapper.updateById(product);
}
commonFileService.deleteByBusinessIds(Collections.singletonList(productModelDto.getId()), FileNameType.PRODUCT_MODEL.getValue());
if(CollectionUtils.isNotEmpty(productModelDto.getTempFileIds())){
@@ -141,34 +139,25 @@
}
if(CollectionUtils.isNotEmpty(productModelList)){
// 2. 鎸変骇鍝佸悕绉�,鍥剧焊缂栧彿鍒嗙粍
- Map<Map.Entry<String, String>, List<ProductModelExcelCopyDto>> groupedByProductNameAndDrawingNumber =
- productModelList.stream()
- .collect(Collectors.groupingBy(
- dto -> new AbstractMap.SimpleEntry<>(
- dto.getProductName(),
- dto.getModel()
- )
- ));
+// Map<Map.Entry<String, String>, List<ProductModelExcelCopyDto>> groupedByProductNameAndDrawingNumber =
+// productModelList.stream()
+// .collect(Collectors.groupingBy(
+// dto -> new AbstractMap.SimpleEntry<>(
+// dto.getProductName(),
+// dto.getModel()
+// )
+// ));
List<ProductModelExcelCopyErrorDto> errorList = new ArrayList<>();
// 2. 閬嶅巻鍒嗙粍缁撴灉澶勭悊鏁版嵁
- for (Map.Entry<Map.Entry<String, String>, List<ProductModelExcelCopyDto>> entry : groupedByProductNameAndDrawingNumber.entrySet()) {
- Map.Entry<String, String> groupKey = entry.getKey();
- String productName = groupKey.getKey(); // 浜у搧鍚嶇О
- String drawingNumber = groupKey.getValue(); // 鍥剧焊缂栧彿
- List<ProductModelExcelCopyDto> dtoList = entry.getValue();
-
- // 绌哄垪琛ㄨ烦杩囷紝閬垮厤鍚庣画NPE
- if (CollectionUtils.isEmpty(dtoList)) {
- continue;
- }
- ProductModelExcelCopyDto firstDto = dtoList.get(0);
- String model = firstDto.getModel();
-
+ for (ProductModelExcelCopyDto entry : productModelList) {
+ String productName = entry.getProductName(); // 浜у搧鍚嶇О
+ String drawingNumber = entry.getModel(); // 鍥剧焊缂栧彿
+ String model = entry.getModel();
// 3. 鏌ヨ/鏂板浜у搧锛堟寜浜у搧鍚嶇О+鍥剧焊缂栧彿锛屾洿绮惧噯锛�
Product product = getOrCreateProduct(productName, drawingNumber);
// 4. 鎵归噺澶勭悊浜у搧鍨嬪彿锛堟寜鍥剧焊缂栧彿+鍨嬪彿锛�
- processProductModel(dtoList, product.getId(), model, drawingNumber,errorList);
+ processProductModel(entry, product.getId(), model, drawingNumber,errorList);
}
if(CollectionUtils.isNotEmpty(errorList)){
// 5. 鎵归噺澶勭悊閿欒鏁版嵁
@@ -183,26 +172,18 @@
* 鎶藉彇閫氱敤鏂规硶锛氭煡璇㈡垨鏂板浜у搧
*/
private Product getOrCreateProduct(String productName, String model) {
- // 绮惧噯鏌ヨ锛氫骇鍝佸悕绉�+鍨嬪彿锛堥伩鍏嶅悓鍚嶄笉鍚屽瀷鍙风殑闂锛�
- Product product = productMapper.selectOne(new LambdaQueryWrapper<Product>()
- .eq(Product::getProductName, productName)
-// .eq(Product::getModel, model)
- .last("limit 1"));
-
- if (product == null) {
- product = new Product();
- product.setProductName(productName);
+ Product product = product = new Product();
+ product.setProductName(productName);
// product.setModel(model); // 琛ュ厖鍨嬪彿锛屽瓧娈垫洿瀹屾暣
- product.setParentId(null);
- productMapper.insert(product);
- }
+ product.setParentId(null);
+ productMapper.insert(product);
return product;
}
/**
* 鎶藉彇閫氱敤鏂规硶锛氬鐞嗕骇鍝佸瀷鍙凤紙鏂板/鏇存柊锛�
*/
- private void processProductModel(List<ProductModelExcelCopyDto> dtoList,
+ private void processProductModel(ProductModelExcelCopyDto dto,
Long productId,
String model,
String drawingNumber,
@@ -212,34 +193,32 @@
if(CollectionUtils.isEmpty(productRoutes)){
productRoutes = new ArrayList<>();
}
- for (ProductModelExcelCopyDto dto : dtoList) {
- // 鏌ヨ鏉′欢锛氬瀷鍙�+鍥剧焊缂栧彿锛堟洿绮惧噯锛岀鍚堝垎缁勯�昏緫锛�
- ProductModel productModel = productModelMapper.selectOne(new LambdaQueryWrapper<ProductModel>()
- .eq(ProductModel::getModel, model)
- .last("limit 1"));
- // 閫氳繃宸ヨ壓璺嚎鍚嶇О鍖归厤鏈�鏂颁竴鏉″伐鑹鸿矾绾�
- ProductProcess productRoute = productRoutes.stream()
- .filter(route -> route.getName().equals(dto.getProcessRoute()))
- .max(Comparator.comparing(ProductProcess::getCreateTime))
- .orElse(null);
- if (productModel == null) {
- productModel = new ProductModel();
- BeanUtils.copyProperties(dto, productModel);
- if (productRoute != null) {
- productModel.setRouteId(productRoute.getId());
- }
- // 鍏滃簳榛樿鍊硷紝閬垮厤绌哄��
- if (productModel.getProductType() == null) {
- productModel.setProductType(1);
- }
- productModel.setProductId(productId);
- productModelMapper.insert(productModel);
- } else {
- productModel.setRouteId(productRoute != null ? productRoute.getId() : null);
- BeanUtils.copyProperties(dto, productModel);
- productModel.setProductId(productId);
- productModelMapper.updateById(productModel);
+ // 鏌ヨ鏉′欢锛氬瀷鍙�+鍥剧焊缂栧彿锛堟洿绮惧噯锛岀鍚堝垎缁勯�昏緫锛�
+ ProductModel productModel = productModelMapper.selectOne(new LambdaQueryWrapper<ProductModel>()
+ .eq(ProductModel::getModel, model)
+ .last("limit 1"));
+ // 閫氳繃宸ヨ壓璺嚎鍚嶇О鍖归厤鏈�鏂颁竴鏉″伐鑹鸿矾绾�
+ ProductProcess productRoute = productRoutes.stream()
+ .filter(route -> route.getName().equals(dto.getProcessRoute()))
+ .max(Comparator.comparing(ProductProcess::getCreateTime))
+ .orElse(null);
+ if (productModel == null) {
+ productModel = new ProductModel();
+ BeanUtils.copyProperties(dto, productModel);
+ if (productRoute != null) {
+ productModel.setRouteId(productRoute.getId());
}
+ // 鍏滃簳榛樿鍊硷紝閬垮厤绌哄��
+ if (productModel.getProductType() == null) {
+ productModel.setProductType(1);
+ }
+ productModel.setProductId(productId);
+ productModelMapper.insert(productModel);
+ } else {
+ productModel.setRouteId(productRoute != null ? productRoute.getId() : null);
+ BeanUtils.copyProperties(dto, productModel);
+ productModel.setProductId(productId);
+ productModelMapper.updateById(productModel);
}
}
--
Gitblit v1.9.3