修改 device id
This commit is contained in:
@ -6,6 +6,8 @@ import com.alibaba.fastjson2.JSONArray;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.alibaba.fastjson2.TypeReference;
|
||||
import com.fasterxml.jackson.databind.json.JsonMapper;
|
||||
import com.xzzn.common.utils.DateUtils;
|
||||
import com.xzzn.common.utils.StringUtils;
|
||||
import com.xzzn.ems.domain.EmsBatteryData;
|
||||
import com.xzzn.ems.domain.EmsMqttMessage;
|
||||
import com.xzzn.ems.domain.EmsPcsData;
|
||||
@ -26,10 +28,7 @@ import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
|
||||
@Service
|
||||
public class MqttMessageController implements MqttPublisher, MqttSubscriber {
|
||||
@ -90,7 +89,7 @@ public class MqttMessageController implements MqttPublisher, MqttSubscriber {
|
||||
System.out.println("[DEVICE] data: " + payload);
|
||||
try {
|
||||
// 业务处理逻辑
|
||||
// handleFxData(JSONArray.parseArray(payload).get(0).toString());
|
||||
handleFxData(payload);
|
||||
|
||||
EmsMqttMessage mqttMessage = new EmsMqttMessage();
|
||||
mqttMessage.setMqttTopic(topic);
|
||||
@ -135,18 +134,19 @@ public class MqttMessageController implements MqttPublisher, MqttSubscriber {
|
||||
|
||||
|
||||
private void handleFxData(String message) {
|
||||
JSONArray arraylist = JSONArray.parseArray(message);
|
||||
|
||||
|
||||
List<String> upAll = JSON.parseObject(message, new TypeReference<ArrayList<String>>() {});
|
||||
|
||||
for (int i = 0; i < upAll.size(); i++) {
|
||||
JSONObject obj = JSONObject.parseObject(upAll.get(i));
|
||||
for (int i = 0; i < arraylist.size(); i++) {
|
||||
JSONObject obj = JSONObject.parseObject(arraylist.get(i).toString());
|
||||
|
||||
String deviceId = obj.get("Device").toString();
|
||||
String jsonData = obj.get("Data").toString();
|
||||
|
||||
|
||||
log.info("deviceId:" + deviceId);
|
||||
if (deviceId.contains("BMS")) {
|
||||
log.info("====================");
|
||||
log.info("BMS data:"+ jsonData);
|
||||
|
||||
Map<String, Map<String, Object>> records = processData(JSON.parseObject(jsonData, new TypeReference<Map<String, Object>>() {}));
|
||||
|
||||
//单体电池
|
||||
@ -157,19 +157,85 @@ public class MqttMessageController implements MqttPublisher, MqttSubscriber {
|
||||
EmsBatteryData data = new EmsBatteryData();
|
||||
data.setDeviceId(recordId);
|
||||
data.setBatteryCellId(recordId);
|
||||
data.setSoc(new BigDecimal(fields.get("DTSOC").toString()));
|
||||
data.setSoh(new BigDecimal(fields.get("DTSOH").toString()));
|
||||
data.setTemperature(new BigDecimal(fields.get("DTWD").toString()));
|
||||
data.setVoltage(new BigDecimal(fields.get("DTDY").toString()));
|
||||
data.setSoc(StringUtils.getBigDecimal(fields.get("DTSOC")));
|
||||
data.setSoh(StringUtils.getBigDecimal(fields.get("DTSOH")));
|
||||
data.setTemperature(StringUtils.getBigDecimal(fields.get("DTWD")));
|
||||
data.setVoltage(StringUtils.getBigDecimal(fields.get("DTDY")));
|
||||
|
||||
data.setBatteryCluster(deviceId);
|
||||
data.setBatteryPack(deviceId);
|
||||
|
||||
// 时间戳
|
||||
data.setDataTimestamp(new Date());
|
||||
|
||||
// ID字段
|
||||
data.setSiteId(Long.parseLong("021"));
|
||||
data.setClusterDeviceId(Long.parseLong("021"));
|
||||
|
||||
|
||||
emsBatteryDataService.insertEmsBatteryData(data);
|
||||
}
|
||||
} else if (deviceId.contains("PCS")) {
|
||||
log.info("====================");
|
||||
|
||||
log.info("PCS data:"+ jsonData);
|
||||
//pcs
|
||||
EmsPcsData data = new EmsPcsData();
|
||||
// 时间与状态类字段
|
||||
data.setDataUpdateTime(new Date());
|
||||
data.setWorkStatus("A");
|
||||
data.setGridStatus("B");
|
||||
data.setDeviceStatus("C");
|
||||
data.setControlMode("D");
|
||||
|
||||
// 功率与能量类字段
|
||||
data.setTotalActivePower(BigDecimal.ZERO);
|
||||
data.setDailyAcChargeEnergy(BigDecimal.ZERO);
|
||||
data.setTotalReactivePower(BigDecimal.ZERO);
|
||||
data.setDailyAcDischargeEnergy(BigDecimal.ZERO);
|
||||
data.setTotalApparentPower(BigDecimal.ZERO);
|
||||
data.setTotalPowerFactor(BigDecimal.ZERO);
|
||||
data.setDcPower(BigDecimal.ZERO);
|
||||
data.setTotalAcChargeEnergy(BigDecimal.ZERO);
|
||||
data.setTotalAcDischargeEnergy(BigDecimal.ZERO);
|
||||
data.setAcChargeActivePower(BigDecimal.ZERO);
|
||||
data.setAcCapacitiveReactivePower(BigDecimal.ZERO);
|
||||
data.setAcDischargeActivePower(BigDecimal.ZERO);
|
||||
data.setAcInductiveReactivePower(BigDecimal.ZERO);
|
||||
data.setMaxCapacitivePowerCapacity(BigDecimal.ZERO);
|
||||
data.setMaxInductivePowerCapacity(BigDecimal.ZERO);
|
||||
data.setMaxChargePowerCapacity(BigDecimal.ZERO);
|
||||
data.setMaxDischargePowerCapacity(BigDecimal.ZERO);
|
||||
|
||||
|
||||
// 温度与环境参数
|
||||
data.setPcsModuleTemperature(BigDecimal.ZERO);
|
||||
data.setPcsEnvironmentTemperature(BigDecimal.ZERO);
|
||||
data.setAcFrequency(BigDecimal.ZERO);
|
||||
|
||||
// 状态指示类
|
||||
data.setBranchStatus("A");
|
||||
data.setDischargeStatus("A");
|
||||
data.setAcSwitchStatus("A");
|
||||
data.setDcSwitchStatus("A");
|
||||
data.setRemoteControlStatus("A");
|
||||
|
||||
// 直流参数
|
||||
data.setDcVoltage(BigDecimal.ZERO);
|
||||
data.setDcCurrent(BigDecimal.ZERO);
|
||||
|
||||
// 系统管理字段
|
||||
// data.setCreateBy(BigDecimal.ZERO);
|
||||
// data.setCreateTime(BigDecimal.ZERO);
|
||||
// data.setUpdateBy(BigDecimal.ZERO);
|
||||
// data.setUpdateTime(BigDecimal.ZERO);
|
||||
// data.setRemark(BigDecimal.ZERO);
|
||||
data.setSiteId(Long.parseLong("021"));
|
||||
data.setDeviceId(deviceId);
|
||||
data.setDateMonth(Long.parseLong("6"));
|
||||
data.setDateDay(Long.parseLong("28"));
|
||||
|
||||
data.setDeviceId(deviceId);
|
||||
|
||||
|
||||
|
||||
@ -191,6 +257,12 @@ public class MqttMessageController implements MqttPublisher, MqttSubscriber {
|
||||
String key = entry.getKey();
|
||||
// 提取记录ID(最后3位)
|
||||
String recordId = key.substring(key.length() - 3);
|
||||
try {
|
||||
Long.parseLong(recordId);
|
||||
} catch (Exception e) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// 提取字段类型(前缀)
|
||||
String fieldType = key.substring(0, key.length() - 3);
|
||||
|
||||
|
Reference in New Issue
Block a user