2026-06-29 940c8481d2fdcf51341db4ccd6fd6fcc2d43debb
yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/inventory/WmsInventoryServiceImpl.java
@@ -10,9 +10,11 @@
import cn.iocoder.yudao.module.wms.controller.admin.inventory.vo.WmsInventoryPageReqVO;
import cn.iocoder.yudao.module.wms.dal.dataobject.inventory.WmsInventoryDO;
import cn.iocoder.yudao.module.wms.dal.dataobject.inventory.WmsInventoryHistoryDO;
import cn.iocoder.yudao.module.wms.dal.dataobject.inventory.WmsInventoryReserveDO;
import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemDO;
import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemSkuDO;
import cn.iocoder.yudao.module.wms.dal.mysql.inventory.WmsInventoryMapper;
import cn.iocoder.yudao.module.wms.dal.mysql.inventory.WmsInventoryReserveMapper;
import cn.iocoder.yudao.module.wms.service.inventory.dto.WmsInventoryChangeReqDTO;
import cn.iocoder.yudao.module.wms.service.inventory.dto.WmsInventoryCheckReqDTO;
import cn.iocoder.yudao.module.wms.service.md.item.WmsItemService;
@@ -50,6 +52,9 @@
    @Resource
    private WmsInventoryHistoryService inventoryHistoryService;
    @Resource
    private WmsInventoryReserveMapper reserveMapper;
    @Resource
    private WmsItemSkuService itemSkuService;
@@ -294,4 +299,19 @@
                item.getWarehouseId(), beforeQuantity, item.getQuantity());
    }
    @Override
    public BigDecimal getAvailableQuantity(Long skuId, Long warehouseId) {
        // 1. 查询库存数量
        WmsInventoryDO inventory = inventoryMapper.selectBySkuIdAndWarehouseId(skuId, warehouseId);
        if (inventory == null) {
            return BigDecimal.ZERO;
        }
        // 2. 查询预留数量
        BigDecimal reserveQuantity = reserveMapper.selectReserveQuantity(skuId, warehouseId);
        // 3. 计算可用数量
        return inventory.getQuantity().subtract(reserveQuantity != null ? reserveQuantity : BigDecimal.ZERO);
    }
}