pcs 支路
This commit is contained in:
@ -1,23 +1,22 @@
|
||||
package com.xzzn.web.controller.ems;
|
||||
|
||||
import com.alibaba.druid.support.json.JSONParser;
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
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.EmsPcsBranchData;
|
||||
import com.xzzn.ems.domain.EmsPcsData;
|
||||
import com.xzzn.ems.service.IEmsBatteryDataService;
|
||||
import com.xzzn.ems.service.IEmsMqttMessageService;
|
||||
import com.xzzn.ems.service.IEmsPcsBranchDataService;
|
||||
import com.xzzn.ems.service.IEmsPcsDataService;
|
||||
import com.xzzn.framework.manager.MqttLifecycleManager;
|
||||
import com.xzzn.framework.web.service.MqttPublisher;
|
||||
import com.xzzn.framework.web.service.MqttSubscriber;
|
||||
import org.apache.coyote.http11.Http11NioProtocol;
|
||||
import org.apache.juli.logging.Log;
|
||||
import org.apache.juli.logging.LogFactory;
|
||||
import org.eclipse.paho.client.mqttv3.IMqttMessageListener;
|
||||
@ -48,6 +47,9 @@ public class MqttMessageController implements MqttPublisher, MqttSubscriber {
|
||||
@Autowired
|
||||
private IEmsPcsDataService emsPcsDataService;
|
||||
|
||||
@Autowired
|
||||
private IEmsPcsBranchDataService emsPcsBranchDataService;
|
||||
|
||||
@Autowired
|
||||
public MqttMessageController(MqttLifecycleManager mqttLifecycleManager) {
|
||||
this.mqttLifecycleManager = mqttLifecycleManager;
|
||||
@ -91,6 +93,7 @@ public class MqttMessageController implements MqttPublisher, MqttSubscriber {
|
||||
// 业务处理逻辑
|
||||
handleFxData(payload);
|
||||
|
||||
|
||||
EmsMqttMessage mqttMessage = new EmsMqttMessage();
|
||||
mqttMessage.setMqttTopic(topic);
|
||||
mqttMessage.setMqttMessage(payload);
|
||||
@ -146,7 +149,14 @@ public class MqttMessageController implements MqttPublisher, MqttSubscriber {
|
||||
if (deviceId.contains("BMS")) {
|
||||
log.info("====================");
|
||||
log.info("BMS data:"+ jsonData);
|
||||
//BMS 电池簇
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//单体电池
|
||||
Map<String, Map<String, Object>> records = processData(JSON.parseObject(jsonData, new TypeReference<Map<String, Object>>() {}));
|
||||
List<EmsBatteryData> list = new ArrayList<>();
|
||||
//单体电池
|
||||
@ -182,49 +192,49 @@ public class MqttMessageController implements MqttPublisher, MqttSubscriber {
|
||||
|
||||
log.info("PCS data:"+ jsonData);
|
||||
//pcs
|
||||
EmsPcsData data = new EmsPcsData();
|
||||
EmsPcsData pcsData = new EmsPcsData();
|
||||
// 时间与状态类字段
|
||||
data.setDataUpdateTime(new Date());
|
||||
data.setWorkStatus("A");
|
||||
data.setGridStatus("B");
|
||||
data.setDeviceStatus("C");
|
||||
data.setControlMode("D");
|
||||
pcsData.setDataUpdateTime(new Date());
|
||||
pcsData.setWorkStatus("A");
|
||||
pcsData.setGridStatus("B");
|
||||
pcsData.setDeviceStatus("C");
|
||||
pcsData.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);
|
||||
pcsData.setTotalActivePower(BigDecimal.ZERO);
|
||||
pcsData.setDailyAcChargeEnergy(BigDecimal.ZERO);
|
||||
pcsData.setTotalReactivePower(BigDecimal.ZERO);
|
||||
pcsData.setDailyAcDischargeEnergy(BigDecimal.ZERO);
|
||||
pcsData.setTotalApparentPower(BigDecimal.ZERO);
|
||||
pcsData.setTotalPowerFactor(BigDecimal.ZERO);
|
||||
pcsData.setDcPower(BigDecimal.ZERO);
|
||||
pcsData.setTotalAcChargeEnergy(BigDecimal.ZERO);
|
||||
pcsData.setTotalAcDischargeEnergy(BigDecimal.ZERO);
|
||||
pcsData.setAcChargeActivePower(BigDecimal.ZERO);
|
||||
pcsData.setAcCapacitiveReactivePower(BigDecimal.ZERO);
|
||||
pcsData.setAcDischargeActivePower(BigDecimal.ZERO);
|
||||
pcsData.setAcInductiveReactivePower(BigDecimal.ZERO);
|
||||
pcsData.setMaxCapacitivePowerCapacity(BigDecimal.ZERO);
|
||||
pcsData.setMaxInductivePowerCapacity(BigDecimal.ZERO);
|
||||
pcsData.setMaxChargePowerCapacity(BigDecimal.ZERO);
|
||||
pcsData.setMaxDischargePowerCapacity(BigDecimal.ZERO);
|
||||
|
||||
|
||||
// 温度与环境参数
|
||||
data.setPcsModuleTemperature(BigDecimal.ZERO);
|
||||
data.setPcsEnvironmentTemperature(BigDecimal.ZERO);
|
||||
data.setAcFrequency(BigDecimal.ZERO);
|
||||
pcsData.setPcsModuleTemperature(BigDecimal.ZERO);
|
||||
pcsData.setPcsEnvironmentTemperature(BigDecimal.ZERO);
|
||||
pcsData.setAcFrequency(BigDecimal.ZERO);
|
||||
|
||||
// 状态指示类
|
||||
data.setBranchStatus("A");
|
||||
data.setDischargeStatus("A");
|
||||
data.setAcSwitchStatus("A");
|
||||
data.setDcSwitchStatus("A");
|
||||
data.setRemoteControlStatus("A");
|
||||
pcsData.setBranchStatus("A");
|
||||
pcsData.setDischargeStatus("A");
|
||||
pcsData.setAcSwitchStatus("A");
|
||||
pcsData.setDcSwitchStatus("A");
|
||||
pcsData.setRemoteControlStatus("A");
|
||||
|
||||
// 直流参数
|
||||
data.setDcVoltage(BigDecimal.ZERO);
|
||||
data.setDcCurrent(BigDecimal.ZERO);
|
||||
pcsData.setDcVoltage(BigDecimal.ZERO);
|
||||
pcsData.setDcCurrent(BigDecimal.ZERO);
|
||||
|
||||
// 系统管理字段
|
||||
// data.setCreateBy(BigDecimal.ZERO);
|
||||
@ -232,17 +242,57 @@ public class MqttMessageController implements MqttPublisher, MqttSubscriber {
|
||||
// data.setUpdateBy(BigDecimal.ZERO);
|
||||
// data.setUpdateTime(BigDecimal.ZERO);
|
||||
// data.setRemark(BigDecimal.ZERO);
|
||||
data.setSiteId(("021"));
|
||||
data.setDeviceId(deviceId);
|
||||
data.setDateMonth(Long.parseLong("6"));
|
||||
data.setDateDay(Long.parseLong("28"));
|
||||
pcsData.setSiteId("021_FXX_01");
|
||||
pcsData.setDeviceId(deviceId);
|
||||
pcsData.setDateMonth(DateUtils.getNowMonthLong());
|
||||
pcsData.setDateDay(DateUtils.getNowDayLong());
|
||||
|
||||
data.setDeviceId(deviceId);
|
||||
pcsData.setDeviceId(deviceId);
|
||||
|
||||
|
||||
|
||||
|
||||
emsPcsDataService.insertEmsPcsData(data);
|
||||
emsPcsDataService.insertEmsPcsData(pcsData);
|
||||
|
||||
|
||||
Map<String, Map<String, Object>> records = processDataPrefix(JSON.parseObject(jsonData, new TypeReference<Map<String, Object>>() {}));
|
||||
List<EmsPcsBranchData> list = new ArrayList<>();
|
||||
|
||||
//单体电池
|
||||
for (Map.Entry<String, Map<String, Object>> record : records.entrySet()) {
|
||||
String recordId = record.getKey();
|
||||
Map<String, Object> fields = record.getValue();
|
||||
|
||||
EmsPcsBranchData data = new EmsPcsBranchData();
|
||||
data.setDeviceId(recordId);
|
||||
data.setDcPower(BigDecimal.ZERO);
|
||||
data.setDcVoltage(BigDecimal.ZERO);
|
||||
data.setDcCurrent(BigDecimal.ZERO);
|
||||
data.setGridUVoltage(BigDecimal.ZERO);
|
||||
data.setGridVVoltage(BigDecimal.ZERO);
|
||||
data.setGridWVoltage(BigDecimal.ZERO);
|
||||
data.setOutputUCurrent(BigDecimal.ZERO);
|
||||
data.setOutputVCurrent(BigDecimal.ZERO);
|
||||
data.setOutputWCurrent(BigDecimal.ZERO);
|
||||
data.setApparentPower(BigDecimal.ZERO);
|
||||
data.setActivePower(BigDecimal.ZERO);
|
||||
data.setReactivePower(BigDecimal.ZERO);
|
||||
data.setPowerFactor(BigDecimal.ZERO);
|
||||
data.setFrequency(BigDecimal.ZERO);
|
||||
data.setInternalTemp(BigDecimal.ZERO);
|
||||
data.setuIgbtTemp(BigDecimal.ZERO);
|
||||
data.setvIgbtTemp(BigDecimal.ZERO);
|
||||
data.setwIgbtTemp(BigDecimal.ZERO);
|
||||
data.setAvailablePower(BigDecimal.ZERO);
|
||||
data.setTotalLoadRatio(BigDecimal.ZERO);
|
||||
data.setAcLeakageCurrent(BigDecimal.ZERO);
|
||||
data.setInsulationResistance(BigDecimal.ZERO);
|
||||
|
||||
list.add(data);
|
||||
}
|
||||
if (list.size() > 0 ) {
|
||||
emsPcsBranchDataService.insertEmsPcsBranchDataList(list);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -275,4 +325,31 @@ public class MqttMessageController implements MqttPublisher, MqttSubscriber {
|
||||
}
|
||||
return records;
|
||||
}
|
||||
|
||||
private static Map<String, Map<String, Object>> processDataPrefix(Map<String, Object> rawData) {
|
||||
Map<String, Map<String, Object>> records = new HashMap<>();
|
||||
|
||||
for (Map.Entry<String, Object> entry : rawData.entrySet()) {
|
||||
String key = entry.getKey();
|
||||
// 确保键长度足够
|
||||
if (key.length() < 3) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// 提取记录ID(前3位)
|
||||
String recordId = key.substring(0, 3);
|
||||
if (!recordId.startsWith("DY")) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// 提取字段类型(剩余部分)
|
||||
String fieldType = key.substring(3);
|
||||
|
||||
// 初始化记录
|
||||
records.putIfAbsent(recordId, new HashMap<>());
|
||||
// 存入字段值
|
||||
records.get(recordId).put(fieldType, entry.getValue());
|
||||
}
|
||||
return records;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user