package com.ruoyi.asset.mapper;

import java.util.Collection;
import java.util.List;
import com.ruoyi.asset.domain.TbLocation;
import org.apache.ibatis.annotations.Param;

/**
 * 所属位置Mapper接口
 * 
 * @author 原动力
 * @date 2023-05-15
 */
public interface TbLocationMapper 
{
    /**
     * 查询所属位置
     * 
     * @param id 所属位置主键
     * @return 所属位置
     */
    public TbLocation selectTbLocationById(Long id);

    TbLocation selectTbLocationByNumber(String number);

    List<TbLocation> selectTbLocationListByNumbers(@Param("numbers") List<String> numbers);

    /**
     * 查询所属位置列表
     * 
     * @param tbLocation 所属位置
     * @return 所属位置集合
     */
    public List<TbLocation> selectTbLocationList(TbLocation tbLocation);

    /**
     * 根据编码查子编码及自身
     * @param location
     * @return
     */
    List<String> selectNumberByFather(String location);

    /**
     * 根据Id查询位置及子位置编码
     * @param id
     * @return
     */
    List<String> selectChildTbLocationById(Long id);

    /**
     * 根据Id查询位置及子位置编码
     * @param id
     * @return
     */
    List<String> selectChildTbLocationByIds(@Param("ids") Collection<Long> ids);

    /**
     * 根据位置编码获取有效位置ID
     * @param numbers
     * @return
     */
    List<Long> selectTbLocationIdByNumbers(@Param("numbers") Collection<String> numbers);

    /**
     * 根据IDs查询位置
     * @param ids
     * @return
     */
    List<TbLocation> selectTbLocationByIds(@Param("ids") Collection<String> ids);

    /**
     * 新增所属位置
     * 
     * @param tbLocation 所属位置
     * @return 结果
     */
    public int insertTbLocation(TbLocation tbLocation);

    /**
     * 修改所属位置
     * 
     * @param tbLocation 所属位置
     * @return 结果
     */
    public int updateTbLocation(TbLocation tbLocation);

    /**
     * 删除所属位置
     * 
     * @param id 所属位置主键
     * @return 结果
     */
    public int deleteTbLocationById(Long id);

    /**
     * 批量删除所属位置
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteTbLocationByIds(Long[] ids);
}
