|
@@ -0,0 +1,66 @@
|
|
|
+package vip.xiaonuo.coldchain.modular.qp.service.impl;
|
|
|
+
|
|
|
+import cn.hutool.json.JSONArray;
|
|
|
+import cn.hutool.json.JSONObject;
|
|
|
+import cn.hutool.json.JSONUtil;
|
|
|
+import com.github.jfcloud.influxdb.service.JfcloudInfluxDBService;
|
|
|
+import jakarta.annotation.Resource;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import vip.xiaonuo.coldchain.core.bean.influxdb.SensorData;
|
|
|
+import vip.xiaonuo.coldchain.modular.qp.service.QPService;
|
|
|
+
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+@Service
|
|
|
+public class QPServiceImpl implements QPService {
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private JfcloudInfluxDBService jfcloudInfluxDBService;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void save(Map<String, Object> map) {
|
|
|
+ SensorData sensorData = new SensorData();
|
|
|
+ JSONObject mapJson = JSONUtil.parseObj(JSONUtil.toJsonStr(map));
|
|
|
+ JSONObject payloadJson = mapJson.getJSONObject("payload");
|
|
|
+ JSONObject infoJson = payloadJson.getJSONObject("info");
|
|
|
+ sensorData.setDeviceId(infoJson.getStr("mac"));
|
|
|
+ sensorData.setCreateTime(infoJson.getStr("createAt"));
|
|
|
+ JSONObject productJson = infoJson.getJSONObject("product");
|
|
|
+ sensorData.setModelName(productJson.getStr("code"));
|
|
|
+ JSONArray dataArray = payloadJson.getJSONArray("data");
|
|
|
+ List<Object> list = dataArray.stream().toList();
|
|
|
+ for (Object o : list) {
|
|
|
+ JSONObject dataJson = JSONUtil.parseObj(JSONUtil.toJsonStr(o));
|
|
|
+ JSONObject timestampJson = dataJson.getJSONObject("timestamp");
|
|
|
+ if (timestampJson != null) {
|
|
|
+ String timestamp = timestampJson.getStr("value");
|
|
|
+ sensorData.setCreateTime(timestamp);
|
|
|
+ }
|
|
|
+ JSONObject batteryJson = dataJson.getJSONObject("battery");
|
|
|
+ if (batteryJson != null) {
|
|
|
+ Float battery = batteryJson.getFloat("value");
|
|
|
+ sensorData.setBattery(battery);
|
|
|
+ }
|
|
|
+ JSONObject temperatureJson = dataJson.getJSONObject("temperature");
|
|
|
+ if (temperatureJson != null) {
|
|
|
+ Float temperature = temperatureJson.getFloat("value");
|
|
|
+ sensorData.setTemperature(temperature);
|
|
|
+ }
|
|
|
+ JSONObject humidityJson = dataJson.getJSONObject("humidity");
|
|
|
+ if (humidityJson != null) {
|
|
|
+ Float humidity = humidityJson.getFloat("value");
|
|
|
+ sensorData.setHumidity(humidity);
|
|
|
+ }
|
|
|
+ JSONObject co2Json = dataJson.getJSONObject("co2");
|
|
|
+ if (co2Json != null) {
|
|
|
+ Float co2 = co2Json.getFloat("value");
|
|
|
+ sensorData.setCo2(co2);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ jfcloudInfluxDBService.writePojo(sensorData);
|
|
|
+ }
|
|
|
+}
|