liyong
2026-05-15 0578c6c76f13e367b5dc7d0882efe3c69ca4cb0e
src/main/java/com/ruoyi/basic/service/impl/ProductServiceImpl.java
@@ -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,12 +113,12 @@
                    .computeIfAbsent(String.valueOf(warehouseId), key -> new HashMap<>())
                    .merge(batchNo, toBigDecimal(batchRow.get("qty")), BigDecimal::add);
        }
        return batchNoQtyMapsByProductModelId;
    }
        for (ProductModelVo record : records) {
    private HashMap<String, List<Map<String, BigDecimal>>> toBatchNoMaps(
            HashMap<String, HashMap<String, BigDecimal>> stockBatchNoQtyMaps) {
            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()) {
@@ -115,9 +128,7 @@
                }
                batchNoMaps.put(entry.getKey(), batchList);
            }
            record.setBatchNoMaps(batchNoMaps);
        }
        return batchNoMaps;
    }
    private Long toLong(Object value) {