From 34414e5a05a1a04a359e8b449d807c7b748724a9 Mon Sep 17 00:00:00 2001 From: zhangyue <82248909@qq.com> Date: Mon, 24 Aug 2026 15:21:48 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E9=A2=9C=E8=89=B2=E6=B1=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/constant/enums/PollutionEnum.java | 96 +++++++++++-------- 1 file changed, 57 insertions(+), 39 deletions(-) diff --git a/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/constant/enums/PollutionEnum.java b/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/constant/enums/PollutionEnum.java index f608f1d..013f1b1 100644 --- a/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/constant/enums/PollutionEnum.java +++ b/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/constant/enums/PollutionEnum.java @@ -2,8 +2,13 @@ package org.jeecg.common.constant.enums; import com.alibaba.fastjson.JSONObject; +import java.nio.ByteBuffer; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.util.Arrays; import java.util.HashMap; import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; public enum PollutionEnum { dataAirTemp("dataAirTemp", "大气温度", "℃", "sys/icon/shebei_icon_qixiang.png", "air", "#22BB8A", "sys/mobile/icon/shebei_icon_qixiang.png", "sys/bs/icon/shebei_icon_qixiang.png", "shebei_icon_qixiang.png"), @@ -170,13 +175,10 @@ public enum PollutionEnum { */ private String iconName; - private static final Map ORDINAL_MAP = new HashMap<>(); - static { - for (int i = 0; i < values().length; i++) { - ORDINAL_MAP.put(values()[i], i); - } - } + private static final Map COLOR_CACHE = new ConcurrentHashMap<>(); + + private static class PaletteData { static final String[] COLORS = { @@ -260,7 +262,15 @@ public enum PollutionEnum { } public String getColor() { - return color; +// return color; + if (this == dataDefault) { + return "#DEAB8A"; + } + // 从缓存获取或计算 + return COLOR_CACHE.computeIfAbsent(this.code, code -> { + int index = Math.abs(code.hashCode()) % PaletteData.COLORS.length; + return PaletteData.COLORS[index]; + }); } public void setColor(String color) { @@ -291,55 +301,63 @@ public enum PollutionEnum { public void setIconName(String iconName) { this.iconName = iconName; } - public static PollutionEnum catchMessage(String msg) { + public static PollutionEnum catchMessage(String description) { PollutionEnum result = null; - String[] palette = PaletteData.COLORS; - for (PollutionEnum s : values()) { - if (s.description.equals(msg)) { - int arrs = ORDINAL_MAP.get(s); - s.color = palette[arrs]; - result = s; - break; - } - } - - if(result==null){ - return dataDefault; - } - return result; +// String[] palette = PaletteData.COLORS; +// for (PollutionEnum s : values()) { +// if (s.description.equals(msg)) { +// int arrs = ORDINAL_MAP.get(s); +// s.color = palette[arrs]; +// result = s; +// break; +// } +// } +// +// if(result==null){ +// return dataDefault; +// } + if (description == null) return dataDefault; + return Arrays.stream(values()) + .filter(e -> e.description.equals(description.trim())) + .findFirst() + .orElse(dataDefault); } public static PollutionEnum catchPollution(String survItem) { - PollutionEnum result = null; - String[] palette = PaletteData.COLORS; - for (PollutionEnum s : values()) { - if (s.code.equals(survItem)) { - int arrs = ORDINAL_MAP.get(s); - s.color = palette[arrs]; - result = s; - break; - } - } +// PollutionEnum result = null; +// String[] palette = PaletteData.COLORS; +// for (PollutionEnum s : values()) { +// if (s.code.equals(survItem)) { +// int arrs = ORDINAL_MAP.get(s); +// s.color = palette[arrs]; +// result = s; +// break; +// } +// } +// +// if(result==null){ +// return dataDefault; +// } +// return result; - if(result==null){ - return dataDefault; - } - return result; + if (survItem == null) return dataDefault; + return Arrays.stream(values()) + .filter(e -> e.code.equals(survItem.trim())) + .findFirst() + .orElse(dataDefault); } public JSONObject getJsonStr() { - int arrs = ORDINAL_MAP.get(this); - String[] palette = PaletteData.COLORS; JSONObject job = new JSONObject(); job.put("code", this.code); job.put("description", this.description); job.put("unit", this.unit); job.put("type", this.type); job.put("icon", this.icon); - job.put("color", palette[arrs]); + job.put("color", this.getColor()); job.put("mobileIcon", this.mobileIcon); job.put("bsIcon", this.bsIcon); job.put("iconName", this.iconName);