package com.fs.company.service;

import com.fs.company.domain.CompanyDept;
import com.fs.company.domain.CompanyDeptTreeSelect;

import java.util.List;

/**
 * 部门Service接口
 * 
 * @author fs
 * @date 2021-05-25
 */
public interface ICompanyDeptService 
{
    /**
     * 查询部门
     * 
     * @param deptId 部门ID
     * @return 部门
     */
    public CompanyDept selectCompanyDeptById(Long deptId);

    /**
     * 查询部门列表
     * 
     * @param companyDept 部门
     * @return 部门集合
     */
    public List<CompanyDept> selectCompanyDeptList(CompanyDept companyDept);

    /**
     * 新增部门
     * 
     * @param companyDept 部门
     * @return 结果
     */
    public int insertCompanyDept(CompanyDept companyDept);

    /**
     * 修改部门
     * 
     * @param companyDept 部门
     * @return 结果
     */
    public int updateCompanyDept(CompanyDept companyDept);

    /**
     * 批量删除部门
     * 
     * @param deptIds 需要删除的部门ID
     * @return 结果
     */
    public int deleteCompanyDeptByIds(Long[] deptIds);

    /**
     * 删除部门信息
     * 
     * @param deptId 部门ID
     * @return 结果
     */
    public int deleteCompanyDeptById(Long deptId);

    List<CompanyDeptTreeSelect> buildDeptTreeSelect(List<CompanyDept> depts);

    List<CompanyDept> buildDeptTree(List<CompanyDept> depts);


    public List<Integer> selectDeptListByRoleId(Long roleId);

    int checkDeptNameUnique(CompanyDept dept);

    int checkDeptExistUser(Long deptId);

    int hasChildByDeptId(Long deptId);

    int selectNormalChildrenDeptById(Long deptId);

    List<String> selectCompanyDeptNamesByIds(String ids);
}
