From b68472cd982ca6ee10b77b66b882cefdee7e50bc Mon Sep 17 00:00:00 2001 From: jiang Date: Mon, 15 Sep 2025 18:06:34 +0800 Subject: [PATCH] =?UTF-8?q?iot=E5=AF=B9=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iot/controller/IotDataController.java | 21 +++++++++++++++---- .../com/bonus/material/iot/dto/GpsData.java | 5 +++++ 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/iot/controller/IotDataController.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/iot/controller/IotDataController.java index 870017e..a2b679e 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/iot/controller/IotDataController.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/iot/controller/IotDataController.java @@ -1,5 +1,6 @@ package com.bonus.material.iot.controller; +import com.alibaba.fastjson.JSON; import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.material.iot.dto.GpsData; import com.bonus.material.iot.dto.PhaseData; @@ -145,12 +146,14 @@ public class IotDataController { GpsData data = new GpsData(); try { - // 解析 JSON 数据 - JsonNode rootNode = objectMapper.readTree(rawData); + // 解析 JSON 数据 + //JsonNode rootNode = objectMapper.readTree(JSON.parseObject(rawData).getString("payload")); + JsonNode rootNode = objectMapper.readTree(rawData); // 1. 解析 UUID parseUuid(rootNode, data); - + //解析设备类型 + parseType(rootNode, data); // 2. 解析位置信息 parsePositionData(rootNode, data); @@ -186,6 +189,12 @@ public class IotDataController { } } + private void parseType(JsonNode rootNode, GpsData data) { + if (rootNode.has("type")) { + data.setType(rootNode.get("type").asText()); + } + } + /** * 解析电池电量数据 */ @@ -301,11 +310,15 @@ public class IotDataController { private void parseLbsWifiData(String dataStr, GpsData data, String source) { try { String[] parts = dataStr.split(","); - if (parts.length >= 3) { + if (parts.length == 3) { data.setLatitude(parts[0]); data.setLongitude(parts[1]); data.setAccuracy(parts[2]); data.setPositionSource(source); + } else if (parts.length == 2) { + data.setLatitude(parts[0]); + data.setLongitude(parts[1]); + data.setPositionSource(source); } else { logger.warn("{}数据格式不正确,部分不足: {}", source, dataStr); } diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/iot/dto/GpsData.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/iot/dto/GpsData.java index d4a2326..320e1bb 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/iot/dto/GpsData.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/iot/dto/GpsData.java @@ -22,6 +22,11 @@ public class GpsData { */ private String uuid; + /** + * 设备类型 + */ + private String type; + /** * UTC时间(GPS时间) * 来源: GNSS数据中的GNRMC或GNGGA语句