chenhj
3 天以前 8097a2a4383a3785e11990170d61c59ae6b48888
main-business/src/main/java/com/ruoyi/business/service/impl/InventorySummaryServiceImpl.java
@@ -87,4 +87,29 @@
            return officialInventoryMapper.updateById(officialInventory);
        }
    }
    @Override
    public int updateInventorySummary(List<Long> ids) {
        List<InventorySummary> inventorySummaries = inventorySummaryMapper.selectBatchIds(ids);
        for (InventorySummary inventorySummary : inventorySummaries) {
            // 查询节点之前所有入库记录
            List<InputInventoryRecord> inputInventoryRecords = inputInventoryRecordMapper.selectList(new LambdaQueryWrapper<InputInventoryRecord>()
                    .eq(InputInventoryRecord::getInventoryId, inventorySummary.getInventoryId())
                    .eq(InputInventoryRecord::getInventoryType, inventorySummary.getInventoryType())
                    .lt(InputInventoryRecord::getId, inventorySummary.getInputEndRecordId()));
            // 查询节点之前所有出库记录
            List<OutputInventoryRecord> outputInventoryRecords = outputInventoryRecordMapper.selectList(new LambdaQueryWrapper<OutputInventoryRecord>()
                    .eq(OutputInventoryRecord::getInventoryId, inventorySummary.getInventoryId())
                    .eq(OutputInventoryRecord::getInventoryType, inventorySummary.getInventoryType())
                    .lt(OutputInventoryRecord::getId, inventorySummary.getOutputEndRecordId()));
            // 计算库存数量
            BigDecimal inputQuantity = inputInventoryRecords.stream().map(InputInventoryRecord::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add);
            BigDecimal outputQuantity = outputInventoryRecords.stream().map(OutputInventoryRecord::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add);
            inventorySummary.setInventoryQuantity(inputQuantity.subtract(outputQuantity));
        }
        return inventorySummaryMapper.updateById(inventorySummaries).size();
    }
}