package com.njcn.system.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.system.pojo.dto.AreaTreeDTO;
import com.njcn.system.pojo.param.AreaParam;
import com.njcn.system.pojo.po.Area;
import com.njcn.system.pojo.vo.AreaTreeVO;

import java.util.List;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author hongawen
 * @since 2021-12-13
 */
public interface IAreaService extends IService<Area> {

    /**
     * 根据前台传递参数，分页查询行政区域信息
     *
     * @param queryParam 查询参数
     * @return 行政区域列表
     */
    Page<Area> listDictData(AreaParam.QueryParam queryParam);

    /**
     * 根据行政区域id查询详情
     *
     * @param id 行政区域id
     * @return 行政区域详情详情
     */
    Area selectIdArea(String id);

    /**
     * 根据行政区域id查询详情
     *
     * @param list 行政区域id集合
     * @return 行政区域详情详情
     */
    List<Area> selectAreaByList(List<String> list);

    /**
     *
     */
    List<Area> selectPid(List<String> ids);

    /**
     * 行政区域树
     *
     * @param type 区域类型
     * @return 树形结构
     */
    List<AreaTreeVO> areaTree(String id, Integer type);

    /**
     * 新增企业区域
     * @param areaParam 企业区域
     * @return 新增结果
     */
    boolean addAreaParam(AreaParam areaParam);

    /**
     * 修改企业区域
     * @param updateParam 企业区域数据
     * @return 操作结果
     */
    boolean updateArea(AreaParam.AreaUpdateParam updateParam);

    /**
     * 批量逻辑删除企业区域数据
     * @param ids 企业区域id集合
     * @return 操作结果
     */
    boolean deleteArea(List<String> ids);

    /**
     * 行政区域树
     *
     * @param type 区域类型
     * @return 树形结构
     */
    List<AreaTreeDTO> areaDeptTree(String id, Integer type);

    /**
     * 根据区域id获取省份信息
     *
     * @param type 区域类型
     * @return 树形结构
     */
    Area areaPro(String id, Integer type);

    Area areaDeptPro(String id);

    List<AreaTreeVO> getDeptIdAreaTree();

    /**
     * 根据行政区域名称查询详细
     *
     * @param name 行政区域名称
     * @return 行政区域详情
     */
    Area selectAreaByName(String name);

    /**
    * @Description: areaSelect
    * @Author: clam
    * @Date: 2023/4/11
    */
    List<AreaTreeVO> areaSelect();

    List<Area> getPidAreaList(String areaId,Integer type);
}
