From f45f999d6d366cf1f0b4f0b1a3364d4568a5a406 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期五, 13 三月 2026 12:01:20 +0800
Subject: [PATCH] Merge branch 'dev_宁夏_中盛建材' of http://114.132.189.42:9002/r/product-inventory-management-after into dev_宁夏_中盛建材

---
 src/main/java/com/ruoyi/production/service/impl/ProductMaterialServiceImpl.java |  122 +++++++++++++++++++++++-----------------
 1 files changed, 71 insertions(+), 51 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 154f7d4..0caf06a 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductMaterialServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductMaterialServiceImpl.java
@@ -348,72 +348,83 @@
     }
 
     @Override
-    public List<ProductMaterialGroupDto> ProductMaterialList() {
-
-        List<ProductMaterialConfig> materialConfigList = productMaterialConfigService.list(new LambdaQueryWrapper<ProductMaterialConfig>()
-                .eq(ProductMaterialConfig::getConfigType, MaterialConfigTypeEnum.MATERIAL_TYPE.name()));
-
-        List<ProductMaterialGroupDto> productMaterialMap = new ArrayList<>();
-        if (materialConfigList == null || materialConfigList.isEmpty()) {
-            return productMaterialMap;
+    public List<ProductMaterialGroupDto> ProductMaterialList(Integer type) {
+        List<ProductMaterialConfig> configList = productMaterialConfigService.list(new LambdaQueryWrapper<ProductMaterialConfig>()
+                .eq(ProductMaterialConfig::getConfigType, MaterialConfigTypeEnum.MATERIAL_TYPE.name())
+        );
+        if (CollectionUtils.isEmpty(configList)) {
+            return new ArrayList<>();
         }
-        for (ProductMaterialConfig materialConfig : materialConfigList) {
+        List<ProductMaterialGroupDto> result = new ArrayList<>();
+        Map<Integer, List<ProductMaterialDto>> materialMap = new HashMap<>();
+        if (type != null && type == 2) {
+            List<ProductMaterial> materialList = this.list(new LambdaQueryWrapper<ProductMaterial>()
+                    .select(
+                            ProductMaterial::getId,
+                            ProductMaterial::getMaterialTypeId,
+                            ProductMaterial::getInventoryCategoryId,
+                            ProductMaterial::getMaterialName
+                    )
+            );
+            materialMap = materialList.stream()
+                    .map(this::convert)
+                    .collect(Collectors.groupingBy(ProductMaterialDto::getMaterialTypeId));
+        }
+
+        for (ProductMaterialConfig config : configList) {
             ProductMaterialGroupDto dto = new ProductMaterialGroupDto();
-            dto.setConfigId(materialConfig.getId());
-            dto.setConfigName(materialConfig.getConfigName());
-            productMaterialMap.add(dto);
+            dto.setConfigId(config.getId());
+            dto.setConfigName(config.getConfigName());
+            if (type != null && type == 2) {
+                dto.setMaterialList(materialMap.getOrDefault(config.getId(), new ArrayList<>()));
+            }
+            result.add(dto);
         }
-        return productMaterialMap;
+        return result;
     }
+
 
     @Override
     public List<ProductMaterialGroupDto> productMaterialListByQuery(String materialName, Integer materialTypeId) {
+
         if (StringUtils.isEmpty(materialName) && materialTypeId == null) {
-            return new ArrayList<>(0);
+            return new ArrayList<>();
         }
-        // 鏌ヨ鐗╂枡绫诲瀷閰嶇疆
-        List<ProductMaterialConfig> materialConfigList = productMaterialConfigService.list(new LambdaQueryWrapper<ProductMaterialConfig>()
+
+        LambdaQueryWrapper<ProductMaterial> wrapper = new LambdaQueryWrapper<>();
+        //  鍙煡璇㈤渶瑕佺殑瀛楁鏁版嵁
+        wrapper.select(
+                ProductMaterial::getId,
+                ProductMaterial::getMaterialTypeId,
+                ProductMaterial::getInventoryCategoryId,
+                ProductMaterial::getMaterialName
+        );
+        if (StringUtils.isNotEmpty(materialName)) {
+            wrapper.like(ProductMaterial::getMaterialName, materialName);
+        }
+        if (materialTypeId != null) {
+            wrapper.eq(ProductMaterial::getMaterialTypeId, materialTypeId);
+        }
+        List<ProductMaterial> materials = this.list(wrapper);
+        if (CollectionUtils.isEmpty(materials)) {
+            return new ArrayList<>();
+        }
+        Map<Integer, List<ProductMaterialDto>> map = materials.stream()
+                .map(this::convert)
+                .collect(Collectors.groupingBy(ProductMaterialDto::getMaterialTypeId));
+
+        List<ProductMaterialConfig> configList = productMaterialConfigService.list(new LambdaQueryWrapper<ProductMaterialConfig>()
                 .eq(ProductMaterialConfig::getConfigType, MaterialConfigTypeEnum.MATERIAL_TYPE.name()));
 
         List<ProductMaterialGroupDto> result = new ArrayList<>();
-        if (CollectionUtils.isEmpty(materialConfigList)) {
-            return result;
-        }
-        LambdaQueryWrapper<ProductMaterial> wrapper;
-        for (ProductMaterialConfig materialConfig : materialConfigList) {
-            wrapper = new LambdaQueryWrapper<>();
-            //  鎸囧畾闇�瑕佺殑瀛楁
-            wrapper.select(
-                    ProductMaterial::getId,
-                    ProductMaterial::getMaterialTypeId,
-                    ProductMaterial::getInventoryCategoryId,
-                    ProductMaterial::getMaterialName
-            );
-            if (StringUtils.isNotEmpty(materialName)) {
-                wrapper.eq(ProductMaterial::getMaterialTypeId, materialConfig.getId())
-                        .like(ProductMaterial::getMaterialName, materialName);
-            } else {
-                if (!materialConfig.getId().equals(materialTypeId)) {
-                    continue;
-                }
-                wrapper.eq(ProductMaterial::getMaterialTypeId, materialTypeId);
-            }
-            List<ProductMaterial> materialList = list(wrapper);
-            if (CollectionUtils.isEmpty(materialList)) {
+        for (ProductMaterialConfig config : configList) {
+            List<ProductMaterialDto> dtoList = map.get(config.getId());
+            if (CollectionUtils.isEmpty(dtoList)) {
                 continue;
             }
-
-            List<ProductMaterialDto> dtoList = materialList.stream().map(m -> {
-                ProductMaterialDto dto = new ProductMaterialDto();
-                dto.setId(m.getId());
-                dto.setMaterialTypeId(m.getMaterialTypeId());
-                dto.setInventoryCategoryId(m.getInventoryCategoryId());
-                dto.setMaterialName(m.getMaterialName());
-                return dto;
-            }).collect(Collectors.toList());
             ProductMaterialGroupDto dto = new ProductMaterialGroupDto();
-            dto.setConfigId(materialConfig.getId());
-            dto.setConfigName(materialConfig.getConfigName());
+            dto.setConfigId(config.getId());
+            dto.setConfigName(config.getConfigName());
             dto.setMaterialList(dtoList);
             result.add(dto);
         }
@@ -421,6 +432,15 @@
         return result;
     }
 
+    private ProductMaterialDto convert(ProductMaterial m) {
+        ProductMaterialDto dto = new ProductMaterialDto();
+        dto.setId(m.getId());
+        dto.setMaterialName(m.getMaterialName());
+        dto.setMaterialTypeId(m.getMaterialTypeId());
+        dto.setInventoryCategoryId(m.getInventoryCategoryId());
+        return dto;
+    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void addProductMaterial(ProductMaterial productMaterial) {

--
Gitblit v1.9.3