优化:修改调整IotDataController中获取数据接口的返回逻辑

This commit is contained in:
syruan 2025-05-27 14:48:13 +08:00
parent 01085ecfd2
commit 4bdaca246c
1 changed files with 9 additions and 7 deletions

View File

@ -18,7 +18,7 @@ import java.util.concurrent.ConcurrentMap;
public class IotDataController {
// 使用线程安全的Map临时存储最新数据
private static final ConcurrentMap<String, GpsData> latestData = new ConcurrentHashMap<>();
private static final ConcurrentMap<String, GpsData> LATEST_DATA = new ConcurrentHashMap<>();
// 接收MQTT数据的接口
@PostMapping("/api/mqtt/data")
@ -26,7 +26,7 @@ public class IotDataController {
try {
GpsData gpsData = parseMqttData(mqttData);
// 存储最新数据key可以用设备UUID
latestData.put(gpsData.getUuid(), gpsData);
LATEST_DATA.put(gpsData.getUuid(), gpsData);
return "数据接收并存储成功";
} catch (Exception e) {
return "数据解析失败: " + e.getMessage();
@ -35,13 +35,15 @@ public class IotDataController {
// 新增接口供HTML页面获取数据
@GetMapping("/api/mqtt/latest-data")
public AjaxResult getLatestData(@RequestParam(required = false) String uuid) {
if (uuid == null && !latestData.isEmpty()) {
public Object[] getLatestData(@RequestParam(required = false) String uuid) {
if (uuid == null && !LATEST_DATA.isEmpty()) {
// 如果没有指定UUID返回第一个设备的数据
GpsData data = latestData.values().iterator().next();
return AjaxResult.success(data);
//return LATEST_DATA.values().iterator().next();
// 如果没有指定UUID, 返回全部数据
return LATEST_DATA.values().toArray();
}
return AjaxResult.warn("", latestData.get(uuid));
return new GpsData[]{LATEST_DATA.get(uuid)};
}
private GpsData parseMqttData(String rawData) {