修改 device id

This commit is contained in:
2025-06-28 23:07:49 +08:00
parent 1a56bd6526
commit 177e235c0e
4 changed files with 380 additions and 115 deletions

View File

@ -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);