调整颜色池

This commit is contained in:
zhangyue 2026-08-24 15:21:48 +08:00
parent 976a5a6b82
commit 34414e5a05
1 changed files with 57 additions and 39 deletions

View File

@ -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<PollutionEnum, Integer> ORDINAL_MAP = new HashMap<>();
static {
for (int i = 0; i < values().length; i++) {
ORDINAL_MAP.put(values()[i], i);
}
}
private static final Map<String, String> 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);