package com.hfkj.service;

import com.hfkj.entity.BsOrganization;
import com.hfkj.model.CommonTreeModel;

import java.util.List;

/**
 * @ClassName BsOrganizationService
 * @Description
 * @Author 杜江
 * @Date 2020/7/23 11:40
 * @Version 1.0
 */
public interface BsOrganizationService {

    /**
     *
     * @Title: findById
     * @Description: 根据id查询部门
     * @author: 杜江
     * @Date: 2020/7/23 15:19
     * @param: [organizationId]
     * @return: com.shinwoten.train.entity.BsOrganization
     * @throws
     */
    BsOrganization findById(Long organizationId);

    /**
     *
     * @Title: findTopByCompany
     * @Description: 查询公司顶级组织
     * @author: 杜江
     * @Date: 2020/7/6 16:44
     * @param: [companyId]
     * @return: com.shinwoten.plat.entity.SecOrganization
     * @throws
     */
    BsOrganization findTopByCompany(Long companyId);

    /**
     *
     * @Title: findTree
     * @Description: 查询部门树
     * @author: 杜江
     * @Date: 2020/7/6 17:46
     * @param: [companyId]
     * @return: com.shinwoten.plat.model.CommonTreeModel
     * @throws
     */
    CommonTreeModel findTree(Long companyId);

    /**
     *
     * @Title: findOrganizationList
     * @Description: 查询公司下所有部门
     * @author: 杜江
     * @Date: 2020/7/6 17:56
     * @param: [companyId]
     * @return: java.util.List<com.shinwoten.plat.entity.SecOrganization>
     * @throws
     */
    List<BsOrganization> findOrganizationList(Long companyId);

    /**
     *
     * @Title: findAllSon
     * @Description: TODO(查询公司全部子级部门)
     * @author: 杜江
     * @param: [companyId]
     * @return: java.util.List<com.shinwoten.haj.entity.BaseOrganization>
     * @throws
     */
    List<BsOrganization> findAllSon(Long companyId);

    /**
     *
     * @Title: findByName
     * @Description: 通过名称查询公司下部门
     * @author: 杜江
     * @Date: 2020/7/6 17:57
     * @param: [companyId, name]
     * @return: com.shinwoten.plat.entity.SecOrganization
     * @throws
     */
    BsOrganization findByName(Long companyId, String name);

    /**
     *
     * @Title: addOrganization
     * @Description: 添加部门
     * @author: 杜江
     * @Date: 2020/7/7 9:08
     * @param: [secOrganization]
     * @return: void
     * @throws
     */
    void addOrganization(BsOrganization secOrganization);

    /**
     *
     * @Title: updateOrganization
     * @Description: 修改部门
     * @author: 杜江
     * @Date: 2020/7/7 9:13
     * @param: [secOrganization]
     * @return: void
     * @throws
     */
    void updateOrganization(BsOrganization secOrganization);

    /**
     *
     * @Title: findSon
     * @Description: 查询所有子级部门
     * @author: 杜江
     * @Date: 2020/7/7 9:14
     * @param: [organizationId]
     * @return: java.util.List<com.shinwoten.plat.entity.SecOrganization>
     * @throws
     */
    List<BsOrganization> findSon(Long organizationId);

    /**
     *
     * @Title: getOrgByRegionAbbreviate
     * @Author 胡锐
     * @Description: TODO(根据地区简称查询)
     * @Date 10:23 2020/9/15
     * @Param [regionAbbreviate]
     * @return com.shinwoten.train.entity.BsOrganization
     **/
    BsOrganization getOrgByRegionAbbreviate(String regionAbbreviate);

    /**
     * 获取组织单位列表
     * @param regionId
     * @return
     */
    List<BsOrganization> getOrganizationUnit(String regionId);
}
