liyong
10 天以前 88e384da863bb2f7324cb1e1474885df3b7cce91
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/materialstock/MesWmMaterialStockMapper.java
@@ -85,8 +85,14 @@
        return update(null, updateWrapper);
    }
    /**
     * 按组合键查询库存记录
     *
     * 唯一键:(itemId, warehouseId, locationId, areaId, batchId, vendorId)
     * 同一物料同一库位,不同供应商/批次的库存分开管理
     */
    default MesWmMaterialStockDO selectByCompositeKey(Long itemId, Long warehouseId, Long locationId,
                                                       Long areaId, Long batchId) {
                                                       Long areaId, Long batchId, Long vendorId) {
        LambdaQueryWrapperX<MesWmMaterialStockDO> wrapper = new LambdaQueryWrapperX<MesWmMaterialStockDO>()
                .eqIfPresent(MesWmMaterialStockDO::getItemId, itemId)
                .eqIfPresent(MesWmMaterialStockDO::getWarehouseId, warehouseId)
@@ -98,6 +104,12 @@
        } else {
            wrapper.isNull(MesWmMaterialStockDO::getBatchId);
        }
        // vendorId=null 时精确匹配 is null
        if (vendorId != null) {
            wrapper.eq(MesWmMaterialStockDO::getVendorId, vendorId);
        } else {
            wrapper.isNull(MesWmMaterialStockDO::getVendorId);
        }
        return selectOne(wrapper);
    }
@@ -108,6 +120,7 @@
                .eqIfPresent(MesWmMaterialStockDO::getAreaId, reqVO.getAreaId())
                .eqIfPresent(MesWmMaterialStockDO::getItemId, reqVO.getItemId())
                .eqIfPresent(MesWmMaterialStockDO::getBatchId, reqVO.getBatchId())
                .eqIfPresent(MesWmMaterialStockDO::getVendorId, reqVO.getVendorId())
                .likeIfPresent(MesWmMaterialStockDO::getBatchCode, reqVO.getBatchCode())
                .geIfPresent(MesWmMaterialStockDO::getUpdateTime, reqVO.getStartTime())
                .leIfPresent(MesWmMaterialStockDO::getUpdateTime, reqVO.getEndTime())