package com.ruoyi.ibs.grid.service;

import com.ruoyi.ibs.draw.domain.dto.grid.CustCountDTO;
import com.ruoyi.ibs.grid.domain.dto.GridCustListDTO;
import com.ruoyi.ibs.grid.domain.dto.RegionGridListDTO;
import com.ruoyi.ibs.grid.domain.dto.UnbindDTO;
import com.ruoyi.ibs.grid.domain.entity.RegionCustUser;
import com.ruoyi.ibs.grid.domain.entity.RegionGrid;
import com.ruoyi.ibs.grid.domain.vo.RegionCustUserVO;
import com.ruoyi.ibs.grid.domain.vo.RegionGridCustVO;
import com.ruoyi.ibs.grid.domain.vo.RegionGridGroupVO;
import com.ruoyi.ibs.grid.domain.vo.RegionGridListVO;
import com.ruoyi.ibs.grid.domain.vo.RegionUnbindVo;

import java.util.List;

/**
 * @Author 吴凯程
 * @Date 2025/1/7
 **/
public interface RegionGridListService {

    List<RegionCustUserVO> selectCustFromGrid(GridCustListDTO gridCustListDTO, RegionGrid regionGrid);

    List<RegionGridCustVO> selectCustFromGridByManager(GridCustListDTO gridCustListDTO, RegionGrid regionGrid);

    String unbindCustUser(UnbindDTO unbindDTO);

    List<RegionUnbindVo> getUserUnbindList(Long gridId, String custId);

    CustCountDTO getUnbindCustCount(Long gridId);

    List<RegionGridListVO> getTopGridList(RegionGridListDTO regionGridListDTO);

    List<RegionGridListVO> getSecGridList(RegionGridListDTO regionGridListDTO);

    List<RegionGridListVO> getSecGridListByManager(RegionGridListDTO regionGridListDTO);

    /**
     * 根据网格ID列表批量查询所有客户（用于导入客群，优化版）
     * @param gridIds 网格ID列表
     * @param headId 总行机构号前三位（用于拼接动态表名）
     * @return 客户列表（去重）
     */
    List<RegionCustUser> selectAllCustByGridIds(List<Long> gridIds, String headId);

    /**
     * 查询地理网格列表（简化版）- 专用于客群创建
     * 只返回gridId和gridName，避免N+1查询问题
     * @param regionGridListDTO 查询条件
     * @return 网格列表（仅包含ID和名称）
     */
    List<RegionGridGroupVO> getRegionGridListForGroup(RegionGridListDTO regionGridListDTO);


}
