package com.prolog.rdc.tms.service;

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

import com.prolog.framework.core.pojo.Page;
import com.prolog.rdc.tms.model.dto.SysRefdatadDTO;
import com.prolog.rdc.tms.model.entity.SysRefdatadModel;
import com.prolog.rdc.tms.model.entity.SysRefdatahModel;
import com.prolog.rdc.tms.model.vo.DropDownBoxVO;
import com.prolog.rdc.tms.model.vo.RefdataVO;
import com.prolog.rdc.tms.model.vo.SysRefdatadDeleteVO;
import com.prolog.rdc.tms.model.vo.SysRefdatadQueryVO;
import com.prolog.rdc.tms.model.vo.SysRefdatadSaveVO;
import com.prolog.rdc.tms.model.vo.SysRefdatadSearchVO;
import com.prolog.rdc.tms.model.vo.SysRefdatadUpdateVO;
import com.prolog.rdc.tms.model.vo.SysRefdatahDeleteVO;
import com.prolog.rdc.tms.model.vo.SysRefdatahQueryVO;
import com.prolog.rdc.tms.model.vo.SysRefdatahSaveVO;
import com.prolog.rdc.tms.model.vo.SysRefdatahUpdateVO;

/**
 * 
 *
 * 参照数据明细 Service
 *
 * @className :SysRefdatadService
 * @author :fanzw
 * @creationTime :2020/07/02
 * @description :
 * @modifier :fanzw
 * @modifyTime :2020/07/02
 * @reviseRemarks:
 *
 * @version :1.0.0
 *
 */
public interface SysRefdatadService {

	/**
	 * 数据字典分页查询
	 * 
	 * @param sysRefdatahQueryVO
	 * @return
	 * @throws Exception
	 */
	Page<SysRefdatahModel> listSysRefdatahPageData(SysRefdatahQueryVO sysRefdatahQueryVO) throws Exception;

	/**
	 * 数据字典明细查询
	 * 
	 * @param sysRefdatadSearchVO
	 * @return
	 * @throws Exception
	 */
	Map<String, Object> listSysRefdatadPageData(SysRefdatadSearchVO sysRefdatadSearchVO) throws Exception;

	/**
	 * 数据字典修改
	 * 
	 * @param sysRefdatahUpdateVO
	 */
	void updateSysRefdatahData(SysRefdatahUpdateVO sysRefdatahUpdateVO) throws Exception;

	/**
	 * 数据字典删除
	 * 
	 * @param sysRefdatahDeleteVO
	 */
	void deleteSysRefdatahData(SysRefdatahDeleteVO sysRefdatahDeleteVO) throws Exception;

	/**
	 * 数据字典保存
	 * 
	 * @param sysRefdatahSaveVO
	 * @throws Exception
	 */
	void saveSysRefdatahData(SysRefdatahSaveVO sysRefdatahSaveVO) throws Exception;

	/**
	 * 数据字典下拉框
	 * 
	 * @param dropDownBoxVOs
	 * @return
	 * @throws Exception
	 */
	Map<String, Object> listDropDownBoxData(List<DropDownBoxVO> dropDownBoxVOs) throws Exception;

	/**
	 * 数据字典明细新增
	 * 
	 * @param sysRefdatadSaveVOs
	 * @throws Exception
	 */
	void saveSysRefdatadData(List<SysRefdatadSaveVO> sysRefdatadSaveVOs) throws Exception;

	/**
	 * 数据字典明细修改
	 * 
	 * @param sysRefdatadUpdateVOs
	 * @throws Exception
	 */
	void updateSysRefdatadData(List<SysRefdatadUpdateVO> sysRefdatadUpdateVOs) throws Exception;

	/**
	 * 数据字典明细删除
	 * 
	 * @param sysRefdatadDeleteVOs
	 */
	void deleteSysRefdatadData(List<SysRefdatadDeleteVO> sysRefdatadDeleteVOs) throws Exception;

	/**
	 * 通过ID获取通用参照数据汇总
	 * 
	 * @author daiyc
	 * @createDate 2018年10月16日
	 * @param objectcode
	 * @return SysRefdatah
	 * @Modification history:
	 */
	SysRefdatahModel getSysRefdatahById(String objectcode);

	/**
	 * 通用参照数据明细查询
	 * 
	 * @author daiyc
	 * @createDate 2018年10月16日
	 * @param objectcode 字段编码
	 * @param code       存储值
	 * @param name       名称
	 * @return List<SysRefdatad>
	 * @Modification history:
	 */
	List<SysRefdatadModel> getSysRefdatad(String objectcode, String code, String name);

	/**
	 * 通过ID获取通用参照数据明细
	 * 
	 * @author daiyc
	 * @createDate 2018年10月16日
	 * @param objectcode 字段编码
	 * @param sortnum    排序号
	 * @return SysRefdatad
	 * @Modification history:
	 */
	SysRefdatadModel getSysRefdatadById(String objectcode, String sortnum);

	/**
	 * 查询系统参数
	 * <p>
	 * Title: findsysrefdatadn
	 * </p>
	 * <p>
	 * Description:
	 * </p>
	 * 
	 * @param map
	 * @return
	 */
	List<Map<String, Object>> findsysrefdatadn(Map<String, Object> map);

	/**
	 * 上架单调用接口 (通过objectcode和code获取名称)
	 * 
	 * @Title: getSysByNames
	 * @Description: TODO(这里用一句话描述这个方法的作用)
	 * @param @param  map
	 * @param @return
	 * @param @throws Exception 参数说明
	 * @return List<Map<String,Object>> 返回类型 @throws
	 */
	List<Map<String, Object>> getSysByNames(Map<String, Object> map);

	/**
	 * 批量获取objectcode和code获取名称
	 * 
	 * @return
	 */
	List<Map<String, Object>> batchGetNamesByCodes(RefdataVO vo);

	/**
	 * 通用参照数据明细查询
	 * 
	 * @author zhangq
	 * @createDate 2019年4月28日
	 * @param objectcode 字段编码
	 * @param code       存储值
	 * @param groupcode1 分组编号
	 * @return List<SysRefdatad>
	 * @Modification history:
	 */
	List<SysRefdatadModel> getSysRefdatadCom(String objectcode, String code, String groupcode1);

	/**
	 * 参照数据明细查询
	 * 
	 * @param sysrefdatadqueryvo
	 * @return
	 */
	List<SysRefdatadDTO> getSysRefdatadData(SysRefdatadQueryVO sysrefdatadqueryvo) throws Exception;

	/**
	 * 获取数据字典键值对
	 * 
	 * @param strArr
	 * @return
	 */
	Map<String, String> getRefdKeyValue(String[] strArr, String enterpriseid) throws Exception;

	/**
	 * 通用下拉框参数获取
	 * 
	 * @author daiyc
	 * @createDate 2018年10月16日
	 * @param objectcode
	 * @param groupcode1
	 * @param groupcode2
	 * @return
	 * @Modification history:
	 */
	List<Map<String, Object>> getDropDownById(String objectcode, String groupcode1, String groupcode2, String code);

	/**
	 * 数据字典批量查询
	 * 
	 * @param param
	 * @return
	 */
	Map<String, Object> ListDropDownData(List<Map<String, Object>> param);

	/**
	 * 通用字典翻译查询
	 * 
	 * @author xyf
	 * @Modification :
	 */
	List<SysRefdatadModel> getSysRefdatadDatas(SysRefdatadQueryVO vo) throws Exception;

	List<SysRefdatadModel> getSysRefdatadByName(SysRefdatadSearchVO sysRefdatadSearchVO);

}
