From c3b81ea987501dc2f5dc3c8db23038eeb8f290e9 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期四, 12 三月 2026 17:56:16 +0800
Subject: [PATCH] fix: 产品保存时唯一性导致数据丢失
---
src/main/java/com/ruoyi/production/service/impl/ProductMaterialServiceImpl.java | 37 +++++++++++++++++++++----------------
1 files changed, 21 insertions(+), 16 deletions(-)
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductMaterialServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductMaterialServiceImpl.java
index b1dd5b4..41aa10f 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductMaterialServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductMaterialServiceImpl.java
@@ -9,6 +9,7 @@
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.http.HttpUtils;
import com.ruoyi.framework.config.AliDingConfig;
+import com.ruoyi.production.dto.ProductMaterialGroupDto;
import com.ruoyi.production.enums.MaterialConfigTypeEnum;
import com.ruoyi.production.mapper.ProductMaterialMapper;
import com.ruoyi.production.pojo.ProductMaterial;
@@ -301,10 +302,17 @@
for (ProductMaterialSku sku : list) {
- ProductMaterialSku exist =
- productMaterialSkuService.getOne(new LambdaQueryWrapper<ProductMaterialSku>()
- .eq(ProductMaterialSku::getMaterialId, sku.getMaterialId())
- .eq(ProductMaterialSku::getSpecification, sku.getSpecification()));
+ LambdaQueryWrapper<ProductMaterialSku> wrapper = new LambdaQueryWrapper<>();
+ wrapper.eq(ProductMaterialSku::getMaterialId, sku.getMaterialId())
+ .eq(ProductMaterialSku::getSpecification, sku.getSpecification());
+
+ if (StringUtils.isNotEmpty(sku.getMaterialCode())) {
+ wrapper.eq(ProductMaterialSku::getMaterialCode, sku.getMaterialCode());
+ } else {
+ wrapper.isNull(ProductMaterialSku::getMaterialCode);
+ }
+
+ ProductMaterialSku exist = productMaterialSkuService.getOne(wrapper);
if (exist == null) {
productMaterialSkuService.save(sku);
affected++;
@@ -337,29 +345,26 @@
}
@Override
- public Map<String, List<ProductMaterial>> ProductMaterialList(String materialName) {
+ public List<ProductMaterialGroupDto> ProductMaterialList(String materialName) {
- List<ProductMaterialConfig> materialConfigList =
- productMaterialConfigService.list(new LambdaQueryWrapper<ProductMaterialConfig>()
- .eq(ProductMaterialConfig::getConfigType, MaterialConfigTypeEnum.MATERIAL_TYPE.name()));
+ List<ProductMaterialConfig> materialConfigList = productMaterialConfigService.list(new LambdaQueryWrapper<ProductMaterialConfig>()
+ .eq(ProductMaterialConfig::getConfigType, MaterialConfigTypeEnum.MATERIAL_TYPE.name()));
- Map<String, List<ProductMaterial>> productMaterialMap = new HashMap<>();
+ List<ProductMaterialGroupDto> productMaterialMap = new ArrayList<>();
if (materialConfigList == null || materialConfigList.isEmpty()) {
return productMaterialMap;
}
for (ProductMaterialConfig materialConfig : materialConfigList) {
LambdaQueryWrapper<ProductMaterial> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ProductMaterial::getMaterialTypeId, materialConfig.getId())
- .select(ProductMaterial::getId, ProductMaterial::getMaterialName)
.like(materialName != null && !materialName.isEmpty(), ProductMaterial::getMaterialName, materialName);
-
List<ProductMaterial> productMaterialList = list(wrapper);
-
- if (productMaterialList != null && !productMaterialList.isEmpty()) {
- productMaterialMap.put(materialConfig.getConfigName(), productMaterialList);
- }
+ ProductMaterialGroupDto dto = new ProductMaterialGroupDto();
+ dto.setConfigId(materialConfig.getId());
+ dto.setConfigName(materialConfig.getConfigName());
+ dto.setMaterialList(productMaterialList);
+ productMaterialMap.add(dto);
}
-
return productMaterialMap;
}
--
Gitblit v1.9.3