package org.exitsoft.showcase.vcsadmin.service.foundation; import java.util.List; import org.exitsoft.orm.core.Page; import org.exitsoft.orm.core.PageRequest; import org.exitsoft.orm.core.PropertyFilter; import org.exitsoft.showcase.vcsadmin.common.enumeration.SystemDictionaryCode; import org.exitsoft.showcase.vcsadmin.dao.foundation.DataDictionaryDao; import org.exitsoft.showcase.vcsadmin.dao.foundation.DictionaryCategoryDao; import org.exitsoft.showcase.vcsadmin.entity.foundation.DataDictionary; import org.exitsoft.showcase.vcsadmin.entity.foundation.DictionaryCategory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; /** * 系统字典管理业务逻辑 * * @author vincent * */ @Service @Transactional public class SystemDictionaryManager { //数据字典数据访问 @Autowired private DataDictionaryDao dataDictionaryDao; //字典类别数据访问 @Autowired private DictionaryCategoryDao dictionaryCategoryDao; //---------------------------------------数据字典管理---------------------------------------// /** * 获取数据字典实体 * * @param id 数据字典id */ public DataDictionary getDataDictionary(String id) { return dataDictionaryDao.load(id); } /** * 保存数据字典 * * @param entity 数据字典实体 */ @CacheEvict(value=DataDictionary.FindByCateGoryCode,allEntries=true) public void saveDataDictionary(DataDictionary entity) { dataDictionaryDao.save(entity); } /** * 删除数据字典 * * @param ids 数据字典id集合 */ @CacheEvict(value=DataDictionary.FindByCateGoryCode,allEntries=true) public void deleteDataDictionary(List<String> ids) { dataDictionaryDao.deleteAll(ids); } /** * 获取数据字典分页对象 * * @param request 分页参数请求 * @param filters 属性过滤器 * * @return Page */ public Page<DataDictionary> searchDataDictionaryPage(PageRequest request,List<PropertyFilter> filters) { return dataDictionaryDao.findPage(request, filters); } /** * 通过字典类别代码获取数据字典集合 * * @param code 字典列别 * * @return List */ @Cacheable(value=DataDictionary.FindByCateGoryCode) public List<DataDictionary> getDataDictionariesByCategoryCode(SystemDictionaryCode code) { return dataDictionaryDao.findByQueryNamedUseJpaStyle(DataDictionary.FindByCateGoryCode, code.getCode()); } /** * 通过字典类别代码获取数据字典集合 * * @param code 字典列别 * @param ignoreValue 忽略字典的值 * * @return List */ @Cacheable(value=DataDictionary.FindByCateGoryCode) public List<DataDictionary> getDataDictionariesByCategoryCode(SystemDictionaryCode code,String ignoreValue) { return dataDictionaryDao.findByQueryNamedUseJpaStyle(DataDictionary.FindByCategoryCodeWithIgnoreValue, code.getCode(),ignoreValue); } //---------------------------------------字典类别管理---------------------------------------// /** * 获取字典类别实体 * * @param id 数据字典id */ public DictionaryCategory getDictionaryCategory(String id) { return dictionaryCategoryDao.load(id); } /** * 保存字典类别 * * @param entity 字典类别实体 */ public void saveDictionaryCategory(DictionaryCategory entity) { dictionaryCategoryDao.save(entity); } /** * 删除字典类别 * * @param ids 字典类别id */ public void deleteDictionaryCategory(List<String> ids) { dictionaryCategoryDao.deleteAll(ids); } /** * 获取所有父类字典类别 * * @return List */ public List<DictionaryCategory> getAllParentDictionaryCategories() { return dictionaryCategoryDao.findByProperty("parent.id", null); } /** * 获取字典列别分页对象 * * @param request 分页参数请求 * @param filters 属性过滤器 * * @return {@link Page} */ public Page<DictionaryCategory> searchDictionaryCategoryPage(PageRequest request,List<PropertyFilter> filters) { return dictionaryCategoryDao.findPage(request, filters); } /** * 获取所有字典类别 * * @return List */ public List<DictionaryCategory> getAllDictionaryCategories() { return dictionaryCategoryDao.getAll(); } /** * 根据条件过滤器获取或有字典类别 * * @param filters 条件过滤器 * * @return List */ public List<DictionaryCategory> getAllDictionaryCategories(List<PropertyFilter> filters) { return dictionaryCategoryDao.findByPropertyFilters(filters); } }