From 76c84d95506998f546e6f3ebbf70414c0dd9da9d Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期五, 15 五月 2026 17:15:15 +0800
Subject: [PATCH] refactor(stock): 优化库存记录服务中的仓库信息处理逻辑

---
 src/main/java/com/ruoyi/basic/service/impl/ProductServiceImpl.java |   45 ++++++++++++++++++++++++++++-----------------
 1 files changed, 28 insertions(+), 17 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 609d0fd..13320da 100644
--- a/src/main/java/com/ruoyi/basic/service/impl/ProductServiceImpl.java
+++ b/src/main/java/com/ruoyi/basic/service/impl/ProductServiceImpl.java
@@ -42,9 +42,9 @@
         }
         // 娴疆鐢ㄤ簬鍖哄垎鎴愬搧鍜岀墿鏂�
         if (productDto.getProductType() != null && !productDto.getProductType().isEmpty()) {
-            if (productDto.getProductType().equals("鎴愬搧")){
+            if (productDto.getProductType().equals("鎴愬搧")) {
                 queryWrapper.eq(Product::getProductName, productDto.getProductType());
-            }else queryWrapper.ne(Product::getProductName, "鎴愬搧");
+            } else queryWrapper.ne(Product::getProductName, "鎴愬搧");
         }
 
         // 鏌ヨ鏍硅妭鐐瑰垪琛�
@@ -86,6 +86,19 @@
         }
 
         List<Map<String, Object>> batchRows = productModelMapper.selectBatchNoQtyByProductModelIds(productModelIds);
+        List<Map<String, Object>> unqualifiedBatchRows =
+                productModelMapper.selectUnqualifiedBatchNoQtyByProductModelIds(productModelIds);
+        batchRows.addAll(unqualifiedBatchRows);
+        Map<Long, HashMap<String, HashMap<String, BigDecimal>>> batchNoQtyMapsByProductModelId =
+                buildBatchNoQtyMaps(batchRows);
+        for (ProductModelVo record : records) {
+            record.setBatchNoMaps(toBatchNoMaps(
+                    batchNoQtyMapsByProductModelId.getOrDefault(record.getId(), new HashMap<>())));
+        }
+    }
+
+    private Map<Long, HashMap<String, HashMap<String, BigDecimal>>> buildBatchNoQtyMaps(
+            List<Map<String, Object>> batchRows) {
         Map<Long, HashMap<String, HashMap<String, BigDecimal>>> batchNoQtyMapsByProductModelId = new HashMap<>();
         for (Map<String, Object> batchRow : batchRows) {
             Long productModelId = toLong(batchRow.get("productModelId"));
@@ -100,24 +113,22 @@
                     .computeIfAbsent(String.valueOf(warehouseId), key -> new HashMap<>())
                     .merge(batchNo, toBigDecimal(batchRow.get("qty")), BigDecimal::add);
         }
+        return batchNoQtyMapsByProductModelId;
+    }
 
-        for (ProductModelVo record : records) {
-            HashMap<String, List<Map<String, BigDecimal>>> batchNoMaps = new HashMap<>();
-            HashMap<String, HashMap<String, BigDecimal>> stockBatchNoQtyMaps =
-                    batchNoQtyMapsByProductModelId.getOrDefault(record.getId(), new HashMap<>());
-
-            for (Map.Entry<String, HashMap<String, BigDecimal>> entry : stockBatchNoQtyMaps.entrySet()) {
-                List<Map<String, BigDecimal>> batchList = new ArrayList<>();
-                for (Map.Entry<String, BigDecimal> batchEntry : entry.getValue().entrySet()) {
-                    Map<String, BigDecimal> batchItem = new HashMap<>();
-                    batchItem.put(batchEntry.getKey(), batchEntry.getValue());
-                    batchList.add(batchItem);
-                }
-                batchNoMaps.put(entry.getKey(), batchList);
+    private HashMap<String, List<Map<String, BigDecimal>>> toBatchNoMaps(
+            HashMap<String, HashMap<String, BigDecimal>> stockBatchNoQtyMaps) {
+        HashMap<String, List<Map<String, BigDecimal>>> batchNoMaps = new HashMap<>();
+        for (Map.Entry<String, HashMap<String, BigDecimal>> entry : stockBatchNoQtyMaps.entrySet()) {
+            List<Map<String, BigDecimal>> batchList = new ArrayList<>();
+            for (Map.Entry<String, BigDecimal> batchEntry : entry.getValue().entrySet()) {
+                Map<String, BigDecimal> batchItem = new HashMap<>();
+                batchItem.put(batchEntry.getKey(), batchEntry.getValue());
+                batchList.add(batchItem);
             }
-
-            record.setBatchNoMaps(batchNoMaps);
+            batchNoMaps.put(entry.getKey(), batchList);
         }
+        return batchNoMaps;
     }
 
     private Long toLong(Object value) {

--
Gitblit v1.9.3