package com.zcloud.service.system;

import java.util.List;

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

/**
 * 说明：数据字典服务接口
 * 作者：luoxiaobao
 * 官网：www.qdkjchina.com
 */
public interface DictionariesService {

	/**
	 * 获取所有数据并填充每条数据的子级列表(递归处理)
	 * @param MENU_ID
	 * @return
	 * @throws Exception
	 */
	public List<Dictionaries> listAllDict(String parentId) 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;

	/**通过id获取数据
	 * @param pd
	 * @throws Exception
	 */
	public PageData findByName(PageData pd)throws Exception;
	public PageData findByNames(String name ,String PARENT_ID)throws Exception;

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

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

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

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

	/**
	 * 获取所有数据并填充每条数据的子级列表(递归处理)用于代码生成器引用数据字典
	 * @param MENU_ID
	 * @return
	 * @throws Exception
	 */
	public List<Dictionaries> listAllDictToCreateCode(String parentId) throws Exception;

	public List<PageData> listAllDictToSelect(String parentId,List<PageData> zdicPdList) throws Exception ;
	/**排查表检查是否被占用
	 * @param pd
	 * @throws Exception
	 */
	public PageData findFromTbs(PageData pd)throws Exception;

	/**删除
	 * @param pd
	 * @throws Exception
	 */
	public void delete(PageData pd)throws Exception;
	/**
	 * 通过IDS获取列表
	 * @param dictionariesIds
	 * @return
	 * @throws Exception
	 */
	public List<Dictionaries> listSubDictByIds(String[] dictionariesIds) throws Exception;

	/**
	 * 根据 父节点id 获取子节点信息和 子节点包含的子节点数量
	 * @param parentId
	 * @return
	 * @throws Exception
	 */
	public List<PageData> listSubDictByParentIdAndSunCount(String parentId) throws Exception;

	/**从下而上查询树（无分支）
	 * @param pd
	 * @throws Exception
	 */
	public List<PageData> getTreeFromBelow(List<PageData> nextList,PageData pd)throws Exception;

	/**从下而上查询树（无分支，带禁用及级别）  代理人修改企业时使用
	 * @param pd
	 * @throws Exception
	 */
	public List<PageData> getTreeFromBelow(List<PageData> nextList,PageData pd,int level, PageData agent,int num)throws Exception;

	List<PageData> findByCondition(PageData condition);

	/**
	 * 根据 父节点id 获取子节点信息和 子节点包含的子节点数量
	 * @param parentId
	 * @return
	 * @throws Exception
	 */
	public List<PageData> getDictTreeMoreLevel(String parentId) throws Exception;

    List<PageData> listAllDictCetByParentId(PageData pageData);
}
