package com.yeejoin.equipmanage.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.module.common.api.dto.OrgMenuDto;
import com.yeejoin.equipmanage.common.dto.AreaDto;
import com.yeejoin.equipmanage.common.entity.Area;
import com.yeejoin.equipmanage.common.vo.AreaResquest;
import com.yeejoin.equipmanage.common.vo.AreaTreeVo;
import com.yeejoin.equipmanage.common.vo.UnitAreaTreeVo;

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

/**
 * 区域 服务类
 *
 * @author duanwei
 * @date 2021-04-27
 */
public interface IAreaService extends IService<Area> {
    /**
     * 获取区域树
     * @return
     */
//    List<AreaTreeVo> getAreaTreeVo();

    List<UnitAreaTreeVo> getAreaTreeVoById(long id, String bizOrgCode);

    /**
     * 根据条件分页
     * @param page
     * @param area
     * @return
     */
    IPage<AreaResquest> areaList(Page page, Area area);

    /**
     * 根据bizOrgCode获取单位区域树
     * @param bizOrgCode 登陆人的机构编码
     * @return list
     */
    List<UnitAreaTreeVo> getAreaTreeListVo(String bizOrgCode);


    /**
     * 根据登录人及类型获取公司部门树
     * @param reginParams 公司及部门信息
     * @param type  默认查询公司及部门，公司：COMPANY，部门：DEPARTMENT
     * @return
     */
    List<OrgMenuDto> companyTreeByUserAndType(ReginParams reginParams, String type);

    Object saveArea(AreaResquest areaResquest);

    Object updateArea(AreaResquest areaResquest);

    int deleteArea(Long instanceId);

    Map<String,Object> getById(Long instanceId);

    /**
     * 获取指定层级区域树，起步2级树
     * @param tier
     * @return
     */
    List<AreaDto> getAreaTierTree(Integer tier);
}
