package com.sundot.airport.system.mapper;

import java.util.List;
import java.util.Set;

import com.sundot.airport.system.domain.BasePosition;
import com.sundot.airport.system.domain.vo.PositionInfoVO;
import org.apache.ibatis.annotations.Param;

/**
 * 位置Mapper接口
 *
 * @author ruoyi
 * @date 2025-07-09
 */
public interface BasePositionMapper {
    /**
     * 查询位置
     *
     * @param id 位置主键
     * @return 位置
     */
    public BasePosition selectBasePositionById(Long id);

    /**
     * 查询位置列表
     *
     * @param basePosition 位置
     * @return 位置集合
     */
    public List<BasePosition> selectBasePositionList(BasePosition basePosition);

    /**
     * 新增位置
     *
     * @param basePosition 位置
     * @return 结果
     */
    public int insertBasePosition(BasePosition basePosition);

    /**
     * 修改位置
     *
     * @param basePosition 位置
     * @return 结果
     */
    public int updateBasePosition(BasePosition basePosition);

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

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

    /**
     * 根据ID查询所有子元素
     *
     * @param id ID
     * @return 列表
     */
    public List<BasePosition> selectChildrenById(Long id);

    /**
     * 功能描述：根据多个id查询元素列表
     *
     * @param ids ID集合
     * @return List<BasePosition>
     * @method selectPositionListByIds
     * @author PanHu Sun
     * @date 2026/5/20 9:36
     */
    List<BasePosition> selectPositionListByIds(@Param("ids") Set<Long> ids);

    /**
     * 修改子元素关系
     *
     * @param list 子元素
     * @return 结果
     */
    public int updateChildren(@Param("list") List<BasePosition> list);

    /**
     * 查询区域下所有通道
     *
     * @param regionalCode 区域code
     * @return 列表
     */
    List<PositionInfoVO> selectChannelsUnderArea(@Param("regionalCode") List<String> regionalCode);
}
