diff --git a/ebike-operations/src/main/java/com/cdzy/operations/utils/RedisUtil.java b/ebike-operations/src/main/java/com/cdzy/operations/utils/RedisUtil.java index 78e2542..edb7f4b 100644 --- a/ebike-operations/src/main/java/com/cdzy/operations/utils/RedisUtil.java +++ b/ebike-operations/src/main/java/com/cdzy/operations/utils/RedisUtil.java @@ -5,9 +5,7 @@ import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; @@ -505,4 +503,34 @@ public class RedisUtil { return getRedisTemplate(Database.DB2).opsForValue().multiGet(keys); } + + /** + * 批量获取ECU信息(基于已知的SN列表) + * + * @param ecuSnList ECU序列号列表 + * @return Map 映射关系 + */ + public Map batchGetEcuWithMap(List ecuSnList) { + if (ecuSnList == null || ecuSnList.isEmpty()) { + return Collections.emptyMap(); + } + + // 构建完整的Redis键列表 + List keys = ecuSnList.stream() + .map(sn -> BIKE_ECU_PREFIX + sn) + .collect(Collectors.toList()); + + // 批量获取值 + List values = getRedisTemplate(Database.DB2).opsForValue().multiGet(keys); + + // 构建映射关系 + Map result = new LinkedHashMap<>(); + for (int i = 0; i < ecuSnList.size(); i++) { + String sn = ecuSnList.get(i); + Object value = (values != null && i < values.size()) ? values.get(i) : null; + result.put(sn, value); + } + + return result; + } } \ No newline at end of file