From fe8db721d72f6368fac4b6554fa888578ab4a96d Mon Sep 17 00:00:00 2001 From: 疯狂的狮子li <15040126243@163.com> Date: 星期三, 23 十一月 2022 17:45:36 +0800 Subject: [PATCH] update 优化 使用本地缓存优化 excel 导出 数据量大字典转换慢问题 --- ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java | 24 ++++++++++++++++++++---- 1 files changed, 20 insertions(+), 4 deletions(-) diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java index 00e88b8..48cd882 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java @@ -1,10 +1,12 @@ package com.ruoyi.system.service.impl; +import cn.dev33.satoken.context.SaHolder; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.common.constant.CacheConstants; import com.ruoyi.common.constant.CacheNames; import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.core.domain.PageQuery; @@ -16,6 +18,7 @@ import com.ruoyi.common.utils.StreamUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.redis.CacheUtils; +import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.system.mapper.SysDictDataMapper; import com.ruoyi.system.mapper.SysDictTypeMapper; import com.ruoyi.system.service.ISysDictTypeService; @@ -112,6 +115,7 @@ * @param dictType 瀛楀吀绫诲瀷 * @return 瀛楀吀绫诲瀷 */ + @Cacheable(cacheNames = CacheNames.SYS_DICT, key = "#dictType") @Override public SysDictType selectDictTypeByType(String dictType) { return baseMapper.selectById(new LambdaQueryWrapper<SysDictType>().eq(SysDictType::getDictType, dictType)); @@ -229,16 +233,22 @@ * @param separator 鍒嗛殧绗� * @return 瀛楀吀鏍囩 */ + @SuppressWarnings("unchecked cast") @Override public String getDictLabel(String dictType, String dictValue, String separator) { StringBuilder propertyString = new StringBuilder(); - List<SysDictData> datas = selectDictDataByType(dictType); + // 浼樺厛浠庢湰鍦扮紦瀛樿幏鍙� + List<SysDictData> datas = (List<SysDictData>) SaHolder.getStorage().get(CacheConstants.SYS_DICT_KEY + dictType); + if (ObjectUtil.isNull(datas)) { + datas = SpringUtils.getAopProxy(this).selectDictDataByType(dictType); + SaHolder.getStorage().set(CacheConstants.SYS_DICT_KEY + dictType, datas); + } if (StringUtils.containsAny(dictValue, separator) && CollUtil.isNotEmpty(datas)) { for (SysDictData dict : datas) { for (String value : dictValue.split(separator)) { if (value.equals(dict.getDictValue())) { - propertyString.append(dict.getDictLabel() + separator); + propertyString.append(dict.getDictLabel()).append(separator); break; } } @@ -261,16 +271,22 @@ * @param separator 鍒嗛殧绗� * @return 瀛楀吀鍊� */ + @SuppressWarnings("unchecked cast") @Override public String getDictValue(String dictType, String dictLabel, String separator) { StringBuilder propertyString = new StringBuilder(); - List<SysDictData> datas = selectDictDataByType(dictType); + // 浼樺厛浠庢湰鍦扮紦瀛樿幏鍙� + List<SysDictData> datas = (List<SysDictData>) SaHolder.getStorage().get(CacheConstants.SYS_DICT_KEY + dictType); + if (ObjectUtil.isNull(datas)) { + datas = SpringUtils.getAopProxy(this).selectDictDataByType(dictType); + SaHolder.getStorage().set(CacheConstants.SYS_DICT_KEY + dictType, datas); + } if (StringUtils.containsAny(dictLabel, separator) && CollUtil.isNotEmpty(datas)) { for (SysDictData dict : datas) { for (String label : dictLabel.split(separator)) { if (label.equals(dict.getDictLabel())) { - propertyString.append(dict.getDictValue() + separator); + propertyString.append(dict.getDictValue()).append(separator); break; } } -- Gitblit v1.9.3