From 539d28c94451f66bad3bde9e6c0c6fce540a5b38 Mon Sep 17 00:00:00 2001 From: zhangyue <82248909@qq.com> Date: Thu, 30 Jul 2026 16:59:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=81=E9=87=8F=E8=AE=A1=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=8A=A0=E5=85=A5=E5=90=84=E7=B1=BB=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/BigScreenController.java | 4 +++- .../jeecg/common/util/CommonToolUtils.java | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/controller/BigScreenController.java b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/controller/BigScreenController.java index 7c7d4db..f4eaf5c 100644 --- a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/controller/BigScreenController.java +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/controller/BigScreenController.java @@ -1,5 +1,6 @@ package org.jeecg.modules.appmana.controller; +import cn.hutool.core.bean.BeanUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import io.swagger.annotations.Api; @@ -14,6 +15,7 @@ import org.jeecg.common.constant.enums.DeviceDeployEnum; import org.jeecg.common.constant.enums.ScreenIndexSummaryEnum; import org.jeecg.common.dto.CommonDTO; import org.jeecg.common.entity.*; +import org.jeecg.common.util.CommonToolUtils; import org.jeecg.common.util.oConvertUtils; import org.jeecg.common.vo.*; import org.jeecg.common.vo.statistic.ScreenIndexSummaryDetailVo; @@ -518,7 +520,7 @@ public class BigScreenController { if(StringUtils.isBlank(screenSummaryVo.getSummrayMode())){//不传模式,默认为天数据 screenSummaryVo.setSummrayMode(IotConstants.month_days); } - String key = CacheConstants.BS_INDEX_STATISTIC_CACHE+tenantId +":"+screenSummaryVo.getSummrayMode(); + String key = CacheConstants.BS_INDEX_STATISTIC_CACHE + tenantId +":"+ CommonToolUtils.generateUniqueMD5(BeanUtil.beanToMap(screenSummaryVo, false, true)); String cache = oConvertUtils.getString(redisTemplate.opsForValue().get(key)); if(StringUtils.isNotBlank(cache)){ results = JSONArray.parseArray(cache,ScreenIndexSummaryDetailVo.class); diff --git a/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/util/CommonToolUtils.java b/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/util/CommonToolUtils.java index b098e36..380c6d2 100644 --- a/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/util/CommonToolUtils.java +++ b/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/util/CommonToolUtils.java @@ -1,6 +1,8 @@ package org.jeecg.common.util; +import cn.hutool.crypto.SecureUtil; +import cn.hutool.json.JSONUtil; import org.jeecg.common.constant.ToolConstant; import org.jeecg.common.vo.statistic.CommonStatisticResultVo; import org.jeecg.common.vo.statistic.CommonStatisticVo; @@ -12,6 +14,7 @@ import java.net.HttpURLConnection; import java.net.URL; import java.net.URLDecoder; import java.net.URLEncoder; +import java.security.MessageDigest; import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.time.YearMonth; @@ -305,4 +308,20 @@ public class CommonToolUtils { } return map; } + + + // 将Map转为JSON再取MD5 + public static String generateUniqueMD5(Map map) { + // 1. 使用 TreeMap 自动按键名排序,保证顺序一致性 + // 注意:如果 map 本身可能为 null,需增加非空判断 + TreeMap sortedMap = new TreeMap<>(map); + + // 2. 使用 Hutool 的 JSONUtil 将有序 Map 转为 JSON 字符串 + // JSONUtil.toJsonStr 可以很好地处理各种对象类型[citation:10] + String jsonStr = JSONUtil.toJsonStr(sortedMap); + + // 3. 使用 Hutool 的 SecureUtil 直接计算 MD5[citation:9] + // SecureUtil.md5() 方法有多种重载,直接传入字符串即可 + return SecureUtil.md5(jsonStr); + } }