package com.nis.util; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.apache.commons.lang3.StringUtils; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.nis.domain.SysDataDictionaryItem; import com.nis.domain.SysDataDictionaryName; import com.nis.domain.basics.SysDictInfo; import com.nis.web.dao.SysDictDao; import com.nis.web.dao.basics.SysDictInfoDao; import com.nis.web.service.SpringContextHolder; /** * 系统数据字典工具类 * @author Administrator * */ public class DictUtils { private final static SysDictDao dictDao = SpringContextHolder.getBean(SysDictDao.class); private final static SysDictInfoDao sysDictInfoDao = SpringContextHolder.getBean(SysDictInfoDao.class); public static Map> getDictData() { Map> dictMap = (Map>)CacheUtils.get(Constants.CACHE_DICT_MAP); if (StringUtil.isEmpty(dictMap)) { dictMap = Maps.newHashMap(); List dicList = dictDao.findAllList(new SysDataDictionaryName()); for (SysDataDictionaryName dict : dicList) { dictMap.put(dict.getMark(), dict.getDictItemList()); } CacheUtils.put(Constants.CACHE_DICT_MAP, dictMap); } return dictMap; } /** * 获取词典对应key的所有词条,code:value * @param key * @return */ public static Map getDictOption(String key) { List itemList = getDictData().get(key); Map itemMap = Maps.newHashMap(); for (SysDataDictionaryItem item : itemList) { itemMap.put(item.getItemCode(), item.getItemValue()); } return itemMap; } /** * 获取词典对应key的所有词条,value:code * @param key * @return */ public static Map getDictOptionInReversion(String key) { List itemList = getDictData().get(key); Map itemMap = Maps.newHashMap(); for (SysDataDictionaryItem item : itemList) { itemMap.put(item.getItemValue(), item.getItemCode()); } return itemMap; } public static List getDictList(String key){ List itemList = getDictData().get(key); if (StringUtil.isEmpty(itemList)) { itemList = Lists.newArrayList(); } return itemList; } public static String getDictLabels(String dictKey, String itemCodes, String defaultValue){ Map itemMap = getDictOption(dictKey); if (!StringUtil.isEmpty(itemMap)) { List valueList = Lists.newArrayList(); for (String itemCode : StringUtils.split(itemCodes, ",")){ valueList.add(itemMap.get(itemCode)); } return StringUtils.join(valueList, ","); } return defaultValue; } /** * 获取字典词条标签 * @param value * @param type * @param defaultValue * @return */ public static String getDictLabel(String dictKey, String itemCode, String defaultValue){ String itemLabel = getDictOption(dictKey).get(itemCode); return StringUtil.isBlank(itemLabel) ? defaultValue : itemLabel; } public static String getDictLabel(String dictKey, String itemCode){ return getDictLabel(dictKey, itemCode, "默认"); } public static String getDictCode(String dictKey, String itemValue, String defaultValue){ String itemCode = getDictOptionInReversion(dictKey).get(itemValue); return StringUtil.isBlank(itemCode) ? defaultValue : itemCode; } public static String getDictCode(String dictKey, String itemValue){ return getDictCode(dictKey, itemValue, "默认"); } /** * 返回字典列表(JSON) * @param type * @return */ public static String getDictListJson(String key){ return JsonMapper.toJsonString(getDictList(key)); } /** * 增强字符串配置特征域字典 * @return */ public static List getFeaturesDictData(String itemCode) { Map> dictMap = (Map>)CacheUtils.get(Constants.CACHE_FEATURES_DICT_MAP); if(StringUtil.isEmpty(dictMap)){ dictMap = Maps.newHashMap(); SysDictInfo dict = new SysDictInfo(); dict.setItemType(3); dict.setItemCode(itemCode); List dicList = sysDictInfoDao.findAllSysDictInfo(dict,""); dictMap.put(itemCode, dicList); CacheUtils.put(Constants.CACHE_FEATURES_DICT_MAP, dictMap); }else{ if(StringUtil.isEmpty(dictMap.get(itemCode))){ SysDictInfo dict = new SysDictInfo(); dict.setItemType(3); dict.setItemCode(itemCode); List dicList = sysDictInfoDao.findAllSysDictInfo(dict,""); dictMap.put(itemCode, dicList); CacheUtils.put(Constants.CACHE_FEATURES_DICT_MAP, dictMap); } } return dictMap.get(itemCode); } }