平台修改意见20251120-021_FXX_01站点设备点位初始化配置,读取配置的设备点位匹配关系,存储对应的点位数据
This commit is contained in:
@ -0,0 +1,39 @@
|
|||||||
|
package com.xzzn.common.utils;
|
||||||
|
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
|
||||||
|
import org.apache.commons.logging.Log;
|
||||||
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
|
||||||
|
public class DataUtils {
|
||||||
|
private static final Log log = LogFactory.getLog(DataUtils.class);
|
||||||
|
|
||||||
|
public static String getJSONFromFile(InputStream inputStream) {
|
||||||
|
BufferedReader bufferReader = null;
|
||||||
|
StringBuffer stringBuffer = new StringBuffer();
|
||||||
|
try {
|
||||||
|
InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");
|
||||||
|
bufferReader = new BufferedReader(inputStreamReader);
|
||||||
|
stringBuffer = new StringBuffer();
|
||||||
|
String lineData = null;
|
||||||
|
while ((lineData = bufferReader.readLine()) != null) {
|
||||||
|
stringBuffer.append(lineData);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.warn("getJSONFromFile error", e);
|
||||||
|
} finally {
|
||||||
|
if (null != bufferReader) {
|
||||||
|
try {
|
||||||
|
bufferReader.close();
|
||||||
|
inputStream.close();
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.warn("getJSONFromFile error", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return stringBuffer.toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,116 @@
|
|||||||
|
package com.xzzn.ems.domain.vo;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class DevicePointMatchInfo {
|
||||||
|
|
||||||
|
private Map<String, String> pcs;
|
||||||
|
|
||||||
|
private Map<String, String> branch;
|
||||||
|
|
||||||
|
private Map<String, String> stack;
|
||||||
|
|
||||||
|
private Map<String, String> cluster;
|
||||||
|
|
||||||
|
private Map<String, String> battery;
|
||||||
|
|
||||||
|
private Map<String, String> ammeterLoad;
|
||||||
|
|
||||||
|
private Map<String, String> ammeterMete;
|
||||||
|
|
||||||
|
private Map<String, String> cooling;
|
||||||
|
|
||||||
|
private Map<String, String> dh;
|
||||||
|
|
||||||
|
private Map<String, String> xf;
|
||||||
|
|
||||||
|
private Map<String, String> batteryGroup;
|
||||||
|
|
||||||
|
public Map<String, String> getPcs() {
|
||||||
|
return pcs;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPcs(Map<String, String> pcs) {
|
||||||
|
this.pcs = pcs;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, String> getBranch() {
|
||||||
|
return branch;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBranch(Map<String, String> branch) {
|
||||||
|
this.branch = branch;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, String> getStack() {
|
||||||
|
return stack;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStack(Map<String, String> stack) {
|
||||||
|
this.stack = stack;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, String> getCluster() {
|
||||||
|
return cluster;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCluster(Map<String, String> cluster) {
|
||||||
|
this.cluster = cluster;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, String> getBattery() {
|
||||||
|
return battery;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBattery(Map<String, String> battery) {
|
||||||
|
this.battery = battery;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, String> getAmmeterLoad() {
|
||||||
|
return ammeterLoad;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAmmeterLoad(Map<String, String> ammeterLoad) {
|
||||||
|
this.ammeterLoad = ammeterLoad;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, String> getAmmeterMete() {
|
||||||
|
return ammeterMete;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAmmeterMete(Map<String, String> ammeterMete) {
|
||||||
|
this.ammeterMete = ammeterMete;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, String> getCooling() {
|
||||||
|
return cooling;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCooling(Map<String, String> cooling) {
|
||||||
|
this.cooling = cooling;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, String> getDh() {
|
||||||
|
return dh;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDh(Map<String, String> dh) {
|
||||||
|
this.dh = dh;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, String> getXf() {
|
||||||
|
return xf;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setXf(Map<String, String> xf) {
|
||||||
|
this.xf = xf;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, String> getBatteryGroup() {
|
||||||
|
return batteryGroup;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBatteryGroup(Map<String, String> batteryGroup) {
|
||||||
|
this.batteryGroup = batteryGroup;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -6,6 +6,7 @@ import com.xzzn.ems.domain.EmsBatteryData;
|
|||||||
import com.xzzn.ems.domain.EmsBatteryGroup;
|
import com.xzzn.ems.domain.EmsBatteryGroup;
|
||||||
import com.xzzn.ems.domain.EmsBatteryStack;
|
import com.xzzn.ems.domain.EmsBatteryStack;
|
||||||
import com.xzzn.ems.domain.EmsCoolingData;
|
import com.xzzn.ems.domain.EmsCoolingData;
|
||||||
|
import com.xzzn.ems.domain.EmsDhData;
|
||||||
import com.xzzn.ems.domain.EmsPcsBranchData;
|
import com.xzzn.ems.domain.EmsPcsBranchData;
|
||||||
import com.xzzn.ems.domain.EmsPcsData;
|
import com.xzzn.ems.domain.EmsPcsData;
|
||||||
import com.xzzn.ems.domain.EmsXfData;
|
import com.xzzn.ems.domain.EmsXfData;
|
||||||
@ -25,7 +26,7 @@ public enum DeviceMatchTable
|
|||||||
BATTERY("BATTERY", "ems_battery_data", EmsBatteryData.class),
|
BATTERY("BATTERY", "ems_battery_data", EmsBatteryData.class),
|
||||||
AMMETER("AMMETER", "ems_ammeter_data", EmsAmmeterData.class),
|
AMMETER("AMMETER", "ems_ammeter_data", EmsAmmeterData.class),
|
||||||
COOLING("COOLING", "ems_cooling_data", EmsCoolingData.class),
|
COOLING("COOLING", "ems_cooling_data", EmsCoolingData.class),
|
||||||
DH("DH", "ems_dh_data", EmsBatteryData.class),
|
DH("DH", "ems_dh_data", EmsDhData.class),
|
||||||
XF("XF", "ems_xf_data", EmsXfData.class),
|
XF("XF", "ems_xf_data", EmsXfData.class),
|
||||||
BATTERY_GROUP("BATTERY_GROUP", "ems_battery_group", EmsBatteryGroup.class);
|
BATTERY_GROUP("BATTERY_GROUP", "ems_battery_group", EmsBatteryGroup.class);
|
||||||
|
|
||||||
|
|||||||
@ -32,5 +32,11 @@ public interface IEmsPointMatchService
|
|||||||
*/
|
*/
|
||||||
public String importPoint(List<EmsPointMatch> userList, boolean updateSupport, String operName);
|
public String importPoint(List<EmsPointMatch> userList, boolean updateSupport, String operName);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 上传设备的点位清单
|
||||||
|
* @param request
|
||||||
|
* @return
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
public List<DevicePointMatchVo> importDataByDevice(ImportPointDataRequest request, String operName);
|
public List<DevicePointMatchVo> importDataByDevice(ImportPointDataRequest request, String operName);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,6 +3,7 @@ package com.xzzn.ems.service.impl;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
import com.alibaba.fastjson2.JSON;
|
import com.alibaba.fastjson2.JSON;
|
||||||
import com.xzzn.common.constant.RedisKeyConstants;
|
import com.xzzn.common.constant.RedisKeyConstants;
|
||||||
@ -27,7 +28,7 @@ import com.xzzn.ems.enums.DeviceMatchTable;
|
|||||||
import com.xzzn.ems.mapper.EmsPointMatchMapper;
|
import com.xzzn.ems.mapper.EmsPointMatchMapper;
|
||||||
import com.xzzn.ems.domain.EmsPointMatch;
|
import com.xzzn.ems.domain.EmsPointMatch;
|
||||||
import com.xzzn.ems.service.IEmsPointMatchService;
|
import com.xzzn.ems.service.IEmsPointMatchService;
|
||||||
import com.xzzn.ems.utils.MatchTableUtils;
|
import com.xzzn.ems.utils.DevicePointMatchDataProcessor;
|
||||||
|
|
||||||
import javax.validation.Validator;
|
import javax.validation.Validator;
|
||||||
|
|
||||||
@ -113,6 +114,12 @@ public class EmsPointMatchServiceImpl implements IEmsPointMatchService
|
|||||||
return successMsg.toString();
|
return successMsg.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导入设备点位清单数据到数据库,并同步到Redis
|
||||||
|
* @param request
|
||||||
|
* @param operName
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public List<DevicePointMatchVo> importDataByDevice(ImportPointDataRequest request, String operName) {
|
public List<DevicePointMatchVo> importDataByDevice(ImportPointDataRequest request, String operName) {
|
||||||
@ -148,12 +155,12 @@ public class EmsPointMatchServiceImpl implements IEmsPointMatchService
|
|||||||
savePoint.setDeviceId(deviceId);
|
savePoint.setDeviceId(deviceId);
|
||||||
savePoint.setDeviceCategory(deviceCategory);
|
savePoint.setDeviceCategory(deviceCategory);
|
||||||
savePoint.setMatchTable(DeviceMatchTable.getMatchTableByCode(deviceCategory));
|
savePoint.setMatchTable(DeviceMatchTable.getMatchTableByCode(deviceCategory));
|
||||||
savePoint.setPointName(MatchTableUtils.getFieldAnnotation(DeviceMatchTable.getClassByTable(savePoint.getMatchTable()), StringUtils.toCamelCase(savePoint.getMatchField())));
|
savePoint.setPointName(DevicePointMatchDataProcessor.getFieldAnnotation(DeviceMatchTable.getClassByTable(savePoint.getMatchTable()), StringUtils.toCamelCase(savePoint.getMatchField())));
|
||||||
savePoint.setCreateBy(operName);
|
savePoint.setCreateBy(operName);
|
||||||
savePoint.setUpdateBy(operName);
|
savePoint.setUpdateBy(operName);
|
||||||
// 验证点位是否存在
|
// 验证点位是否存在
|
||||||
EmsPointMatch dbPoint = emsPointMatchMapper.getOnePointMatch(siteId, deviceId, deviceCategory, pointMatch.getDataPoint());
|
EmsPointMatch dbPoint = emsPointMatchMapper.getOnePointMatch(siteId, deviceId, deviceCategory, pointMatch.getDataPoint());
|
||||||
if (StringUtils.isNull(dbPoint)) {
|
if (Objects.isNull(dbPoint)) {
|
||||||
emsPointMatchMapper.insertEmsPointMatch(savePoint);
|
emsPointMatchMapper.insertEmsPointMatch(savePoint);
|
||||||
} else {
|
} else {
|
||||||
emsPointMatchMapper.updateEmsPointMatch(savePoint);
|
emsPointMatchMapper.updateEmsPointMatch(savePoint);
|
||||||
|
|||||||
@ -15,17 +15,25 @@ import com.xzzn.common.utils.StringUtils;
|
|||||||
import com.xzzn.ems.domain.*;
|
import com.xzzn.ems.domain.*;
|
||||||
import com.xzzn.ems.domain.vo.EnergyPriceTimeRange;
|
import com.xzzn.ems.domain.vo.EnergyPriceTimeRange;
|
||||||
import com.xzzn.ems.domain.vo.EnergyPriceVo;
|
import com.xzzn.ems.domain.vo.EnergyPriceVo;
|
||||||
|
import com.xzzn.ems.enums.DeviceMatchTable;
|
||||||
import com.xzzn.ems.mapper.*;
|
import com.xzzn.ems.mapper.*;
|
||||||
import com.xzzn.ems.service.IEmsAlarmRecordsService;
|
import com.xzzn.ems.service.IEmsAlarmRecordsService;
|
||||||
import com.xzzn.ems.service.IEmsEnergyPriceConfigService;
|
import com.xzzn.ems.service.IEmsEnergyPriceConfigService;
|
||||||
import com.xzzn.ems.service.IFXXDataProcessService;
|
import com.xzzn.ems.service.IFXXDataProcessService;
|
||||||
import com.xzzn.ems.utils.AbstractBatteryDataProcessor;
|
import com.xzzn.ems.utils.AbstractBatteryDataProcessor;
|
||||||
|
import com.xzzn.ems.utils.DevicePointMatchDataProcessor;
|
||||||
|
|
||||||
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
|
import org.apache.commons.lang3.ArrayUtils;
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
import org.apache.poi.ss.formula.functions.T;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.yaml.snakeyaml.introspector.PropertyUtils;
|
||||||
|
|
||||||
|
import java.lang.reflect.Field;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
@ -34,6 +42,7 @@ import java.time.format.DateTimeFormatter;
|
|||||||
import java.time.temporal.ChronoUnit;
|
import java.time.temporal.ChronoUnit;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@ -84,6 +93,8 @@ public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor impl
|
|||||||
private IEmsEnergyPriceConfigService emsEnergyPriceConfigService;
|
private IEmsEnergyPriceConfigService emsEnergyPriceConfigService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private IEmsEnergyPriceConfigService iEmsEnergyPriceConfigService;
|
private IEmsEnergyPriceConfigService iEmsEnergyPriceConfigService;
|
||||||
|
@Autowired
|
||||||
|
private DevicePointMatchDataProcessor devicePointMatchDataProcessor;
|
||||||
|
|
||||||
// 构造方法(调用父类构造)
|
// 构造方法(调用父类构造)
|
||||||
public FXXDataProcessServiceImpl(ObjectMapper objectMapper) {
|
public FXXDataProcessServiceImpl(ObjectMapper objectMapper) {
|
||||||
@ -144,13 +155,19 @@ public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor impl
|
|||||||
});
|
});
|
||||||
|
|
||||||
EmsCoolingData coolingData = new EmsCoolingData();
|
EmsCoolingData coolingData = new EmsCoolingData();
|
||||||
coolingData.setGsTemp(StringUtils.getBigDecimal(obj.get("GSWD")));
|
// 点位匹配数据
|
||||||
coolingData.setHsTemp(StringUtils.getBigDecimal(obj.get("HSWD")));
|
List<EmsPointMatch> pointMatchList = devicePointMatchDataProcessor.getDevicePointMatch(SITE_ID, deviceId, DeviceMatchTable.COOLING.getCode());
|
||||||
coolingData.setGsPressure(StringUtils.getBigDecimal(obj.get("GSYL")));
|
if (CollectionUtils.isNotEmpty(pointMatchList)) {
|
||||||
coolingData.setHsPressure(StringUtils.getBigDecimal(obj.get("HSYL")));
|
saveDeviceData(pointMatchList, obj, coolingData);
|
||||||
coolingData.setLysTemp(StringUtils.getBigDecimal(obj.get("LYSWD")));
|
} else {
|
||||||
coolingData.setVb01Kd(StringUtils.getBigDecimal(obj.get("VB1KD")));
|
coolingData.setGsTemp(StringUtils.getBigDecimal(obj.get("GSWD")));
|
||||||
coolingData.setVb02Kd(StringUtils.getBigDecimal(obj.get("VB2KD")));
|
coolingData.setHsTemp(StringUtils.getBigDecimal(obj.get("HSWD")));
|
||||||
|
coolingData.setGsPressure(StringUtils.getBigDecimal(obj.get("GSYL")));
|
||||||
|
coolingData.setHsPressure(StringUtils.getBigDecimal(obj.get("HSYL")));
|
||||||
|
coolingData.setLysTemp(StringUtils.getBigDecimal(obj.get("LYSWD")));
|
||||||
|
coolingData.setVb01Kd(StringUtils.getBigDecimal(obj.get("VB1KD")));
|
||||||
|
coolingData.setVb02Kd(StringUtils.getBigDecimal(obj.get("VB2KD")));
|
||||||
|
}
|
||||||
|
|
||||||
coolingData.setCreateBy("system");
|
coolingData.setCreateBy("system");
|
||||||
coolingData.setCreateTime(DateUtils.getNowDate());
|
coolingData.setCreateTime(DateUtils.getNowDate());
|
||||||
@ -162,6 +179,8 @@ public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor impl
|
|||||||
emsCoolingDataMapper.insertEmsCoolingData(coolingData);
|
emsCoolingDataMapper.insertEmsCoolingData(coolingData);
|
||||||
|
|
||||||
redisCache.setCacheObject(RedisKeyConstants.COOLING + SITE_ID + "_" +deviceId, coolingData);
|
redisCache.setCacheObject(RedisKeyConstants.COOLING + SITE_ID + "_" +deviceId, coolingData);
|
||||||
|
|
||||||
|
saveDevicePointMatchData(pointMatchList, deviceId, DeviceMatchTable.COOLING, "ZSLQ");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void dhDataProcess(String deviceId, String dataJson) {
|
private void dhDataProcess(String deviceId, String dataJson) {
|
||||||
@ -171,9 +190,14 @@ public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor impl
|
|||||||
|
|
||||||
//DH
|
//DH
|
||||||
EmsDhData dhData = new EmsDhData();
|
EmsDhData dhData = new EmsDhData();
|
||||||
|
// 点位匹配数据
|
||||||
dhData.setHumidity(StringUtils.getBigDecimal(obj.get("SD3")));
|
List<EmsPointMatch> pointMatchList = devicePointMatchDataProcessor.getDevicePointMatch(SITE_ID, deviceId, DeviceMatchTable.DH.getCode());
|
||||||
dhData.setTemperature(StringUtils.getBigDecimal(obj.get("WD3")));
|
if (CollectionUtils.isNotEmpty(pointMatchList)) {
|
||||||
|
saveDeviceData(pointMatchList, obj, dhData);
|
||||||
|
} else {
|
||||||
|
dhData.setHumidity(StringUtils.getBigDecimal(obj.get("SD3")));
|
||||||
|
dhData.setTemperature(StringUtils.getBigDecimal(obj.get("WD3")));
|
||||||
|
}
|
||||||
|
|
||||||
dhData.setCreateBy("system");
|
dhData.setCreateBy("system");
|
||||||
dhData.setCreateTime(DateUtils.getNowDate());
|
dhData.setCreateTime(DateUtils.getNowDate());
|
||||||
@ -184,6 +208,8 @@ public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor impl
|
|||||||
emsDhDataMapper.insertEmsDhData(dhData);
|
emsDhDataMapper.insertEmsDhData(dhData);
|
||||||
|
|
||||||
redisCache.setCacheObject(RedisKeyConstants.DH + SITE_ID + "_" +deviceId, dhData);
|
redisCache.setCacheObject(RedisKeyConstants.DH + SITE_ID + "_" +deviceId, dhData);
|
||||||
|
|
||||||
|
saveDevicePointMatchData(pointMatchList, deviceId, DeviceMatchTable.DH, "donghuan");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void batteryStackDataProcess(String deviceId, String dataJson) {
|
private void batteryStackDataProcess(String deviceId, String dataJson) {
|
||||||
@ -200,58 +226,66 @@ public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor impl
|
|||||||
dataStack.setPcsCommunicationStatus(CommunicationStatus.OK.getCode());
|
dataStack.setPcsCommunicationStatus(CommunicationStatus.OK.getCode());
|
||||||
dataStack.setEmsCommunicationStatus(CommunicationStatus.OK.getCode());
|
dataStack.setEmsCommunicationStatus(CommunicationStatus.OK.getCode());
|
||||||
|
|
||||||
// 电池堆状态数据设置
|
// 点位匹配数据
|
||||||
dataStack.setOperationStatus(StringUtils.getString(obj.get("DCZT")));
|
List<EmsPointMatch> pointMatchList = devicePointMatchDataProcessor.getDevicePointMatch(SITE_ID, deviceId, DeviceMatchTable.STACK.getCode());
|
||||||
dataStack.setStackVoltage(StringUtils.getBigDecimal(obj.get("DCDDY")));
|
if (CollectionUtils.isNotEmpty(pointMatchList)) {
|
||||||
dataStack.setStackCurrent(StringUtils.getBigDecimal(obj.get("DCDDL")));
|
saveDeviceData(pointMatchList, obj, dataStack);
|
||||||
dataStack.setStackSoc(StringUtils.getBigDecimal(obj.get("DCDSOC")));
|
} else {
|
||||||
dataStack.setStackSoh(StringUtils.getBigDecimal(obj.get("DCDSOH")));
|
|
||||||
|
|
||||||
// 电压极值信息
|
// 电池堆状态数据设置
|
||||||
dataStack.setMaxCellVoltage(StringUtils.getBigDecimal(obj.get("ZGDCDY")));
|
dataStack.setOperationStatus(StringUtils.getString(obj.get("DCZT")));
|
||||||
dataStack.setMaxVoltageGroupId(StringUtils.getLong(obj.get("ZGDCDYZH")));
|
dataStack.setStackVoltage(StringUtils.getBigDecimal(obj.get("DCDDY")));
|
||||||
dataStack.setMaxVoltageCellId(StringUtils.getLong(obj.get("ZGDCDYZHDH")));
|
dataStack.setStackCurrent(StringUtils.getBigDecimal(obj.get("DCDDL")));
|
||||||
dataStack.setMinCellVoltage(StringUtils.getBigDecimal(obj.get("ZDDCDY")));
|
dataStack.setStackSoc(StringUtils.getBigDecimal(obj.get("DCDSOC")));
|
||||||
dataStack.setMinVoltageGroupId(StringUtils.getLong(obj.get("ZDDCDYZH")));
|
dataStack.setStackSoh(StringUtils.getBigDecimal(obj.get("DCDSOH")));
|
||||||
dataStack.setMinVoltageCellId(StringUtils.getLong(obj.get("ZDDCDYZHDH")));
|
|
||||||
|
|
||||||
// 温度极值信息
|
// 电压极值信息
|
||||||
dataStack.setMaxCellTemp(StringUtils.getBigDecimal(obj.get("ZGDCWD")));
|
dataStack.setMaxCellVoltage(StringUtils.getBigDecimal(obj.get("ZGDCDY")));
|
||||||
dataStack.setMaxTempGroupId(StringUtils.getLong(obj.get("ZGDCWDZH")));
|
dataStack.setMaxVoltageGroupId(StringUtils.getLong(obj.get("ZGDCDYZH")));
|
||||||
dataStack.setMaxTempCellId(StringUtils.getLong(obj.get("ZGDCWDZHDH")));
|
dataStack.setMaxVoltageCellId(StringUtils.getLong(obj.get("ZGDCDYZHDH")));
|
||||||
dataStack.setMinCellTemp(StringUtils.getBigDecimal(obj.get("ZDDCWD")));
|
dataStack.setMinCellVoltage(StringUtils.getBigDecimal(obj.get("ZDDCDY")));
|
||||||
dataStack.setMinTempGroupId(StringUtils.getLong(obj.get("ZDDCWDZH")));
|
dataStack.setMinVoltageGroupId(StringUtils.getLong(obj.get("ZDDCDYZH")));
|
||||||
dataStack.setMinTempCellId(StringUtils.getLong(obj.get("ZDDCWDZHDH")));
|
dataStack.setMinVoltageCellId(StringUtils.getLong(obj.get("ZDDCDYZHDH")));
|
||||||
|
|
||||||
// 电量统计信息
|
// 温度极值信息
|
||||||
dataStack.setTotalChargeCapacity(StringUtils.getBigDecimal(obj.get("DLJCDDL")));
|
dataStack.setMaxCellTemp(StringUtils.getBigDecimal(obj.get("ZGDCWD")));
|
||||||
dataStack.setTotalDischargeCapacity(StringUtils.getBigDecimal(obj.get("DLCFDDL")));
|
dataStack.setMaxTempGroupId(StringUtils.getLong(obj.get("ZGDCWDZH")));
|
||||||
dataStack.setSessionChargeCapacity(StringUtils.getBigDecimal(obj.get("DDCLJCDDL")));
|
dataStack.setMaxTempCellId(StringUtils.getLong(obj.get("ZGDCWDZHDH")));
|
||||||
dataStack.setSessionDischargeCapacity(StringUtils.getBigDecimal(obj.get("DDCLJFDDL")));
|
dataStack.setMinCellTemp(StringUtils.getBigDecimal(obj.get("ZDDCWD")));
|
||||||
dataStack.setAvailableChargeCapacity(StringUtils.getBigDecimal(obj.get("DKCDL")));
|
dataStack.setMinTempGroupId(StringUtils.getLong(obj.get("ZDDCWDZH")));
|
||||||
dataStack.setAvailableDischargeCapacity(StringUtils.getBigDecimal(obj.get("DKFDL")));
|
dataStack.setMinTempCellId(StringUtils.getLong(obj.get("ZDDCWDZHDH")));
|
||||||
|
|
||||||
// 时间信息
|
// 电量统计信息
|
||||||
dataStack.setRemainingDischargeTime(StringUtils.getLong(obj.get("KYFDSJ")));
|
dataStack.setTotalChargeCapacity(StringUtils.getBigDecimal(obj.get("DLJCDDL")));
|
||||||
dataStack.setRemainingChargeTime(StringUtils.getLong(obj.get("KYCDSJ")));
|
dataStack.setTotalDischargeCapacity(StringUtils.getBigDecimal(obj.get("DLCFDDL")));
|
||||||
|
dataStack.setSessionChargeCapacity(StringUtils.getBigDecimal(obj.get("DDCLJCDDL")));
|
||||||
|
dataStack.setSessionDischargeCapacity(StringUtils.getBigDecimal(obj.get("DDCLJFDDL")));
|
||||||
|
dataStack.setAvailableChargeCapacity(StringUtils.getBigDecimal(obj.get("DKCDL")));
|
||||||
|
dataStack.setAvailableDischargeCapacity(StringUtils.getBigDecimal(obj.get("DKFDL")));
|
||||||
|
|
||||||
// 功率/电流限制
|
// 时间信息
|
||||||
dataStack.setMaxDischargePower(StringUtils.getBigDecimal(obj.get("YXZDFDGL")));
|
dataStack.setRemainingDischargeTime(StringUtils.getLong(obj.get("KYFDSJ")));
|
||||||
dataStack.setMaxChargePower(StringUtils.getBigDecimal(obj.get("YXZDCDGL")));
|
dataStack.setRemainingChargeTime(StringUtils.getLong(obj.get("KYCDSJ")));
|
||||||
dataStack.setMaxDischargeCurrent(StringUtils.getBigDecimal(obj.get("YXZDFDDL")));
|
|
||||||
dataStack.setMaxChargeCurrent(StringUtils.getBigDecimal(obj.get("YXZDCDDL")));
|
|
||||||
|
|
||||||
// 当日统计
|
// 功率/电流限制
|
||||||
dataStack.setDailyDischargeCycles(StringUtils.getLong(obj.get("DTFDCS")));
|
dataStack.setMaxDischargePower(StringUtils.getBigDecimal(obj.get("YXZDFDGL")));
|
||||||
dataStack.setDailyChargeCycles(StringUtils.getLong(obj.get("DTCDCS")));
|
dataStack.setMaxChargePower(StringUtils.getBigDecimal(obj.get("YXZDCDGL")));
|
||||||
dataStack.setDailyDischargeCapacity(StringUtils.getBigDecimal(obj.get("DTFDDL")));
|
dataStack.setMaxDischargeCurrent(StringUtils.getBigDecimal(obj.get("YXZDFDDL")));
|
||||||
dataStack.setDailyChargeCapacity(StringUtils.getBigDecimal(obj.get("DTCDDL")));
|
dataStack.setMaxChargeCurrent(StringUtils.getBigDecimal(obj.get("YXZDCDDL")));
|
||||||
|
|
||||||
// 系统状态
|
// 当日统计
|
||||||
dataStack.setOperatingTemp(StringUtils.getBigDecimal(obj.get("YXWD")));
|
dataStack.setDailyDischargeCycles(StringUtils.getLong(obj.get("DTFDCS")));
|
||||||
dataStack.setBmsStatus(StringUtils.getString(obj.get("BMSDDQZT")));
|
dataStack.setDailyChargeCycles(StringUtils.getLong(obj.get("DTCDCS")));
|
||||||
dataStack.setBmsChargeStatus(StringUtils.getString(obj.get("BMSCFDZT")));
|
dataStack.setDailyDischargeCapacity(StringUtils.getBigDecimal(obj.get("DTFDDL")));
|
||||||
dataStack.setStackInsulationResistance(StringUtils.getBigDecimal(obj.get("DCDJYDZ")));
|
dataStack.setDailyChargeCapacity(StringUtils.getBigDecimal(obj.get("DTCDDL")));
|
||||||
|
|
||||||
|
// 系统状态
|
||||||
|
dataStack.setOperatingTemp(StringUtils.getBigDecimal(obj.get("YXWD")));
|
||||||
|
dataStack.setBmsStatus(StringUtils.getString(obj.get("BMSDDQZT")));
|
||||||
|
dataStack.setBmsChargeStatus(StringUtils.getString(obj.get("BMSCFDZT")));
|
||||||
|
dataStack.setStackInsulationResistance(StringUtils.getBigDecimal(obj.get("DCDJYDZ")));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
dataStack.setCreateBy("system");
|
dataStack.setCreateBy("system");
|
||||||
@ -264,8 +298,41 @@ public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor impl
|
|||||||
emsBatteryStackMapper.insertEmsBatteryStack(dataStack);
|
emsBatteryStackMapper.insertEmsBatteryStack(dataStack);
|
||||||
|
|
||||||
redisCache.setCacheObject(RedisKeyConstants.STACK + SITE_ID + "_" +deviceId, dataStack);
|
redisCache.setCacheObject(RedisKeyConstants.STACK + SITE_ID + "_" +deviceId, dataStack);
|
||||||
|
|
||||||
|
saveDevicePointMatchData(pointMatchList, deviceId, DeviceMatchTable.STACK, "BMSD");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void saveDeviceData(List<EmsPointMatch> pointMatchList, Map<String, Object> obj, Object entity) {
|
||||||
|
Map<String, String> pointMatchMap = pointMatchList.stream().collect(Collectors.toMap(data -> StringUtils.toCamelCase(data.getMatchField()), EmsPointMatch::getDataPoint));
|
||||||
|
Field[] fields = entity.getClass().getDeclaredFields();
|
||||||
|
for (Field field : fields) {
|
||||||
|
if (pointMatchMap.containsKey(field.getName())) {
|
||||||
|
field.setAccessible(true);
|
||||||
|
try {
|
||||||
|
Object matchValue = obj.get(pointMatchMap.get(field.getName()));
|
||||||
|
Class<?> fieldType = field.getType();
|
||||||
|
if (String.class.equals(fieldType)) {
|
||||||
|
matchValue = StringUtils.getString(matchValue);
|
||||||
|
} else if (Long.class.equals(fieldType)) {
|
||||||
|
matchValue = StringUtils.getLong(matchValue);
|
||||||
|
} else if (BigDecimal.class.equals(fieldType)) {
|
||||||
|
matchValue = StringUtils.getBigDecimal(matchValue);
|
||||||
|
}
|
||||||
|
field.set(entity, matchValue);
|
||||||
|
} catch (IllegalAccessException e) {
|
||||||
|
log.warn("batteryStackDataProcess 设置字段值时出错", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void saveDevicePointMatchData(List<EmsPointMatch> pointMatchList, String deviceId,
|
||||||
|
DeviceMatchTable pointMatchType, String dataDevice){
|
||||||
|
if (CollectionUtils.isNotEmpty(pointMatchList)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
devicePointMatchDataProcessor.saveDevicePointMatch(SITE_ID, deviceId, pointMatchType, dataDevice);
|
||||||
|
}
|
||||||
|
|
||||||
private void batteryClusterDataProcess(String deviceId, String dataJson) {
|
private void batteryClusterDataProcess(String deviceId, String dataJson) {
|
||||||
|
|
||||||
@ -283,43 +350,59 @@ public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor impl
|
|||||||
}
|
}
|
||||||
//BMS 电池簇
|
//BMS 电池簇
|
||||||
EmsBatteryCluster data = new EmsBatteryCluster();
|
EmsBatteryCluster data = new EmsBatteryCluster();
|
||||||
// 设置所有 BigDecimal 类型字段为 ZERO
|
// 点位匹配数据
|
||||||
data.setChargeableCapacity(StringUtils.getBigDecimal(obj.get("KCDL")));
|
List<EmsPointMatch> pointMatchList = devicePointMatchDataProcessor.getDevicePointMatch(SITE_ID, deviceId, DeviceMatchTable.CLUSTER.getCode());
|
||||||
data.setClusterVoltage(StringUtils.getBigDecimal(obj.get("ZDY")));
|
if (CollectionUtils.isNotEmpty(pointMatchList)) {
|
||||||
data.setClusterCurrent(StringUtils.getBigDecimal(obj.get("ZDL")));
|
saveDeviceData(pointMatchList, obj, data);
|
||||||
data.setTotalChargedCapacity(StringUtils.getBigDecimal(obj.get("LJCDDL")));
|
} else {
|
||||||
data.setDischargeableCapacity(StringUtils.getBigDecimal(obj.get("KFDL")));
|
|
||||||
data.setTotalDischargedCapacity(StringUtils.getBigDecimal(obj.get("LJFDDL")));
|
// 设置所有 BigDecimal 类型字段为 ZERO
|
||||||
data.setSoh(StringUtils.getBigDecimal(obj.get("ZSOH")));
|
data.setChargeableCapacity(StringUtils.getBigDecimal(obj.get("KCDL")));
|
||||||
data.setAverageTemperature(StringUtils.getBigDecimal(obj.get("MKWD")));
|
data.setClusterVoltage(StringUtils.getBigDecimal(obj.get("ZDY")));
|
||||||
data.setInsulationResistance(StringUtils.getBigDecimal(obj.get("ZJYDZ")));
|
data.setClusterCurrent(StringUtils.getBigDecimal(obj.get("ZDL")));
|
||||||
data.setCurrentSoc(StringUtils.getBigDecimal(obj.get("ZSOC")));
|
data.setTotalChargedCapacity(StringUtils.getBigDecimal(obj.get("LJCDDL")));
|
||||||
data.setMaxAllowedChargePower(StringUtils.getBigDecimal(obj.get("YXCDZDGL")));
|
data.setDischargeableCapacity(StringUtils.getBigDecimal(obj.get("KFDL")));
|
||||||
data.setMaxAllowedDischargePower(StringUtils.getBigDecimal(obj.get("YXFDZDGL")));
|
data.setTotalDischargedCapacity(StringUtils.getBigDecimal(obj.get("LJFDDL")));
|
||||||
data.setMaxAllowedChargeVoltage(StringUtils.getBigDecimal(obj.get("YXCDZDDY")));
|
data.setSoh(StringUtils.getBigDecimal(obj.get("ZSOH")));
|
||||||
data.setMaxAllowedDischargeVoltage(StringUtils.getBigDecimal(obj.get("YXFDZDDY")));
|
data.setAverageTemperature(StringUtils.getBigDecimal(obj.get("MKWD")));
|
||||||
data.setMaxAllowedChargeCurrent(StringUtils.getBigDecimal(obj.get("YXCDZDDL")));
|
data.setInsulationResistance(StringUtils.getBigDecimal(obj.get("ZJYDZ")));
|
||||||
data.setMaxAllowedDischargeCurrent(StringUtils.getBigDecimal(obj.get("YXFDZDDL")));
|
data.setCurrentSoc(StringUtils.getBigDecimal(obj.get("ZSOC")));
|
||||||
data.setBatteryPackVoltage(StringUtils.getBigDecimal(obj.get("ZDY")));
|
data.setMaxAllowedChargePower(StringUtils.getBigDecimal(obj.get("YXCDZDGL")));
|
||||||
data.setBatteryPackCurrent(StringUtils.getBigDecimal(obj.get("ZDL")));
|
data.setMaxAllowedDischargePower(StringUtils.getBigDecimal(obj.get("YXFDZDGL")));
|
||||||
data.setBatteryPackTemp(StringUtils.getBigDecimal(obj.get("MKWD")));
|
data.setMaxAllowedChargeVoltage(StringUtils.getBigDecimal(obj.get("YXCDZDDY")));
|
||||||
data.setBatteryPackSoc(StringUtils.getBigDecimal(obj.get("ZSOC")));
|
data.setMaxAllowedDischargeVoltage(StringUtils.getBigDecimal(obj.get("YXFDZDDY")));
|
||||||
data.setBatteryPackSoh(StringUtils.getBigDecimal(obj.get("ZSOH")));
|
data.setMaxAllowedChargeCurrent(StringUtils.getBigDecimal(obj.get("YXCDZDDL")));
|
||||||
data.setBatteryPackInsulationResistance(StringUtils.getBigDecimal(obj.get("ZJYDZ")));
|
data.setMaxAllowedDischargeCurrent(StringUtils.getBigDecimal(obj.get("YXFDZDDL")));
|
||||||
data.setAvgCellVoltage(StringUtils.getBigDecimal(obj.get("PJDTDY")));
|
data.setBatteryPackVoltage(StringUtils.getBigDecimal(obj.get("ZDY")));
|
||||||
data.setAvgCellTemp(StringUtils.getBigDecimal(obj.get("PJDTWD")));
|
data.setBatteryPackCurrent(StringUtils.getBigDecimal(obj.get("ZDL")));
|
||||||
data.setMaxCellVoltage(StringUtils.getBigDecimal(obj.get("ZGDTDY")));
|
data.setBatteryPackTemp(StringUtils.getBigDecimal(obj.get("MKWD")));
|
||||||
data.setMinCellVoltage(StringUtils.getBigDecimal(obj.get("ZDDTDY")));
|
data.setBatteryPackSoc(StringUtils.getBigDecimal(obj.get("ZSOC")));
|
||||||
data.setMaxCellTemp(StringUtils.getBigDecimal(obj.get("ZGDTWD")));
|
data.setBatteryPackSoh(StringUtils.getBigDecimal(obj.get("ZSOH")));
|
||||||
data.setMinCellTemp(StringUtils.getBigDecimal(obj.get("ZDDTWD")));
|
data.setBatteryPackInsulationResistance(StringUtils.getBigDecimal(obj.get("ZJYDZ")));
|
||||||
data.setMaxCellSoc(StringUtils.getBigDecimal(obj.get("ZGDTSOC")));
|
data.setAvgCellVoltage(StringUtils.getBigDecimal(obj.get("PJDTDY")));
|
||||||
data.setMinCellSoc(StringUtils.getBigDecimal(obj.get("ZDDTSOC")));
|
data.setAvgCellTemp(StringUtils.getBigDecimal(obj.get("PJDTWD")));
|
||||||
data.setMaxCellSoh(StringUtils.getBigDecimal(obj.get("ZGDTSOH")));
|
data.setMaxCellVoltage(StringUtils.getBigDecimal(obj.get("ZGDTDY")));
|
||||||
data.setMinCellSoh(StringUtils.getBigDecimal(obj.get("ZDDTSOH")));
|
data.setMinCellVoltage(StringUtils.getBigDecimal(obj.get("ZDDTDY")));
|
||||||
data.setTotalChargeEnergy(StringUtils.getBigDecimal(obj.get("DCLJCDDL")));
|
data.setMaxCellTemp(StringUtils.getBigDecimal(obj.get("ZGDTWD")));
|
||||||
data.setTotalDischargeEnergy(StringUtils.getBigDecimal(obj.get("DCLJFDDL")));
|
data.setMinCellTemp(StringUtils.getBigDecimal(obj.get("ZDDTWD")));
|
||||||
|
data.setMaxCellSoc(StringUtils.getBigDecimal(obj.get("ZGDTSOC")));
|
||||||
|
data.setMinCellSoc(StringUtils.getBigDecimal(obj.get("ZDDTSOC")));
|
||||||
|
data.setMaxCellSoh(StringUtils.getBigDecimal(obj.get("ZGDTSOH")));
|
||||||
|
data.setMinCellSoh(StringUtils.getBigDecimal(obj.get("ZDDTSOH")));
|
||||||
|
data.setTotalChargeEnergy(StringUtils.getBigDecimal(obj.get("DCLJCDDL")));
|
||||||
|
data.setTotalDischargeEnergy(StringUtils.getBigDecimal(obj.get("DCLJFDDL")));
|
||||||
|
|
||||||
|
// 其他非 BigDecimal 字段
|
||||||
|
data.setMaxCellVoltageId(StringUtils.getString(obj.get("ZGDTDYDYD")));
|
||||||
|
data.setMinCellVoltageId(StringUtils.getString(obj.get("ZDDTDYDYD")));
|
||||||
|
data.setMaxCellTempId(StringUtils.getString(obj.get("ZGDTWDDYD")));
|
||||||
|
data.setMinCellTempId(StringUtils.getString(obj.get("ZDDTWDDYD")));
|
||||||
|
data.setMaxCellSocId(StringUtils.getString(obj.get("ZGDTSOCDYD")));
|
||||||
|
data.setMinCellSocId(StringUtils.getString(obj.get("ZDDTSOCDYD")));
|
||||||
|
data.setMaxCellSohId(StringUtils.getString(obj.get("ZGDTSOHDYD")));
|
||||||
|
data.setMinCellSohId(StringUtils.getString(obj.get("ZDDTSOHDYD")));
|
||||||
|
}
|
||||||
|
|
||||||
// 其他非 BigDecimal 字段
|
|
||||||
data.setWorkStatus(WorkStatus.NORMAL.getCode()); // 或其他默认值
|
data.setWorkStatus(WorkStatus.NORMAL.getCode()); // 或其他默认值
|
||||||
data.setPcsCommunicationStatus(CommunicationStatus.OK.getCode());
|
data.setPcsCommunicationStatus(CommunicationStatus.OK.getCode());
|
||||||
data.setEmsCommunicationStatus(CommunicationStatus.OK.getCode());
|
data.setEmsCommunicationStatus(CommunicationStatus.OK.getCode());
|
||||||
@ -329,14 +412,6 @@ public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor impl
|
|||||||
data.setUpdateTime(DateUtils.getNowDate());
|
data.setUpdateTime(DateUtils.getNowDate());
|
||||||
data.setSiteId(SITE_ID);
|
data.setSiteId(SITE_ID);
|
||||||
data.setDeviceId(deviceId);
|
data.setDeviceId(deviceId);
|
||||||
data.setMaxCellVoltageId(StringUtils.getString(obj.get("ZGDTDYDYD")));
|
|
||||||
data.setMinCellVoltageId(StringUtils.getString(obj.get("ZDDTDYDYD")));
|
|
||||||
data.setMaxCellTempId(StringUtils.getString(obj.get("ZGDTWDDYD")));
|
|
||||||
data.setMinCellTempId(StringUtils.getString(obj.get("ZDDTWDDYD")));
|
|
||||||
data.setMaxCellSocId(StringUtils.getString(obj.get("ZGDTSOCDYD")));
|
|
||||||
data.setMinCellSocId(StringUtils.getString(obj.get("ZDDTSOCDYD")));
|
|
||||||
data.setMaxCellSohId(StringUtils.getString(obj.get("ZGDTSOHDYD")));
|
|
||||||
data.setMinCellSohId(StringUtils.getString(obj.get("ZDDTSOHDYD")));
|
|
||||||
if (StringUtils.isNotBlank(stackDeviceId)) {
|
if (StringUtils.isNotBlank(stackDeviceId)) {
|
||||||
data.setStackDeviceId(stackDeviceId);
|
data.setStackDeviceId(stackDeviceId);
|
||||||
} else {
|
} else {
|
||||||
@ -346,6 +421,7 @@ public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor impl
|
|||||||
|
|
||||||
redisCache.setCacheObject(RedisKeyConstants.CLUSTER + SITE_ID + "_" +deviceId, data);
|
redisCache.setCacheObject(RedisKeyConstants.CLUSTER + SITE_ID + "_" +deviceId, data);
|
||||||
|
|
||||||
|
saveDevicePointMatchData(pointMatchList, deviceId, DeviceMatchTable.CLUSTER, "BMSC");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void batteryDataProcess(String deviceId, String dataJson, Date dataUpdateTime) {
|
private void batteryDataProcess(String deviceId, String dataJson, Date dataUpdateTime) {
|
||||||
@ -368,6 +444,8 @@ public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor impl
|
|||||||
LocalDateTime oneHourAgo = LocalDateTime.now().minus(1, ChronoUnit.HOURS);
|
LocalDateTime oneHourAgo = LocalDateTime.now().minus(1, ChronoUnit.HOURS);
|
||||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
||||||
String oneHourAgoStr = oneHourAgo.format(formatter);
|
String oneHourAgoStr = oneHourAgo.format(formatter);
|
||||||
|
// 点位匹配数据
|
||||||
|
List<EmsPointMatch> pointMatchList = devicePointMatchDataProcessor.getDevicePointMatch(SITE_ID, deviceId, DeviceMatchTable.BATTERY.getCode());
|
||||||
//单体电池
|
//单体电池
|
||||||
for (Map.Entry<String, Map<String, Object>> record : records.entrySet()) {
|
for (Map.Entry<String, Map<String, Object>> record : records.entrySet()) {
|
||||||
String recordId = record.getKey();
|
String recordId = record.getKey();
|
||||||
@ -376,10 +454,15 @@ public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor impl
|
|||||||
EmsBatteryData batteryData = new EmsBatteryData();
|
EmsBatteryData batteryData = new EmsBatteryData();
|
||||||
batteryData.setDeviceId(recordId);
|
batteryData.setDeviceId(recordId);
|
||||||
batteryData.setBatteryCellId(recordId);
|
batteryData.setBatteryCellId(recordId);
|
||||||
batteryData.setSoc(StringUtils.getBigDecimal(fields.get("DTSOC")));
|
|
||||||
batteryData.setSoh(StringUtils.getBigDecimal(fields.get("DTSOH")));
|
if (CollectionUtils.isNotEmpty(pointMatchList)) {
|
||||||
batteryData.setTemperature(StringUtils.getBigDecimal(fields.get("DTWD")));
|
saveDeviceData(pointMatchList, fields, batteryData);
|
||||||
batteryData.setVoltage(StringUtils.getBigDecimal(fields.get("DTDY")));
|
} else {
|
||||||
|
batteryData.setSoc(StringUtils.getBigDecimal(fields.get("DTSOC")));
|
||||||
|
batteryData.setSoh(StringUtils.getBigDecimal(fields.get("DTSOH")));
|
||||||
|
batteryData.setTemperature(StringUtils.getBigDecimal(fields.get("DTWD")));
|
||||||
|
batteryData.setVoltage(StringUtils.getBigDecimal(fields.get("DTDY")));
|
||||||
|
}
|
||||||
|
|
||||||
batteryData.setBatteryCluster(deviceId);
|
batteryData.setBatteryCluster(deviceId);
|
||||||
batteryData.setBatteryPack(stackDeviceId);
|
batteryData.setBatteryPack(stackDeviceId);
|
||||||
@ -412,6 +495,8 @@ public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor impl
|
|||||||
|
|
||||||
redisCache.deleteList(RedisKeyConstants.BATTERY + SITE_ID + "_" + deviceId);
|
redisCache.deleteList(RedisKeyConstants.BATTERY + SITE_ID + "_" + deviceId);
|
||||||
redisCache.setCacheList(RedisKeyConstants.BATTERY + SITE_ID + "_" + deviceId, list);
|
redisCache.setCacheList(RedisKeyConstants.BATTERY + SITE_ID + "_" + deviceId, list);
|
||||||
|
|
||||||
|
saveDevicePointMatchData(pointMatchList, deviceId, DeviceMatchTable.BATTERY, "BMSC");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 批量处理每日最新数据
|
// 批量处理每日最新数据
|
||||||
@ -434,8 +519,67 @@ public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor impl
|
|||||||
private void pcsDataProcess(String deviceId, String dataJson, Date dataUpdateTime) {
|
private void pcsDataProcess(String deviceId, String dataJson, Date dataUpdateTime) {
|
||||||
Map<String, Object> obj = JSON.parseObject(dataJson, new TypeReference<Map<String, Object>>() {
|
Map<String, Object> obj = JSON.parseObject(dataJson, new TypeReference<Map<String, Object>>() {
|
||||||
});
|
});
|
||||||
|
|
||||||
//pcs
|
//pcs
|
||||||
EmsPcsData pcsData = new EmsPcsData();
|
EmsPcsData pcsData = new EmsPcsData();
|
||||||
|
|
||||||
|
// 点位匹配数据
|
||||||
|
List<EmsPointMatch> pointMatchList = devicePointMatchDataProcessor.getDevicePointMatch(SITE_ID, deviceId, DeviceMatchTable.PCS.getCode());
|
||||||
|
if (CollectionUtils.isNotEmpty(pointMatchList)) {
|
||||||
|
saveDeviceData(pointMatchList, obj, pcsData);
|
||||||
|
} else {
|
||||||
|
|
||||||
|
// 功率与能量类字段
|
||||||
|
pcsData.setTotalActivePower(StringUtils.getBigDecimal(obj.get("YGGL")));
|
||||||
|
pcsData.setDailyAcChargeEnergy(StringUtils.getBigDecimal(obj.get("RCDL")));
|
||||||
|
pcsData.setTotalReactivePower(StringUtils.getBigDecimal(obj.get("XTWGGL")));
|
||||||
|
pcsData.setDailyAcDischargeEnergy(StringUtils.getBigDecimal(obj.get("RFDL")));
|
||||||
|
pcsData.setTotalApparentPower(StringUtils.getBigDecimal(obj.get("XTSZGL")));
|
||||||
|
pcsData.setTotalPowerFactor(StringUtils.getBigDecimal(obj.get("GLYS")));
|
||||||
|
pcsData.setDcPower(StringUtils.getBigDecimal(obj.get("XTSZGL")));
|
||||||
|
pcsData.setTotalAcChargeEnergy(StringUtils.getBigDecimal(obj.get("ZCDL")));
|
||||||
|
pcsData.setTotalAcDischargeEnergy(StringUtils.getBigDecimal(obj.get("ZFDL")));
|
||||||
|
pcsData.setAcChargeActivePower(StringUtils.getBigDecimal(obj.get("JLCCDYGGL")));
|
||||||
|
pcsData.setAcCapacitiveReactivePower(StringUtils.getBigDecimal(obj.get("JLCRXWGGL")));
|
||||||
|
pcsData.setAcDischargeActivePower(StringUtils.getBigDecimal(obj.get("JLCFDYGGL")));
|
||||||
|
pcsData.setAcInductiveReactivePower(StringUtils.getBigDecimal(obj.get("JLCGXWGGL")));
|
||||||
|
pcsData.setMaxCapacitivePowerCapacity(StringUtils.getBigDecimal(obj.get("ZDRXWGNL")));
|
||||||
|
pcsData.setMaxInductivePowerCapacity(StringUtils.getBigDecimal(obj.get("ZDGXWGNL")));
|
||||||
|
pcsData.setMaxChargePowerCapacity(StringUtils.getBigDecimal(obj.get("ZDKCGL")));
|
||||||
|
pcsData.setMaxDischargePowerCapacity(StringUtils.getBigDecimal(obj.get("ZDKFGL")));
|
||||||
|
|
||||||
|
|
||||||
|
// 温度与环境参数
|
||||||
|
// pcsData.setPcsModuleTemperature(StringUtils.getBigDecimal(obj.get("ChargeableCapacity")));
|
||||||
|
// pcsData.setPcsEnvironmentTemperature(StringUtils.getBigDecimal(obj.get("ChargeableCapacity")));
|
||||||
|
// pcsData.setAcFrequency(StringUtils.getBigDecimal(obj.get("ChargeableCapacity")));
|
||||||
|
|
||||||
|
// 状态指示类
|
||||||
|
pcsData.setBranchStatus(BranchStatus.NORMAL.getCode());
|
||||||
|
pcsData.setDischargeStatus(ChargeStatus.CHARGING.getCode());
|
||||||
|
String acSwitchStatus = StringUtils.getString(obj.get("JLKGZT"));
|
||||||
|
pcsData.setAcSwitchStatus(SwitchStatus.CLOSED.getCode());
|
||||||
|
String dcSwitchStatus = StringUtils.getString(obj.get("ZLKGZT"));
|
||||||
|
pcsData.setDcSwitchStatus(SwitchStatus.CLOSED.getCode());
|
||||||
|
String controlMode = StringUtils.getString(obj.get("YCTT"));
|
||||||
|
pcsData.setRemoteControlStatus(ControlModeStatus.REMOTE.getCode());
|
||||||
|
|
||||||
|
// 电流参数
|
||||||
|
pcsData.setSysUCurrent(StringUtils.getBigDecimal(obj.get("XTSCUXDL")));
|
||||||
|
pcsData.setSysVCurrent(StringUtils.getBigDecimal(obj.get("XTSCVXDL")));
|
||||||
|
pcsData.setSysWCurrent(StringUtils.getBigDecimal(obj.get("XTSCWXDL")));
|
||||||
|
|
||||||
|
// 直流参数
|
||||||
|
// pcsData.setDcVoltage(StringUtils.getBigDecimal(obj.get("ChargeableCapacity")));
|
||||||
|
// pcsData.setDcCurrent(StringUtils.getBigDecimal(obj.get("ChargeableCapacity")));
|
||||||
|
|
||||||
|
// 三相温度
|
||||||
|
pcsData.setuTemperature(StringUtils.getBigDecimal(obj.get("DY1UXIGBTWD")));
|
||||||
|
pcsData.setvTemperature(StringUtils.getBigDecimal(obj.get("DY1VXIGBTWD")));
|
||||||
|
pcsData.setwTemperature(StringUtils.getBigDecimal(obj.get("DY1WXIGBTWD")));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// 时间与状态类字段
|
// 时间与状态类字段
|
||||||
pcsData.setDataUpdateTime(dataUpdateTime);
|
pcsData.setDataUpdateTime(dataUpdateTime);
|
||||||
pcsData.setWorkStatus(WorkStatus.NORMAL.getCode());
|
pcsData.setWorkStatus(WorkStatus.NORMAL.getCode());
|
||||||
@ -443,55 +587,6 @@ public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor impl
|
|||||||
pcsData.setDeviceStatus(DeviceRunningStatus.RUNNING.getCode());
|
pcsData.setDeviceStatus(DeviceRunningStatus.RUNNING.getCode());
|
||||||
pcsData.setControlMode(ControlModeStatus.REMOTE.getCode());
|
pcsData.setControlMode(ControlModeStatus.REMOTE.getCode());
|
||||||
|
|
||||||
// 功率与能量类字段
|
|
||||||
pcsData.setTotalActivePower(StringUtils.getBigDecimal(obj.get("YGGL")));
|
|
||||||
pcsData.setDailyAcChargeEnergy(StringUtils.getBigDecimal(obj.get("RCDL")));
|
|
||||||
pcsData.setTotalReactivePower(StringUtils.getBigDecimal(obj.get("XTWGGL")));
|
|
||||||
pcsData.setDailyAcDischargeEnergy(StringUtils.getBigDecimal(obj.get("RFDL")));
|
|
||||||
pcsData.setTotalApparentPower(StringUtils.getBigDecimal(obj.get("XTSZGL")));
|
|
||||||
pcsData.setTotalPowerFactor(StringUtils.getBigDecimal(obj.get("GLYS")));
|
|
||||||
pcsData.setDcPower(StringUtils.getBigDecimal(obj.get("XTSZGL")));
|
|
||||||
pcsData.setTotalAcChargeEnergy(StringUtils.getBigDecimal(obj.get("ZCDL")));
|
|
||||||
pcsData.setTotalAcDischargeEnergy(StringUtils.getBigDecimal(obj.get("ZFDL")));
|
|
||||||
pcsData.setAcChargeActivePower(StringUtils.getBigDecimal(obj.get("JLCCDYGGL")));
|
|
||||||
pcsData.setAcCapacitiveReactivePower(StringUtils.getBigDecimal(obj.get("JLCRXWGGL")));
|
|
||||||
pcsData.setAcDischargeActivePower(StringUtils.getBigDecimal(obj.get("JLCFDYGGL")));
|
|
||||||
pcsData.setAcInductiveReactivePower(StringUtils.getBigDecimal(obj.get("JLCGXWGGL")));
|
|
||||||
pcsData.setMaxCapacitivePowerCapacity(StringUtils.getBigDecimal(obj.get("ZDRXWGNL")));
|
|
||||||
pcsData.setMaxInductivePowerCapacity(StringUtils.getBigDecimal(obj.get("ZDGXWGNL")));
|
|
||||||
pcsData.setMaxChargePowerCapacity(StringUtils.getBigDecimal(obj.get("ZDKCGL")));
|
|
||||||
pcsData.setMaxDischargePowerCapacity(StringUtils.getBigDecimal(obj.get("ZDKFGL")));
|
|
||||||
|
|
||||||
|
|
||||||
// 温度与环境参数
|
|
||||||
// pcsData.setPcsModuleTemperature(StringUtils.getBigDecimal(obj.get("ChargeableCapacity")));
|
|
||||||
// pcsData.setPcsEnvironmentTemperature(StringUtils.getBigDecimal(obj.get("ChargeableCapacity")));
|
|
||||||
// pcsData.setAcFrequency(StringUtils.getBigDecimal(obj.get("ChargeableCapacity")));
|
|
||||||
|
|
||||||
// 状态指示类
|
|
||||||
pcsData.setBranchStatus(BranchStatus.NORMAL.getCode());
|
|
||||||
pcsData.setDischargeStatus(ChargeStatus.CHARGING.getCode());
|
|
||||||
String acSwitchStatus = StringUtils.getString(obj.get("JLKGZT"));
|
|
||||||
pcsData.setAcSwitchStatus(SwitchStatus.CLOSED.getCode());
|
|
||||||
String dcSwitchStatus = StringUtils.getString(obj.get("ZLKGZT"));
|
|
||||||
pcsData.setDcSwitchStatus(SwitchStatus.CLOSED.getCode());
|
|
||||||
String controlMode = StringUtils.getString(obj.get("YCTT"));
|
|
||||||
pcsData.setRemoteControlStatus(ControlModeStatus.REMOTE.getCode());
|
|
||||||
|
|
||||||
// 电流参数
|
|
||||||
pcsData.setSysUCurrent(StringUtils.getBigDecimal(obj.get("XTSCUXDL")));
|
|
||||||
pcsData.setSysVCurrent(StringUtils.getBigDecimal(obj.get("XTSCVXDL")));
|
|
||||||
pcsData.setSysWCurrent(StringUtils.getBigDecimal(obj.get("XTSCWXDL")));
|
|
||||||
|
|
||||||
// 直流参数
|
|
||||||
// pcsData.setDcVoltage(StringUtils.getBigDecimal(obj.get("ChargeableCapacity")));
|
|
||||||
// pcsData.setDcCurrent(StringUtils.getBigDecimal(obj.get("ChargeableCapacity")));
|
|
||||||
|
|
||||||
// 三相温度
|
|
||||||
pcsData.setuTemperature(StringUtils.getBigDecimal(obj.get("DY1UXIGBTWD")));
|
|
||||||
pcsData.setvTemperature(StringUtils.getBigDecimal(obj.get("DY1VXIGBTWD")));
|
|
||||||
pcsData.setwTemperature(StringUtils.getBigDecimal(obj.get("DY1WXIGBTWD")));
|
|
||||||
|
|
||||||
// 系统管理字段
|
// 系统管理字段
|
||||||
pcsData.setCreateBy("system");
|
pcsData.setCreateBy("system");
|
||||||
pcsData.setCreateTime(DateUtils.getNowDate());
|
pcsData.setCreateTime(DateUtils.getNowDate());
|
||||||
@ -504,13 +599,15 @@ public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor impl
|
|||||||
|
|
||||||
emsPcsDataMapper.insertEmsPcsData(pcsData);
|
emsPcsDataMapper.insertEmsPcsData(pcsData);
|
||||||
redisCache.setCacheObject(RedisKeyConstants.PCS + SITE_ID + "_" +deviceId, pcsData);
|
redisCache.setCacheObject(RedisKeyConstants.PCS + SITE_ID + "_" +deviceId, pcsData);
|
||||||
|
saveDevicePointMatchData(pointMatchList, deviceId, DeviceMatchTable.PCS, "PCS");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void pcsBranchDataProcess(String deviceId, String dataJson) {
|
private void pcsBranchDataProcess(String deviceId, String dataJson) {
|
||||||
|
|
||||||
Map<String, Map<String, Object>> records = processDataPrefix(JSON.parseObject(dataJson, new TypeReference<Map<String, Object>>() {}));
|
Map<String, Map<String, Object>> records = processDataPrefix(JSON.parseObject(dataJson, new TypeReference<Map<String, Object>>() {}));
|
||||||
List<EmsPcsBranchData> list = new ArrayList<>();
|
List<EmsPcsBranchData> list = new ArrayList<>();
|
||||||
|
// 点位匹配数据
|
||||||
|
List<EmsPointMatch> pointMatchList = devicePointMatchDataProcessor.getDevicePointMatch(SITE_ID, deviceId, DeviceMatchTable.BRANCH.getCode());
|
||||||
|
|
||||||
//PCS支路
|
//PCS支路
|
||||||
for (Map.Entry<String, Map<String, Object>> record : records.entrySet()) {
|
for (Map.Entry<String, Map<String, Object>> record : records.entrySet()) {
|
||||||
@ -521,28 +618,32 @@ public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor impl
|
|||||||
data.setDeviceId(deviceId);
|
data.setDeviceId(deviceId);
|
||||||
data.setSiteId(SITE_ID);
|
data.setSiteId(SITE_ID);
|
||||||
data.setGridStatus(GridStatus.GRID.getCode());
|
data.setGridStatus(GridStatus.GRID.getCode());
|
||||||
data.setDcPower(StringUtils.getBigDecimal(fields.get("ZLGL")));
|
if (CollectionUtils.isNotEmpty(pointMatchList)) {
|
||||||
data.setDcVoltage(StringUtils.getBigDecimal(fields.get("ZLDY")));
|
saveDeviceData(pointMatchList, fields, data);
|
||||||
data.setDcCurrent(StringUtils.getBigDecimal(fields.get("ZLDL")));
|
} else {
|
||||||
data.setGridUVoltage(StringUtils.getBigDecimal(fields.get("DWUXDY")));
|
data.setDcPower(StringUtils.getBigDecimal(fields.get("ZLGL")));
|
||||||
data.setGridVVoltage(StringUtils.getBigDecimal(fields.get("DWVXDY")));
|
data.setDcVoltage(StringUtils.getBigDecimal(fields.get("ZLDY")));
|
||||||
data.setGridWVoltage(StringUtils.getBigDecimal(fields.get("DWWXDY")));
|
data.setDcCurrent(StringUtils.getBigDecimal(fields.get("ZLDL")));
|
||||||
data.setOutputUCurrent(StringUtils.getBigDecimal(fields.get("SCUXDL")));
|
data.setGridUVoltage(StringUtils.getBigDecimal(fields.get("DWUXDY")));
|
||||||
data.setOutputVCurrent(StringUtils.getBigDecimal(fields.get("SCVXDL")));
|
data.setGridVVoltage(StringUtils.getBigDecimal(fields.get("DWVXDY")));
|
||||||
data.setOutputWCurrent(StringUtils.getBigDecimal(fields.get("SCWXDL")));
|
data.setGridWVoltage(StringUtils.getBigDecimal(fields.get("DWWXDY")));
|
||||||
data.setApparentPower(StringUtils.getBigDecimal(fields.get("SZGL")));
|
data.setOutputUCurrent(StringUtils.getBigDecimal(fields.get("SCUXDL")));
|
||||||
data.setActivePower(StringUtils.getBigDecimal(fields.get("YGGL")));
|
data.setOutputVCurrent(StringUtils.getBigDecimal(fields.get("SCVXDL")));
|
||||||
data.setReactivePower(StringUtils.getBigDecimal(fields.get("WGGL")));
|
data.setOutputWCurrent(StringUtils.getBigDecimal(fields.get("SCWXDL")));
|
||||||
data.setPowerFactor(StringUtils.getBigDecimal(fields.get("GLYS")));
|
data.setApparentPower(StringUtils.getBigDecimal(fields.get("SZGL")));
|
||||||
data.setFrequency(StringUtils.getBigDecimal(fields.get("PL")));
|
data.setActivePower(StringUtils.getBigDecimal(fields.get("YGGL")));
|
||||||
data.setInternalTemp(StringUtils.getBigDecimal(fields.get("DY1WD")));
|
data.setReactivePower(StringUtils.getBigDecimal(fields.get("WGGL")));
|
||||||
data.setuIgbtTemp(StringUtils.getBigDecimal(fields.get("UXIGBTWD")));
|
data.setPowerFactor(StringUtils.getBigDecimal(fields.get("GLYS")));
|
||||||
data.setvIgbtTemp(StringUtils.getBigDecimal(fields.get("VXIGBTWD")));
|
data.setFrequency(StringUtils.getBigDecimal(fields.get("PL")));
|
||||||
data.setwIgbtTemp(StringUtils.getBigDecimal(fields.get("WXIGBTWD")));
|
data.setInternalTemp(StringUtils.getBigDecimal(fields.get("DY1WD")));
|
||||||
data.setAvailablePower(StringUtils.getBigDecimal(fields.get("KYGL")));
|
data.setuIgbtTemp(StringUtils.getBigDecimal(fields.get("UXIGBTWD")));
|
||||||
data.setTotalLoadRatio(StringUtils.getBigDecimal(fields.get("ZFZB")));
|
data.setvIgbtTemp(StringUtils.getBigDecimal(fields.get("VXIGBTWD")));
|
||||||
data.setAcLeakageCurrent(StringUtils.getBigDecimal(fields.get("JLLDL")));
|
data.setwIgbtTemp(StringUtils.getBigDecimal(fields.get("WXIGBTWD")));
|
||||||
data.setInsulationResistance(StringUtils.getBigDecimal(fields.get("JYZK")));
|
data.setAvailablePower(StringUtils.getBigDecimal(fields.get("KYGL")));
|
||||||
|
data.setTotalLoadRatio(StringUtils.getBigDecimal(fields.get("ZFZB")));
|
||||||
|
data.setAcLeakageCurrent(StringUtils.getBigDecimal(fields.get("JLLDL")));
|
||||||
|
data.setInsulationResistance(StringUtils.getBigDecimal(fields.get("JYZK")));
|
||||||
|
}
|
||||||
data.setBranchId(recordId);
|
data.setBranchId(recordId);
|
||||||
data.setCreateBy("system");
|
data.setCreateBy("system");
|
||||||
data.setCreateTime(DateUtils.getNowDate());
|
data.setCreateTime(DateUtils.getNowDate());
|
||||||
@ -555,6 +656,7 @@ public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor impl
|
|||||||
|
|
||||||
redisCache.setCacheObject(RedisKeyConstants.BRANCH + SITE_ID + "_" +deviceId, list);
|
redisCache.setCacheObject(RedisKeyConstants.BRANCH + SITE_ID + "_" +deviceId, list);
|
||||||
|
|
||||||
|
saveDevicePointMatchData(pointMatchList, deviceId, DeviceMatchTable.BRANCH, "PCS");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -569,83 +671,90 @@ public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor impl
|
|||||||
// 更新时间
|
// 更新时间
|
||||||
dataLoad.setDataUpdateTime(dataUpdateTime);
|
dataLoad.setDataUpdateTime(dataUpdateTime);
|
||||||
|
|
||||||
// 电能设置-组合有功
|
// 点位匹配数据
|
||||||
dataLoad.setCurrentCombActiveTotal(StringUtils.getBigDecimal(obj.get("DQZHYGZDN")));
|
List<EmsPointMatch> pointMatchList = devicePointMatchDataProcessor.getDevicePointMatch(SITE_ID, deviceId, DeviceMatchTable.AMMETER.getCode());
|
||||||
dataLoad.setCurrentCombActivePeak(StringUtils.getBigDecimal(obj.get("DQZHYGJDN")));
|
if (CollectionUtils.isNotEmpty(pointMatchList)) {
|
||||||
dataLoad.setCurrentCombActiveHigh(StringUtils.getBigDecimal(obj.get("DQZHYGFDN")));
|
saveDeviceData(pointMatchList, obj, dataLoad);
|
||||||
dataLoad.setCurrentCombActiveFlat(StringUtils.getBigDecimal(obj.get("DQZHYGPDN")));
|
} else {
|
||||||
dataLoad.setCurrentCombActiveValley(StringUtils.getBigDecimal(obj.get("DQZHYGGDN")));
|
|
||||||
// 电能设置-正向有功
|
|
||||||
dataLoad.setCurrentForwardActiveTotal(StringUtils.getBigDecimal(obj.get("DQZXYGZDN")));
|
|
||||||
dataLoad.setCurrentForwardActivePeak(StringUtils.getBigDecimal(obj.get("DQZXYGJDN")));
|
|
||||||
dataLoad.setCurrentForwardActiveHigh(StringUtils.getBigDecimal(obj.get("DQZXYGFDN")));
|
|
||||||
dataLoad.setCurrentForwardActiveFlat(StringUtils.getBigDecimal(obj.get("DQZXYGPDN")));
|
|
||||||
dataLoad.setCurrentForwardActiveValley(StringUtils.getBigDecimal(obj.get("DQZXYGGDN")));
|
|
||||||
// 电能设置-反向有功
|
|
||||||
dataLoad.setCurrentReverseActiveTotal(StringUtils.getBigDecimal(obj.get("DQFXYGZDN")));
|
|
||||||
dataLoad.setCurrentReverseActivePeak(StringUtils.getBigDecimal(obj.get("DQFXYGJDN")));
|
|
||||||
dataLoad.setCurrentReverseActiveHigh(StringUtils.getBigDecimal(obj.get("DQFXYGFDN")));
|
|
||||||
dataLoad.setCurrentReverseActiveFlat(StringUtils.getBigDecimal(obj.get("DQFXYGPDN")));
|
|
||||||
dataLoad.setCurrentReverseActiveValley(StringUtils.getBigDecimal(obj.get("DQFXYGGDN")));
|
|
||||||
// 电能设置-组合无功
|
|
||||||
dataLoad.setCurrentCombReactiveTotal(StringUtils.getBigDecimal(obj.get("DQZHWGZDN")));
|
|
||||||
dataLoad.setCurrentCombReactivePeak(StringUtils.getBigDecimal(obj.get("DQZHWGJDN")));
|
|
||||||
dataLoad.setCurrentCombReactiveHigh(StringUtils.getBigDecimal(obj.get("DQZHWGFDN")));
|
|
||||||
dataLoad.setCurrentCombReactiveFlat(StringUtils.getBigDecimal(obj.get("DQZHWGPDN")));
|
|
||||||
dataLoad.setCurrentCombReactiveValley(StringUtils.getBigDecimal(obj.get("DQZHWGGDN")));
|
|
||||||
// 电能设置-正向无功
|
|
||||||
dataLoad.setCurrentForwardReactiveTotal(StringUtils.getBigDecimal(obj.get("DQZXWGZDN")));
|
|
||||||
dataLoad.setCurrentForwardReactivePeak(StringUtils.getBigDecimal(obj.get("DQZXWGJDN")));
|
|
||||||
dataLoad.setCurrentForwardReactiveHigh(StringUtils.getBigDecimal(obj.get("DQZXWGFDN")));
|
|
||||||
dataLoad.setCurrentForwardReactiveFlat(StringUtils.getBigDecimal(obj.get("DQZXWGPDN")));
|
|
||||||
dataLoad.setCurrentForwardReactiveValley(StringUtils.getBigDecimal(obj.get("DQZXWGGDN")));
|
|
||||||
// 电能设置-反向无功
|
|
||||||
dataLoad.setCurrentReverseReactiveTotal(StringUtils.getBigDecimal(obj.get("DQFXWGZDN")));
|
|
||||||
dataLoad.setCurrentReverseReactivePeak(StringUtils.getBigDecimal(obj.get("DQFXWGJDN")));
|
|
||||||
dataLoad.setCurrentReverseReactiveHigh(StringUtils.getBigDecimal(obj.get("DQFXWGFDN")));
|
|
||||||
dataLoad.setCurrentReverseReactiveFlat(StringUtils.getBigDecimal(obj.get("DQFXWGPDN")));
|
|
||||||
dataLoad.setCurrentReverseReactiveValley(StringUtils.getBigDecimal(obj.get("DQFXWGGDN")));
|
|
||||||
|
|
||||||
// 电压+电流
|
// 电能设置-组合有功
|
||||||
dataLoad.setPhaseAVoltage(StringUtils.getBigDecimal(obj.get("AXDY")));
|
dataLoad.setCurrentCombActiveTotal(StringUtils.getBigDecimal(obj.get("DQZHYGZDN")));
|
||||||
dataLoad.setPhaseBVoltage(StringUtils.getBigDecimal(obj.get("BXDY")));
|
dataLoad.setCurrentCombActivePeak(StringUtils.getBigDecimal(obj.get("DQZHYGJDN")));
|
||||||
dataLoad.setPhaseCVoltage(StringUtils.getBigDecimal(obj.get("CXDY")));
|
dataLoad.setCurrentCombActiveHigh(StringUtils.getBigDecimal(obj.get("DQZHYGFDN")));
|
||||||
dataLoad.setPhaseACurrent(StringUtils.getBigDecimal(obj.get("AXDL")));
|
dataLoad.setCurrentCombActiveFlat(StringUtils.getBigDecimal(obj.get("DQZHYGPDN")));
|
||||||
dataLoad.setPhaseBCurrent(StringUtils.getBigDecimal(obj.get("BXDL")));
|
dataLoad.setCurrentCombActiveValley(StringUtils.getBigDecimal(obj.get("DQZHYGGDN")));
|
||||||
dataLoad.setPhaseCCurrent(StringUtils.getBigDecimal(obj.get("CXDL")));
|
// 电能设置-正向有功
|
||||||
|
dataLoad.setCurrentForwardActiveTotal(StringUtils.getBigDecimal(obj.get("DQZXYGZDN")));
|
||||||
|
dataLoad.setCurrentForwardActivePeak(StringUtils.getBigDecimal(obj.get("DQZXYGJDN")));
|
||||||
|
dataLoad.setCurrentForwardActiveHigh(StringUtils.getBigDecimal(obj.get("DQZXYGFDN")));
|
||||||
|
dataLoad.setCurrentForwardActiveFlat(StringUtils.getBigDecimal(obj.get("DQZXYGPDN")));
|
||||||
|
dataLoad.setCurrentForwardActiveValley(StringUtils.getBigDecimal(obj.get("DQZXYGGDN")));
|
||||||
|
// 电能设置-反向有功
|
||||||
|
dataLoad.setCurrentReverseActiveTotal(StringUtils.getBigDecimal(obj.get("DQFXYGZDN")));
|
||||||
|
dataLoad.setCurrentReverseActivePeak(StringUtils.getBigDecimal(obj.get("DQFXYGJDN")));
|
||||||
|
dataLoad.setCurrentReverseActiveHigh(StringUtils.getBigDecimal(obj.get("DQFXYGFDN")));
|
||||||
|
dataLoad.setCurrentReverseActiveFlat(StringUtils.getBigDecimal(obj.get("DQFXYGPDN")));
|
||||||
|
dataLoad.setCurrentReverseActiveValley(StringUtils.getBigDecimal(obj.get("DQFXYGGDN")));
|
||||||
|
// 电能设置-组合无功
|
||||||
|
dataLoad.setCurrentCombReactiveTotal(StringUtils.getBigDecimal(obj.get("DQZHWGZDN")));
|
||||||
|
dataLoad.setCurrentCombReactivePeak(StringUtils.getBigDecimal(obj.get("DQZHWGJDN")));
|
||||||
|
dataLoad.setCurrentCombReactiveHigh(StringUtils.getBigDecimal(obj.get("DQZHWGFDN")));
|
||||||
|
dataLoad.setCurrentCombReactiveFlat(StringUtils.getBigDecimal(obj.get("DQZHWGPDN")));
|
||||||
|
dataLoad.setCurrentCombReactiveValley(StringUtils.getBigDecimal(obj.get("DQZHWGGDN")));
|
||||||
|
// 电能设置-正向无功
|
||||||
|
dataLoad.setCurrentForwardReactiveTotal(StringUtils.getBigDecimal(obj.get("DQZXWGZDN")));
|
||||||
|
dataLoad.setCurrentForwardReactivePeak(StringUtils.getBigDecimal(obj.get("DQZXWGJDN")));
|
||||||
|
dataLoad.setCurrentForwardReactiveHigh(StringUtils.getBigDecimal(obj.get("DQZXWGFDN")));
|
||||||
|
dataLoad.setCurrentForwardReactiveFlat(StringUtils.getBigDecimal(obj.get("DQZXWGPDN")));
|
||||||
|
dataLoad.setCurrentForwardReactiveValley(StringUtils.getBigDecimal(obj.get("DQZXWGGDN")));
|
||||||
|
// 电能设置-反向无功
|
||||||
|
dataLoad.setCurrentReverseReactiveTotal(StringUtils.getBigDecimal(obj.get("DQFXWGZDN")));
|
||||||
|
dataLoad.setCurrentReverseReactivePeak(StringUtils.getBigDecimal(obj.get("DQFXWGJDN")));
|
||||||
|
dataLoad.setCurrentReverseReactiveHigh(StringUtils.getBigDecimal(obj.get("DQFXWGFDN")));
|
||||||
|
dataLoad.setCurrentReverseReactiveFlat(StringUtils.getBigDecimal(obj.get("DQFXWGPDN")));
|
||||||
|
dataLoad.setCurrentReverseReactiveValley(StringUtils.getBigDecimal(obj.get("DQFXWGGDN")));
|
||||||
|
|
||||||
dataLoad.setAbLineVoltage(StringUtils.getBigDecimal(obj.get("ABXDY")));
|
// 电压+电流
|
||||||
dataLoad.setCbLineVoltage(StringUtils.getBigDecimal(obj.get("CBXDY")));
|
dataLoad.setPhaseAVoltage(StringUtils.getBigDecimal(obj.get("AXDY")));
|
||||||
dataLoad.setAcLineVoltage(StringUtils.getBigDecimal(obj.get("ACXDY")));
|
dataLoad.setPhaseBVoltage(StringUtils.getBigDecimal(obj.get("BXDY")));
|
||||||
|
dataLoad.setPhaseCVoltage(StringUtils.getBigDecimal(obj.get("CXDY")));
|
||||||
|
dataLoad.setPhaseACurrent(StringUtils.getBigDecimal(obj.get("AXDL")));
|
||||||
|
dataLoad.setPhaseBCurrent(StringUtils.getBigDecimal(obj.get("BXDL")));
|
||||||
|
dataLoad.setPhaseCCurrent(StringUtils.getBigDecimal(obj.get("CXDL")));
|
||||||
|
|
||||||
// 频率
|
dataLoad.setAbLineVoltage(StringUtils.getBigDecimal(obj.get("ABXDY")));
|
||||||
dataLoad.setFrequency(StringUtils.getBigDecimal(obj.get("PL")));
|
dataLoad.setCbLineVoltage(StringUtils.getBigDecimal(obj.get("CBXDY")));
|
||||||
|
dataLoad.setAcLineVoltage(StringUtils.getBigDecimal(obj.get("ACXDY")));
|
||||||
|
|
||||||
// 功率 有功+总+无功+无总+视在
|
// 频率
|
||||||
dataLoad.setPhaseAActivePower(StringUtils.getBigDecimal(obj.get("AXYGGL")));
|
dataLoad.setFrequency(StringUtils.getBigDecimal(obj.get("PL")));
|
||||||
dataLoad.setPhaseBActivePower(StringUtils.getBigDecimal(obj.get("BXYGGL")));
|
|
||||||
dataLoad.setPhaseCActivePower(StringUtils.getBigDecimal(obj.get("CXYGGL")));
|
|
||||||
dataLoad.setTotalActivePower(StringUtils.getBigDecimal(obj.get("ZYGGL")));
|
|
||||||
dataLoad.setPhaseAReactivePower(StringUtils.getBigDecimal(obj.get("AXWGGL")));
|
|
||||||
dataLoad.setPhaseBReactivePower(StringUtils.getBigDecimal(obj.get("BXWGGL")));
|
|
||||||
dataLoad.setPhaseCReactivePower(StringUtils.getBigDecimal(obj.get("CXWGGL")));
|
|
||||||
dataLoad.setTotalReactivePower(StringUtils.getBigDecimal(obj.get("ZWGGL")));
|
|
||||||
dataLoad.setPhaseAApparentPower(StringUtils.getBigDecimal(obj.get("AXSZGL")));
|
|
||||||
dataLoad.setPhaseBApparentPower(StringUtils.getBigDecimal(obj.get("BXSZGL")));
|
|
||||||
dataLoad.setPhaseCApparentPower(StringUtils.getBigDecimal(obj.get("CXSZGL")));
|
|
||||||
dataLoad.setTotalApparentPower(StringUtils.getBigDecimal(obj.get("ZSZGL")));
|
|
||||||
|
|
||||||
// 功率因数
|
// 功率 有功+总+无功+无总+视在
|
||||||
dataLoad.setPhaseAPowerFactor(StringUtils.getBigDecimal(obj.get("AXGLYS")));
|
dataLoad.setPhaseAActivePower(StringUtils.getBigDecimal(obj.get("AXYGGL")));
|
||||||
dataLoad.setPhaseBPowerFactor(StringUtils.getBigDecimal(obj.get("BXGLYS")));
|
dataLoad.setPhaseBActivePower(StringUtils.getBigDecimal(obj.get("BXYGGL")));
|
||||||
dataLoad.setPhaseCPowerFactor(StringUtils.getBigDecimal(obj.get("CXGLYS")));
|
dataLoad.setPhaseCActivePower(StringUtils.getBigDecimal(obj.get("CXYGGL")));
|
||||||
dataLoad.setTotalPowerFactor(StringUtils.getBigDecimal(obj.get("ZGLYS")));
|
dataLoad.setTotalActivePower(StringUtils.getBigDecimal(obj.get("ZYGGL")));
|
||||||
|
dataLoad.setPhaseAReactivePower(StringUtils.getBigDecimal(obj.get("AXWGGL")));
|
||||||
|
dataLoad.setPhaseBReactivePower(StringUtils.getBigDecimal(obj.get("BXWGGL")));
|
||||||
|
dataLoad.setPhaseCReactivePower(StringUtils.getBigDecimal(obj.get("CXWGGL")));
|
||||||
|
dataLoad.setTotalReactivePower(StringUtils.getBigDecimal(obj.get("ZWGGL")));
|
||||||
|
dataLoad.setPhaseAApparentPower(StringUtils.getBigDecimal(obj.get("AXSZGL")));
|
||||||
|
dataLoad.setPhaseBApparentPower(StringUtils.getBigDecimal(obj.get("BXSZGL")));
|
||||||
|
dataLoad.setPhaseCApparentPower(StringUtils.getBigDecimal(obj.get("CXSZGL")));
|
||||||
|
dataLoad.setTotalApparentPower(StringUtils.getBigDecimal(obj.get("ZSZGL")));
|
||||||
|
|
||||||
// 需量
|
// 功率因数
|
||||||
dataLoad.setForwardAcMaxDemand(StringUtils.getBigDecimal(obj.get("ZXYGZDXL")));
|
dataLoad.setPhaseAPowerFactor(StringUtils.getBigDecimal(obj.get("AXGLYS")));
|
||||||
dataLoad.setReverseAcMaxDemand(StringUtils.getBigDecimal(obj.get("FXYGZDXL")));
|
dataLoad.setPhaseBPowerFactor(StringUtils.getBigDecimal(obj.get("BXGLYS")));
|
||||||
dataLoad.setDailyForwardMaxDemand(StringUtils.getBigDecimal(obj.get("DRZXYGZDXL")));
|
dataLoad.setPhaseCPowerFactor(StringUtils.getBigDecimal(obj.get("CXGLYS")));
|
||||||
|
dataLoad.setTotalPowerFactor(StringUtils.getBigDecimal(obj.get("ZGLYS")));
|
||||||
|
|
||||||
|
// 需量
|
||||||
|
dataLoad.setForwardAcMaxDemand(StringUtils.getBigDecimal(obj.get("ZXYGZDXL")));
|
||||||
|
dataLoad.setReverseAcMaxDemand(StringUtils.getBigDecimal(obj.get("FXYGZDXL")));
|
||||||
|
dataLoad.setDailyForwardMaxDemand(StringUtils.getBigDecimal(obj.get("DRZXYGZDXL")));
|
||||||
|
|
||||||
|
}
|
||||||
dataLoad.setCreateBy("system");
|
dataLoad.setCreateBy("system");
|
||||||
dataLoad.setCreateTime(DateUtils.getNowDate());
|
dataLoad.setCreateTime(DateUtils.getNowDate());
|
||||||
dataLoad.setUpdateBy("system");
|
dataLoad.setUpdateBy("system");
|
||||||
@ -656,6 +765,8 @@ public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor impl
|
|||||||
emsAmmeterDataMapper.insertEmsAmmeterData(dataLoad);
|
emsAmmeterDataMapper.insertEmsAmmeterData(dataLoad);
|
||||||
|
|
||||||
redisCache.setCacheObject(RedisKeyConstants.AMMETER + SITE_ID + "_" +deviceId, dataLoad);
|
redisCache.setCacheObject(RedisKeyConstants.AMMETER + SITE_ID + "_" +deviceId, dataLoad);
|
||||||
|
|
||||||
|
saveDevicePointMatchData(pointMatchList, deviceId, DeviceMatchTable.AMMETER, "LOAD");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void dealFXXDailyChargeDate(String deviceId, String dataJson) {
|
private void dealFXXDailyChargeDate(String deviceId, String dataJson) {
|
||||||
@ -694,79 +805,84 @@ public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor impl
|
|||||||
EmsAmmeterData dataLoad = new EmsAmmeterData();
|
EmsAmmeterData dataLoad = new EmsAmmeterData();
|
||||||
// 更新时间
|
// 更新时间
|
||||||
dataLoad.setDataUpdateTime(dataUpdateTime);
|
dataLoad.setDataUpdateTime(dataUpdateTime);
|
||||||
|
// 点位匹配数据
|
||||||
|
List<EmsPointMatch> pointMatchList = devicePointMatchDataProcessor.getDevicePointMatch(SITE_ID, deviceId, DeviceMatchTable.AMMETER.getCode());
|
||||||
|
if (CollectionUtils.isNotEmpty(pointMatchList)) {
|
||||||
|
saveDeviceData(pointMatchList, obj, dataLoad);
|
||||||
|
} else {
|
||||||
|
// 电压+电流
|
||||||
|
dataLoad.setPhaseAVoltage(StringUtils.getBigDecimal(obj.get("AXDY")));
|
||||||
|
dataLoad.setPhaseBVoltage(StringUtils.getBigDecimal(obj.get("BXDY")));
|
||||||
|
dataLoad.setPhaseCVoltage(StringUtils.getBigDecimal(obj.get("CXDY")));
|
||||||
|
dataLoad.setPhaseACurrent(StringUtils.getBigDecimal(obj.get("AXDL")));
|
||||||
|
dataLoad.setPhaseBCurrent(StringUtils.getBigDecimal(obj.get("BXDL")));
|
||||||
|
dataLoad.setPhaseCCurrent(StringUtils.getBigDecimal(obj.get("CXDL")));
|
||||||
|
|
||||||
// 电压+电流
|
dataLoad.setAbLineVoltage(StringUtils.getBigDecimal(obj.get("ABXDY")));
|
||||||
dataLoad.setPhaseAVoltage(StringUtils.getBigDecimal(obj.get("AXDY")));
|
dataLoad.setCbLineVoltage(StringUtils.getBigDecimal(obj.get("BCXDY")));
|
||||||
dataLoad.setPhaseBVoltage(StringUtils.getBigDecimal(obj.get("BXDY")));
|
dataLoad.setAcLineVoltage(StringUtils.getBigDecimal(obj.get("CAXDY")));
|
||||||
dataLoad.setPhaseCVoltage(StringUtils.getBigDecimal(obj.get("CXDY")));
|
|
||||||
dataLoad.setPhaseACurrent(StringUtils.getBigDecimal(obj.get("AXDL")));
|
|
||||||
dataLoad.setPhaseBCurrent(StringUtils.getBigDecimal(obj.get("BXDL")));
|
|
||||||
dataLoad.setPhaseCCurrent(StringUtils.getBigDecimal(obj.get("CXDL")));
|
|
||||||
|
|
||||||
dataLoad.setAbLineVoltage(StringUtils.getBigDecimal(obj.get("ABXDY")));
|
// 频率
|
||||||
dataLoad.setCbLineVoltage(StringUtils.getBigDecimal(obj.get("BCXDY")));
|
dataLoad.setFrequency(StringUtils.getBigDecimal(obj.get("DWPL")));
|
||||||
dataLoad.setAcLineVoltage(StringUtils.getBigDecimal(obj.get("CAXDY")));
|
|
||||||
|
|
||||||
// 频率
|
// 功率
|
||||||
dataLoad.setFrequency(StringUtils.getBigDecimal(obj.get("DWPL")));
|
dataLoad.setPhaseAActivePower(StringUtils.getBigDecimal(obj.get("AXYGGL")));
|
||||||
|
dataLoad.setPhaseBActivePower(StringUtils.getBigDecimal(obj.get("BXYGGL")));
|
||||||
|
dataLoad.setPhaseCActivePower(StringUtils.getBigDecimal(obj.get("CXYGGL")));
|
||||||
|
dataLoad.setTotalActivePower(StringUtils.getBigDecimal(obj.get("ZYGGL")));
|
||||||
|
dataLoad.setPhaseAReactivePower(StringUtils.getBigDecimal(obj.get("AXWGGL")));
|
||||||
|
dataLoad.setPhaseBReactivePower(StringUtils.getBigDecimal(obj.get("BXWGGL")));
|
||||||
|
dataLoad.setPhaseCReactivePower(StringUtils.getBigDecimal(obj.get("CXWGGL")));
|
||||||
|
dataLoad.setTotalReactivePower(StringUtils.getBigDecimal(obj.get("ZWGGL")));
|
||||||
|
|
||||||
// 功率
|
dataLoad.setTotalApparentPower(StringUtils.getBigDecimal(obj.get("ZSZGL")));
|
||||||
dataLoad.setPhaseAActivePower(StringUtils.getBigDecimal(obj.get("AXYGGL")));
|
dataLoad.setTotalPowerFactor(StringUtils.getBigDecimal(obj.get("ZGLYS")));
|
||||||
dataLoad.setPhaseBActivePower(StringUtils.getBigDecimal(obj.get("BXYGGL")));
|
|
||||||
dataLoad.setPhaseCActivePower(StringUtils.getBigDecimal(obj.get("CXYGGL")));
|
|
||||||
dataLoad.setTotalActivePower(StringUtils.getBigDecimal(obj.get("ZYGGL")));
|
|
||||||
dataLoad.setPhaseAReactivePower(StringUtils.getBigDecimal(obj.get("AXWGGL")));
|
|
||||||
dataLoad.setPhaseBReactivePower(StringUtils.getBigDecimal(obj.get("BXWGGL")));
|
|
||||||
dataLoad.setPhaseCReactivePower(StringUtils.getBigDecimal(obj.get("CXWGGL")));
|
|
||||||
dataLoad.setTotalReactivePower(StringUtils.getBigDecimal(obj.get("ZWGGL")));
|
|
||||||
|
|
||||||
dataLoad.setTotalApparentPower(StringUtils.getBigDecimal(obj.get("ZSZGL")));
|
// 二次相关数据
|
||||||
dataLoad.setTotalPowerFactor(StringUtils.getBigDecimal(obj.get("ZGLYS")));
|
dataLoad.setSecondaryAbLineVoltage(StringUtils.getBigDecimal(obj.get("ECABXDY")));
|
||||||
|
dataLoad.setSecondaryAPhaseCurrent(StringUtils.getBigDecimal(obj.get("ECAXDL")));
|
||||||
|
dataLoad.setSecondaryAPhaseVoltage(StringUtils.getBigDecimal(obj.get("ECAXDY")));
|
||||||
|
dataLoad.setSecondaryAPowerFactor(StringUtils.getBigDecimal(obj.get("ECAXGLYS")));
|
||||||
|
dataLoad.setSecondaryAApparentPower(StringUtils.getBigDecimal(obj.get("ECAXSZGL")));
|
||||||
|
dataLoad.setSecondaryAReactivePower(StringUtils.getBigDecimal(obj.get("ECAXWGGL")));
|
||||||
|
dataLoad.setSecondaryAActivePower(StringUtils.getBigDecimal(obj.get("ECAXYGGL")));
|
||||||
|
dataLoad.setSecondaryBcLineVoltage(StringUtils.getBigDecimal(obj.get("ECBCXDY")));
|
||||||
|
dataLoad.setSecondaryBPhaseCurrent(StringUtils.getBigDecimal(obj.get("ECBXDL")));
|
||||||
|
dataLoad.setSecondaryBPhaseVoltage(StringUtils.getBigDecimal(obj.get("ECBXDY")));
|
||||||
|
dataLoad.setSecondaryBPowerFactor(StringUtils.getBigDecimal(obj.get("ECBXGLYS")));
|
||||||
|
dataLoad.setSecondaryBApparentPower(StringUtils.getBigDecimal(obj.get("ECBXSZGL")));
|
||||||
|
dataLoad.setSecondaryBReactivePower(StringUtils.getBigDecimal(obj.get("ECBXWGGL")));
|
||||||
|
dataLoad.setSecondaryBActivePower(StringUtils.getBigDecimal(obj.get("ECBXYGGL")));
|
||||||
|
dataLoad.setSecondaryCaLineVoltage(StringUtils.getBigDecimal(obj.get("ECCAXDY")));
|
||||||
|
dataLoad.setSecondaryCPhaseCurrent(StringUtils.getBigDecimal(obj.get("ECCXDL")));
|
||||||
|
dataLoad.setSecondaryCPhaseVoltage(StringUtils.getBigDecimal(obj.get("ECCXDY")));
|
||||||
|
dataLoad.setSecondaryCPowerFactor(StringUtils.getBigDecimal(obj.get("ECCXGLYS")));
|
||||||
|
dataLoad.setSecondaryCApparentPower(StringUtils.getBigDecimal(obj.get("ECCXSZGL")));
|
||||||
|
dataLoad.setSecondaryCReactivePower(StringUtils.getBigDecimal(obj.get("ECCXWGGL")));
|
||||||
|
dataLoad.setSecondaryCActivePower(StringUtils.getBigDecimal(obj.get("ECCXYGGL")));
|
||||||
|
dataLoad.setSecondaryGridFrequency(StringUtils.getBigDecimal(obj.get("ECDWPL")));
|
||||||
|
dataLoad.setSecondaryReverseReactiveEnergy(StringUtils.getBigDecimal(obj.get("ECFXWGDN")));
|
||||||
|
dataLoad.setSecondaryNegativeActiveEnergy(StringUtils.getBigDecimal(obj.get("ECFXYGDN")));
|
||||||
|
dataLoad.setSecondaryTotalPowerFactor(StringUtils.getBigDecimal(obj.get("ECZGLYS")));
|
||||||
|
dataLoad.setSecondaryTotalApparentPower(StringUtils.getBigDecimal(obj.get("ECZSZFL")));
|
||||||
|
dataLoad.setSecondaryTotalReactivePower(StringUtils.getBigDecimal(obj.get("ECZWGGL")));
|
||||||
|
dataLoad.setSecondaryPositiveReactiveEnergy(StringUtils.getBigDecimal(obj.get("ECZXWGDN")));
|
||||||
|
dataLoad.setSecondaryPositiveActiveEnergy(StringUtils.getBigDecimal(obj.get("ECZXYGDN")));
|
||||||
|
dataLoad.setSecondaryTotalActivePower(StringUtils.getBigDecimal(obj.get("ECZYGGL")));
|
||||||
|
|
||||||
// 二次相关数据
|
// 需量
|
||||||
dataLoad.setSecondaryAbLineVoltage(StringUtils.getBigDecimal(obj.get("ECABXDY")));
|
dataLoad.setReverseReactiveEnergyEqMinus(StringUtils.getBigDecimal(obj.get("FXWGDN")));
|
||||||
dataLoad.setSecondaryAPhaseCurrent(StringUtils.getBigDecimal(obj.get("ECAXDL")));
|
dataLoad.setReverseActiveEnergyEpMinus(StringUtils.getBigDecimal(obj.get("FXYGDN")));
|
||||||
dataLoad.setSecondaryAPhaseVoltage(StringUtils.getBigDecimal(obj.get("ECAXDY")));
|
dataLoad.setPositiveReactiveEnergyEqPlus(StringUtils.getBigDecimal(obj.get("ZXWGDN")));
|
||||||
dataLoad.setSecondaryAPowerFactor(StringUtils.getBigDecimal(obj.get("ECAXGLYS")));
|
dataLoad.setPositiveActiveEnergyEpPlus(StringUtils.getBigDecimal(obj.get("ZXYGDN")));
|
||||||
dataLoad.setSecondaryAApparentPower(StringUtils.getBigDecimal(obj.get("ECAXSZGL")));
|
|
||||||
dataLoad.setSecondaryAReactivePower(StringUtils.getBigDecimal(obj.get("ECAXWGGL")));
|
|
||||||
dataLoad.setSecondaryAActivePower(StringUtils.getBigDecimal(obj.get("ECAXYGGL")));
|
|
||||||
dataLoad.setSecondaryBcLineVoltage(StringUtils.getBigDecimal(obj.get("ECBCXDY")));
|
|
||||||
dataLoad.setSecondaryBPhaseCurrent(StringUtils.getBigDecimal(obj.get("ECBXDL")));
|
|
||||||
dataLoad.setSecondaryBPhaseVoltage(StringUtils.getBigDecimal(obj.get("ECBXDY")));
|
|
||||||
dataLoad.setSecondaryBPowerFactor(StringUtils.getBigDecimal(obj.get("ECBXGLYS")));
|
|
||||||
dataLoad.setSecondaryBApparentPower(StringUtils.getBigDecimal(obj.get("ECBXSZGL")));
|
|
||||||
dataLoad.setSecondaryBReactivePower(StringUtils.getBigDecimal(obj.get("ECBXWGGL")));
|
|
||||||
dataLoad.setSecondaryBActivePower(StringUtils.getBigDecimal(obj.get("ECBXYGGL")));
|
|
||||||
dataLoad.setSecondaryCaLineVoltage(StringUtils.getBigDecimal(obj.get("ECCAXDY")));
|
|
||||||
dataLoad.setSecondaryCPhaseCurrent(StringUtils.getBigDecimal(obj.get("ECCXDL")));
|
|
||||||
dataLoad.setSecondaryCPhaseVoltage(StringUtils.getBigDecimal(obj.get("ECCXDY")));
|
|
||||||
dataLoad.setSecondaryCPowerFactor(StringUtils.getBigDecimal(obj.get("ECCXGLYS")));
|
|
||||||
dataLoad.setSecondaryCApparentPower(StringUtils.getBigDecimal(obj.get("ECCXSZGL")));
|
|
||||||
dataLoad.setSecondaryCReactivePower(StringUtils.getBigDecimal(obj.get("ECCXWGGL")));
|
|
||||||
dataLoad.setSecondaryCActivePower(StringUtils.getBigDecimal(obj.get("ECCXYGGL")));
|
|
||||||
dataLoad.setSecondaryGridFrequency(StringUtils.getBigDecimal(obj.get("ECDWPL")));
|
|
||||||
dataLoad.setSecondaryReverseReactiveEnergy(StringUtils.getBigDecimal(obj.get("ECFXWGDN")));
|
|
||||||
dataLoad.setSecondaryNegativeActiveEnergy(StringUtils.getBigDecimal(obj.get("ECFXYGDN")));
|
|
||||||
dataLoad.setSecondaryTotalPowerFactor(StringUtils.getBigDecimal(obj.get("ECZGLYS")));
|
|
||||||
dataLoad.setSecondaryTotalApparentPower(StringUtils.getBigDecimal(obj.get("ECZSZFL")));
|
|
||||||
dataLoad.setSecondaryTotalReactivePower(StringUtils.getBigDecimal(obj.get("ECZWGGL")));
|
|
||||||
dataLoad.setSecondaryPositiveReactiveEnergy(StringUtils.getBigDecimal(obj.get("ECZXWGDN")));
|
|
||||||
dataLoad.setSecondaryPositiveActiveEnergy(StringUtils.getBigDecimal(obj.get("ECZXYGDN")));
|
|
||||||
dataLoad.setSecondaryTotalActivePower(StringUtils.getBigDecimal(obj.get("ECZYGGL")));
|
|
||||||
|
|
||||||
// 需量
|
// 正反向有功无功电能
|
||||||
dataLoad.setReverseReactiveEnergyEqMinus(StringUtils.getBigDecimal(obj.get("FXWGDN")));
|
dataLoad.setCurrentForwardActiveTotal(StringUtils.getBigDecimal(obj.get("ZXYGDN")));
|
||||||
dataLoad.setReverseActiveEnergyEpMinus(StringUtils.getBigDecimal(obj.get("FXYGDN")));
|
dataLoad.setCurrentReverseActiveTotal(StringUtils.getBigDecimal(obj.get("FXYGDN")));
|
||||||
dataLoad.setPositiveReactiveEnergyEqPlus(StringUtils.getBigDecimal(obj.get("ZXWGDN")));
|
dataLoad.setCurrentForwardReactiveTotal(StringUtils.getBigDecimal(obj.get("ZXWGDN")));
|
||||||
dataLoad.setPositiveActiveEnergyEpPlus(StringUtils.getBigDecimal(obj.get("ZXYGDN")));
|
dataLoad.setCurrentReverseReactiveTotal(StringUtils.getBigDecimal(obj.get("FXWGDN")));
|
||||||
|
|
||||||
// 正反向有功无功电能
|
|
||||||
dataLoad.setCurrentForwardActiveTotal(StringUtils.getBigDecimal(obj.get("ZXYGDN")));
|
|
||||||
dataLoad.setCurrentReverseActiveTotal(StringUtils.getBigDecimal(obj.get("FXYGDN")));
|
|
||||||
dataLoad.setCurrentForwardReactiveTotal(StringUtils.getBigDecimal(obj.get("ZXWGDN")));
|
|
||||||
dataLoad.setCurrentReverseReactiveTotal(StringUtils.getBigDecimal(obj.get("FXWGDN")));
|
|
||||||
|
|
||||||
|
}
|
||||||
dataLoad.setCreateBy("system");
|
dataLoad.setCreateBy("system");
|
||||||
dataLoad.setCreateTime(DateUtils.getNowDate());
|
dataLoad.setCreateTime(DateUtils.getNowDate());
|
||||||
dataLoad.setUpdateBy("system");
|
dataLoad.setUpdateBy("system");
|
||||||
@ -778,6 +894,8 @@ public class FXXDataProcessServiceImpl extends AbstractBatteryDataProcessor impl
|
|||||||
|
|
||||||
redisCache.setCacheObject(RedisKeyConstants.AMMETER + SITE_ID + "_" +deviceId, dataLoad);
|
redisCache.setCacheObject(RedisKeyConstants.AMMETER + SITE_ID + "_" +deviceId, dataLoad);
|
||||||
|
|
||||||
|
saveDevicePointMatchData(pointMatchList, deviceId, DeviceMatchTable.AMMETER, "METE");
|
||||||
|
|
||||||
// 处理电表每日充放电数据
|
// 处理电表每日充放电数据
|
||||||
dealAmmeterDailyDate(obj, dataUpdateTime, lastAmmeterData);
|
dealAmmeterDailyDate(obj, dataUpdateTime, lastAmmeterData);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,180 @@
|
|||||||
|
package com.xzzn.ems.utils;
|
||||||
|
|
||||||
|
|
||||||
|
import com.alibaba.fastjson2.JSON;
|
||||||
|
import com.alibaba.fastjson2.JSONObject;
|
||||||
|
import com.xzzn.common.annotation.Excel;
|
||||||
|
import com.xzzn.common.constant.RedisKeyConstants;
|
||||||
|
import com.xzzn.common.core.redis.RedisCache;
|
||||||
|
import com.xzzn.common.enums.DeviceCategory;
|
||||||
|
import com.xzzn.common.utils.DataUtils;
|
||||||
|
import com.xzzn.common.utils.StringUtils;
|
||||||
|
import com.xzzn.ems.domain.EmsDevicesSetting;
|
||||||
|
import com.xzzn.ems.domain.EmsPointMatch;
|
||||||
|
import com.xzzn.ems.domain.vo.DevicePointMatchInfo;
|
||||||
|
import com.xzzn.ems.enums.DeviceMatchTable;
|
||||||
|
import com.xzzn.ems.mapper.EmsDevicesSettingMapper;
|
||||||
|
import com.xzzn.ems.mapper.EmsPointMatchMapper;
|
||||||
|
|
||||||
|
import java.lang.reflect.Field;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
import javax.annotation.PostConstruct;
|
||||||
|
|
||||||
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
|
import org.apache.commons.logging.Log;
|
||||||
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.core.io.ClassPathResource;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class DevicePointMatchDataProcessor {
|
||||||
|
|
||||||
|
private static final Log log = LogFactory.getLog(DevicePointMatchDataProcessor.class);
|
||||||
|
|
||||||
|
private DevicePointMatchInfo devicePointMatchInfo;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private EmsDevicesSettingMapper emsDevicesSettingMapper;
|
||||||
|
@Autowired
|
||||||
|
private EmsPointMatchMapper emsPointMatchMapper;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private RedisCache redisCache;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化加载设备匹配点位配置数据
|
||||||
|
*/
|
||||||
|
@PostConstruct
|
||||||
|
public void init()
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
ClassPathResource classPathResource = new ClassPathResource("biz/configData/DevicePointMatch.json");
|
||||||
|
String configJson = DataUtils.getJSONFromFile(classPathResource.getInputStream());
|
||||||
|
devicePointMatchInfo = JSONObject.parseObject(configJson, DevicePointMatchInfo.class);
|
||||||
|
log.info("初始化设备匹配点位配置数据成功。"+ JSON.toJSONString(devicePointMatchInfo));
|
||||||
|
} catch (Exception ex) {
|
||||||
|
log.error("OcrMedicalStdHandler 设置mapping数据异常。", ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取字段注解信息
|
||||||
|
*/
|
||||||
|
public static String getFieldAnnotation(Class<?> clazz, String filedName)
|
||||||
|
{
|
||||||
|
List<Field> tempFields = new ArrayList<>();
|
||||||
|
tempFields.addAll(Arrays.asList(clazz.getDeclaredFields()));
|
||||||
|
for (Field field : tempFields) {
|
||||||
|
if (StringUtils.equals(filedName, field.getName()) && field.isAnnotationPresent(Excel.class))
|
||||||
|
{
|
||||||
|
Excel column = field.getAnnotation(Excel.class);
|
||||||
|
return column.name();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<EmsPointMatch> getDevicePointMatch(String siteId, String deviceId, String deviceCategory) {
|
||||||
|
// List<EmsPointMatch> pointMatchList = new ArrayList<>();
|
||||||
|
// EmsDevicesSetting devicesSetting = emsDevicesSettingMapper.getDeviceBySiteAndDeviceId(deviceId, siteId);
|
||||||
|
// if (devicesSetting == null) {
|
||||||
|
// log.info("未找到设备配置信息,siteId: " + siteId + ", deviceId: "+ deviceId);
|
||||||
|
// return pointMatchList;
|
||||||
|
// }
|
||||||
|
List<EmsPointMatch> pointMatchList = redisCache.getCacheList(getPointTacthCacheKey(siteId, deviceId, deviceCategory));
|
||||||
|
if (CollectionUtils.isEmpty(pointMatchList)) {
|
||||||
|
pointMatchList = emsPointMatchMapper.getDevicePointMatchList(siteId, deviceId, deviceCategory);
|
||||||
|
}
|
||||||
|
|
||||||
|
return pointMatchList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void saveDevicePointMatch(String siteId, String deviceId, DeviceMatchTable pointMatchType, String dataDevice) {
|
||||||
|
// EmsDevicesSetting devicesSetting = emsDevicesSettingMapper.getDeviceBySiteAndDeviceId(deviceId, siteId);
|
||||||
|
// if (devicesSetting == null) {
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
// String deviceCategory = devicesSetting.getDeviceCategory();
|
||||||
|
String deviceCategory = pointMatchType.getCode();
|
||||||
|
Map<String, String> devicePintointMtachInfo = this.getDevicePointMtachInfo(pointMatchType, dataDevice);
|
||||||
|
if (devicePintointMtachInfo.isEmpty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
devicePintointMtachInfo.forEach((key, value) -> {
|
||||||
|
// 查询点位是否存在
|
||||||
|
EmsPointMatch dbPoint = emsPointMatchMapper.getOnePointMatch(siteId, deviceId, deviceCategory, value);
|
||||||
|
if (!Objects.isNull(dbPoint)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
EmsPointMatch pointMatch = new EmsPointMatch();
|
||||||
|
pointMatch.setSiteId(siteId);
|
||||||
|
pointMatch.setDeviceId(deviceId);
|
||||||
|
pointMatch.setDeviceCategory(deviceCategory);
|
||||||
|
pointMatch.setMatchTable(DeviceMatchTable.getMatchTableByCode(deviceCategory));
|
||||||
|
pointMatch.setMatchField(StringUtils.toUnderScoreCase(key));
|
||||||
|
pointMatch.setDataPoint(value);
|
||||||
|
pointMatch.setPointName(getFieldAnnotation(DeviceMatchTable.getClassByTable(pointMatch.getMatchTable()), StringUtils.toCamelCase(pointMatch.getMatchField())));
|
||||||
|
pointMatch.setDataDevice(dataDevice);
|
||||||
|
// pointMatch.setDataPointName("");
|
||||||
|
// pointMatch.setDataUnit("");
|
||||||
|
pointMatch.setCreateBy("system");
|
||||||
|
pointMatch.setUpdateBy("system");
|
||||||
|
emsPointMatchMapper.insertEmsPointMatch(pointMatch);
|
||||||
|
});
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.info("保存设备点位匹配信息异常,siteId: " + siteId + ", deviceId: "+ deviceId + "异常信息:" + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private Map<String, String> getDevicePointMtachInfo(DeviceMatchTable pointMatchType, String dataDevice) {
|
||||||
|
switch (pointMatchType) {
|
||||||
|
case PCS:
|
||||||
|
return devicePointMatchInfo.getPcs();
|
||||||
|
case BRANCH:
|
||||||
|
return devicePointMatchInfo.getBranch();
|
||||||
|
case STACK:
|
||||||
|
return devicePointMatchInfo.getStack();
|
||||||
|
case CLUSTER:
|
||||||
|
return devicePointMatchInfo.getCluster();
|
||||||
|
case BATTERY:
|
||||||
|
return devicePointMatchInfo.getBattery();
|
||||||
|
case AMMETER:
|
||||||
|
if (dataDevice.equals("LOAD")) {
|
||||||
|
return devicePointMatchInfo.getAmmeterLoad();
|
||||||
|
} else {
|
||||||
|
return devicePointMatchInfo.getAmmeterMete();
|
||||||
|
}
|
||||||
|
case COOLING:
|
||||||
|
return devicePointMatchInfo.getCooling();
|
||||||
|
case DH:
|
||||||
|
return devicePointMatchInfo.getDh();
|
||||||
|
case XF:
|
||||||
|
return devicePointMatchInfo.getXf();
|
||||||
|
case BATTERY_GROUP:
|
||||||
|
return devicePointMatchInfo.getBatteryGroup();
|
||||||
|
default:
|
||||||
|
return new HashMap<>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置点位缓存key
|
||||||
|
* @param siteId
|
||||||
|
* @param deviceId
|
||||||
|
* @param deviceCategory
|
||||||
|
* @return 点位缓存key
|
||||||
|
*/
|
||||||
|
public static String getPointTacthCacheKey(String siteId, String deviceId, String deviceCategory)
|
||||||
|
{
|
||||||
|
return RedisKeyConstants.POINT_MATCH + deviceCategory + "_" + siteId + "_" + deviceId;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,33 +0,0 @@
|
|||||||
package com.xzzn.ems.utils;
|
|
||||||
|
|
||||||
import com.xzzn.common.annotation.Excel;
|
|
||||||
import com.xzzn.common.utils.StringUtils;
|
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 匹配表工具类
|
|
||||||
*/
|
|
||||||
public class MatchTableUtils {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取字段注解信息
|
|
||||||
*/
|
|
||||||
public static String getFieldAnnotation(Class<?> clazz, String filedName)
|
|
||||||
{
|
|
||||||
List<Field> tempFields = new ArrayList<>();
|
|
||||||
tempFields.addAll(Arrays.asList(clazz.getDeclaredFields()));
|
|
||||||
for (Field field : tempFields) {
|
|
||||||
if (StringUtils.equals(filedName, field.getName()) && field.isAnnotationPresent(Excel.class))
|
|
||||||
{
|
|
||||||
Excel column = field.getAnnotation(Excel.class);
|
|
||||||
return column.name();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -0,0 +1,311 @@
|
|||||||
|
{
|
||||||
|
"pcs": {
|
||||||
|
"totalActivePower": "YGGL",
|
||||||
|
"dailyAcChargeEnergy": "RCDL",
|
||||||
|
"totalReactivePower": "XTWGGL",
|
||||||
|
"dailyAcDischargeEnergy": "RFDL",
|
||||||
|
"totalApparentPower": "XTSZGL",
|
||||||
|
"totalPowerFactor": "GLYS",
|
||||||
|
"dcPower": "XTSZGL",
|
||||||
|
"totalAcChargeEnergy": "ZCDL",
|
||||||
|
"totalAcDischargeEnergy": "ZFDL",
|
||||||
|
"acChargeActivePower": "JLCCDYGGL",
|
||||||
|
"acCapacitiveReactivePower": "JLCRXWGGL",
|
||||||
|
"acDischargeActivePower": "JLCFDYGGL",
|
||||||
|
"acInductiveReactivePower": "JLCGXWGGL",
|
||||||
|
"maxCapacitivePowerCapacity": "ZDRXWGNL",
|
||||||
|
"maxInductivePowerCapacity": "ZDGXWGNL",
|
||||||
|
"maxChargePowerCapacity": "ZDKCGL",
|
||||||
|
"maxDischargePowerCapacity": "ZDKFGL",
|
||||||
|
|
||||||
|
"sysUCurrent": "XTSCUXDL",
|
||||||
|
"sysVCurrent": "XTSCVXDL",
|
||||||
|
"sysWCurrent": "XTSCWXDL",
|
||||||
|
|
||||||
|
"uTemperature": "DY1UXIGBTWD",
|
||||||
|
"vTemperature": "DY1VXIGBTWD",
|
||||||
|
"wTemperature": "DY1WXIGBTWD"
|
||||||
|
|
||||||
|
},
|
||||||
|
"branch": {
|
||||||
|
"dcPower": "ZLGL",
|
||||||
|
"dcVoltage": "ZLDY",
|
||||||
|
"dcCurrent": "ZLDL",
|
||||||
|
"gridUVoltage": "DWUXDY",
|
||||||
|
"gridVVoltage": "DWVXDY",
|
||||||
|
"gridWVoltage": "DWWXDY",
|
||||||
|
"outputUCurrent": "SCUXDL",
|
||||||
|
"outputVCurrent": "SCVXDL",
|
||||||
|
"outputWCurrent": "SCWXDL",
|
||||||
|
"apparentPower": "SZGL",
|
||||||
|
"activePower": "YGGL",
|
||||||
|
"reactivePower": "WGGL",
|
||||||
|
"powerFactor": "GLYS",
|
||||||
|
"frequency": "PL",
|
||||||
|
"internalTemp": "DY1WD",
|
||||||
|
"uIgbtTemp": "UXIGBTWD",
|
||||||
|
"vIgbtTemp": "VXIGBTWD",
|
||||||
|
"wIgbtTemp": "WXIGBTWD",
|
||||||
|
"availablePower": "KYGL",
|
||||||
|
"totalLoadRatio": "ZFZB",
|
||||||
|
"acLeakageCurrent": "JLLDL",
|
||||||
|
"insulationResistance": "JYZK"
|
||||||
|
|
||||||
|
},
|
||||||
|
"stack": {
|
||||||
|
"operationStatus": "DCZT",
|
||||||
|
"stackVoltage": "DCDDY",
|
||||||
|
"stackCurrent": "DCDDL",
|
||||||
|
"stackSoc": "DCDSOC",
|
||||||
|
"stackSoh": "DCDSOH",
|
||||||
|
|
||||||
|
"maxCellVoltage": "ZGDCDY",
|
||||||
|
"maxVoltageGroupId": "ZGDCDYZH",
|
||||||
|
"maxVoltageCellId": "ZGDCDYZHDH",
|
||||||
|
"minCellVoltage": "ZDDCDY",
|
||||||
|
"minVoltageGroupId": "ZDDCDYZH",
|
||||||
|
"minVoltageCellId": "ZDDCDYZHDH",
|
||||||
|
|
||||||
|
"maxCellTemp": "ZGDCWD",
|
||||||
|
"maxTempGroupId": "ZGDCWDZH",
|
||||||
|
"maxTempCellId": "ZGDCWDZHDH",
|
||||||
|
"minCellTemp": "ZDDCWD",
|
||||||
|
"minTempGroupId": "ZDDCWDZH",
|
||||||
|
"minTempCellId": "ZDDCWDZHDH",
|
||||||
|
|
||||||
|
"totalChargeCapacity": "DLJCDDL",
|
||||||
|
"totalDischargeCapacity": "DLCFDDL",
|
||||||
|
"sessionChargeCapacity": "DDCLJCDDL",
|
||||||
|
"sessionDischargeCapacity": "DDCLJFDDL",
|
||||||
|
"availableChargeCapacity": "DKCDL",
|
||||||
|
"availableDischargeCapacity": "DKFDL",
|
||||||
|
|
||||||
|
"remainingDischargeTime": "KYFDSJ",
|
||||||
|
"remainingChargeTime": "KYCDSJ",
|
||||||
|
|
||||||
|
"maxDischargePower": "YXZDFDGL",
|
||||||
|
"maxChargePower": "YXZDCDGL",
|
||||||
|
"maxDischargeCurrent": "YXZDFDDL",
|
||||||
|
"maxChargeCurrent": "YXZDCDDL",
|
||||||
|
|
||||||
|
"dailyDischargeCycles": "DTFDCS",
|
||||||
|
"dailyChargeCycles": "DTCDCS",
|
||||||
|
"dailyDischargeCapacity": "DTFDDL",
|
||||||
|
"dailyChargeCapacity": "DTCDDL",
|
||||||
|
|
||||||
|
"operatingTemp": "YXWD",
|
||||||
|
"bmsStatus": "BMSDDQZT",
|
||||||
|
"bmsChargeStatus": "BMSCFDZT",
|
||||||
|
"stackInsulationResistance": "DCDJYDZ"
|
||||||
|
},
|
||||||
|
"cluster": {
|
||||||
|
"chargeableCapacity": "KCDL",
|
||||||
|
"clusterVoltage": "ZDY",
|
||||||
|
"clusterCurrent": "ZDL",
|
||||||
|
"totalChargedCapacity": "LJCDDL",
|
||||||
|
"dischargeableCapacity": "KFDL",
|
||||||
|
"totalDischargedCapacity": "LJFDDL",
|
||||||
|
"soh": "ZSOH",
|
||||||
|
"averageTemperature": "MKWD",
|
||||||
|
"insulationResistance": "ZJYDZ",
|
||||||
|
"currentSoc": "ZSOC",
|
||||||
|
"maxAllowedChargePower": "YXCDZDGL",
|
||||||
|
"maxAllowedDischargePower": "YXFDZDGL",
|
||||||
|
"maxAllowedChargeVoltage": "YXCDZDDY",
|
||||||
|
"maxAllowedDischargeVoltage": "YXFDZDDY",
|
||||||
|
"maxAllowedChargeCurrent": "YXCDZDDL",
|
||||||
|
"maxAllowedDischargeCurrent": "YXFDZDDL",
|
||||||
|
"batteryPackVoltage": "ZDY",
|
||||||
|
"batteryPackCurrent": "ZDL",
|
||||||
|
"batteryPackTemp": "MKWD",
|
||||||
|
"batteryPackSoc": "ZSOC",
|
||||||
|
"batteryPackSoh": "ZSOH",
|
||||||
|
"batteryPackInsulationResistance": "ZJYDZ",
|
||||||
|
"avgCellVoltage": "PJDTDY",
|
||||||
|
"avgCellTemp": "PJDTWD",
|
||||||
|
"maxCellVoltage": "ZGDTDY",
|
||||||
|
"minCellVoltage": "ZDDTDY",
|
||||||
|
"maxCellTemp": "ZGDTWD",
|
||||||
|
"minCellTemp": "ZDDTWD",
|
||||||
|
"maxCellSoc": "ZGDTSOC",
|
||||||
|
"minCellSoc": "ZDDTSOC",
|
||||||
|
"maxCellSoh": "ZGDTSOH",
|
||||||
|
"minCellSoh": "ZDDTSOH",
|
||||||
|
"totalChargeEnergy": "DCLJCDDL",
|
||||||
|
"totalDischargeEnergy": "DCLJFDDL",
|
||||||
|
|
||||||
|
"maxCellVoltageId": "ZGDTDYDYD",
|
||||||
|
"minCellVoltageId": "ZDDTDYDYD",
|
||||||
|
"maxCellTempId": "ZGDTWDDYD",
|
||||||
|
"minCellTempId": "ZDDTWDDYD",
|
||||||
|
"maxCellSocId": "ZGDTSOCDYD",
|
||||||
|
"minCellSocId": "ZDDTSOCDYD",
|
||||||
|
"maxCellSohId": "ZGDTSOHDYD",
|
||||||
|
"minCellSohId": "ZDDTSOHDYD"
|
||||||
|
|
||||||
|
},
|
||||||
|
"battery": {
|
||||||
|
"soc": "DTSOC",
|
||||||
|
"soh": "DTSOH",
|
||||||
|
"temperature": "DTWD",
|
||||||
|
"voltage": "DTDY"
|
||||||
|
|
||||||
|
},
|
||||||
|
"ammeterLoad": {
|
||||||
|
"currentCombActiveTotal": "DQZHYGZDN",
|
||||||
|
"currentCombActivePeak": "DQZHYGJDN",
|
||||||
|
"currentCombActiveHigh": "DQZHYGFDN",
|
||||||
|
"currentCombActiveFlat": "DQZHYGPDN",
|
||||||
|
"currentCombActiveValley": "DQZHYGGDN",
|
||||||
|
|
||||||
|
"currentForwardActiveTotal": "DQZXYGZDN",
|
||||||
|
"currentForwardActivePeak": "DQZXYGJDN",
|
||||||
|
"currentForwardActiveHigh": "DQZXYGFDN",
|
||||||
|
"currentForwardActiveFlat": "DQZXYGPDN",
|
||||||
|
"currentForwardActiveValley": "DQZXYGGDN",
|
||||||
|
|
||||||
|
"currentReverseActiveTotal": "DQFXYGZDN",
|
||||||
|
"currentReverseActivePeak": "DQFXYGJDN",
|
||||||
|
"currentReverseActiveHigh": "DQFXYGFDN",
|
||||||
|
"currentReverseActiveFlat": "DQFXYGPDN",
|
||||||
|
"currentReverseActiveValley": "DQFXYGGDN",
|
||||||
|
|
||||||
|
"currentCombReactiveTotal": "DQZHWGZDN",
|
||||||
|
"currentCombReactivePeak": "DQZHWGJDN",
|
||||||
|
"currentCombReactiveHigh": "DQZHWGFDN",
|
||||||
|
"currentCombReactiveFlat": "DQZHWGPDN",
|
||||||
|
"currentCombReactiveValley": "DQZHWGGDN",
|
||||||
|
|
||||||
|
"currentForwardReactiveTotal": "DQZXWGZDN",
|
||||||
|
"currentForwardReactivePeak": "DQZXWGJDN",
|
||||||
|
"currentForwardReactiveHigh": "DQZXWGFDN",
|
||||||
|
"currentForwardReactiveFlat": "DQZXWGPDN",
|
||||||
|
"currentForwardReactiveValley": "DQZXWGGDN",
|
||||||
|
|
||||||
|
"currentReverseReactiveTotal": "DQFXWGZDN",
|
||||||
|
"currentReverseReactivePeak": "DQFXWGJDN",
|
||||||
|
"currentReverseReactiveHigh": "DQFXWGFDN",
|
||||||
|
"currentReverseReactiveFlat": "DQFXWGPDN",
|
||||||
|
"currentReverseReactiveValley": "DQFXWGGDN",
|
||||||
|
|
||||||
|
"phaseAVoltage": "AXDY",
|
||||||
|
"phaseBVoltage": "BXDY",
|
||||||
|
"phaseCVoltage": "CXDY",
|
||||||
|
"phaseACurrent": "AXDL",
|
||||||
|
"phaseBCurrent": "BXDL",
|
||||||
|
"phaseCCurrent": "CXDL",
|
||||||
|
|
||||||
|
"abLineVoltage": "ABXDY",
|
||||||
|
"cbLineVoltage": "CBXDY",
|
||||||
|
"acLineVoltage": "ACXDY",
|
||||||
|
|
||||||
|
"frequency": "PL",
|
||||||
|
|
||||||
|
"phaseAActivePower": "AXYGGL",
|
||||||
|
"phaseBActivePower": "BXYGGL",
|
||||||
|
"phaseCActivePower": "CXYGGL",
|
||||||
|
"totalActivePower": "ZYGGL",
|
||||||
|
"phaseAReactivePower": "AXWGGL",
|
||||||
|
"phaseBReactivePower": "BXWGGL",
|
||||||
|
"phaseCReactivePower": "CXWGGL",
|
||||||
|
"totalReactivePower": "ZWGGL",
|
||||||
|
"phaseAApparentPower": "AXSZGL",
|
||||||
|
"phaseBApparentPower": "BXSZGL",
|
||||||
|
"phaseCApparentPower": "CXSZGL",
|
||||||
|
"totalApparentPower": "ZSZGL",
|
||||||
|
|
||||||
|
"phaseAPowerFactor": "AXGLYS",
|
||||||
|
"phaseBPowerFactor": "BXGLYS",
|
||||||
|
"phaseCPowerFactor": "CXGLYS",
|
||||||
|
"totalPowerFactor": "ZGLYS",
|
||||||
|
|
||||||
|
"forwardAcMaxDemand": "ZXYGZDXL",
|
||||||
|
"reverseAcMaxDemand": "FXYGZDXL",
|
||||||
|
"dailyForwardMaxDemand": "DRZXYGZDXL"
|
||||||
|
|
||||||
|
},
|
||||||
|
"ammeterMete": {
|
||||||
|
"phaseAVoltage": "AXDY",
|
||||||
|
"phaseBVoltage": "BXDY",
|
||||||
|
"phaseCVoltage": "CXDY",
|
||||||
|
"phaseACurrent": "AXDL",
|
||||||
|
"phaseBCurrent": "BXDL",
|
||||||
|
"phaseCCurrent": "CXDL",
|
||||||
|
|
||||||
|
"abLineVoltage": "ABXDY",
|
||||||
|
"cbLineVoltage": "BCXDY",
|
||||||
|
"acLineVoltage": "CAXDY",
|
||||||
|
|
||||||
|
"frequency": "DWPL",
|
||||||
|
|
||||||
|
"phaseAActivePower": "AXYGGL",
|
||||||
|
"phaseBActivePower": "BXYGGL",
|
||||||
|
"phaseCActivePower": "CXYGGL",
|
||||||
|
"totalActivePower": "ZYGGL",
|
||||||
|
"phaseAReactivePower": "AXWGGL",
|
||||||
|
"phaseBReactivePower": "BXWGGL",
|
||||||
|
"phaseCReactivePower": "CXWGGL",
|
||||||
|
"totalReactivePower": "ZWGGL",
|
||||||
|
|
||||||
|
"totalApparentPower": "ZSZGL",
|
||||||
|
"totalPowerFactor": "ZGLYS",
|
||||||
|
|
||||||
|
"secondaryAbLineVoltage": "ECABXDY",
|
||||||
|
"secondaryAPhaseCurrent": "ECAXDL",
|
||||||
|
"secondaryAPhaseVoltage": "ECAXDY",
|
||||||
|
"secondaryAPowerFactor": "ECAXGLYS",
|
||||||
|
"secondaryAApparentPower": "ECAXSZGL",
|
||||||
|
"secondaryAReactivePower": "ECAXWGGL",
|
||||||
|
"secondaryAActivePower": "ECAXYGGL",
|
||||||
|
"secondaryBcLineVoltage": "ECBCXDY",
|
||||||
|
"secondaryBPhaseCurrent": "ECBXDL",
|
||||||
|
"secondaryBPhaseVoltage": "ECBXDY",
|
||||||
|
"secondaryBPowerFactor": "ECBXGLYS",
|
||||||
|
"secondaryBApparentPower": "ECBXSZGL",
|
||||||
|
"secondaryBReactivePower": "ECBXWGGL",
|
||||||
|
"secondaryBActivePower": "ECBXYGGL",
|
||||||
|
"secondaryCaLineVoltage": "ECCAXDY",
|
||||||
|
"secondaryCPhaseCurrent": "ECCXDL",
|
||||||
|
"secondaryCPhaseVoltage": "ECCXDY",
|
||||||
|
"secondaryCPowerFactor": "ECCXGLYS",
|
||||||
|
"secondaryCApparentPower": "ECCXSZGL",
|
||||||
|
"secondaryCReactivePower": "ECCXWGGL",
|
||||||
|
"secondaryCActivePower": "ECCXYGGL",
|
||||||
|
"secondaryGridFrequency": "ECDWPL",
|
||||||
|
"secondaryReverseReactiveEnergy": "ECFXWGDN",
|
||||||
|
"secondaryNegativeActiveEnergy": "ECFXYGDN",
|
||||||
|
"secondaryTotalPowerFactor": "ECZGLYS",
|
||||||
|
"secondaryTotalApparentPower": "ECZSZFL",
|
||||||
|
"secondaryTotalReactivePower": "ECZWGGL",
|
||||||
|
"secondaryPositiveReactiveEnergy": "ECZXWGDN",
|
||||||
|
"secondaryPositiveActiveEnergy": "ECZXYGDN",
|
||||||
|
"secondaryTotalActivePower": "ECZYGGL",
|
||||||
|
|
||||||
|
"reverseReactiveEnergyEqMinus": "FXWGDN",
|
||||||
|
"reverseActiveEnergyEpMinus": "FXYGDN",
|
||||||
|
"positiveReactiveEnergyEqPlus": "ZXWGDN",
|
||||||
|
"positiveActiveEnergyEpPlus": "ZXYGDN",
|
||||||
|
|
||||||
|
"currentForwardActiveTotal": "ZXYGDN",
|
||||||
|
"currentReverseActiveTotal": "FXYGDN",
|
||||||
|
"currentForwardReactiveTotal": "ZXWGDN",
|
||||||
|
"currentReverseReactiveTotal": "FXWGDN"
|
||||||
|
|
||||||
|
},
|
||||||
|
"dh": {
|
||||||
|
"humidity": "SD3",
|
||||||
|
"temperature": "WD3"
|
||||||
|
|
||||||
|
},
|
||||||
|
"cooling": {
|
||||||
|
"gsTemp": "GSWD",
|
||||||
|
"hsTemp": "HSWD",
|
||||||
|
"gsPressure": "GSYL",
|
||||||
|
"hsPressure": "HSYL",
|
||||||
|
"lysTemp": "LYSWD",
|
||||||
|
"vb01Kd": "VB1KD",
|
||||||
|
"vb02Kd": "VB2KD"
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user