package com.ozs.rpm.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.ozs.rpm.dto.MenuDTO;

public interface MenuMapper {

	public List<MenuDTO> listMenuByName(@Param("menuName") String menuName) throws Exception;

	public MenuDTO getMenuByCode(@Param("menuCode") String menuCode) throws Exception;

	public List<MenuDTO> listLeafMenu() throws Exception;

	public void removeMenuByCode(@Param("menuCode") String menuCode) throws Exception;

	public int saveMenu(MenuDTO menuDTO) throws Exception;

	public int updateMenu(MenuDTO menuDTO) throws Exception;

	public void updateMenuIfLeafNode(MenuDTO pMenuDTO);

	public Integer getIfLeafNodeByCode(@Param("menuCode") String menuCode);

	public MenuDTO getMenuByName(@Param("menuName") String menuName);

	/**
	 * 根据菜单编码获取兄弟节点个数
	 * 
	 * @param menuCode
	 * @return
	 */
	public Integer countBroMenuByCode(@Param("menuCode") String menuCode);

	/**
	 * 根据菜单编码，判断菜单下及子菜单是否存在报表
	 * 
	 * @param menuCode
	 * @return
	 */
	public Integer countMenuReportNotNull(@Param("menuCode") String menuCode);

	/**
	 * 只显示未赋报表的叶子节点
	 * 
	 * @param menuName
	 * @return
	 */
	public List<MenuDTO> listMenuTreeOnlyLeaf(@Param("menuName") String menuName, @Param("reportId") String reportId);

	/**
	 * 删除报表分类关联关系
	 * 
	 * @param menuCode
	 */
	public void removeRpmInfoReportMenuByMenuId(@Param("id") String id);

	/**
	 * 修改报表分类及其子分类Code
	 * 
	 * @param menuCode
	 * @param nowMenuCode
	 */
	public void updateMenusCode(@Param("menuCode") String menuCode, @Param("newMenuCode") String newMenuCode);

}
