package com.ruoyi.ibs.grid.mapper;

import com.ruoyi.ibs.grid.domain.dto.GridSelectInfo;
import com.ruoyi.system.domain.GridRegionGrid;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 行政网格Mapper接口
 * 
 * @author ruoyi
 * @date 2024-09-19
 */
public interface GridRegionGridMapper 
{
    /**
     * 查询行政网格
     * 
     * @param gridId 行政网格主键
     * @return 行政网格
     */
    public GridRegionGrid selectGridRegionGridByGridId(Long gridId);

    /**
     * 查询行政网格列表
     * 
     * @param gridRegionGrid 行政网格
     * @return 行政网格集合
     */
    public List<GridRegionGrid> selectGridRegionGridList(GridRegionGrid gridRegionGrid);

    /**
     * 新增行政网格
     * 
     * @param gridRegionGrid 行政网格
     * @return 结果
     */
    public int insertGridRegionGrid(GridRegionGrid gridRegionGrid);

    /**
     * 修改行政网格
     * 
     * @param gridRegionGrid 行政网格
     * @return 结果
     */
    public int updateGridRegionGrid(GridRegionGrid gridRegionGrid);


    /**
     * 查询一级行政网格列表
     *
     * @param gridSelectInfo 数据主键集合
     * @return 结果
     */
    public List<GridSelectInfo> selectTopGrid(GridSelectInfo gridSelectInfo );

    /**
     * 查询二级行政网格列表
     *
     * @param gridSelectInfo 数据主键集合
     * @return 结果
     */
    public List<GridSelectInfo> selectSecGrid(GridSelectInfo gridSelectInfo );

    /**
     * 查询一级行政网格列表
     *
     * @param gridSelectInfo 数据主键集合
     * @return 结果
     */
    public List<GridSelectInfo> selectTopGridList(GridSelectInfo gridSelectInfo );

    /**
     * 查询二级行政网格列表
     *
     * @param gridSelectInfo 数据主键集合
     * @return 结果
     */
    public List<GridSelectInfo> selectSecGridList(GridSelectInfo gridSelectInfo );

    /**
     * 查询行政网格名称
     *
     * @param gridId 数据主键集合
     * @return 结果
     */
    public String selectGridName(Long gridId);

    /**
     * 获取一级网格数量
     *
     * @param headDeptId 数据主键集合
     * @return 结果
     */
    public Long getTopGridNumByDeptId(Long headDeptId );

    /**
     * 获取二级网格数量
     *
     * @param headDeptId 数据主键集合
     * @return 结果
     */
    public Long getSecGridNumByDeptId(Long headDeptId );

    /**
     * 获取一级网格数量
     *
     * @param UserId 数据主键集合
     * @return 结果
     */
    public Long getTopGridNumByUserId(String UserId );

    /**
     * 获取二级网格数量
     *
     * @param UserId 数据主键集合
     * @return 结果
     */
    public Long getSecGridNumByUserId(String UserId );

    /**
     * 查询上级行政网格名称
     *
     * @param gridId 数据主键集合
     * @return 结果
     */
    public String getParentGridName(Long gridId);

    /**
     * 查询下级行政网格名称
     *
     * @param gridId 数据主键集合
     * @return 结果
     */
    public String getSecGridName(@Param("gridId")Long gridId, @Param("userDept")Long userDept);

    /**
     * 查询上级行政网格责任类型
     *
     * @param gridId 数据主键集合
     * @return 结果
     */
    public String getParentGridDutyType(Long gridId);

    /**
     * 查询行政网格责任类型
     *
     * @param gridId 数据主键集合
     * @return 结果
     */
    public String selectGridDutyType(Long gridId);

    /**
     * 根据客户经理查询二级网格名称
     *
     * @param regionCode 数据主键集合
     * @return 结果
     */
    public String getSecGridNameByRegionCode(@Param("regionCode")String regionCode );

    /**
     * 根据客户经理查询二级网格责任类型
     *
     * @param regionCode 数据主键集合
     * @return 结果
     */
    public String getSecGridDutyTypeByRegionCode(@Param("regionCode")String regionCode );

    public List<Long> getDeptListByRegionCode(@Param("regionCode") String regionCode);

    public List<String> getUserListByRegionCode(@Param("regionCode") String regionCode);

}
