Commit 7dc1ee9b authored by caotao's avatar caotao

1.优化调用逻辑,避免接口直接抛出异常。

parent 139cedcb
......@@ -47,8 +47,11 @@ public class AlarmInfoDetailServiceImpl implements IAlarmInfoDetailService {
public Map<String, Object> getAlramInfoDetailOfFan(String id) {
Map<String, Object> result = new HashMap<>();
IdxBizFanWarningRecord idxBizFanWarningRecord = idxBizFanWarningRecordMapper.selectById(id);
//获取告警信息
result.put("warningInfo", getFanAlarmInfoMap(idxBizFanWarningRecord));
// -----------预警趋势
//获取工况组合来源
result.put("sourceInfo", getSourceInfoMapFan(idxBizFanWarningRecord));
// 获取预警趋势
HashMap<String, Object> alarmTrendAndAlarmAbnormalityListResult = getFanAlarmTrendAndAlarmAbnormalityList(idxBizFanWarningRecord);
result.put("alarmTrend", alarmTrendAndAlarmAbnormalityListResult.get("alarmTrend"));
result.put("alarmAbnormalityList", alarmTrendAndAlarmAbnormalityListResult.get("alarmAbnormalityList"));
......@@ -60,64 +63,20 @@ public class AlarmInfoDetailServiceImpl implements IAlarmInfoDetailService {
.eq("ANALYSIS_POINT_ID", idxBizFanWarningRecord.getAnalysisPointId()));
IdxBizFanPointVarCentralValue idxBizFanPointVarCentralValue = new IdxBizFanPointVarCentralValue();
if (idxBizFanPointVarCentralValueList.size() <= 0) {
result.put("healthPointInfo", new HashMap<>());
result.put("currentValue", new HashMap<>());
result.put("trainValue", new HashMap<>());
return result;
}
idxBizFanPointVarCentralValue = idxBizFanPointVarCentralValueList.get(0);
handlerIdxBizFanPointVarCentralValue(idxBizFanPointVarCentralValueList);
//健康指数来源测点信息
HashMap<String, String> healthPointInfoMap = new HashMap<>();
healthPointInfoMap.put("analysisPointName", idxBizFanPointVarCentralValue.getAnalysisPointName());
healthPointInfoMap.put("processPoint1Name", idxBizFanPointVarCentralValue.getProcessPoint1Name());
healthPointInfoMap.put("processPoint2Name", idxBizFanPointVarCentralValue.getProcessPoint2Name());
healthPointInfoMap.put("processPoint3Name", idxBizFanPointVarCentralValue.getProcessPoint3Name());
result.put("healthPointInfo", healthPointInfoMap);
List<IdxBizFanPointProcessVariableClassification> idxBizFanPointProcessVariableClassificationList = idxBizFanPointProcessVariableClassificationMapper
.selectList(new QueryWrapper<IdxBizFanPointProcessVariableClassification>()
.in("SEQUENCE_NBR", Arrays.asList(idxBizFanPointVarCentralValue.getAnalysisPointId(), idxBizFanPointVarCentralValue.getProcessPoint1Id(), idxBizFanPointVarCentralValue.getProcessPoint2Id(), idxBizFanPointVarCentralValue.getProcessPoint3Id())));
String addresss = idxBizFanPointProcessVariableClassificationList.stream()
.map(idxBizFanPointProcessVariableClassification -> "'" + idxBizFanPointProcessVariableClassification.getIndexAddress() + "'")
.collect(Collectors.joining(","));
Map<String, String> idAddressMap = idxBizFanPointProcessVariableClassificationList.stream()
.collect(Collectors.toMap(IdxBizFanPointProcessVariableClassification::getSequenceNbr, IdxBizFanPointProcessVariableClassification::getIndexAddress));
//查询固化数据---------------------
List<IndicatorData> indicatorDataList = indicatorDataMapper.selectDataByGatewayIdAndAddressForAlarmInfoDetail(idxBizFanPointProcessVariableClassificationList.get(0).getGatewayId(), addresss, startTime, endTime);
Map<String, Double> indicatorDataListMap = new HashMap<>(indicatorDataList.size());
TreeSet<String> timesindicatorDataList = new TreeSet<>();
indicatorDataList.forEach(indicatorData -> {
String time = DateUtil.format(indicatorData.getCreatedTime(), DatePattern.NORM_DATETIME_MINUTE_PATTERN) + ":00";
indicatorDataListMap.put(time + "_" + indicatorData.getAddress(), Double.valueOf(indicatorData.getValueF()));
timesindicatorDataList.add(time);
});
result.put("healthPointInfo", getHealthPointInfoFan(idxBizFanPointVarCentralValue));
HashMap<String, Object> currentValueAndTrainValueMap = getCurrentValueAndTrainValueInfoFan(idxBizFanPointVarCentralValue, startTime, endTime, idxBizFanPointVarCentralValueList);
//当前值
List<HashMap<String, String>> currentValue = new ArrayList<>();
result.put("currentValue", currentValueAndTrainValueMap.get("currentValue"));
//训练值
List<HashMap<String, String>> trainValue = new ArrayList<>();
String analyseValueAddress = idAddressMap.get(idxBizFanPointVarCentralValue.getAnalysisPointId());
String process1Address = idAddressMap.get(idxBizFanPointVarCentralValue.getProcessPoint1Id());
String process2Address = idAddressMap.get(idxBizFanPointVarCentralValue.getProcessPoint2Id());
String process3Address = idAddressMap.get(idxBizFanPointVarCentralValue.getProcessPoint3Id());
timesindicatorDataList.forEach(
s -> {
HashMap<String, String> currentValueMap = new HashMap<>();
currentValueMap.put("time", s);
Double analyseValue = indicatorDataListMap.get(s + "_" + analyseValueAddress);
Double processValue1 = indicatorDataListMap.get(s + "_" + process1Address);
Double processValue2 = indicatorDataListMap.get(s + "_" + process2Address);
Double processValue3 = indicatorDataListMap.get(s + "_" + process3Address);
currentValueMap.put("analyseValue", String.valueOf(analyseValue));
currentValueMap.put("processValue1", String.valueOf(processValue1));
currentValueMap.put("processValue2", String.valueOf(processValue2));
currentValueMap.put("processValue3", String.valueOf(processValue3));
HashMap<String, String> trainValueMap = getWorkingConditionCombinationIntervalFan(processValue1, processValue2, processValue3, idxBizFanPointVarCentralValueList);
trainValueMap.put("time", s);
currentValue.add(currentValueMap);
trainValue.add(trainValueMap);
}
);
result.put("currentValue", currentValue);
result.put("trainValue", trainValue);
//---------------工况组合来源
result.put("sourceInfo", getSourceInfoMapFan(idxBizFanWarningRecord));
result.put("trainValue", currentValueAndTrainValueMap.get("trainValue"));
return result;
}
......@@ -125,7 +84,10 @@ public class AlarmInfoDetailServiceImpl implements IAlarmInfoDetailService {
public Map<String, Object> getAlramInfoDetailOfPv(String id) {
Map<String, Object> result = new HashMap<>();
IdxBizPvWarningRecord idxBizPvWarningRecord = idxBizPvWarningRecordMapper.selectById(id);
//告警信息
result.put("warningInfo", getPvAlarmInfoMap(idxBizPvWarningRecord));
//---------------工况组合来源
result.put("sourceInfo", getSourceInfoMapPv(idxBizPvWarningRecord));
// -----------预警趋势
HashMap<String, Object> alarmTrendAndAlarmAbnormalityListResult = getPvAlarmTrendAndAlarmAbnormalityList(idxBizPvWarningRecord);
result.put("alarmTrend", alarmTrendAndAlarmAbnormalityListResult.get("alarmTrend"));
......@@ -138,67 +100,28 @@ public class AlarmInfoDetailServiceImpl implements IAlarmInfoDetailService {
.eq("ANALYSIS_POINT_ID", idxBizPvWarningRecord.getAnalysisPointId()));
IdxBizPvPointVarCentralValue idxBizPvPointVarCentralValue = new IdxBizPvPointVarCentralValue();
if (idxBizPvPointVarCentralValueList.size() <= 0) {
result.put("healthPointInfo", new HashMap<>());
result.put("currentValue", new HashMap<>());
result.put("trainValue", new HashMap<>());
return result;
}
idxBizPvPointVarCentralValue = idxBizPvPointVarCentralValueList.get(0);
handlerIdxBizPvPointVarCentralValue(idxBizPvPointVarCentralValueList);
//健康指数来源测点信息
HashMap<String, String> healthPointInfoMap = new HashMap<>();
healthPointInfoMap.put("analysisPointName", idxBizPvPointVarCentralValue.getAnalysisPointIdName());
healthPointInfoMap.put("processPoint1Name", idxBizPvPointVarCentralValue.getProcessPoint1IdName());
healthPointInfoMap.put("processPoint2Name", idxBizPvPointVarCentralValue.getProcessPoint2IdName());
healthPointInfoMap.put("processPoint3Name", idxBizPvPointVarCentralValue.getProcessPoint3IdName());
result.put("healthPointInfo", healthPointInfoMap);
List<IdxBizPvPointProcessVariableClassification> idxBizPvPointProcessVariableClassificationList = idxBizPvPointProcessVariableClassificationMapper
.selectList(new QueryWrapper<IdxBizPvPointProcessVariableClassification>()
.in("SEQUENCE_NBR", Arrays.asList(idxBizPvPointVarCentralValue.getAnalysisPointId(), idxBizPvPointVarCentralValue.getProcessPoint1Id(), idxBizPvPointVarCentralValue.getProcessPoint2Id(), idxBizPvPointVarCentralValue.getProcessPoint3Id())));
String addresss = idxBizPvPointProcessVariableClassificationList.stream()
.map(idxBizFanPointProcessVariableClassification -> "'" + idxBizFanPointProcessVariableClassification.getIndexAddress() + "'")
.collect(Collectors.joining(","));
Map<String, String> idAddressMap = idxBizPvPointProcessVariableClassificationList.stream()
.collect(Collectors.toMap(IdxBizPvPointProcessVariableClassification::getSequenceNbr, IdxBizPvPointProcessVariableClassification::getIndexAddress));
//查询固化数据---------------------
List<IndicatorData> indicatorDataList = indicatorDataMapper.selectDataByGatewayIdAndAddressForAlarmInfoDetail(idxBizPvPointProcessVariableClassificationList.get(0).getGatewayId(), addresss, startTime, endTime);
Map<String, Double> indicatorDataListMap = new HashMap<>(indicatorDataList.size());
TreeSet<String> timesindicatorDataList = new TreeSet<>();
indicatorDataList.forEach(indicatorData -> {
String time = DateUtil.format(indicatorData.getCreatedTime(), DatePattern.NORM_DATETIME_MINUTE_PATTERN) + ":00";
indicatorDataListMap.put(time + "_" + indicatorData.getAddress(), Double.valueOf(indicatorData.getValueF()));
timesindicatorDataList.add(time);
});
result.put("healthPointInfo", getHealthPointInfoPv(idxBizPvPointVarCentralValue));
HashMap<String, Object> currentValueAndTrainValueMap = getCurrentValueAndTrainValueInfoPv(idxBizPvPointVarCentralValue, startTime, endTime, idxBizPvPointVarCentralValueList);
//当前值
List<HashMap<String, String>> currentValue = new ArrayList<>();
result.put("currentValue", currentValueAndTrainValueMap.get("currentValue"));
//训练值
List<HashMap<String, String>> trainValue = new ArrayList<>();
String analyseValueAddress = idAddressMap.get(idxBizPvPointVarCentralValue.getAnalysisPointId());
String process1Address = idAddressMap.get(idxBizPvPointVarCentralValue.getProcessPoint1Id());
String process2Address = idAddressMap.get(idxBizPvPointVarCentralValue.getProcessPoint2Id());
String process3Address = idAddressMap.get(idxBizPvPointVarCentralValue.getProcessPoint3Id());
timesindicatorDataList.forEach(
s -> {
HashMap<String, String> currentValueMap = new HashMap<>();
currentValueMap.put("time", s);
Double analyseValue = indicatorDataListMap.get(s + "_" + analyseValueAddress);
Double processValue1 = indicatorDataListMap.get(s + "_" + process1Address);
Double processValue2 = indicatorDataListMap.get(s + "_" + process2Address);
Double processValue3 = indicatorDataListMap.get(s + "_" + process3Address);
currentValueMap.put("analyseValue", String.valueOf(analyseValue));
currentValueMap.put("processValue1", String.valueOf(processValue1));
currentValueMap.put("processValue2", String.valueOf(processValue2));
currentValueMap.put("processValue3", String.valueOf(processValue3));
HashMap<String, String> trainValueMap = getWorkingConditionCombinationIntervalPv(processValue1, processValue2, processValue3, idxBizPvPointVarCentralValueList);
trainValueMap.put("time", s);
currentValue.add(currentValueMap);
trainValue.add(trainValueMap);
}
);
result.put("currentValue", currentValue);
result.put("trainValue", trainValue);
//---------------工况组合来源
result.put("sourceInfo", getSourceInfoMapPv(idxBizPvWarningRecord));
result.put("trainValue", currentValueAndTrainValueMap.get("trainValue"));
return result;
}
// 获取风机告警信息
/**
* 获取告风机警信息
* @param idxBizFanWarningRecord
* @return 告警信息
*/
public HashMap<String, String> getFanAlarmInfoMap(IdxBizFanWarningRecord idxBizFanWarningRecord) {
HashMap<String, String> alarmInfoMap = new HashMap<>();
......@@ -214,7 +137,12 @@ public class AlarmInfoDetailServiceImpl implements IAlarmInfoDetailService {
alarmInfoMap.put("waringRule", idxBizFanWarningRecord.getCONTENT());
return alarmInfoMap;
}
// 获取光伏告警信息
/**
* 获取光伏告警信息
* @param idxBizPvWarningRecord
* @return 告警信息
*/
public HashMap<String, String> getPvAlarmInfoMap(IdxBizPvWarningRecord idxBizPvWarningRecord) {
HashMap<String, String> alarmInfoMap = new HashMap<>();
......@@ -230,23 +158,29 @@ public class AlarmInfoDetailServiceImpl implements IAlarmInfoDetailService {
alarmInfoMap.put("waringRule", idxBizPvWarningRecord.getCONTENT());
return alarmInfoMap;
}
// 获取风机趋势图与异常度
/**
* 获取风机趋势数据、异常度数据、开始时间、结束时间
* @param idxBizFanWarningRecord
* @return
*/
public HashMap<String, Object> getFanAlarmTrendAndAlarmAbnormalityList(IdxBizFanWarningRecord idxBizFanWarningRecord) {
HashMap<String, Object> result = new HashMap<>();
HashMap<String, List<String>> alarmTrendMap = new HashMap<>();
List<HashMap<String, String>> alarmAbnormalityList = new ArrayList<>();
Long analysisDate = idxBizFanWarningRecord.getRecDate().getTime() + 1000 * 60;
List<IdxBizFanHealthIndex> idxBizFanHealthIndexList = idxBizFanHealthIndexMapper.selectList(new QueryWrapper<IdxBizFanHealthIndex>()
.eq("GATEWAY_ID", idxBizFanWarningRecord.getGatewayId())
.eq("INDEX_ADDRESS", idxBizFanWarningRecord.getIndexAddress())
.le("ANALYSIS_TIME", DateUtil.formatDateTime(new Date(analysisDate)))
.eq("ANALYSIS_TYPE", idxBizFanWarningRecord.getWarningPeriod())
.le("ANALYSIS_TIME", DateUtil.offsetMinute(idxBizFanWarningRecord.getRecDate(), 1))
.orderByDesc("ANALYSIS_TIME")
.last("limit 30"));
List<String> xDatas = new ArrayList<>();
List<String> yDatas = new ArrayList<>();
String startTime = "";
String endTime = "";
for (int i = idxBizFanHealthIndexList.size() - 1; i >= 0; i--) {
int idxBizFanHealthIndexListSize = idxBizFanHealthIndexList.size();
for (int i = idxBizFanHealthIndexListSize - 1; i >= 0; i--) {
HashMap<String, String> alarmAbnormalityItem = new HashMap<>();
IdxBizFanHealthIndex idxBizFanHealthIndex = idxBizFanHealthIndexList.get(i);
xDatas.add(idxBizFanHealthIndex.getANALYSISTIME());
......@@ -254,11 +188,27 @@ public class AlarmInfoDetailServiceImpl implements IAlarmInfoDetailService {
alarmAbnormalityItem.put("time", idxBizFanHealthIndex.getANALYSISTIME());
alarmAbnormalityItem.put("abnormal", String.valueOf(idxBizFanHealthIndex.getANOMALY()));
alarmAbnormalityItem.put("healthValue", String.valueOf(idxBizFanHealthIndex.getHealthIndex()));
if (idxBizFanHealthIndexListSize >= 3) {
if (i == 0) {
endTime = idxBizFanHealthIndex.getANALYSISTIME();
endTime = handlerDateStr(idxBizFanHealthIndex.getANALYSISTIME(), -8, 5);
}
if (i == 2) {
startTime = idxBizFanHealthIndex.getANALYSISTIME();
startTime = handlerDateStr(idxBizFanHealthIndex.getANALYSISTIME(), -8, -5);
}
}
if (idxBizFanHealthIndexListSize == 2) {
if (i == 0) {
endTime = handlerDateStr(idxBizFanHealthIndex.getANALYSISTIME(), -8, 5);
}
if (i == 1) {
startTime = handlerDateStr(idxBizFanHealthIndex.getANALYSISTIME(), -8, -5);
}
}
if (idxBizFanHealthIndexListSize == 1) {
if (i == 0) {
endTime = handlerDateStr(idxBizFanHealthIndex.getANALYSISTIME(), -8, 5);
startTime = handlerDateStr(idxBizFanHealthIndex.getANALYSISTIME(), -8, -5);
}
}
alarmAbnormalityList.add(alarmAbnormalityItem);
}
......@@ -266,27 +216,34 @@ public class AlarmInfoDetailServiceImpl implements IAlarmInfoDetailService {
alarmTrendMap.put("yDatas", yDatas);
result.put("alarmTrend", alarmTrendMap);
// 异常度 alarmAbnormality
result.put("alarmAbnormalityList", alarmAbnormalityList.subList(alarmAbnormalityList.size() - 3, alarmAbnormalityList.size()));
int alarmAbnormalitySize = idxBizFanHealthIndexListSize >= 3 ? 3 : idxBizFanHealthIndexListSize;
result.put("alarmAbnormalityList", alarmAbnormalityList.subList(alarmAbnormalityList.size() - alarmAbnormalitySize, alarmAbnormalityList.size()));
result.put("startTime", startTime);
result.put("endTime", endTime);
return result;
}
// 获取光伏趋势图与异常度
/**
* 获取光伏趋势数据、异常度数据、开始时间、结束时间
* @param idxBizPvWarningRecord
* @return
*/
public HashMap<String, Object> getPvAlarmTrendAndAlarmAbnormalityList(IdxBizPvWarningRecord idxBizPvWarningRecord) {
HashMap<String, Object> result = new HashMap<>();
HashMap<String, List<String>> alarmTrendMap = new HashMap<>();
List<HashMap<String, String>> alarmAbnormalityList = new ArrayList<>();
Long analysisDate = idxBizPvWarningRecord.getRecDate().getTime() + 1000 * 60;
List<IdxBizPvHealthIndex> idxBizPvHealthIndexList = idxBizPvHealthIndexMapper.selectList(new QueryWrapper<IdxBizPvHealthIndex>()
.eq("GATEWAY_ID", idxBizPvWarningRecord.getGatewayId())
.eq("INDEX_ADDRESS", idxBizPvWarningRecord.getIndexAddress())
.le("ANALYSIS_TIME", DateUtil.formatDateTime(new Date(analysisDate)))
.eq("ANALYSIS_TYPE", idxBizPvWarningRecord.getWarningPeriod())
.le("ANALYSIS_TIME", DateUtil.offsetMinute(idxBizPvWarningRecord.getRecDate(), 1))
.orderByDesc("ANALYSIS_TIME")
.last("limit 30"));
List<String> xDatas = new ArrayList<>();
List<String> yDatas = new ArrayList<>();
String startTime = "";
String endTime = "";
int idxBizPvHealthIndexListSize = idxBizPvHealthIndexList.size();
for (int i = idxBizPvHealthIndexList.size() - 1; i >= 0; i--) {
HashMap<String, String> alarmAbnormalityItem = new HashMap<>();
IdxBizPvHealthIndex idxBizPvHealthIndex = idxBizPvHealthIndexList.get(i);
......@@ -295,11 +252,27 @@ public class AlarmInfoDetailServiceImpl implements IAlarmInfoDetailService {
alarmAbnormalityItem.put("time", idxBizPvHealthIndex.getANALYSISTIME());
alarmAbnormalityItem.put("abnormal", String.valueOf(idxBizPvHealthIndex.getANOMALY()));
alarmAbnormalityItem.put("healthValue", String.valueOf(idxBizPvHealthIndex.getHealthIndex()));
if (idxBizPvHealthIndexListSize >= 3) {
if (i == 0) {
endTime = idxBizPvHealthIndex.getANALYSISTIME();
endTime = handlerDateStr(idxBizPvHealthIndex.getANALYSISTIME(), -8, 5);
}
if (i == 2) {
startTime = idxBizPvHealthIndex.getANALYSISTIME();
startTime = handlerDateStr(idxBizPvHealthIndex.getANALYSISTIME(), -8, -5);
}
}
if (idxBizPvHealthIndexListSize == 2) {
if (i == 0) {
endTime = handlerDateStr(idxBizPvHealthIndex.getANALYSISTIME(), -8, 5);
}
if (i == 1) {
startTime = handlerDateStr(idxBizPvHealthIndex.getANALYSISTIME(), -8, -5);
}
}
if (idxBizPvHealthIndexListSize == 1) {
if (i == 0) {
endTime = handlerDateStr(idxBizPvHealthIndex.getANALYSISTIME(), -8, 5);
startTime = handlerDateStr(idxBizPvHealthIndex.getANALYSISTIME(), -8, -5);
}
}
alarmAbnormalityList.add(alarmAbnormalityItem);
}
......@@ -307,12 +280,17 @@ public class AlarmInfoDetailServiceImpl implements IAlarmInfoDetailService {
alarmTrendMap.put("yDatas", yDatas);
result.put("alarmTrend", alarmTrendMap);
// 异常度 alarmAbnormality
result.put("alarmAbnormalityList", alarmAbnormalityList.subList(alarmAbnormalityList.size() - 3, alarmAbnormalityList.size()));
int alarmAbnormalitySize = idxBizPvHealthIndexListSize >= 3 ? 3 : idxBizPvHealthIndexListSize;
result.put("alarmAbnormalityList", alarmAbnormalityList.subList(alarmAbnormalityList.size() - alarmAbnormalitySize, alarmAbnormalityList.size()));
result.put("startTime", startTime);
result.put("endTime", endTime);
return result;
}
//处理风机-相关性区间
/**
* 处理风机中心值区间值为空的情况
* @param idxBizFanPointVarCentralValueList
*/
public void handlerIdxBizFanPointVarCentralValue(List<IdxBizFanPointVarCentralValue> idxBizFanPointVarCentralValueList) {
idxBizFanPointVarCentralValueList.forEach(idxBizFanPointVarCentralValue1 -> {
if (ObjectUtils.isEmpty(idxBizFanPointVarCentralValue1.getProcess1Min())) {
......@@ -335,7 +313,11 @@ public class AlarmInfoDetailServiceImpl implements IAlarmInfoDetailService {
}
});
}
//处理光伏-相关性区间
/**
* 处理光伏中心值区间值为空的情况
* @param idxBizPvPointVarCentralValueList
*/
public void handlerIdxBizPvPointVarCentralValue(List<IdxBizPvPointVarCentralValue> idxBizPvPointVarCentralValueList) {
idxBizPvPointVarCentralValueList.forEach(idxBizPvPointVarCentralValue1 -> {
if (ObjectUtils.isEmpty(idxBizPvPointVarCentralValue1.getProcess1Min())) {
......@@ -359,7 +341,14 @@ public class AlarmInfoDetailServiceImpl implements IAlarmInfoDetailService {
});
}
//根据工况变量值获取分析变量的中心值、标准值、以及工况组合区间值-风机
/**
* 根据工况变量值获取工况变量训练值、工况组合区间等-风机
* @param processPoint1Value
* @param processPoint2Value
* @param processPoint3Value
* @param idxBizFanPointVarCentralValueList
* @return
*/
public HashMap<String, String> getWorkingConditionCombinationIntervalFan(Double processPoint1Value, Double processPoint2Value, Double processPoint3Value, List<IdxBizFanPointVarCentralValue> idxBizFanPointVarCentralValueList) {
HashMap<String, String> result = new HashMap<>();
IdxBizFanPointVarCentralValue idxBizFanPointVarCentralValue = idxBizFanPointVarCentralValueList
......@@ -372,11 +361,19 @@ public class AlarmInfoDetailServiceImpl implements IAlarmInfoDetailService {
result.put("analysisCenterValue", String.valueOf(idxBizFanPointVarCentralValue.getAnalysisCenterValue()));
result.put("analysisStdDev", String.valueOf(idxBizFanPointVarCentralValue.getAnalysisStdDev()));
result.put("WorkingConditionCombinationInterval", (idxBizFanPointVarCentralValue.getProcess1Min() + ":" + idxBizFanPointVarCentralValue.getProcess1Max() + "," + idxBizFanPointVarCentralValue.getProcess2Min() + ":" + idxBizFanPointVarCentralValue.getPorcess2Max() + "," + idxBizFanPointVarCentralValue.getProcess3Min() + ":" + idxBizFanPointVarCentralValue.getProcess3Max()).
result.put("WorkingConditionCombinationInterval", ( "[ ["+idxBizFanPointVarCentralValue.getProcess1Min() + ":" + idxBizFanPointVarCentralValue.getProcess1Max() + "] , [" + idxBizFanPointVarCentralValue.getProcess2Min() + ":" + idxBizFanPointVarCentralValue.getPorcess2Max() + "] , [" + idxBizFanPointVarCentralValue.getProcess3Min() + ":" + idxBizFanPointVarCentralValue.getProcess3Max()+" ] ]").
replace("Infinity", "∞"));
return result;
}
//根据工况变量值获取分析变量的中心值、标准值、以及工况组合区间值-光伏
/**
* 根据工况变量值获取工况变量训练值、工况组合区间等-光伏
* @param processPoint1Value
* @param processPoint2Value
* @param processPoint3Value
* @param idxBizPvPointVarCentralValueList
* @return
*/
public HashMap<String, String> getWorkingConditionCombinationIntervalPv(Double processPoint1Value, Double processPoint2Value, Double processPoint3Value, List<IdxBizPvPointVarCentralValue> idxBizPvPointVarCentralValueList) {
HashMap<String, String> result = new HashMap<>();
IdxBizPvPointVarCentralValue idxBizPvPointVarCentralValue = idxBizPvPointVarCentralValueList
......@@ -389,11 +386,16 @@ public class AlarmInfoDetailServiceImpl implements IAlarmInfoDetailService {
result.put("analysisCenterValue", String.valueOf(idxBizPvPointVarCentralValue.getAnalysisCenterValue()));
result.put("analysisStdDev", String.valueOf(idxBizPvPointVarCentralValue.getAnalysisStdDev()));
result.put("WorkingConditionCombinationInterval", (idxBizPvPointVarCentralValue.getProcess1Min() + ":" + idxBizPvPointVarCentralValue.getProcess1Max() + "," + idxBizPvPointVarCentralValue.getProcess2Min() + ":" + idxBizPvPointVarCentralValue.getProcess2Max() + "," + idxBizPvPointVarCentralValue.getProcess3Min() + ":" + idxBizPvPointVarCentralValue.getProcess3Max()).
result.put("WorkingConditionCombinationInterval", ("[ ["+ idxBizPvPointVarCentralValue.getProcess1Min() + ":" + idxBizPvPointVarCentralValue.getProcess1Max() + "] , [" + idxBizPvPointVarCentralValue.getProcess2Min() + ":" + idxBizPvPointVarCentralValue.getProcess2Max() + "] , [" + idxBizPvPointVarCentralValue.getProcess3Min() + ":" + idxBizPvPointVarCentralValue.getProcess3Max()+" ] ]").
replace("Infinity", "∞"));
return result;
}
//获取sourceInfoMap-风机
/**
* 获取风机的分析变量与工况变量的笛卡尔积
* @param idxBizFanWarningRecord
* @return
*/
public HashMap<String, Object> getSourceInfoMapFan(IdxBizFanWarningRecord idxBizFanWarningRecord) {
List<IdxBizFanPointVarCorrelation> idxBizFanPointVarCorrelationList = idxBizFanPointVarCorrelationMapper
.selectList(new QueryWrapper<IdxBizFanPointVarCorrelation>().eq("EQUIPMENT_NAME", idxBizFanWarningRecord.getEquipmentName()));
......@@ -415,7 +417,11 @@ public class AlarmInfoDetailServiceImpl implements IAlarmInfoDetailService {
return sourceInfoMap;
}
//获取sourceInfoMap-光伏
/**
* 获取光伏的分析变量与工况变量的笛卡尔积
* @param idxBizPvWarningRecord
* @return
*/
public HashMap<String, Object> getSourceInfoMapPv(IdxBizPvWarningRecord idxBizPvWarningRecord) {
List<IdxBizPvPointVarCorrelation> idxBizPvPointVarCorrelationList = idxBizPvPointVarCorrelationMapper
.selectList(new QueryWrapper<IdxBizPvPointVarCorrelation>().eq("EQUIPMENT_NAME", idxBizPvWarningRecord.getEquipmentName()));
......@@ -437,4 +443,163 @@ public class AlarmInfoDetailServiceImpl implements IAlarmInfoDetailService {
return sourceInfoMap;
}
/**
* 获取风机的分析变量与工况变量的名称
* @param idxBizFanPointVarCentralValue
* @return
*/
public HashMap<String, String> getHealthPointInfoFan(IdxBizFanPointVarCentralValue idxBizFanPointVarCentralValue) {
HashMap<String, String> result = new HashMap<>();
result.put("analysisPointName", idxBizFanPointVarCentralValue.getAnalysisPointName());
result.put("processPoint1Name", idxBizFanPointVarCentralValue.getProcessPoint1Name());
result.put("processPoint2Name", idxBizFanPointVarCentralValue.getProcessPoint2Name());
result.put("processPoint3Name", idxBizFanPointVarCentralValue.getProcessPoint3Name());
return result;
}
/**
* 获取光伏的分析变量与工况变量的名称
* @param idxBizPvPointVarCentralValue
* @return
*/
public HashMap<String, String> getHealthPointInfoPv(IdxBizPvPointVarCentralValue idxBizPvPointVarCentralValue) {
HashMap<String, String> result = new HashMap<>();
result.put("analysisPointName", idxBizPvPointVarCentralValue.getAnalysisPointIdName());
result.put("processPoint1Name", idxBizPvPointVarCentralValue.getProcessPoint1IdName());
result.put("processPoint2Name", idxBizPvPointVarCentralValue.getProcessPoint2IdName());
result.put("processPoint3Name", idxBizPvPointVarCentralValue.getProcessPoint3IdName());
return result;
}
/**
* 获取风机的当前值与训练值
* @param idxBizFanPointVarCentralValue
* @param startTime
* @param endTime
* @param idxBizFanPointVarCentralValueList
* @return
*/
public HashMap<String, Object> getCurrentValueAndTrainValueInfoFan(IdxBizFanPointVarCentralValue idxBizFanPointVarCentralValue, String startTime, String endTime, List<IdxBizFanPointVarCentralValue> idxBizFanPointVarCentralValueList) {
HashMap<String, Object> result = new HashMap<>();
List<IdxBizFanPointProcessVariableClassification> idxBizFanPointProcessVariableClassificationList = idxBizFanPointProcessVariableClassificationMapper
.selectList(new QueryWrapper<IdxBizFanPointProcessVariableClassification>()
.in("SEQUENCE_NBR", Arrays.asList(idxBizFanPointVarCentralValue.getAnalysisPointId(), idxBizFanPointVarCentralValue.getProcessPoint1Id(), idxBizFanPointVarCentralValue.getProcessPoint2Id(), idxBizFanPointVarCentralValue.getProcessPoint3Id())));
String addresss = idxBizFanPointProcessVariableClassificationList.stream()
.map(idxBizFanPointProcessVariableClassification -> "'" + idxBizFanPointProcessVariableClassification.getIndexAddress() + "'")
.collect(Collectors.joining(","));
Map<String, String> idAddressMap = idxBizFanPointProcessVariableClassificationList.stream()
.collect(Collectors.toMap(IdxBizFanPointProcessVariableClassification::getSequenceNbr, IdxBizFanPointProcessVariableClassification::getIndexAddress));
//查询固化数据---------------------
List<IndicatorData> indicatorDataList = indicatorDataMapper.selectDataByGatewayIdAndAddressForAlarmInfoDetail(idxBizFanPointProcessVariableClassificationList.get(0).getGatewayId(), addresss, startTime, endTime);
Map<String, Double> indicatorDataListMap = new HashMap<>(indicatorDataList.size());
TreeSet<String> timesindicatorDataList = new TreeSet<>();
indicatorDataList.forEach(indicatorData -> {
String time = DateUtil.format(indicatorData.getCreatedTime(), DatePattern.NORM_DATETIME_MINUTE_PATTERN) + ":00";
indicatorDataListMap.put(time + "_" + indicatorData.getAddress(), Double.valueOf(indicatorData.getValueF()));
timesindicatorDataList.add(time);
});
//当前值
List<HashMap<String, String>> currentValue = new ArrayList<>();
//训练值
List<HashMap<String, String>> trainValue = new ArrayList<>();
String analyseValueAddress = idAddressMap.get(idxBizFanPointVarCentralValue.getAnalysisPointId());
String process1Address = idAddressMap.get(idxBizFanPointVarCentralValue.getProcessPoint1Id());
String process2Address = idAddressMap.get(idxBizFanPointVarCentralValue.getProcessPoint2Id());
String process3Address = idAddressMap.get(idxBizFanPointVarCentralValue.getProcessPoint3Id());
List<String> timesindicatorDataListSorted = timesindicatorDataList.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList());
timesindicatorDataListSorted.forEach(
s -> {
HashMap<String, String> currentValueMap = new HashMap<>();
currentValueMap.put("time", s);
Double analyseValue = indicatorDataListMap.get(s + "_" + analyseValueAddress);
Double processValue1 = indicatorDataListMap.get(s + "_" + process1Address);
Double processValue2 = indicatorDataListMap.get(s + "_" + process2Address);
Double processValue3 = indicatorDataListMap.get(s + "_" + process3Address);
currentValueMap.put("analyseValue", String.valueOf(analyseValue));
currentValueMap.put("processValue1", String.valueOf(processValue1));
currentValueMap.put("processValue2", String.valueOf(processValue2));
currentValueMap.put("processValue3", String.valueOf(processValue3));
HashMap<String, String> trainValueMap = getWorkingConditionCombinationIntervalFan(processValue1, processValue2, processValue3, idxBizFanPointVarCentralValueList);
trainValueMap.put("time", s);
currentValue.add(currentValueMap);
trainValue.add(trainValueMap);
}
);
result.put("currentValue", currentValue);
result.put("trainValue", trainValue);
return result;
}
/**
* 获取光伏的当前值与训练值
* @param idxBizPvPointVarCentralValue
* @param startTime
* @param endTime
* @param idxBizPvPointVarCentralValueList
* @return
*/
public HashMap<String, Object> getCurrentValueAndTrainValueInfoPv(IdxBizPvPointVarCentralValue idxBizPvPointVarCentralValue, String startTime, String endTime, List<IdxBizPvPointVarCentralValue> idxBizPvPointVarCentralValueList) {
HashMap<String, Object> result = new HashMap<>();
List<IdxBizPvPointProcessVariableClassification> idxBizPvPointProcessVariableClassificationList = idxBizPvPointProcessVariableClassificationMapper
.selectList(new QueryWrapper<IdxBizPvPointProcessVariableClassification>()
.in("SEQUENCE_NBR", Arrays.asList(idxBizPvPointVarCentralValue.getAnalysisPointId(), idxBizPvPointVarCentralValue.getProcessPoint1Id(), idxBizPvPointVarCentralValue.getProcessPoint2Id(), idxBizPvPointVarCentralValue.getProcessPoint3Id())));
String addresss = idxBizPvPointProcessVariableClassificationList.stream()
.map(idxBizFanPointProcessVariableClassification -> "'" + idxBizFanPointProcessVariableClassification.getIndexAddress() + "'")
.collect(Collectors.joining(","));
Map<String, String> idAddressMap = idxBizPvPointProcessVariableClassificationList.stream()
.collect(Collectors.toMap(IdxBizPvPointProcessVariableClassification::getSequenceNbr, IdxBizPvPointProcessVariableClassification::getIndexAddress));
//查询固化数据---------------------
List<IndicatorData> indicatorDataList = indicatorDataMapper.selectDataByGatewayIdAndAddressForAlarmInfoDetail(idxBizPvPointProcessVariableClassificationList.get(0).getGatewayId(), addresss, startTime, endTime);
Map<String, Double> indicatorDataListMap = new HashMap<>(indicatorDataList.size());
TreeSet<String> timesindicatorDataList = new TreeSet<>();
indicatorDataList.forEach(indicatorData -> {
String time = DateUtil.format(indicatorData.getCreatedTime(), DatePattern.NORM_DATETIME_MINUTE_PATTERN) + ":00";
indicatorDataListMap.put(time + "_" + indicatorData.getAddress(), Double.valueOf(indicatorData.getValueF()));
timesindicatorDataList.add(time);
});
//当前值
List<HashMap<String, String>> currentValue = new ArrayList<>();
//训练值
List<HashMap<String, String>> trainValue = new ArrayList<>();
String analyseValueAddress = idAddressMap.get(idxBizPvPointVarCentralValue.getAnalysisPointId());
String process1Address = idAddressMap.get(idxBizPvPointVarCentralValue.getProcessPoint1Id());
String process2Address = idAddressMap.get(idxBizPvPointVarCentralValue.getProcessPoint2Id());
String process3Address = idAddressMap.get(idxBizPvPointVarCentralValue.getProcessPoint3Id());
List<String> timesindicatorDataListSorted = timesindicatorDataList.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList());
timesindicatorDataListSorted.forEach(
s -> {
HashMap<String, String> currentValueMap = new HashMap<>();
currentValueMap.put("time", s);
Double analyseValue = indicatorDataListMap.get(s + "_" + analyseValueAddress);
Double processValue1 = indicatorDataListMap.get(s + "_" + process1Address);
Double processValue2 = indicatorDataListMap.get(s + "_" + process2Address);
Double processValue3 = indicatorDataListMap.get(s + "_" + process3Address);
currentValueMap.put("analyseValue", String.valueOf(analyseValue));
currentValueMap.put("processValue1", String.valueOf(processValue1));
currentValueMap.put("processValue2", String.valueOf(processValue2));
currentValueMap.put("processValue3", String.valueOf(processValue3));
HashMap<String, String> trainValueMap = getWorkingConditionCombinationIntervalPv(processValue1, processValue2, processValue3, idxBizPvPointVarCentralValueList);
trainValueMap.put("time", s);
currentValue.add(currentValueMap);
trainValue.add(trainValueMap);
}
);
result.put("currentValue", currentValue);
result.put("trainValue", trainValue);
return result;
}
/**
* 将字符时间进行小时、分钟偏移后返回格式化后的数据-主要用于查询固化值
* @param dateStr
* @param offsetHour
* @param offsetMinutes
* @return
*/
public String handlerDateStr(String dateStr, Integer offsetHour, Integer offsetMinutes) {
Date date = DateUtil.parse(dateStr);
date = DateUtil.offsetHour(date, offsetHour);
date = DateUtil.offsetMinute(date, offsetMinutes);
return DateUtil.format(date, DatePattern.NORM_DATETIME_PATTERN);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment