package com.sptg.estate.biz.mapper;

import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.pagination.Pagination;
import com.sptg.estate.api.entity.Residential;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * title: ResidentialMapper
 * package: com.sptg.estate.biz.mapper
 * description: 小区 DAO接口
 *
 *             
 *                
 */
public interface ResidentialMapper extends BaseMapper<Residential> {
    /**
     * 功能描述:分页查询按小区分组统计住户人数列表
     * @param wrapper 查询条件
     * @param start 第几条开始分页
     * @param pageSize  分页条数
     * @return Page<Map<String,Object>>
     *                
     *                       
     */
    List<Residential> statisticsUserCountList(@Param(value = "start") Integer start,@Param(value = "pageSize") Integer pageSize, @Param(value = "ew") Wrapper<Residential> wrapper);

    /**
     * 功能描述:按城市分组设备,小区,住户(跨数据库查询)
     * @param regionProvince 省份
     * @param orgPosition   机构位置
     * @return List<Map<String,Object>>
     *                
     *                      
     */
    List<Map<String,Object>> statisticsCityCountList(@Param(value = "regionProvince") String regionProvince,@Param(value = "orgPosition") String orgPosition);

    /**
     * 功能描述:分页查询小区
     * @param page 分页条件
     * @param wrapper 查询条件
     * @return List<Residential>
     *             
     *                      
     */
    List<Residential> showResidentialList(@Param(value = "page") Pagination page, @Param(value = "ew") Wrapper<Residential> wrapper);

    /**
     * 功能描述:根据机构位置获取区域权限小区用户数量
     * @param orgPosition 机构位置
     * @return Long
     *                
     *                      
     */
    Long getUserCountForRegionAuthorize(@Param(value = "orgPosition") String orgPosition);
    
    /**
     * 功能描述:查询小区
     * @param wrapper 查询条件
     * @return List<Residential>
     *             
     *                      
     */
    List<Residential> findListByPosition( @Param(value = "ew") Wrapper<Residential> wrapper);
}
