package nc.itf.hr.wa;

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

import nc.bs.dao.DAOException;
import nc.vo.bd.ref.RefInfoVO;
import nc.vo.hr.infoset.InfoItemVO;
import nc.vo.hr.tools.pub.GeneralVO;
import nc.vo.pub.BusinessException;
import nc.vo.pub.lang.UFBoolean;
import nc.vo.uif2.LoginContext;
import nc.vo.wa.grade.AggWaGradeVO;
import nc.vo.wa.grade.CrtVO;
import nc.vo.wa.grade.PsnhiHeaderVO;
import nc.vo.wa.grade.WaCriterionVO;
import nc.vo.wa.grade.WaGradeVerVO;
import nc.vo.wa.grade.WaPsnhiBVO;
import nc.vo.wa.grade.WaStdHiSetVO;
import nc.vo.wa.item.WaItemVO;

/**
 * 薪资标准设置查询服务
 * 
 * @author: xuhw
 * @date: 2009-11-11 下午02:17:10
 * @since: eHR V6.0
 * @走查人:
 * @走查日期:
 * @修改人:
 * @修改日期:
 */
public interface IWaGradeQueryService
{
	/**
	 * 查询薪资规则<BR>
	 * <BR>
	 * 
	 * @param context
	 * @return WaGrade[]
	 * @throws BusinessException
	 */
	public Object[] queryWaGradeVO(LoginContext context, String strCondition) throws BusinessException;

	/**
	 * 查询薪资标准类别指
	 * 
	 * @param clsPk
	 *            类别主键
	 * @param isMult
	 *            是否多选
	 *            @param strOtherCondition - 分为两种方式, 1：查询生效标志的薪资标准表 2：根据版本PK查询薪资标准表
	 * @exception BusinessException
	 *                异常说明。
	 */
	public CrtVO[] queryCriterionByClassid(String clsPk, String strOtherCondition,boolean isMult) throws BusinessException;

	/**
	 * 通过主key返回聚合VO
	 * 
	 * @param strPkWaGrd
	 * @exception BusinessException
	 *                异常说明。
	 */
	public AggWaGradeVO queryAggWagradeByGrdPK(String strPkWaGrd) throws BusinessException;

	/**
	 * 根据薪资标准类别主键，取得人员相关属性
	 * 
	 * @author xuhw on 2009-12-7
	 * @param key
	 * @return
	 * @throws BusinessException
	 */
	public PsnhiHeaderVO[] findPsnHiByStdPK(String strGrdPk) throws BusinessException;

	/**
	 * 根据薪资标准类别主键，取得关联项目信息
	 * @param strGrdPk
	 * @return
	 * @throws BusinessException
	 */
	public WaItemVO getItemVOByGrdPk(String strGrdPk) throws BusinessException;
	/**
	 * 根据薪资标准类别主键，取得薪资人员属性值设定表内容
	 * 
	 * @author xuhw on 2009-12-7
	 * @param key
	 * @return
	 * @throws BusinessException
	 */
	public WaStdHiSetVO[] queryStdHiByGrdPk(String key, int classType) throws BusinessException;
	
	/**
	 * 根据薪资标准类别主键，取得薪资人员属性值设定表内容
	 * 
	 * @author xuhw on 2009-12-7
	 * @param key
	 * @return
	 * @throws BusinessException
	 */
	public WaPsnhiBVO[] queryWaPsnhiBVOsByGrdPk(String key, int classType) throws BusinessException;

	/**
	 * 根据薪资标准类别值主键 查询内容
	 * 
	 * @author xuhw on 2009-12-7
	 * @param key
	 * @param bo
	 * @return
	 * @throws nc.vo.pub.BusinessException
	 */
	public WaCriterionVO findCriterionByCrtKey(String key, boolean bo) throws nc.vo.pub.BusinessException;

	/**
	 * 根据薪资标准类别值主键 查询内容 多条记录
	 * 
	 * @author xuhw on 2009-12-7
	 * @param key
	 * @param bo
	 * @return
	 * @throws nc.vo.pub.BusinessException
	 */
	public WaCriterionVO[] findCriterionByGrdKey(String key, boolean bo) throws nc.vo.pub.BusinessException;

	/**
	 * 根据条件查询信息相
	 * 
	 * @author xuhw on 2010-4-17
	 * @param tableCode
	 * @param infoCode
	 * @return
	 * @throws BusinessException
	 */
	public InfoItemVO queryInfoItemByInf(String tableCode, String infoCode) throws BusinessException;

	/**
	 * 查询参照信息
	 */
	public Map<String, RefInfoVO> queryBdRefInfoList() throws BusinessException;
	
	/**
	 * 查询枚举信息
	 */
	public GeneralVO[] queryBdEnumValues(String strPk) throws BusinessException;
	
	   /**
     * 取得生效的薪资标准版本
     * @param strGrdPk
     * @param strPKGradever
     * @param isMult
     * @return
     * @throws BusinessException
     */
    public WaGradeVerVO queryEffectGradeVerVO(String strGrdPk,String strPKGradever ,boolean isMult) throws BusinessException;
    
    /**
     * 取得生效的薪资标准版本
     * @param strGrdPk
     * @param strPKGradever
     * @param isMult
     * @return
     * @throws BusinessException
     */
    public WaGradeVerVO queryEffectOrCurrentGradeVerVO(String strGrdPk,String strPKGradever ,boolean isMult) throws BusinessException;
    
    /**
     * 查询薪资标准类别值
     * @author xuhw on 2009-11-28
     * @param clsPk
     * @param isMultSec
     * @return
     * @throws BusinessException
     */
    public WaCriterionVO[] queryByClsPk(String clsPk, boolean isMultSec, int sortTpye) throws BusinessException;

    /**
     * 根据薪资标准类别值主键 查询内容
     * 
     * @author xuhw on 2009-12-7
     * @param strCrtkey
     * @return
     * @throws DAOException
     */
    public WaCriterionVO queryCriterionVOByCrtKey(String strCrtkey) throws BusinessException;
    
    /**
     * //20150902 shenliangc 解决SONAR问题，将职级主键和对应的职级列别名称统一查询出来。
     * @param pk_joblevel
     * @return
     * @throws BusinessException
     */
    public HashMap<String, String> queryJoblevelsysNameByJoblevelPk()throws BusinessException;
    
    /**
     * 查询该薪资标准已经分配了那些组织
     * @param pk_wa_grade
     * @return
     * @throws BusinessException
     */
    public List<String> queryWaGradeOrg(String pk_wa_grade)throws BusinessException;
    
    /**
     * 查询薪资标准类别生效数据
     * @param pk_wa_gradever
     * @return
     * @throws BusinessException
     */
    public WaGradeVerVO queryWaGradeVerVO(String pk_wa_gradever)throws BusinessException;
    
    /**
     * 查询对应的薪资标准主键
     * @param strCondition
     * @return
     * @throws BusinessException
     */
    public String queryWaGradePK(String strCondition)throws BusinessException;
    
    /**
     * 查询上级薪别
     * @param pkWaPrmlv
     * @return
     * @throws BusinessException
     */
    public String queryParentPrml(String pkWaPrmlv)throws BusinessException;
    
    /**
     * 查询是否已存在该类型数据
     * @param pkWagradeTop
     * @param standard_type
     * @param pkWagrade
     * @return
     * @throws BusinessException
     */
    public UFBoolean checkWaGrade(String pkWagradeTop,String standard_type,String pkWagrade)throws BusinessException;
}
