package com.jeethink.dataCenter.mapper;

import com.jeethink.dataCenter.domain.Warehouse;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 库房Mapper接口
 *
 * @author wms
 */
public interface WarehouseMapper {

    /**
     * 查询库房数据
     *
     * @param warehouse 库房信息
     * @return 库房信息集合
     */
    List<Warehouse> selectWarehouseList(Warehouse warehouse);

    /**
     * 根据库房ID查询信息
     *
     * @param id 库房ID
     * @return 库房信息
     */
    Warehouse selectWarehouseById(Long id);

    /**
     * 校验库房名称是否唯一
     *
     * @param name 库房名称
     * @param parentId 父库房ID
     * @return 信息
     */
    Warehouse checkNameUnique(@Param("name") String name, @Param("parentId") Long parentId);

    /**
     * 新增库房信息
     *
     * @param warehouse 库房信息
     * @return 结果
     */
    int insertWarehouse(Warehouse warehouse);

    /**
     * 根据ID查询所有正常状态的所有子库房
     *
     * @param id 库房ID
     * @return 子库房数
     */
    int selectNormalChildrenById(Long id);

    /**
     * 修改库房信息
     *
     * @param warehouse 库房信息
     * @return 结果
     */
    int updateWarehouse(Warehouse warehouse);

    /**
     * 获取ID子库房集合
     *
     * @param id 库房ID
     * @return 子库房合集
     */
    List<Warehouse> getChildList(Long id);

    /**
     * 删除库房信息
     *
     * @param id 库房ID
     * @return 结果
     */
    int deleteWarehouseById(Long id);

    /**
     * 根据关联人员查找库房
     *
     * @param relaUser 关联人员
     * @return 库房合集 （原则上只有1个）
     */
    List<Warehouse> selectWarehouseByRelaUser(Long relaUser);

    void deleteArchives(Long id);

    String selectArchivesById(String archivesId);

    List<String> selectArchivesByParentId(Long parentId);
}
