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 | 22 ++++++++++++++++++----
1 files changed, 18 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 c7dc8d6..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;
@@ -231,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 = SpringUtils.getAopProxy(this).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;
}
}
@@ -263,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 = SpringUtils.getAopProxy(this).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