DictUtils.java 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. package com.ruoyi.common.utils;
  2. import java.util.Collection;
  3. import java.util.List;
  4. import cn.hutool.core.lang.Validator;
  5. import cn.hutool.core.util.StrUtil;
  6. import com.ruoyi.common.constant.Constants;
  7. import com.ruoyi.common.core.domain.entity.SysDictData;
  8. import com.ruoyi.common.core.redis.RedisCache;
  9. import com.ruoyi.common.utils.spring.SpringUtils;
  10. /**
  11. * 字典工具类
  12. *
  13. * @author ruoyi
  14. */
  15. public class DictUtils
  16. {
  17. /**
  18. * 分隔符
  19. */
  20. public static final String SEPARATOR = ",";
  21. /**
  22. * 设置字典缓存
  23. *
  24. * @param key 参数键
  25. * @param dictDatas 字典数据列表
  26. */
  27. public static void setDictCache(String key, List<SysDictData> dictDatas)
  28. {
  29. SpringUtils.getBean(RedisCache.class).setCacheObject(getCacheKey(key), dictDatas);
  30. }
  31. /**
  32. * 获取字典缓存
  33. *
  34. * @param key 参数键
  35. * @return dictDatas 字典数据列表
  36. */
  37. public static List<SysDictData> getDictCache(String key)
  38. {
  39. Object cacheObj = SpringUtils.getBean(RedisCache.class).getCacheObject(getCacheKey(key));
  40. if (Validator.isNotNull(cacheObj))
  41. {
  42. List<SysDictData> dictDatas = (List<SysDictData>)cacheObj;
  43. return dictDatas;
  44. }
  45. return null;
  46. }
  47. /**
  48. * 根据字典类型和字典值获取字典标签
  49. *
  50. * @param dictType 字典类型
  51. * @param dictValue 字典值
  52. * @return 字典标签
  53. */
  54. public static String getDictLabel(String dictType, String dictValue)
  55. {
  56. return getDictLabel(dictType, dictValue, SEPARATOR);
  57. }
  58. /**
  59. * 根据字典类型和字典标签获取字典值
  60. *
  61. * @param dictType 字典类型
  62. * @param dictLabel 字典标签
  63. * @return 字典值
  64. */
  65. public static String getDictValue(String dictType, String dictLabel)
  66. {
  67. return getDictValue(dictType, dictLabel, SEPARATOR);
  68. }
  69. /**
  70. * 根据字典类型和字典值获取字典标签
  71. *
  72. * @param dictType 字典类型
  73. * @param dictValue 字典值
  74. * @param separator 分隔符
  75. * @return 字典标签
  76. */
  77. public static String getDictLabel(String dictType, String dictValue, String separator)
  78. {
  79. StringBuilder propertyString = new StringBuilder();
  80. List<SysDictData> datas = getDictCache(dictType);
  81. if (StrUtil.containsAny(separator, dictValue) && Validator.isNotEmpty(datas))
  82. {
  83. for (SysDictData dict : datas)
  84. {
  85. for (String value : dictValue.split(separator))
  86. {
  87. if (value.equals(dict.getDictValue()))
  88. {
  89. propertyString.append(dict.getDictLabel() + separator);
  90. break;
  91. }
  92. }
  93. }
  94. }
  95. else
  96. {
  97. for (SysDictData dict : datas)
  98. {
  99. if (dictValue.equals(dict.getDictValue()))
  100. {
  101. return dict.getDictLabel();
  102. }
  103. }
  104. }
  105. return StrUtil.strip(propertyString.toString(), null, separator);
  106. }
  107. /**
  108. * 根据字典类型和字典标签获取字典值
  109. *
  110. * @param dictType 字典类型
  111. * @param dictLabel 字典标签
  112. * @param separator 分隔符
  113. * @return 字典值
  114. */
  115. public static String getDictValue(String dictType, String dictLabel, String separator)
  116. {
  117. StringBuilder propertyString = new StringBuilder();
  118. List<SysDictData> datas = getDictCache(dictType);
  119. if (StrUtil.containsAny(separator, dictLabel) && Validator.isNotEmpty(datas))
  120. {
  121. for (SysDictData dict : datas)
  122. {
  123. for (String label : dictLabel.split(separator))
  124. {
  125. if (label.equals(dict.getDictLabel()))
  126. {
  127. propertyString.append(dict.getDictValue() + separator);
  128. break;
  129. }
  130. }
  131. }
  132. }
  133. else
  134. {
  135. for (SysDictData dict : datas)
  136. {
  137. if (dictLabel.equals(dict.getDictLabel()))
  138. {
  139. return dict.getDictValue();
  140. }
  141. }
  142. }
  143. return StrUtil.strip(propertyString.toString(), null, separator);
  144. }
  145. /**
  146. * 清空字典缓存
  147. */
  148. public static void clearDictCache()
  149. {
  150. Collection<String> keys = SpringUtils.getBean(RedisCache.class).keys(Constants.SYS_DICT_KEY + "*");
  151. SpringUtils.getBean(RedisCache.class).deleteObject(keys);
  152. }
  153. /**
  154. * 设置cache key
  155. *
  156. * @param configKey 参数键
  157. * @return 缓存键key
  158. */
  159. public static String getCacheKey(String configKey)
  160. {
  161. return Constants.SYS_DICT_KEY + configKey;
  162. }
  163. }