package com.zbf.system.mapper;

import java.util.List;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zbf.system.domain.TBaseStorage;
import com.zbf.system.domain.TBaseStorageArea;
import com.zbf.system.domain.TBaseStorageLocationRecord;
import com.zbf.system.domain.TMiStock;
import org.apache.ibatis.annotations.Select;

/**
 * 仓库管理Mapper接口
 *
 * @author tony
 * @date 2024-06-19
 */
public interface TBaseStorageMapper extends BaseMapper<TBaseStorage> //修改
{

    @Select("SELECT COUNT(*) FROM t_base_storage")
    int getCount();
    /**
     * 查询仓库管理
     *
     * @param id 仓库管理主键
     * @return 仓库管理
     */
    public TBaseStorage selectTBaseStorageById(Long id);

    /**
     * 查询仓库管理列表
     *
     * @param tBaseStorage 仓库管理
     * @return 仓库管理集合
     */
    public List<TBaseStorage> selectTBaseStorageList(TBaseStorage tBaseStorage);

    /**
     * 新增仓库管理
     *
     * @param tBaseStorage 仓库管理
     * @return 结果
     */
    public int insertTBaseStorage(TBaseStorage tBaseStorage);

    /**
     * 修改仓库管理
     *
     * @param tBaseStorage 仓库管理
     * @return 结果
     */
    public int updateTBaseStorage(TBaseStorage tBaseStorage);

    /**
     * 删除仓库管理
     *
     * @param id 仓库管理主键
     * @return 结果
     */
    public int deleteTBaseStorageById(Long id);

    /**
     * 批量删除仓库管理
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteTBaseStorageByIds(Long[] ids);

    /**
     * 批量启用仓库管理
     *
     * @param ids 需要启用的数据主键集合
     * @return 结果
     */
    public int enableTBaseStorageByIds(Long[] ids);

    /**
     * 批量禁用仓库管理
     *
     * @param ids 需要禁用的数据主键集合
     * @return 结果
     */
    public int disabledTBaseStorageByIds(Long[] ids);

    /**
     * 查询存在的库存信息
     *
     * @param ids 需要禁用的数据主键集合
     * @return 结果
     */
    public List<TBaseStorage> selectStockByIds(Long[] ids);

    /**
     * 查询库存库区库位信息
     * @param tBaseStorageLocation
     * @return
     */
    public List<TBaseStorageLocationRecord> selectStorageAndAreaAndLocation(TBaseStorageLocationRecord tBaseStorageLocation);


    @Select("SELECT is_agv FROM t_base_storage WHERE storage_id = #{storageId}")
    String getIsAgvByStorageId(String storageId);

    @Select("SELECT * FROM t_base_storage WHERE storage_id = #{storageId}")
    TBaseStorage getName(String storageId);
}
