高频,低频数据tdengine入库

This commit is contained in:
huguanghan 2024-10-18 13:38:55 +08:00
parent 225f5d2d81
commit 4340f439cb
5 changed files with 116 additions and 21 deletions

View File

@ -0,0 +1,26 @@
package com.das.modules.node.command;
import com.das.modules.node.constant.NodeConstant;
import com.das.modules.node.domain.bo.TerminalMessage;
import com.das.modules.node.service.DataService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service(value = NodeConstant.HIS_HIGH_SPEED_DATA)
@Slf4j
public class HisHighSpeedCommand implements BaseCommand {
@Autowired
DataService dataService;
@Override
public void doCommand(TerminalMessage data) {
try {
//analogData值只存入redis
dataService.handleHighSpeed(data);
} catch (Exception e) {
log.error("解析数据异常", e);
}
}
}

View File

@ -0,0 +1,26 @@
package com.das.modules.node.command;
import com.das.modules.node.constant.NodeConstant;
import com.das.modules.node.domain.bo.TerminalMessage;
import com.das.modules.node.service.DataService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service(value = NodeConstant.HIS_LOW_SPEED_DATA)
@Slf4j
public class HisLowSpeedCommand implements BaseCommand {
@Autowired
DataService dataService;
@Override
public void doCommand(TerminalMessage data) {
try {
//analogData值只存入redis
dataService.handleLowSpeed(data);
} catch (Exception e) {
log.error("解析数据异常", e);
}
}
}

View File

@ -18,9 +18,9 @@ public interface NodeConstant {
String STATE_DATA = "stateData"; String STATE_DATA = "stateData";
String HIS_ANALOG_DATA = "historyStateData"; String HIS_HIGH_SPEED_DATA = "historyHighSpeedData";
String HIS_STATE_DATA = "historyStateData"; String HIS_LOW_SPEED_DATA = "historyLowSpeedData";
String DEVICE_CONTROL_RESP = "deviceControlResp"; String DEVICE_CONTROL_RESP = "deviceControlResp";
} }

View File

@ -11,4 +11,8 @@ public interface DataService {
void createTdStable(); void createTdStable();
void handleData(TerminalMessage data); void handleData(TerminalMessage data);
void handleHighSpeed(TerminalMessage data);
void handleLowSpeed(TerminalMessage data);
} }

View File

@ -240,32 +240,16 @@ public class DataServiceImpl implements DataService {
JsonNode jsonNode = data.getData(); JsonNode jsonNode = data.getData();
String deviceId = jsonNode.get("deviceId").asText(); String deviceId = jsonNode.get("deviceId").asText();
JsonNode values = jsonNode.get("values"); JsonNode values = jsonNode.get("values");
JsonNode high = values.get("high");
JsonNode low = values.get("low");
Map<String, Object> keyValueMap = new HashMap<>(); Map<String, Object> keyValueMap = new HashMap<>();
// 根据设备ID获取对应的物模型属性
String iotModelCode = sysIotModelMapper.getIotModel(jsonNode.get("deviceId").asLong());
Map<String, Object> highFieldMap = highIotFieldMap.get(iotModelCode);
Map<String, Object> lowFiledMap = lowIotFieldMap.get(iotModelCode);
//High数据 //数据入redis
Iterator<String> keysHigh = high.fieldNames(); Iterator<String> keysHigh = values.fieldNames();
while (keysHigh.hasNext()) { while (keysHigh.hasNext()) {
String fieldName = keysHigh.next(); String fieldName = keysHigh.next();
highFieldMap.put(fieldName, high.get(fieldName));
String key = String.format("RT:[%s]:[%s]", deviceId, fieldName); String key = String.format("RT:[%s]:[%s]", deviceId, fieldName);
keyValueMap.put(key, high.get(fieldName).asDouble()); keyValueMap.put(key, values.get(fieldName).asDouble());
} }
//LOW数据
Iterator<String> keysLow = low.fieldNames();
while (keysLow.hasNext()) {
String fieldName = keysLow.next();
lowFiledMap.put(fieldName, low.get(fieldName));
String key = String.format("RT:[%s]:[%s]", deviceId, fieldName);
keyValueMap.put(key, high.get(fieldName).asDouble());
}
adminRedisTemplate.mSet(keyValueMap); adminRedisTemplate.mSet(keyValueMap);
// Long dataTime = data.getTime(); // Long dataTime = data.getTime();
// //
@ -287,4 +271,59 @@ public class DataServiceImpl implements DataService {
// tdEngineService.updateYCHighValues(highList, iotModelCode); // tdEngineService.updateYCHighValues(highList, iotModelCode);
// tdEngineService.updateYCLowValues(lowList, iotModelCode); // tdEngineService.updateYCLowValues(lowList, iotModelCode);
} }
@Override
public void handleHighSpeed(TerminalMessage data) {
JsonNode jsonNode = data.getData();
String deviceId = jsonNode.get("deviceId").asText();
JsonNode values = jsonNode.get("values");
Map<String, Object> keyValueMap = new HashMap<>();
// 根据设备ID获取对应的物模型属性
String iotModelCode = sysIotModelMapper.getIotModel(jsonNode.get("deviceId").asLong());
//High数据
Iterator<String> keysHigh = values.fieldNames();
while (keysHigh.hasNext()) {
String fieldName = keysHigh.next();
keyValueMap.put(fieldName, values.get(fieldName));
}
Long dataTime = data.getTime();
List<RTData> highList = new ArrayList<>();
RTData rtHighData = RTData.builder()
.dataTime(dataTime)
.deviceId(Long.valueOf(deviceId))
.values(keyValueMap)
.build();
highList.add(rtHighData);
tdEngineService.updateYCHighValues(highList, iotModelCode);
}
@Override
public void handleLowSpeed(TerminalMessage data) {
JsonNode jsonNode = data.getData();
String deviceId = jsonNode.get("deviceId").asText();
JsonNode values = jsonNode.get("values");
Map<String, Object> keyValueMap = new HashMap<>();
// 根据设备ID获取对应的物模型属性
String iotModelCode = sysIotModelMapper.getIotModel(jsonNode.get("deviceId").asLong());
//Low数据
Iterator<String> keysLow= values.fieldNames();
while (keysLow.hasNext()) {
String fieldName = keysLow.next();
keyValueMap.put(fieldName, values.get(fieldName));
}
Long dataTime = data.getTime();
List<RTData> highList = new ArrayList<>();
RTData rtHighData = RTData.builder()
.dataTime(dataTime)
.deviceId(Long.valueOf(deviceId))
.values(keyValueMap)
.build();
highList.add(rtHighData);
tdEngineService.updateYCLowValues(highList, iotModelCode);
}
} }