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