package com.zcloud.service.system;

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

import com.zcloud.entity.Page;
import com.zcloud.entity.PageData;
import com.zcloud.entity.system.Department;

/**
 * 说明: 组织机构接接口
 * 创建人:FH Q313596790
 * 官网:
 */
public interface DepartmentService{

	/**新增
	 * @param pd
	 * @throws Exception
	 */
	public void save(PageData pd)throws Exception;

	/**删除
	 * @param pd
	 * @throws Exception
	 */
	public void delete(PageData pd)throws Exception;
	/**
	 * 向下递归查询企业部门(只查企业端部门)
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	List<PageData> listTreeManageAndCorp2(PageData pd)throws Exception;
	/**修改
	 * @param pd
	 * @throws Exception
	 */
	public void edit(PageData pd)throws Exception;

	/**列表
	 * @param page
	 * @throws Exception
	 */
	public List<PageData> list(Page page)throws Exception;

	/**通过id获取数据
	 * @param pd
	 * @throws Exception
	 */
	public PageData findById(PageData pd)throws Exception;
	/**通过名称获取数据
	 * @param pd
	 * @throws Exception
	 */
	public PageData findByName(PageData pd)throws Exception;

	/**通过编码获取数据
	 * @param pd
	 * @throws Exception
	 */
	public PageData findByBianma(PageData pd)throws Exception;

	/**
	 * 通过ID获取其子级列表
	 * @param parentId
	 * @return
	 * @throws Exception
	 */
	public List<Department> listSubDepartmentByParentId(String parentId) throws Exception;

	/**
	 * 获取所有数据并填充每条数据的子级列表(递归处理)
	 * @param MENU_ID
	 * @return
	 * @throws Exception
	 */
	public List<Department> listAllDepartment(String parentId) throws Exception;

	/**
	 * 获取所有数据并填充每条数据的子级列表(递归处理)
	 * @param MENU_ID
	 * @return
	 * @throws Exception
	 */
	public List<Department> listAllDepartment(String parentId,String url) throws Exception;

	/**
	 * 获取所有数据并填充每条数据的子级列表(递归处理)下拉ztree用
	 * @param MENU_ID
	 * @return
	 * @throws Exception
	 */
	public List<PageData> listAllDepartmentToSelect(String parentId, List<PageData> zdepartmentPdList) throws Exception;

	/**获取某个部门所有下级部门ID(返回拼接字符串 in的形式)
	 * @param DEPARTMENT_ID
	 * @return
	 * @throws Exception
	 */
	public String getDEPARTMENT_IDS(String DEPARTMENT_ID) throws Exception;

	/**通过条件获取全部
	 * @param pd
	 * @throws Exception
	 */
	public List<PageData> listAll(PageData pd)throws Exception;

	/**通过name\corpinfoid查部门数据全部()
	 * @param pd
	 * @throws Exception
	 */
	public List<PageData> isrepeat(PageData pd)throws Exception;

	/**通过企业主部门
	 * @param pd
	 * @throws Exception
	 */
	public PageData findByCorpId(PageData pd)throws Exception;
	/**列表 关联 部门级别名称
	 * @param page
	 * @throws Exception
	 */
	public List<PageData> listForLevelName(Page page)throws Exception;

	/**
	 * 查询公司部门总数
	 * @param pd
	 * @return
	 */
	public int getDepCount(PageData pd)throws Exception;

	/**
	 * 查询公司检查过清单的部门总数
	 * @param pd
	 * @return
	 */
	public int getWorkedDepCount(PageData pd)throws Exception;

	/**
	 * 首页隐患排查数据 部门数(总数、已参加排查部门数)
	 * @param pd
	 * @return
	 */
    List<PageData> statisticsByCorp(PageData pd)throws Exception;

	/**
	 * 查询分公司的安全管理部门
	 * @param pd
	 * @return
	 */
	List<PageData> saftmanagelist(PageData pd)throws Exception;

	/**
	 * 向下递归查询企业部门(公司部门)
	 * @param pd
	 * @return
	 * @throws Exception
	 */
    List<PageData> listTreeCorpDept(PageData pd) throws Exception;

    List<PageData> listDept(PageData pd) throws Exception;
    List<PageData> listDept(Page page) throws Exception;



	/**修改
	 * @param pd
	 * @throws Exception
	 */
	public void editByLeaderOrCharge(PageData pd)throws Exception;

	/**
	 * 向查港股公司安监部
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	public List<PageData> saftpersonlist(PageData pd) throws Exception;

    List<PageData> listForDoor(PageData pd) throws Exception;
    List<PageData> getGenealogy(PageData pd) throws Exception;

    List<PageData> listTreeManageAndCorpNum(PageData pd);

	/**
	 * 用于导出组装数据
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	List<PageData> islistAll(PageData pd) throws Exception;
	/**
	 * 获取所有数据并填充每条数据的子级列表(递归处理) 优化递归的使用
	 * @param MENU_ID
	 * @return
	 * @throws Exception
	 */
	public List<Department> listAllDepartmentV2(String parentId,String url) throws Exception;
	/**
	 * 使用数据库中的函数
	 * 获取pid下的所有子集id
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	public List<PageData> getSonIdsByParid(PageData pd)throws Exception;

	/**
	 * 获取企业的所有部门id 和部门名称
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	public Map<String,String> getDepartMapFroExcel (PageData pd) throws Exception;

	/**
	 * 向下递归查询企业部门(只查监管端部门)
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	List<PageData> listTreeManageAndCorp1(PageData pd)throws Exception;

	List<PageData> listTreeManageAndCorpForPcPunishThePerson(PageData pd) throws Exception;

    PageData getDepartmentInfo(PageData pd) throws Exception;

    List<PageData> listTreeManageAndCorpHasOrder(PageData pd);
}