单体电池解析数据改动;枚举值匹配转换改动
This commit is contained in:
@ -187,7 +187,7 @@ xss:
|
|||||||
urlPatterns: /system/*,/monitor/*,/tool/*
|
urlPatterns: /system/*,/monitor/*,/tool/*
|
||||||
|
|
||||||
mqtt:
|
mqtt:
|
||||||
broker.url: tcp://122.51.194.184:1883
|
broker.url: tcp://121.5.164.6:1883
|
||||||
client.id: ems-cloud
|
client.id: ems-cloud
|
||||||
username: dmbroker
|
username: dmbroker
|
||||||
password: qwer1234
|
password: qwer1234
|
||||||
|
|||||||
@ -2,6 +2,7 @@ package com.xzzn.ems.service.impl;
|
|||||||
|
|
||||||
import com.alibaba.fastjson2.JSON;
|
import com.alibaba.fastjson2.JSON;
|
||||||
import com.alibaba.fastjson2.JSONArray;
|
import com.alibaba.fastjson2.JSONArray;
|
||||||
|
import com.alibaba.fastjson2.JSONException;
|
||||||
import com.alibaba.fastjson2.JSONObject;
|
import com.alibaba.fastjson2.JSONObject;
|
||||||
import com.alibaba.fastjson2.TypeReference;
|
import com.alibaba.fastjson2.TypeReference;
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
@ -70,7 +71,6 @@ import java.util.HashSet;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Optional;
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
@ -153,7 +153,9 @@ public class DeviceDataProcessServiceImpl extends AbstractBatteryDataProcessor i
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handleDeviceData(String message, String siteId) {
|
public void handleDeviceData(String message, String siteId) {
|
||||||
JSONArray arraylist = JSONArray.parseArray(message);
|
JSONArray arraylist = parseJsonData(message);
|
||||||
|
if (arraylist == null) return;
|
||||||
|
// 过滤掉空数据(空数据不处理,直接返回
|
||||||
|
|
||||||
for (int i = 0; i < arraylist.size(); i++) {
|
for (int i = 0; i < arraylist.size(); i++) {
|
||||||
JSONObject obj = JSONObject.parseObject(arraylist.get(i).toString());
|
JSONObject obj = JSONObject.parseObject(arraylist.get(i).toString());
|
||||||
@ -181,6 +183,21 @@ public class DeviceDataProcessServiceImpl extends AbstractBatteryDataProcessor i
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private JSONArray parseJsonData(String message) {
|
||||||
|
try {
|
||||||
|
JSONObject object = JSONObject.parseObject(message);
|
||||||
|
return object.getJSONArray("payload");
|
||||||
|
} catch (JSONException e) {
|
||||||
|
log.info("mqtt message is not a json object: " + e.getMessage());
|
||||||
|
try {
|
||||||
|
return JSONArray.parseArray(message);
|
||||||
|
} catch (Exception arrayException) {
|
||||||
|
log.info("mqtt message is not a json array: " + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
public void processingDeviceData(String siteId, String deviceId, String jsonData, Date dataUpdateTime) {
|
public void processingDeviceData(String siteId, String deviceId, String jsonData, Date dataUpdateTime) {
|
||||||
// 判断设备类型,并调用对应的方法处理数据
|
// 判断设备类型,并调用对应的方法处理数据
|
||||||
String deviceCategory = getDeviceCategory(siteId, deviceId);
|
String deviceCategory = getDeviceCategory(siteId, deviceId);
|
||||||
@ -242,11 +259,10 @@ public class DeviceDataProcessServiceImpl extends AbstractBatteryDataProcessor i
|
|||||||
log.info("未找到匹配的点位数据,无法处理EMS数据,siteId: " + siteId + ",deviceId: " + deviceId);
|
log.info("未找到匹配的点位数据,无法处理EMS数据,siteId: " + siteId + ",deviceId: " + deviceId);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Map<String, List<EmsPointEnumMatch>> pointEnumMatchMap = devicePointMatchDataProcessor.getPointEnumMatchMap(siteId, DeviceMatchTable.EMS.getCode());
|
|
||||||
|
|
||||||
EmsEmsData emsData = new EmsEmsData();
|
EmsEmsData emsData = new EmsEmsData();
|
||||||
|
|
||||||
saveDeviceData(pointMatchList, obj, emsData, pointEnumMatchMap);
|
saveDeviceData(pointMatchList, obj, emsData);
|
||||||
|
|
||||||
emsData.setDataUpdateTime(dataUpdateTime);
|
emsData.setDataUpdateTime(dataUpdateTime);
|
||||||
emsData.setCreateBy("system");
|
emsData.setCreateBy("system");
|
||||||
@ -271,11 +287,10 @@ public class DeviceDataProcessServiceImpl extends AbstractBatteryDataProcessor i
|
|||||||
log.info("未找到匹配的点位数据,无法处理中水冷却数据,siteId: " + siteId + ",deviceId: " + deviceId);
|
log.info("未找到匹配的点位数据,无法处理中水冷却数据,siteId: " + siteId + ",deviceId: " + deviceId);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Map<String, List<EmsPointEnumMatch>> pointEnumMatchMap = devicePointMatchDataProcessor.getPointEnumMatchMap(siteId, DeviceMatchTable.COOLING.getCode());
|
|
||||||
|
|
||||||
EmsCoolingData coolingData = new EmsCoolingData();
|
EmsCoolingData coolingData = new EmsCoolingData();
|
||||||
|
|
||||||
saveDeviceData(pointMatchList, obj, coolingData, pointEnumMatchMap);
|
saveDeviceData(pointMatchList, obj, coolingData);
|
||||||
|
|
||||||
coolingData.setDataUpdateTime(dataUpdateTime);
|
coolingData.setDataUpdateTime(dataUpdateTime);
|
||||||
coolingData.setCreateBy("system");
|
coolingData.setCreateBy("system");
|
||||||
@ -301,14 +316,13 @@ public class DeviceDataProcessServiceImpl extends AbstractBatteryDataProcessor i
|
|||||||
log.info("未找到匹配的点位数据,无法处理消防数据,siteId: " + siteId + ",deviceId: " + deviceId);
|
log.info("未找到匹配的点位数据,无法处理消防数据,siteId: " + siteId + ",deviceId: " + deviceId);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Map<String, List<EmsPointEnumMatch>> pointEnumMatchMap = devicePointMatchDataProcessor.getPointEnumMatchMap(siteId, DeviceMatchTable.XF.getCode());
|
|
||||||
|
|
||||||
// 暂时只更新设备表的设备状态 ZDYBYDCZT-主电源备用电池状态
|
// 暂时只更新设备表的设备状态 ZDYBYDCZT-主电源备用电池状态
|
||||||
// 数据存表
|
// 数据存表
|
||||||
EmsXfData xfData = new EmsXfData();
|
EmsXfData xfData = new EmsXfData();
|
||||||
xfData.setDataTimestamp(dataUpdateTime);
|
xfData.setDataTimestamp(dataUpdateTime);
|
||||||
|
|
||||||
saveDeviceData(pointMatchList, obj, xfData, pointEnumMatchMap);
|
saveDeviceData(pointMatchList, obj, xfData);
|
||||||
|
|
||||||
xfData.setCreateBy("system");
|
xfData.setCreateBy("system");
|
||||||
xfData.setCreateTime(DateUtils.getNowDate());
|
xfData.setCreateTime(DateUtils.getNowDate());
|
||||||
@ -336,12 +350,11 @@ public class DeviceDataProcessServiceImpl extends AbstractBatteryDataProcessor i
|
|||||||
log.info("未找到匹配的点位数据,无法处理动环数据,siteId: " + siteId + ",deviceId: " + deviceId);
|
log.info("未找到匹配的点位数据,无法处理动环数据,siteId: " + siteId + ",deviceId: " + deviceId);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Map<String, List<EmsPointEnumMatch>> pointEnumMatchMap = devicePointMatchDataProcessor.getPointEnumMatchMap(siteId, DeviceMatchTable.DH.getCode());
|
|
||||||
|
|
||||||
//DH
|
//DH
|
||||||
EmsDhData dhData = new EmsDhData();
|
EmsDhData dhData = new EmsDhData();
|
||||||
|
|
||||||
saveDeviceData(pointMatchList, obj, dhData, pointEnumMatchMap);
|
saveDeviceData(pointMatchList, obj, dhData);
|
||||||
|
|
||||||
dhData.setDataUpdateTime(dateUpdateTime);
|
dhData.setDataUpdateTime(dateUpdateTime);
|
||||||
dhData.setCreateBy("system");
|
dhData.setCreateBy("system");
|
||||||
@ -371,7 +384,6 @@ public class DeviceDataProcessServiceImpl extends AbstractBatteryDataProcessor i
|
|||||||
log.info("未找到匹配的点位数据,无法处理电池堆数据,siteId: " + siteId + ",deviceId: " + deviceId);
|
log.info("未找到匹配的点位数据,无法处理电池堆数据,siteId: " + siteId + ",deviceId: " + deviceId);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Map<String, List<EmsPointEnumMatch>> pointEnumMatchMap = devicePointMatchDataProcessor.getPointEnumMatchMap(siteId, DeviceMatchTable.STACK.getCode());
|
|
||||||
|
|
||||||
//BMS 电池簇
|
//BMS 电池簇
|
||||||
EmsBatteryStack dataStack = new EmsBatteryStack();
|
EmsBatteryStack dataStack = new EmsBatteryStack();
|
||||||
@ -382,7 +394,7 @@ public class DeviceDataProcessServiceImpl extends AbstractBatteryDataProcessor i
|
|||||||
dataStack.setPcsCommunicationStatus(CommunicationStatus.OK.getCode());
|
dataStack.setPcsCommunicationStatus(CommunicationStatus.OK.getCode());
|
||||||
dataStack.setEmsCommunicationStatus(CommunicationStatus.OK.getCode());
|
dataStack.setEmsCommunicationStatus(CommunicationStatus.OK.getCode());
|
||||||
|
|
||||||
saveDeviceData(pointMatchList, obj, dataStack, pointEnumMatchMap);
|
saveDeviceData(pointMatchList, obj, dataStack);
|
||||||
|
|
||||||
dataStack.setCreateBy("system");
|
dataStack.setCreateBy("system");
|
||||||
dataStack.setCreateTime(DateUtils.getNowDate());
|
dataStack.setCreateTime(DateUtils.getNowDate());
|
||||||
@ -396,7 +408,7 @@ public class DeviceDataProcessServiceImpl extends AbstractBatteryDataProcessor i
|
|||||||
redisCache.setCacheObject(RedisKeyConstants.STACK + siteId + "_" + deviceId, dataStack);
|
redisCache.setCacheObject(RedisKeyConstants.STACK + siteId + "_" + deviceId, dataStack);
|
||||||
|
|
||||||
// 同步更新设备工作状态
|
// 同步更新设备工作状态
|
||||||
saveDeviceWorkStatus(deviceId, siteId, dataStack.getWorkStatus());
|
saveDeviceWorkStatus(siteId, deviceId, DeviceMatchTable.STACK.getCode(), dataStack.getWorkStatus());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void batteryGroupDataProcess(String siteId, String deviceId, String jsonData) {
|
private void batteryGroupDataProcess(String siteId, String deviceId, String jsonData) {
|
||||||
@ -601,10 +613,8 @@ public class DeviceDataProcessServiceImpl extends AbstractBatteryDataProcessor i
|
|||||||
* @param pointMatchList 字段匹配规则列表
|
* @param pointMatchList 字段匹配规则列表
|
||||||
* @param obj 原始数据Map
|
* @param obj 原始数据Map
|
||||||
* @param entity 目标Java对象
|
* @param entity 目标Java对象
|
||||||
* @param pointEnumMatchMap 枚举匹配规则
|
|
||||||
*/
|
*/
|
||||||
private void saveDeviceData(List<EmsPointMatch> pointMatchList, Map<String, Object> obj,
|
private void saveDeviceData(List<EmsPointMatch> pointMatchList, Map<String, Object> obj, Object entity) {
|
||||||
Object entity, Map<String, List<EmsPointEnumMatch>> pointEnumMatchMap) {
|
|
||||||
if (null == obj || obj.isEmpty()) {
|
if (null == obj || obj.isEmpty()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -623,18 +633,7 @@ public class DeviceDataProcessServiceImpl extends AbstractBatteryDataProcessor i
|
|||||||
// 1. 从原始数据中获取匹配值
|
// 1. 从原始数据中获取匹配值
|
||||||
Object matchValue = obj.get(pointMatchMap.get(fieldName));
|
Object matchValue = obj.get(pointMatchMap.get(fieldName));
|
||||||
|
|
||||||
// 2. 处理枚举值转换
|
// 2. 类型转换
|
||||||
List<EmsPointEnumMatch> pointEnumMatchList = pointEnumMatchMap.get(fieldName);
|
|
||||||
if (CollectionUtils.isNotEmpty(pointEnumMatchList) && matchValue != null) {
|
|
||||||
String finalMatchValue = String.valueOf(matchValue).replace(".0", "");
|
|
||||||
Optional<EmsPointEnumMatch> enumMatch = pointEnumMatchList.stream()
|
|
||||||
.filter(data -> data.getDataEnumCode().equals(finalMatchValue)).findFirst();
|
|
||||||
if (enumMatch.isPresent()) {
|
|
||||||
matchValue = enumMatch.get().getEnumCode();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 3. 类型转换
|
|
||||||
Class<?> fieldType = field.getType();
|
Class<?> fieldType = field.getType();
|
||||||
if (String.class.equals(fieldType)) {
|
if (String.class.equals(fieldType)) {
|
||||||
matchValue = StringUtils.getString(matchValue);
|
matchValue = StringUtils.getString(matchValue);
|
||||||
@ -665,12 +664,11 @@ public class DeviceDataProcessServiceImpl extends AbstractBatteryDataProcessor i
|
|||||||
log.info("未找到匹配的点位数据,无法处理电池簇数据,siteId: " + siteId + ",deviceId: " + deviceId);
|
log.info("未找到匹配的点位数据,无法处理电池簇数据,siteId: " + siteId + ",deviceId: " + deviceId);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Map<String, List<EmsPointEnumMatch>> pointEnumMatchMap = devicePointMatchDataProcessor.getPointEnumMatchMap(siteId, DeviceMatchTable.CLUSTER.getCode());
|
String stackDeviceId = getStackDeviceId(deviceId);
|
||||||
String stackDeviceId = getStackDeviceId(deviceId);
|
|
||||||
//BMS 电池簇
|
//BMS 电池簇
|
||||||
EmsBatteryCluster data = new EmsBatteryCluster();
|
EmsBatteryCluster data = new EmsBatteryCluster();
|
||||||
|
|
||||||
saveDeviceData(pointMatchList, obj, data, pointEnumMatchMap);
|
saveDeviceData(pointMatchList, obj, data);
|
||||||
|
|
||||||
data.setDataUpdateTime(dataUpdateTime);
|
data.setDataUpdateTime(dataUpdateTime);
|
||||||
// data.setWorkStatus(WorkStatus.NORMAL.getCode()); // 或其他默认值
|
// data.setWorkStatus(WorkStatus.NORMAL.getCode()); // 或其他默认值
|
||||||
@ -692,7 +690,7 @@ public class DeviceDataProcessServiceImpl extends AbstractBatteryDataProcessor i
|
|||||||
redisCache.setCacheObject(RedisKeyConstants.CLUSTER + siteId + "_" + deviceId, data);
|
redisCache.setCacheObject(RedisKeyConstants.CLUSTER + siteId + "_" + deviceId, data);
|
||||||
|
|
||||||
// 同步更新设备工作状态
|
// 同步更新设备工作状态
|
||||||
saveDeviceWorkStatus(deviceId, siteId, data.getWorkStatus());
|
saveDeviceWorkStatus(siteId, deviceId, DeviceMatchTable.CLUSTER.getCode(), data.getWorkStatus());
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getStackDeviceId(String deviceId) {
|
private String getStackDeviceId(String deviceId) {
|
||||||
@ -715,7 +713,7 @@ public class DeviceDataProcessServiceImpl extends AbstractBatteryDataProcessor i
|
|||||||
//单体电池
|
//单体电池
|
||||||
Map<String, Map<String, Object>> records = processData(JSON.parseObject(dataJson, new TypeReference<Map<String, Object>>() {
|
Map<String, Map<String, Object>> records = processData(JSON.parseObject(dataJson, new TypeReference<Map<String, Object>>() {
|
||||||
}));
|
}));
|
||||||
Map<String, List<EmsPointEnumMatch>> pointEnumMatchMap = devicePointMatchDataProcessor.getPointEnumMatchMap(siteId, DeviceMatchTable.BATTERY.getCode());
|
log.info("站点:{},单体电池数据:{}", siteId, records);
|
||||||
List<EmsBatteryData> list = new ArrayList<>();
|
List<EmsBatteryData> list = new ArrayList<>();
|
||||||
List<EmsBatteryDataDailyLatest> dailyList = new ArrayList<>();
|
List<EmsBatteryDataDailyLatest> dailyList = new ArrayList<>();
|
||||||
List<EmsBatteryDataMinutes> minutesList = new ArrayList<>();
|
List<EmsBatteryDataMinutes> minutesList = new ArrayList<>();
|
||||||
@ -730,6 +728,15 @@ public class DeviceDataProcessServiceImpl extends AbstractBatteryDataProcessor i
|
|||||||
String batteryDeviceId = recordId + deviceId;
|
String batteryDeviceId = recordId + deviceId;
|
||||||
// 点位匹配数据
|
// 点位匹配数据
|
||||||
List<EmsPointMatch> pointMatchList = devicePointMatchDataProcessor.getDevicePointMatch(siteId, batteryDeviceId, DeviceMatchTable.BATTERY.getCode());
|
List<EmsPointMatch> pointMatchList = devicePointMatchDataProcessor.getDevicePointMatch(siteId, batteryDeviceId, DeviceMatchTable.BATTERY.getCode());
|
||||||
|
if (CollectionUtils.isEmpty(pointMatchList)) {
|
||||||
|
pointMatchList = devicePointMatchDataProcessor.getDeviceDefaultPointMatch(siteId, DeviceMatchTable.BATTERY.getCode());
|
||||||
|
} else {
|
||||||
|
Map<String, Object> newFields = new HashMap<>();
|
||||||
|
for (Map.Entry<String, Object> entry : fields.entrySet()) {
|
||||||
|
newFields.put(entry.getKey() + recordId, entry.getValue());
|
||||||
|
}
|
||||||
|
fields = newFields;
|
||||||
|
}
|
||||||
if (CollectionUtils.isEmpty(pointMatchList)) {
|
if (CollectionUtils.isEmpty(pointMatchList)) {
|
||||||
log.info("未找到匹配的点位数据,无法处理单体电池数据,siteId: " + siteId + ",deviceId: " + batteryDeviceId);
|
log.info("未找到匹配的点位数据,无法处理单体电池数据,siteId: " + siteId + ",deviceId: " + batteryDeviceId);
|
||||||
return;
|
return;
|
||||||
@ -739,7 +746,7 @@ public class DeviceDataProcessServiceImpl extends AbstractBatteryDataProcessor i
|
|||||||
batteryData.setDeviceId(recordId);
|
batteryData.setDeviceId(recordId);
|
||||||
batteryData.setBatteryCellId(recordId);
|
batteryData.setBatteryCellId(recordId);
|
||||||
|
|
||||||
saveDeviceData(pointMatchList, fields, batteryData, pointEnumMatchMap);
|
saveDeviceData(pointMatchList, fields, batteryData);
|
||||||
|
|
||||||
batteryData.setBatteryCluster(deviceId);
|
batteryData.setBatteryCluster(deviceId);
|
||||||
batteryData.setBatteryPack(getStackDeviceId(deviceId));
|
batteryData.setBatteryPack(getStackDeviceId(deviceId));
|
||||||
@ -803,12 +810,11 @@ public class DeviceDataProcessServiceImpl extends AbstractBatteryDataProcessor i
|
|||||||
log.info("未找到匹配的点位数据,无法处理PCS数据,siteId: " + siteId + ",deviceId: " + deviceId);
|
log.info("未找到匹配的点位数据,无法处理PCS数据,siteId: " + siteId + ",deviceId: " + deviceId);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Map<String, List<EmsPointEnumMatch>> pointEnumMatchMap = devicePointMatchDataProcessor.getPointEnumMatchMap(siteId, DeviceMatchTable.PCS.getCode());
|
|
||||||
|
|
||||||
//pcs
|
//pcs
|
||||||
EmsPcsData pcsData = new EmsPcsData();
|
EmsPcsData pcsData = new EmsPcsData();
|
||||||
|
|
||||||
saveDeviceData(pointMatchList, obj, pcsData, pointEnumMatchMap);
|
saveDeviceData(pointMatchList, obj, pcsData);
|
||||||
|
|
||||||
// 状态指示类
|
// 状态指示类
|
||||||
pcsData.setBranchStatus(BranchStatus.NORMAL.getCode());
|
pcsData.setBranchStatus(BranchStatus.NORMAL.getCode());
|
||||||
@ -838,7 +844,7 @@ public class DeviceDataProcessServiceImpl extends AbstractBatteryDataProcessor i
|
|||||||
redisCache.setCacheObject(RedisKeyConstants.PCS + siteId + "_" + deviceId, pcsData);
|
redisCache.setCacheObject(RedisKeyConstants.PCS + siteId + "_" + deviceId, pcsData);
|
||||||
|
|
||||||
// 同步更新PCS设备工作状态
|
// 同步更新PCS设备工作状态
|
||||||
saveDeviceWorkStatus(deviceId, siteId, pcsData.getWorkStatus());
|
saveDeviceWorkStatus(siteId, deviceId, DeviceMatchTable.PCS.getCode(), pcsData.getWorkStatus());
|
||||||
|
|
||||||
// if (SiteEnum.FX.getCode().equals(siteId)) {
|
// if (SiteEnum.FX.getCode().equals(siteId)) {
|
||||||
// //更新每日充放电数据
|
// //更新每日充放电数据
|
||||||
@ -857,7 +863,6 @@ public class DeviceDataProcessServiceImpl extends AbstractBatteryDataProcessor i
|
|||||||
log.info("未找到匹配的点位数据,无法处理PCS支路数据,siteId: " + siteId + ",deviceId: " + deviceId);
|
log.info("未找到匹配的点位数据,无法处理PCS支路数据,siteId: " + siteId + ",deviceId: " + deviceId);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Map<String, List<EmsPointEnumMatch>> pointEnumMatchMap = devicePointMatchDataProcessor.getPointEnumMatchMap(siteId, 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()) {
|
||||||
@ -869,7 +874,7 @@ public class DeviceDataProcessServiceImpl extends AbstractBatteryDataProcessor i
|
|||||||
data.setSiteId(siteId);
|
data.setSiteId(siteId);
|
||||||
data.setGridStatus(GridStatus.GRID.getCode());
|
data.setGridStatus(GridStatus.GRID.getCode());
|
||||||
|
|
||||||
saveDeviceData(pointMatchList, fields, data, pointEnumMatchMap);
|
saveDeviceData(pointMatchList, fields, data);
|
||||||
|
|
||||||
data.setBranchId(recordId);
|
data.setBranchId(recordId);
|
||||||
data.setCreateBy("system");
|
data.setCreateBy("system");
|
||||||
@ -898,13 +903,12 @@ public class DeviceDataProcessServiceImpl extends AbstractBatteryDataProcessor i
|
|||||||
log.info("未找到匹配的点位数据,无法处理LOAD总表数据,siteId: " + siteId + ",deviceId: " + deviceId);
|
log.info("未找到匹配的点位数据,无法处理LOAD总表数据,siteId: " + siteId + ",deviceId: " + deviceId);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Map<String, List<EmsPointEnumMatch>> pointEnumMatchMap = devicePointMatchDataProcessor.getPointEnumMatchMap(siteId, DeviceMatchTable.AMMETER.getCode());
|
|
||||||
|
|
||||||
EmsAmmeterData dataLoad = new EmsAmmeterData();
|
EmsAmmeterData dataLoad = new EmsAmmeterData();
|
||||||
// 更新时间
|
// 更新时间
|
||||||
dataLoad.setDataUpdateTime(dataUpdateTime);
|
dataLoad.setDataUpdateTime(dataUpdateTime);
|
||||||
|
|
||||||
saveDeviceData(pointMatchList, obj, dataLoad, pointEnumMatchMap);
|
saveDeviceData(pointMatchList, obj, dataLoad);
|
||||||
|
|
||||||
dataLoad.setCreateBy("system");
|
dataLoad.setCreateBy("system");
|
||||||
dataLoad.setCreateTime(DateUtils.getNowDate());
|
dataLoad.setCreateTime(DateUtils.getNowDate());
|
||||||
@ -935,7 +939,6 @@ public class DeviceDataProcessServiceImpl extends AbstractBatteryDataProcessor i
|
|||||||
log.info("未找到匹配的点位数据,无法处理电池簇数据,siteId: " + siteId + ",deviceId: " + deviceId);
|
log.info("未找到匹配的点位数据,无法处理电池簇数据,siteId: " + siteId + ",deviceId: " + deviceId);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Map<String, List<EmsPointEnumMatch>> pointEnumMatchMap = devicePointMatchDataProcessor.getPointEnumMatchMap(siteId, DeviceMatchTable.CLUSTER.getCode());
|
|
||||||
//BMSC 电池簇
|
//BMSC 电池簇
|
||||||
EmsBatteryCluster data = new EmsBatteryCluster();
|
EmsBatteryCluster data = new EmsBatteryCluster();
|
||||||
// 其他非 BigDecimal 字段
|
// 其他非 BigDecimal 字段
|
||||||
@ -957,25 +960,36 @@ public class DeviceDataProcessServiceImpl extends AbstractBatteryDataProcessor i
|
|||||||
// 获取redis获取最新的BMSD数据
|
// 获取redis获取最新的BMSD数据
|
||||||
Map<String, Object> stackObj = redisCache.getCacheObject(RedisKeyConstants.ORIGINAL_BMSD + siteId + "_" + stackDeviceId);
|
Map<String, Object> stackObj = redisCache.getCacheObject(RedisKeyConstants.ORIGINAL_BMSD + siteId + "_" + stackDeviceId);
|
||||||
data.setDeviceId(deviceId);
|
data.setDeviceId(deviceId);
|
||||||
saveDeviceData(pointMatchList, obj, data, pointEnumMatchMap);
|
saveDeviceData(pointMatchList, obj, data);
|
||||||
|
|
||||||
// 取堆里面数据
|
// 取堆里面数据
|
||||||
saveDeviceData(pointMatchList, stackObj, data, pointEnumMatchMap);
|
saveDeviceData(pointMatchList, stackObj, data);
|
||||||
|
|
||||||
emsBatteryClusterMapper.insertEmsBatteryCluster(data);
|
emsBatteryClusterMapper.insertEmsBatteryCluster(data);
|
||||||
redisCache.setCacheObject(RedisKeyConstants.CLUSTER + siteId + "_" + deviceId, data);
|
redisCache.setCacheObject(RedisKeyConstants.CLUSTER + siteId + "_" + deviceId, data);
|
||||||
|
|
||||||
// 同步更新设备工作状态
|
// 同步更新设备工作状态
|
||||||
saveDeviceWorkStatus(deviceId, siteId, data.getWorkStatus());
|
saveDeviceWorkStatus(siteId, deviceId, DeviceMatchTable.CLUSTER.getCode(), data.getWorkStatus());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void saveDeviceWorkStatus(String deviceId, String siteId, String workStatus) {
|
private void saveDeviceWorkStatus(String siteId, String deviceId, String deviceCategory, String workStatus) {
|
||||||
if (StringUtils.isEmpty(workStatus)) {
|
if (StringUtils.isEmpty(workStatus)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
// Map<String, List<EmsPointEnumMatch>> pointEnumMatchMap = devicePointMatchDataProcessor.getPointEnumMatchMap(siteId, deviceCategory);
|
||||||
|
// // 枚举值转换
|
||||||
|
// List<EmsPointEnumMatch> pointEnumMatchList = pointEnumMatchMap.get("workStatus");
|
||||||
|
// if (CollectionUtils.isNotEmpty(pointEnumMatchList) && workStatus != null) {
|
||||||
|
// String finalMatchValue = workStatus.replace(".0", "");
|
||||||
|
// Optional<EmsPointEnumMatch> enumMatch = pointEnumMatchList.stream()
|
||||||
|
// .filter(data -> data.getDataEnumCode().equals(finalMatchValue)).findFirst();
|
||||||
|
// if (enumMatch.isPresent()) {
|
||||||
|
// workStatus = enumMatch.get().getEnumCode();
|
||||||
|
// }
|
||||||
|
// }
|
||||||
EmsDevicesSetting emsDevicesSetting = emsDevicesSettingMapper.getDeviceBySiteAndDeviceId(deviceId, siteId);
|
EmsDevicesSetting emsDevicesSetting = emsDevicesSettingMapper.getDeviceBySiteAndDeviceId(deviceId, siteId);
|
||||||
emsDevicesSetting.setWorkStatus(workStatus);
|
emsDevicesSetting.setWorkStatus(workStatus);
|
||||||
emsDevicesSetting.setUpdatedAt(DateUtils.getNowDate());
|
emsDevicesSetting.setUpdatedAt(DateUtils.getNowDate());
|
||||||
@ -1046,7 +1060,6 @@ public class DeviceDataProcessServiceImpl extends AbstractBatteryDataProcessor i
|
|||||||
log.info("未找到匹配的点位数据,无法处理电表数据,siteId: " + siteId + ",deviceId: " + deviceId);
|
log.info("未找到匹配的点位数据,无法处理电表数据,siteId: " + siteId + ",deviceId: " + deviceId);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Map<String, List<EmsPointEnumMatch>> pointEnumMatchMap = devicePointMatchDataProcessor.getPointEnumMatchMap(siteId, DeviceMatchTable.AMMETER.getCode());
|
|
||||||
|
|
||||||
// 获取上次数据,便于后面计算差值均无则默认0
|
// 获取上次数据,便于后面计算差值均无则默认0
|
||||||
EmsAmmeterData lastAmmeterData = getLastAmmeterData(siteId, deviceId);
|
EmsAmmeterData lastAmmeterData = getLastAmmeterData(siteId, deviceId);
|
||||||
@ -1055,7 +1068,7 @@ public class DeviceDataProcessServiceImpl extends AbstractBatteryDataProcessor i
|
|||||||
// 更新时间
|
// 更新时间
|
||||||
dataMete.setDataUpdateTime(dataUpdateTime);
|
dataMete.setDataUpdateTime(dataUpdateTime);
|
||||||
|
|
||||||
saveDeviceData(pointMatchList, obj, dataMete, pointEnumMatchMap);
|
saveDeviceData(pointMatchList, obj, dataMete);
|
||||||
|
|
||||||
dataMete.setCreateBy("system");
|
dataMete.setCreateBy("system");
|
||||||
dataMete.setCreateTime(DateUtils.getNowDate());
|
dataMete.setCreateTime(DateUtils.getNowDate());
|
||||||
@ -1584,12 +1597,11 @@ public class DeviceDataProcessServiceImpl extends AbstractBatteryDataProcessor i
|
|||||||
log.info("未找到匹配的点位数据,无法处理中水冷却告警数据,siteId: " + siteId + ",deviceId: " + deviceId);
|
log.info("未找到匹配的点位数据,无法处理中水冷却告警数据,siteId: " + siteId + ",deviceId: " + deviceId);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Map<String, List<EmsPointEnumMatch>> pointEnumMatchMap = devicePointMatchDataProcessor.getPointEnumMatchMap(siteId, DeviceMatchTable.PCS.getCode());
|
|
||||||
EmsPcsAlarmData pcsAlarmData = new EmsPcsAlarmData();
|
EmsPcsAlarmData pcsAlarmData = new EmsPcsAlarmData();
|
||||||
// 更新时间
|
// 更新时间
|
||||||
pcsAlarmData.setDataTimestamp(dataUpdateTime);
|
pcsAlarmData.setDataTimestamp(dataUpdateTime);
|
||||||
|
|
||||||
saveDeviceData(pointMatchList, obj, pcsAlarmData, pointEnumMatchMap);
|
saveDeviceData(pointMatchList, obj, pcsAlarmData);
|
||||||
|
|
||||||
pcsAlarmData.setCreateBy("system");
|
pcsAlarmData.setCreateBy("system");
|
||||||
pcsAlarmData.setCreateTime(DateUtils.getNowDate());
|
pcsAlarmData.setCreateTime(DateUtils.getNowDate());
|
||||||
@ -1611,13 +1623,12 @@ public class DeviceDataProcessServiceImpl extends AbstractBatteryDataProcessor i
|
|||||||
log.info("未找到匹配的点位数据,无法处理电池堆告警数据,siteId: " + siteId + ",deviceId: " + deviceId);
|
log.info("未找到匹配的点位数据,无法处理电池堆告警数据,siteId: " + siteId + ",deviceId: " + deviceId);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Map<String, List<EmsPointEnumMatch>> pointEnumMatchMap = devicePointMatchDataProcessor.getPointEnumMatchMap(siteId, DeviceMatchTable.STACK.getCode());
|
|
||||||
|
|
||||||
EmsStackAlarmData stackAlarmData = new EmsStackAlarmData();
|
EmsStackAlarmData stackAlarmData = new EmsStackAlarmData();
|
||||||
// 更新时间
|
// 更新时间
|
||||||
stackAlarmData.setDataTimestamp(dataUpdateTime);
|
stackAlarmData.setDataTimestamp(dataUpdateTime);
|
||||||
|
|
||||||
saveDeviceData(pointMatchList, obj, stackAlarmData, pointEnumMatchMap);
|
saveDeviceData(pointMatchList, obj, stackAlarmData);
|
||||||
|
|
||||||
stackAlarmData.setCreateBy("system");
|
stackAlarmData.setCreateBy("system");
|
||||||
stackAlarmData.setCreateTime(DateUtils.getNowDate());
|
stackAlarmData.setCreateTime(DateUtils.getNowDate());
|
||||||
@ -1638,12 +1649,11 @@ public class DeviceDataProcessServiceImpl extends AbstractBatteryDataProcessor i
|
|||||||
log.info("未找到匹配的点位数据,无法处理电池簇告警数据,siteId: " + siteId + ",deviceId: " + deviceId);
|
log.info("未找到匹配的点位数据,无法处理电池簇告警数据,siteId: " + siteId + ",deviceId: " + deviceId);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Map<String, List<EmsPointEnumMatch>> pointEnumMatchMap = devicePointMatchDataProcessor.getPointEnumMatchMap(siteId, DeviceMatchTable.CLUSTER.getCode());
|
|
||||||
EmsClusterAlarmData clusterAlarmData = new EmsClusterAlarmData();
|
EmsClusterAlarmData clusterAlarmData = new EmsClusterAlarmData();
|
||||||
// 更新时间
|
// 更新时间
|
||||||
clusterAlarmData.setDataTimestamp(dataUpdateTime);
|
clusterAlarmData.setDataTimestamp(dataUpdateTime);
|
||||||
|
|
||||||
saveDeviceData(pointMatchList, obj, clusterAlarmData, pointEnumMatchMap);
|
saveDeviceData(pointMatchList, obj, clusterAlarmData);
|
||||||
|
|
||||||
clusterAlarmData.setCreateBy("system");
|
clusterAlarmData.setCreateBy("system");
|
||||||
clusterAlarmData.setCreateTime(DateUtils.getNowDate());
|
clusterAlarmData.setCreateTime(DateUtils.getNowDate());
|
||||||
@ -1665,13 +1675,12 @@ public class DeviceDataProcessServiceImpl extends AbstractBatteryDataProcessor i
|
|||||||
log.info("未找到匹配的点位数据,无法处理中水冷却告警数据,siteId: " + siteId + ",deviceId: " + deviceId);
|
log.info("未找到匹配的点位数据,无法处理中水冷却告警数据,siteId: " + siteId + ",deviceId: " + deviceId);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Map<String, List<EmsPointEnumMatch>> pointEnumMatchMap = devicePointMatchDataProcessor.getPointEnumMatchMap(siteId, DeviceMatchTable.COOLING.getCode());
|
|
||||||
|
|
||||||
EmsCoolingAlarmData coolingAlarmData = new EmsCoolingAlarmData();
|
EmsCoolingAlarmData coolingAlarmData = new EmsCoolingAlarmData();
|
||||||
// 更新时间
|
// 更新时间
|
||||||
coolingAlarmData.setDataTimestamp(dataUpdateTime);
|
coolingAlarmData.setDataTimestamp(dataUpdateTime);
|
||||||
|
|
||||||
saveDeviceData(pointMatchList, obj, coolingAlarmData, pointEnumMatchMap);
|
saveDeviceData(pointMatchList, obj, coolingAlarmData);
|
||||||
|
|
||||||
coolingAlarmData.setCreateBy("system");
|
coolingAlarmData.setCreateBy("system");
|
||||||
coolingAlarmData.setCreateTime(DateUtils.getNowDate());
|
coolingAlarmData.setCreateTime(DateUtils.getNowDate());
|
||||||
|
|||||||
@ -33,6 +33,7 @@ import com.xzzn.ems.mapper.EmsStrategyRunningMapper;
|
|||||||
import com.xzzn.ems.mapper.EmsStrategyTempMapper;
|
import com.xzzn.ems.mapper.EmsStrategyTempMapper;
|
||||||
import com.xzzn.ems.service.IEmsEnergyPriceConfigService;
|
import com.xzzn.ems.service.IEmsEnergyPriceConfigService;
|
||||||
import com.xzzn.ems.service.ISingleSiteService;
|
import com.xzzn.ems.service.ISingleSiteService;
|
||||||
|
import com.xzzn.ems.utils.DevicePointMatchDataProcessor;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
@ -101,6 +102,8 @@ public class SingleSiteServiceImpl implements ISingleSiteService {
|
|||||||
private EmsEnergyPriceConfigMapper emsEnergyPriceConfigMapper;
|
private EmsEnergyPriceConfigMapper emsEnergyPriceConfigMapper;
|
||||||
@Autowired
|
@Autowired
|
||||||
private IEmsEnergyPriceConfigService iEmsEnergyPriceConfigService;
|
private IEmsEnergyPriceConfigService iEmsEnergyPriceConfigService;
|
||||||
|
@Autowired
|
||||||
|
private DevicePointMatchDataProcessor devicePointMatchDataProcessor;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SiteMonitorHomeVo getSiteMonitorDataVo(String siteId) {
|
public SiteMonitorHomeVo getSiteMonitorDataVo(String siteId) {
|
||||||
@ -489,6 +492,9 @@ public class SingleSiteServiceImpl implements ISingleSiteService {
|
|||||||
pcsDetailInfoVo.setAlarmNum(alarmNum);
|
pcsDetailInfoVo.setAlarmNum(alarmNum);
|
||||||
pcsDetailInfoVo.setDeviceStatus(pcsDevice.get("deviceStatus") == null ? "" : pcsDevice.get("deviceStatus").toString());
|
pcsDetailInfoVo.setDeviceStatus(pcsDevice.get("deviceStatus") == null ? "" : pcsDevice.get("deviceStatus").toString());
|
||||||
|
|
||||||
|
// 处理枚举匹配字段
|
||||||
|
devicePointMatchDataProcessor.convertFieldValueToEnumMatch(siteId, DeviceCategory.PCS.getCode(), pcsDetailInfoVo);
|
||||||
|
|
||||||
pcsDetailInfoVoList.add(pcsDetailInfoVo);
|
pcsDetailInfoVoList.add(pcsDetailInfoVo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -535,6 +541,10 @@ public class SingleSiteServiceImpl implements ISingleSiteService {
|
|||||||
// 告警设备点位个数
|
// 告警设备点位个数
|
||||||
int alarmNum = emsPointMatchMapper.getDevicePointAlarmNum(siteId, stackId, DeviceCategory.STACK.getCode());
|
int alarmNum = emsPointMatchMapper.getDevicePointAlarmNum(siteId, stackId, DeviceCategory.STACK.getCode());
|
||||||
bmsOverViewVo.setAlarmNum(alarmNum);
|
bmsOverViewVo.setAlarmNum(alarmNum);
|
||||||
|
|
||||||
|
// 处理枚举匹配字段
|
||||||
|
devicePointMatchDataProcessor.convertFieldValueToEnumMatch(siteId, DeviceCategory.STACK.getCode(), bmsOverViewVo);
|
||||||
|
|
||||||
bmsOverViewVoList.add(bmsOverViewVo);
|
bmsOverViewVoList.add(bmsOverViewVo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -594,6 +604,10 @@ public class SingleSiteServiceImpl implements ISingleSiteService {
|
|||||||
// 告警设备点位个数
|
// 告警设备点位个数
|
||||||
int alarmNum = emsPointMatchMapper.getDevicePointAlarmNum(siteId, clusterId, DeviceCategory.CLUSTER.getCode());
|
int alarmNum = emsPointMatchMapper.getDevicePointAlarmNum(siteId, clusterId, DeviceCategory.CLUSTER.getCode());
|
||||||
bmsBatteryClusterVo.setAlarmNum(alarmNum);
|
bmsBatteryClusterVo.setAlarmNum(alarmNum);
|
||||||
|
|
||||||
|
// 处理枚举匹配字段
|
||||||
|
devicePointMatchDataProcessor.convertFieldValueToEnumMatch(siteId, DeviceCategory.CLUSTER.getCode(), bmsBatteryClusterVo);
|
||||||
|
|
||||||
bmsBatteryClusterVoList.add(bmsBatteryClusterVo);
|
bmsBatteryClusterVoList.add(bmsBatteryClusterVo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -746,6 +760,10 @@ public class SingleSiteServiceImpl implements ISingleSiteService {
|
|||||||
ammeterDataVo.setAlarmNum(alarmNum);
|
ammeterDataVo.setAlarmNum(alarmNum);
|
||||||
// 设置表数据
|
// 设置表数据
|
||||||
dealAmmeterData(ammeterData,ammeterDataVo);
|
dealAmmeterData(ammeterData,ammeterDataVo);
|
||||||
|
|
||||||
|
// 处理枚举匹配字段
|
||||||
|
devicePointMatchDataProcessor.convertFieldValueToEnumMatch(siteId, DeviceCategory.AMMETER.getCode(), ammeterDataVo);
|
||||||
|
|
||||||
ammeterResponse.add(ammeterDataVo);
|
ammeterResponse.add(ammeterDataVo);
|
||||||
}
|
}
|
||||||
return ammeterResponse;
|
return ammeterResponse;
|
||||||
@ -836,6 +854,10 @@ public class SingleSiteServiceImpl implements ISingleSiteService {
|
|||||||
// 告警设备点位个数
|
// 告警设备点位个数
|
||||||
int alarmNum = emsPointMatchMapper.getDevicePointAlarmNum(siteId, dhDeviceId, DeviceCategory.DH.getCode());
|
int alarmNum = emsPointMatchMapper.getDevicePointAlarmNum(siteId, dhDeviceId, DeviceCategory.DH.getCode());
|
||||||
dhDataVo.setAlarmNum(alarmNum);
|
dhDataVo.setAlarmNum(alarmNum);
|
||||||
|
|
||||||
|
// 处理枚举匹配字段
|
||||||
|
devicePointMatchDataProcessor.convertFieldValueToEnumMatch(siteId, DeviceCategory.DH.getCode(), dhDataVo);
|
||||||
|
|
||||||
emsDhDataList.add(dhDataVo);
|
emsDhDataList.add(dhDataVo);
|
||||||
}
|
}
|
||||||
return emsDhDataList;
|
return emsDhDataList;
|
||||||
@ -865,6 +887,10 @@ public class SingleSiteServiceImpl implements ISingleSiteService {
|
|||||||
xfDataVo.setAlarmNum(alarmNum);
|
xfDataVo.setAlarmNum(alarmNum);
|
||||||
}
|
}
|
||||||
xfDataVo.setEmsCommunicationStatus(xfDevice.get("communicationStatus") == null ? "" : xfDevice.get("communicationStatus").toString());
|
xfDataVo.setEmsCommunicationStatus(xfDevice.get("communicationStatus") == null ? "" : xfDevice.get("communicationStatus").toString());
|
||||||
|
|
||||||
|
// 处理枚举匹配字段
|
||||||
|
devicePointMatchDataProcessor.convertFieldValueToEnumMatch(siteId, DeviceCategory.XF.getCode(), xfData);
|
||||||
|
|
||||||
emsXfDataList.add(xfDataVo);
|
emsXfDataList.add(xfDataVo);
|
||||||
}
|
}
|
||||||
return emsXfDataList;
|
return emsXfDataList;
|
||||||
@ -888,6 +914,10 @@ public class SingleSiteServiceImpl implements ISingleSiteService {
|
|||||||
int alarmNum = emsPointMatchMapper.getDevicePointAlarmNum(siteId, emsDeviceId, DeviceCategory.EMS.getCode());
|
int alarmNum = emsPointMatchMapper.getDevicePointAlarmNum(siteId, emsDeviceId, DeviceCategory.EMS.getCode());
|
||||||
emsDataVo.setAlarmNum(alarmNum);
|
emsDataVo.setAlarmNum(alarmNum);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 处理枚举匹配字段
|
||||||
|
devicePointMatchDataProcessor.convertFieldValueToEnumMatch(siteId, DeviceCategory.EMS.getCode(), emsDataVo);
|
||||||
|
|
||||||
emsDataList.add(emsDataVo);
|
emsDataList.add(emsDataVo);
|
||||||
}
|
}
|
||||||
return emsDataList;
|
return emsDataList;
|
||||||
|
|||||||
@ -21,6 +21,7 @@ import java.util.HashMap;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
import java.util.Optional;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
@ -79,6 +80,14 @@ public class DevicePointMatchDataProcessor {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<EmsPointMatch> getDeviceDefaultPointMatch(String siteId, String deviceCategory) {
|
||||||
|
List<EmsPointMatch> pointMatchList = redisCache.getCacheList(getPointMacthCacheKey(siteId, null, deviceCategory));
|
||||||
|
if (CollectionUtils.isEmpty(pointMatchList)) {
|
||||||
|
pointMatchList = emsPointMatchMapper.getDevicePointMatchList(siteId, null, deviceCategory);
|
||||||
|
}
|
||||||
|
return pointMatchList;
|
||||||
|
}
|
||||||
|
|
||||||
public List<EmsPointMatch> getDevicePointMatch(String siteId, String deviceId, String deviceCategory) {
|
public List<EmsPointMatch> getDevicePointMatch(String siteId, String deviceId, String deviceCategory) {
|
||||||
return getDevicePointMatch(siteId, deviceId, deviceCategory, false);
|
return getDevicePointMatch(siteId, deviceId, deviceCategory, false);
|
||||||
}
|
}
|
||||||
@ -206,7 +215,11 @@ public class DevicePointMatchDataProcessor {
|
|||||||
*/
|
*/
|
||||||
public static String getPointMacthCacheKey(String siteId, String deviceId, String deviceCategory)
|
public static String getPointMacthCacheKey(String siteId, String deviceId, String deviceCategory)
|
||||||
{
|
{
|
||||||
return RedisKeyConstants.POINT_MATCH + deviceCategory + "_" + siteId + "_" + deviceId;
|
if (StringUtils.isEmpty(deviceId)) {
|
||||||
|
return RedisKeyConstants.POINT_MATCH + deviceCategory + "_" + siteId;
|
||||||
|
} else {
|
||||||
|
return RedisKeyConstants.POINT_MATCH + deviceCategory + "_" + siteId + "_" + deviceId;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -219,4 +232,42 @@ public class DevicePointMatchDataProcessor {
|
|||||||
{
|
{
|
||||||
return RedisKeyConstants.POINT_ENUM_MATCH + deviceCategory + "_" + siteId;
|
return RedisKeyConstants.POINT_ENUM_MATCH + deviceCategory + "_" + siteId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 转换字段值为配置枚举值
|
||||||
|
*/
|
||||||
|
public void convertFieldValueToEnumMatch(String siteId, String deviceCategory, Object entity) {
|
||||||
|
|
||||||
|
Map<String, List<EmsPointEnumMatch>> pointEnumMatchMap = this.getPointEnumMatchMap(siteId, deviceCategory);
|
||||||
|
Field[] fields = entity.getClass().getDeclaredFields();
|
||||||
|
for (Field field : fields) {
|
||||||
|
String fieldName = field.getName();
|
||||||
|
if (pointEnumMatchMap.containsKey(fieldName)) {
|
||||||
|
// 处理匹配的字段名,并设置值
|
||||||
|
field.setAccessible(true); // 允许访问私有字段
|
||||||
|
try {
|
||||||
|
// 从原始数据中获取匹配值
|
||||||
|
Object matchValue = field.get(entity);
|
||||||
|
List<EmsPointEnumMatch> pointEnumMatchList = pointEnumMatchMap.get(fieldName);
|
||||||
|
if (CollectionUtils.isNotEmpty(pointEnumMatchList) && matchValue != null) {
|
||||||
|
String finalMatchValue = String.valueOf(matchValue).replace(".0", "");
|
||||||
|
Optional<EmsPointEnumMatch> enumMatch = pointEnumMatchList.stream()
|
||||||
|
.filter(data -> data.getDataEnumCode().equals(finalMatchValue)).findFirst();
|
||||||
|
if (enumMatch.isPresent()) {
|
||||||
|
matchValue = enumMatch.get().getEnumCode();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (matchValue == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 设置字段值
|
||||||
|
field.set(entity, matchValue);
|
||||||
|
} catch (IllegalAccessException e) {
|
||||||
|
log.warn("convertFieldValueToEnumMatch 设置字段值时出错", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -212,7 +212,7 @@
|
|||||||
battery_pack, battery_cluster, battery_cell_id,
|
battery_pack, battery_cluster, battery_cell_id,
|
||||||
voltage, temperature, soc, soh, data_timestamp,
|
voltage, temperature, soc, soh, data_timestamp,
|
||||||
create_by, create_time, update_by, update_time,
|
create_by, create_time, update_by, update_time,
|
||||||
remark, site_id, device_id, cluster_device_id, inter_resistance
|
remark, site_id, device_id, cluster_device_id, inter_resistance, current
|
||||||
) VALUES
|
) VALUES
|
||||||
<foreach collection="list" item="item" separator=",">
|
<foreach collection="list" item="item" separator=",">
|
||||||
(
|
(
|
||||||
|
|||||||
@ -522,8 +522,13 @@
|
|||||||
<select id="getDevicePointMatchList" resultMap="EmsPointMatchResult">
|
<select id="getDevicePointMatchList" resultMap="EmsPointMatchResult">
|
||||||
<include refid="selectEmsPointMatchVo"/>
|
<include refid="selectEmsPointMatchVo"/>
|
||||||
where site_id = #{siteId}
|
where site_id = #{siteId}
|
||||||
and device_id = #{deviceId}
|
<if test="deviceId != null">
|
||||||
and device_category = #{deviceCategory}
|
and device_id = #{deviceId}
|
||||||
|
</if>
|
||||||
|
<if test="deviceId == null">
|
||||||
|
and device_id is null
|
||||||
|
</if>
|
||||||
|
and device_category = #{deviceCategory}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="selectEmsPointMatchExportList" parameterType="EmsPointMatch" resultType="com.xzzn.ems.domain.vo.DevicePointMatchExportVo">
|
<select id="selectEmsPointMatchExportList" parameterType="EmsPointMatch" resultType="com.xzzn.ems.domain.vo.DevicePointMatchExportVo">
|
||||||
|
|||||||
Reference in New Issue
Block a user