package com.storlead.user.service;

import com.storlead.framework.mybatis.service.MyBaseService;
import com.storlead.user.pojo.entity.DeptEntity;
import com.storlead.user.model.DepartIdModel;
import com.storlead.user.model.DeptTreeModel;

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

/**
 * <p>
 * 部门表 服务实现类
 * <p>
 *
 * @Author:Steve
 * @Since：   2019-01-22
 */
public interface IDepartService extends MyBaseService<DeptEntity> {

    /**
     * 查询所有部门信息,并分节点进行显示
     * @return
     */
    void truncateDept();

    /**
     * 查询所有部门信息,并分节点进行显示
     * @return
     */
    List<DeptTreeModel> queryTreeList();

    List<DeptTreeModel> queryTreeListWithSubCompanyId(Integer subCompanyId);

    /**
     * 查询所有部门DepartId信息,并分节点进行显示
     * @return
     */
    public List<DepartIdModel> queryDepartIdTreeList();

    /**
     * 根据关键字搜索相关的部门数据
     * @param keyWord
     * @return
     */
    List<DeptTreeModel> searhBy(String keyWord);


    List<DeptTreeModel> queryDeptBySubList(Integer subCompanyId);


    Set<Long> findDeptIdsBySubCompanyId(Long subCompanyId);

    /**
     * 根据角色ID查询部门列表
     *
     * @param id 角色ID
     * @return java.util.Set<com.storlead.salary.entity.Dept>
     * @author blank
     * @date 2020-3-16 下午 3:34
     */
    Set<DeptEntity> findByRoleId(Long id);

    /**
     * 根据父ID查询部门列表
     *
     * @param id pid
     * @return java.util.List<com.storlead.salary.entity.Dept>
     * @author blank
     * @date 2020-3-16 下午 3:38
     */
    List<DeptEntity> findByPid(Long id);


    List<Long> getDeptChildren(List<DeptEntity> deptList);

    Map<Long, DeptEntity> getDeptMap(List<Long> deptIdList);
}
