Commit d920761f authored by caotao's avatar caotao

1.告警数据回溯接口调整优化。

parent db66972c
package com.yeejoin.amos.boot.module.jxiop.biz.constants; package com.yeejoin.amos.boot.module.jxiop.biz.constants;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import java.util.HashMap; import java.util.HashMap;
public class CommonConstans { public class CommonConstans {
...@@ -100,7 +103,7 @@ public class CommonConstans { ...@@ -100,7 +103,7 @@ public class CommonConstans {
public static final String Fourdecimalplaces = "%.4f"; public static final String Fourdecimalplaces = "%.4f";
public static final String QueryStringFrontMoudleNotKeyWord = "frontModule"; public static final String QueryStringFrontMoudleNotKeyWord = "frontModule";
public static final HashMap<String, String> waringPeriodS = new HashMap<String, String>() { public static final HashMap<String, String> waringPeriodStatus = new HashMap<String, String>() {
{ {
put("按时刻", "按10分钟周期"); put("按时刻", "按10分钟周期");
...@@ -108,4 +111,13 @@ public class CommonConstans { ...@@ -108,4 +111,13 @@ public class CommonConstans {
put("按天", "按1天周期"); put("按天", "按1天周期");
} }
}; };
public static final HashMap<String, String> waringPeriodDateFormate = new HashMap<String, String>() {
{
put("按时刻", DatePattern.NORM_DATETIME_PATTERN);
put("按小时", DatePattern.NORM_DATETIME_PATTERN);
put("按天", DatePattern.NORM_DATE_PATTERN);
}
};
} }
...@@ -235,14 +235,14 @@ public class AnalyseController extends BaseController { ...@@ -235,14 +235,14 @@ public class AnalyseController extends BaseController {
return ResponseHelper.buildResponse(commonServiceImpl.getInfluxdbDataByConditon(stationType,pointId,startTime, endTime)) ; return ResponseHelper.buildResponse(commonServiceImpl.getInfluxdbDataByConditon(stationType,pointId,startTime, endTime)) ;
} }
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false) @TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@ApiOperation(httpMethod = "post", value = "预警详情信息-风机", notes = "预警详情信息-风机") @ApiOperation(httpMethod = "GET", value = "预警详情信息-风机", notes = "预警详情信息-风机")
@PostMapping(value = "/getAlramInfoDetailOfFan") @GetMapping(value = "/getAlramInfoDetailOfFan")
public ResponseModel<Map<String, Object>> getAlramInfoDetailOfFan(@RequestParam(required = true) String id){ public ResponseModel<Map<String, Object>> getAlramInfoDetailOfFan(@RequestParam(required = true) String id){
return ResponseHelper.buildResponse(iAlarmInfoDetailService.getAlramInfoDetailOfFan(id)); return ResponseHelper.buildResponse(iAlarmInfoDetailService.getAlramInfoDetailOfFan(id));
} }
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false) @TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@ApiOperation(httpMethod = "post", value = "预警详情信息-光伏", notes = "预警详情信息-光伏") @ApiOperation(httpMethod = "GET", value = "预警详情信息-光伏", notes = "预警详情信息-光伏")
@PostMapping(value = "/getAlramInfoDetailOfPv") @GetMapping(value = "/getAlramInfoDetailOfPv")
public ResponseModel<Map<String, Object>> getAlramInfoDetailOfPv(@RequestParam(required = true) String id){ public ResponseModel<Map<String, Object>> getAlramInfoDetailOfPv(@RequestParam(required = true) String id){
return ResponseHelper.buildResponse(iAlarmInfoDetailService.getAlramInfoDetailOfPv(id)); return ResponseHelper.buildResponse(iAlarmInfoDetailService.getAlramInfoDetailOfPv(id));
} }
......
...@@ -138,5 +138,15 @@ public class IdxBizFanPointVarCorrelation{ ...@@ -138,5 +138,15 @@ public class IdxBizFanPointVarCorrelation{
*/ */
@TableField("EQUIPMENT_NAME") @TableField("EQUIPMENT_NAME")
private String equipmentName; private String equipmentName;
/**
* 分析变量名称
*/
@TableField("ANALYSIS_POINT_NAME")
private String analysisPointName;
/**
* 工况变量名称
*/
@TableField("PROCESS_POINT_NAME")
private String processPointName;
} }
...@@ -139,4 +139,16 @@ public class IdxBizPvPointVarCorrelation{ ...@@ -139,4 +139,16 @@ public class IdxBizPvPointVarCorrelation{
@TableField("EQUIPMENT_NAME") @TableField("EQUIPMENT_NAME")
private String equipmentName; private String equipmentName;
/**
* 分析变量名称
*/
@TableField("ANALYSIS_POINT_NAME")
private String analysisPointName;
/**
* 工况变量名称
*/
@TableField("PROCESS_POINT_NAME")
private String processPointName;
} }
package com.yeejoin.amos.boot.module.jxiop.biz.service.impl; package com.yeejoin.amos.boot.module.jxiop.biz.service.impl;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.yeejoin.amos.boot.module.jxiop.biz.constants.CommonConstans;
import com.yeejoin.amos.boot.module.jxiop.biz.entity.*; import com.yeejoin.amos.boot.module.jxiop.biz.entity.*;
import com.yeejoin.amos.boot.module.jxiop.biz.mapper2.*; import com.yeejoin.amos.boot.module.jxiop.biz.mapper2.*;
import com.yeejoin.amos.boot.module.jxiop.biz.service.IAlarmInfoDetailService; import com.yeejoin.amos.boot.module.jxiop.biz.service.IAlarmInfoDetailService;
import com.yeejoin.amos.boot.module.jxiop.biz.tdmapper.IndicatorDataMapper;
import org.jsoup.helper.DataUtil;
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.springframework.util.ObjectUtils;
import org.unbescape.css.CssIdentifierEscapeLevel;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
@Service @Service
public class AlarmInfoDetailServiceImpl implements IAlarmInfoDetailService { public class AlarmInfoDetailServiceImpl implements IAlarmInfoDetailService {
@Autowired @Autowired
IndicatorDataMapper indicatorDataMapper;
@Autowired
IdxBizFanWarningRecordMapper idxBizFanWarningRecordMapper; IdxBizFanWarningRecordMapper idxBizFanWarningRecordMapper;
@Autowired
IdxBizPvWarningRecordMapper idxBizPvWarningRecordMapper;
@Autowired @Autowired
IdxBizFanHealthIndexMapper idxBizFanHealthIndexMapper; IdxBizFanHealthIndexMapper idxBizFanHealthIndexMapper;
@Autowired
IdxBizPvHealthIndexMapper idxBizPvHealthIndexMapper;
@Autowired @Autowired
IdxBizFanPointVarCentralValueMapper idxBizFanPointVarCentralValueMapper; IdxBizFanPointVarCentralValueMapper idxBizFanPointVarCentralValueMapper;
@Autowired
IdxBizPvPointVarCentralValueMapper idxBizPvPointVarCentralValueMapper;
@Autowired @Autowired
IdxBizFanPointProcessVariableClassificationMapper idxBizFanPointProcessVariableClassificationMapper; IdxBizFanPointProcessVariableClassificationMapper idxBizFanPointProcessVariableClassificationMapper;
@Autowired @Autowired
IdxBizPvWarningRecordMapper idxBizPvWarningRecordMapper; IdxBizPvPointProcessVariableClassificationMapper idxBizPvPointProcessVariableClassificationMapper;
@Autowired
IdxBizFanPointVarCorrelationMapper idxBizFanPointVarCorrelationMapper;
@Autowired
IdxBizPvPointVarCorrelationMapper idxBizPvPointVarCorrelationMapper;
@Override @Override
public Map<String, Object> getAlramInfoDetailOfFan(String id) { public Map<String, Object> getAlramInfoDetailOfFan(String id) {
Map<String, Object> result = new HashMap<>(); Map<String, Object> result = new HashMap<>();
IdxBizFanWarningRecord idxBizFanWarningRecord = idxBizFanWarningRecordMapper.selectById(id); IdxBizFanWarningRecord idxBizFanWarningRecord = idxBizFanWarningRecordMapper.selectById(id);
//------------预警信息 result.put("warningInfo", getFanAlarmInfoMap(idxBizFanWarningRecord));
// -----------预警趋势
HashMap<String, Object> alarmTrendAndAlarmAbnormalityListResult = getFanAlarmTrendAndAlarmAbnormalityList(idxBizFanWarningRecord);
result.put("alarmTrend", alarmTrendAndAlarmAbnormalityListResult.get("alarmTrend"));
result.put("alarmAbnormalityList", alarmTrendAndAlarmAbnormalityListResult.get("alarmAbnormalityList"));
String startTime = (String) alarmTrendAndAlarmAbnormalityListResult.get("startTime");
String endTime = (String) alarmTrendAndAlarmAbnormalityListResult.get("endTime");
//----健康指数来源
List<IdxBizFanPointVarCentralValue> idxBizFanPointVarCentralValueList = idxBizFanPointVarCentralValueMapper
.selectList(new QueryWrapper<IdxBizFanPointVarCentralValue>()
.eq("ANALYSIS_POINT_ID", idxBizFanWarningRecord.getAnalysisPointId()));
IdxBizFanPointVarCentralValue idxBizFanPointVarCentralValue = new IdxBizFanPointVarCentralValue();
if (idxBizFanPointVarCentralValueList.size() <= 0) {
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);
});
//当前值
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());
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));
return result;
}
@Override
public Map<String, Object> getAlramInfoDetailOfPv(String id) {
Map<String, Object> result = new HashMap<>();
IdxBizPvWarningRecord idxBizPvWarningRecord = idxBizPvWarningRecordMapper.selectById(id);
result.put("warningInfo", getPvAlarmInfoMap(idxBizPvWarningRecord));
// -----------预警趋势
HashMap<String, Object> alarmTrendAndAlarmAbnormalityListResult = getPvAlarmTrendAndAlarmAbnormalityList(idxBizPvWarningRecord);
result.put("alarmTrend", alarmTrendAndAlarmAbnormalityListResult.get("alarmTrend"));
result.put("alarmAbnormalityList", alarmTrendAndAlarmAbnormalityListResult.get("alarmAbnormalityList"));
String startTime = (String) alarmTrendAndAlarmAbnormalityListResult.get("startTime");
String endTime = (String) alarmTrendAndAlarmAbnormalityListResult.get("endTime");
//----健康指数来源
List<IdxBizPvPointVarCentralValue> idxBizPvPointVarCentralValueList = idxBizPvPointVarCentralValueMapper
.selectList(new QueryWrapper<IdxBizPvPointVarCentralValue>()
.eq("ANALYSIS_POINT_ID", idxBizPvWarningRecord.getAnalysisPointId()));
IdxBizPvPointVarCentralValue idxBizPvPointVarCentralValue = new IdxBizPvPointVarCentralValue();
if (idxBizPvPointVarCentralValueList.size() <= 0) {
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);
});
//当前值
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());
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));
return result;
}
// 获取风机告警信息
public HashMap<String, String> getFanAlarmInfoMap(IdxBizFanWarningRecord idxBizFanWarningRecord) {
HashMap<String, String> alarmInfoMap = new HashMap<>(); HashMap<String, String> alarmInfoMap = new HashMap<>();
//测点名称 //测点名称
alarmInfoMap.put("pointName", idxBizFanWarningRecord.getPointName()); alarmInfoMap.put("pointName", idxBizFanWarningRecord.getPointName());
//告警周期 //告警周期
alarmInfoMap.put("waringPeriod", idxBizFanWarningRecord.getWarningPeriod()); alarmInfoMap.put("waringPeriod", CommonConstans.waringPeriodStatus.get(idxBizFanWarningRecord.getWarningPeriod()));
//告警时间 //告警时间
alarmInfoMap.put("waringTime", idxBizFanWarningRecord.getRecDate().toString()); alarmInfoMap.put("waringTime", DateUtil.format(idxBizFanWarningRecord.getRecDate(), CommonConstans.waringPeriodDateFormate.get(idxBizFanWarningRecord.getWarningPeriod())));
//预警等级 //预警等级
alarmInfoMap.put("waringLevel", idxBizFanWarningRecord.getWarningName()); alarmInfoMap.put("waringLevel", idxBizFanWarningRecord.getWarningName());
//预警触发规则 //预警触发规则
alarmInfoMap.put("waringRule", idxBizFanWarningRecord.getCONTENT()); alarmInfoMap.put("waringRule", idxBizFanWarningRecord.getCONTENT());
result.put("warningInfo", alarmInfoMap); return alarmInfoMap;
// -----------预警趋势 }
// 获取光伏告警信息
public HashMap<String, String> getPvAlarmInfoMap(IdxBizPvWarningRecord idxBizPvWarningRecord) {
HashMap<String, String> alarmInfoMap = new HashMap<>();
//测点名称
alarmInfoMap.put("pointName", idxBizPvWarningRecord.getPointName());
//告警周期
alarmInfoMap.put("waringPeriod", CommonConstans.waringPeriodStatus.get(idxBizPvWarningRecord.getWarningPeriod()));
//告警时间
alarmInfoMap.put("waringTime", DateUtil.format(idxBizPvWarningRecord.getRecDate(), CommonConstans.waringPeriodDateFormate.get(idxBizPvWarningRecord.getWarningPeriod())));
//预警等级
alarmInfoMap.put("waringLevel", idxBizPvWarningRecord.getWarningName());
//预警触发规则
alarmInfoMap.put("waringRule", idxBizPvWarningRecord.getCONTENT());
return alarmInfoMap;
}
// 获取风机趋势图与异常度
public HashMap<String, Object> getFanAlarmTrendAndAlarmAbnormalityList(IdxBizFanWarningRecord idxBizFanWarningRecord) {
HashMap<String, Object> result = new HashMap<>();
HashMap<String, List<String>> alarmTrendMap = new HashMap<>(); HashMap<String, List<String>> alarmTrendMap = new HashMap<>();
List<HashMap<String,String>> alarmAbnormalityList = new ArrayList<>(); List<HashMap<String, String>> alarmAbnormalityList = new ArrayList<>();
Long analysisDate = idxBizFanWarningRecord.getRecDate().getTime()+1000*60; Long analysisDate = idxBizFanWarningRecord.getRecDate().getTime() + 1000 * 60;
List<IdxBizFanHealthIndex> idxBizFanHealthIndexList = idxBizFanHealthIndexMapper.selectList(new QueryWrapper<IdxBizFanHealthIndex>() List<IdxBizFanHealthIndex> idxBizFanHealthIndexList = idxBizFanHealthIndexMapper.selectList(new QueryWrapper<IdxBizFanHealthIndex>()
.eq("GATEWAY_ID", idxBizFanWarningRecord.getGatewayId()) .eq("GATEWAY_ID", idxBizFanWarningRecord.getGatewayId())
.eq("INDEX_ADDRESS", idxBizFanWarningRecord.getIndexAddress()) .eq("INDEX_ADDRESS", idxBizFanWarningRecord.getIndexAddress())
...@@ -53,49 +246,197 @@ public class AlarmInfoDetailServiceImpl implements IAlarmInfoDetailService { ...@@ -53,49 +246,197 @@ public class AlarmInfoDetailServiceImpl implements IAlarmInfoDetailService {
.last("limit 30")); .last("limit 30"));
List<String> xDatas = new ArrayList<>(); List<String> xDatas = new ArrayList<>();
List<String> yDatas = new ArrayList<>(); List<String> yDatas = new ArrayList<>();
for (int i = idxBizFanHealthIndexList.size() - 1; i > 0; i--) { String startTime = "";
HashMap<String,String> alarmAbnormalityItem = new HashMap<>(); String endTime = "";
for (int i = idxBizFanHealthIndexList.size() - 1; i >= 0; i--) {
HashMap<String, String> alarmAbnormalityItem = new HashMap<>();
IdxBizFanHealthIndex idxBizFanHealthIndex = idxBizFanHealthIndexList.get(i); IdxBizFanHealthIndex idxBizFanHealthIndex = idxBizFanHealthIndexList.get(i);
xDatas.add(idxBizFanHealthIndex.getANALYSISTIME()); xDatas.add(idxBizFanHealthIndex.getANALYSISTIME());
yDatas.add(String.valueOf(idxBizFanHealthIndex.getHealthIndex())); yDatas.add(String.valueOf(idxBizFanHealthIndex.getHealthIndex()));
alarmAbnormalityItem.put("time",idxBizFanHealthIndex.getANALYSISTIME()); alarmAbnormalityItem.put("time", idxBizFanHealthIndex.getANALYSISTIME());
alarmAbnormalityItem.put("abnormal", String.valueOf(idxBizFanHealthIndex.getANOMALY())); alarmAbnormalityItem.put("abnormal", String.valueOf(idxBizFanHealthIndex.getANOMALY()));
alarmAbnormalityItem.put("healthValue",String.valueOf(idxBizFanHealthIndex.getHealthIndex())); alarmAbnormalityItem.put("healthValue", String.valueOf(idxBizFanHealthIndex.getHealthIndex()));
if (i == 0) {
endTime = idxBizFanHealthIndex.getANALYSISTIME();
}
if (i == 2) {
startTime = idxBizFanHealthIndex.getANALYSISTIME();
}
alarmAbnormalityList.add(alarmAbnormalityItem); alarmAbnormalityList.add(alarmAbnormalityItem);
} }
alarmTrendMap.put("xDatas",xDatas); alarmTrendMap.put("xDatas", xDatas);
alarmTrendMap.put("yDatas",yDatas); alarmTrendMap.put("yDatas", yDatas);
result.put("alarmTrend",alarmTrendMap); result.put("alarmTrend", alarmTrendMap);
// 异常度 alarmAbnormality // 异常度 alarmAbnormality
result.put("alarmAbnormalityList",alarmAbnormalityList.subList(alarmAbnormalityList.size()-3,alarmAbnormalityList.size())); result.put("alarmAbnormalityList", alarmAbnormalityList.subList(alarmAbnormalityList.size() - 3, alarmAbnormalityList.size()));
//----健康指数来源 result.put("startTime", startTime);
List<IdxBizFanPointVarCentralValue> idxBizFanPointVarCentralValueList = idxBizFanPointVarCentralValueMapper.selectList(new QueryWrapper<IdxBizFanPointVarCentralValue>().eq("ANALYSIS_POINT_ID",idxBizFanWarningRecord.getAnalysisPointId())); result.put("endTime", endTime);
IdxBizFanPointVarCentralValue idxBizFanPointVarCentralValue =new IdxBizFanPointVarCentralValue(); return result;
if(idxBizFanPointVarCentralValueList.size()<=0){ }
return result; // 获取光伏趋势图与异常度
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)))
.orderByDesc("ANALYSIS_TIME")
.last("limit 30"));
List<String> xDatas = new ArrayList<>();
List<String> yDatas = new ArrayList<>();
String startTime = "";
String endTime = "";
for (int i = idxBizPvHealthIndexList.size() - 1; i >= 0; i--) {
HashMap<String, String> alarmAbnormalityItem = new HashMap<>();
IdxBizPvHealthIndex idxBizPvHealthIndex = idxBizPvHealthIndexList.get(i);
xDatas.add(idxBizPvHealthIndex.getANALYSISTIME());
yDatas.add(String.valueOf(idxBizPvHealthIndex.getHealthIndex()));
alarmAbnormalityItem.put("time", idxBizPvHealthIndex.getANALYSISTIME());
alarmAbnormalityItem.put("abnormal", String.valueOf(idxBizPvHealthIndex.getANOMALY()));
alarmAbnormalityItem.put("healthValue", String.valueOf(idxBizPvHealthIndex.getHealthIndex()));
if (i == 0) {
endTime = idxBizPvHealthIndex.getANALYSISTIME();
}
if (i == 2) {
startTime = idxBizPvHealthIndex.getANALYSISTIME();
}
alarmAbnormalityList.add(alarmAbnormalityItem);
} }
idxBizFanPointVarCentralValue = idxBizFanPointVarCentralValueList.get(0); alarmTrendMap.put("xDatas", xDatas);
//健康指数来源测点信息 alarmTrendMap.put("yDatas", yDatas);
HashMap<String,String> healthPointInfoMap = new HashMap<>(); result.put("alarmTrend", alarmTrendMap);
healthPointInfoMap.put("analysisPointName",idxBizFanPointVarCentralValue.getAnalysisPointName()); // 异常度 alarmAbnormality
healthPointInfoMap.put("processPoint1Name",idxBizFanPointVarCentralValue.getProcessPoint1Name()); result.put("alarmAbnormalityList", alarmAbnormalityList.subList(alarmAbnormalityList.size() - 3, alarmAbnormalityList.size()));
healthPointInfoMap.put("processPoint2Name",idxBizFanPointVarCentralValue.getProcessPoint2Name()); result.put("startTime", startTime);
healthPointInfoMap.put("processPoint3Name",idxBizFanPointVarCentralValue.getProcessPoint3Name()); result.put("endTime", endTime);
result.put("healthPointInfo",healthPointInfoMap); return result;
List<IdxBizFanPointProcessVariableClassification> idxBizFanPointProcessVariableClassificationList = idxBizFanPointProcessVariableClassificationMapper.selectList(new QueryWrapper<IdxBizFanPointProcessVariableClassification>().in("SEQUENCE_NBR",Arrays.asList(idxBizFanPointVarCentralValue.getAnalysisPointId(),idxBizFanPointVarCentralValue.getProcessPoint1Id(),idxBizFanPointVarCentralValue.getProcessPoint2Id(),idxBizFanPointVarCentralValue.getProcessPoint3Id()))); }
// List<IndicatorData> indicatorDataList = //处理风机-相关性区间
//当前值 public void handlerIdxBizFanPointVarCentralValue(List<IdxBizFanPointVarCentralValue> idxBizFanPointVarCentralValueList) {
idxBizFanPointVarCentralValueList.forEach(idxBizFanPointVarCentralValue1 -> {
if (ObjectUtils.isEmpty(idxBizFanPointVarCentralValue1.getProcess1Min())) {
idxBizFanPointVarCentralValue1.setProcess1Min(Double.NEGATIVE_INFINITY);
}
if (ObjectUtils.isEmpty(idxBizFanPointVarCentralValue1.getProcess2Min())) {
idxBizFanPointVarCentralValue1.setProcess2Min(Double.NEGATIVE_INFINITY);
}
if (ObjectUtils.isEmpty(idxBizFanPointVarCentralValue1.getProcess3Min())) {
idxBizFanPointVarCentralValue1.setProcess3Min(Double.NEGATIVE_INFINITY);
}
if (ObjectUtils.isEmpty(idxBizFanPointVarCentralValue1.getProcess1Max())) {
idxBizFanPointVarCentralValue1.setProcess1Max(Double.POSITIVE_INFINITY);
}
if (ObjectUtils.isEmpty(idxBizFanPointVarCentralValue1.getPorcess2Max())) {
idxBizFanPointVarCentralValue1.setPorcess2Max(Double.POSITIVE_INFINITY);
}
if (ObjectUtils.isEmpty(idxBizFanPointVarCentralValue1.getProcess3Max())) {
idxBizFanPointVarCentralValue1.setProcess3Max(Double.POSITIVE_INFINITY);
}
});
}
//处理光伏-相关性区间
public void handlerIdxBizPvPointVarCentralValue(List<IdxBizPvPointVarCentralValue> idxBizPvPointVarCentralValueList) {
idxBizPvPointVarCentralValueList.forEach(idxBizPvPointVarCentralValue1 -> {
if (ObjectUtils.isEmpty(idxBizPvPointVarCentralValue1.getProcess1Min())) {
idxBizPvPointVarCentralValue1.setProcess1Min(Double.NEGATIVE_INFINITY);
}
if (ObjectUtils.isEmpty(idxBizPvPointVarCentralValue1.getProcess2Min())) {
idxBizPvPointVarCentralValue1.setProcess2Min(Double.NEGATIVE_INFINITY);
}
if (ObjectUtils.isEmpty(idxBizPvPointVarCentralValue1.getProcess3Min())) {
idxBizPvPointVarCentralValue1.setProcess3Min(Double.NEGATIVE_INFINITY);
}
if (ObjectUtils.isEmpty(idxBizPvPointVarCentralValue1.getProcess1Max())) {
idxBizPvPointVarCentralValue1.setProcess1Max(Double.POSITIVE_INFINITY);
}
if (ObjectUtils.isEmpty(idxBizPvPointVarCentralValue1.getProcess2Max())) {
idxBizPvPointVarCentralValue1.setProcess2Max(Double.POSITIVE_INFINITY);
}
if (ObjectUtils.isEmpty(idxBizPvPointVarCentralValue1.getProcess3Max())) {
idxBizPvPointVarCentralValue1.setProcess3Max(Double.POSITIVE_INFINITY);
}
});
}
//训练值 //根据工况变量值获取分析变量的中心值、标准值、以及工况组合区间值-风机
public HashMap<String, String> getWorkingConditionCombinationIntervalFan(Double processPoint1Value, Double processPoint2Value, Double processPoint3Value, List<IdxBizFanPointVarCentralValue> idxBizFanPointVarCentralValueList) {
HashMap<String, String> result = new HashMap<>();
IdxBizFanPointVarCentralValue idxBizFanPointVarCentralValue = idxBizFanPointVarCentralValueList
.stream()
.filter(
idxBizFanPointVarCentralValue1 -> processPoint1Value >= idxBizFanPointVarCentralValue1.getProcess1Min() && processPoint1Value <= idxBizFanPointVarCentralValue1.getProcess1Max()
&& processPoint2Value >= idxBizFanPointVarCentralValue1.getProcess2Min() && processPoint2Value <= idxBizFanPointVarCentralValue1.getPorcess2Max()
&& processPoint3Value >= idxBizFanPointVarCentralValue1.getProcess3Min() && processPoint3Value <= idxBizFanPointVarCentralValue1.getProcess3Max()
).collect(Collectors.toList()).get(0);
//异常度 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()).
replace("Infinity", "∞"));
return result;
}
//根据工况变量值获取分析变量的中心值、标准值、以及工况组合区间值-光伏
public HashMap<String, String> getWorkingConditionCombinationIntervalPv(Double processPoint1Value, Double processPoint2Value, Double processPoint3Value, List<IdxBizPvPointVarCentralValue> idxBizPvPointVarCentralValueList) {
HashMap<String, String> result = new HashMap<>();
IdxBizPvPointVarCentralValue idxBizPvPointVarCentralValue = idxBizPvPointVarCentralValueList
.stream()
.filter(
idxBizFanPointVarCentralValue1 -> processPoint1Value >= idxBizFanPointVarCentralValue1.getProcess1Min() && processPoint1Value <= idxBizFanPointVarCentralValue1.getProcess1Max()
&& processPoint2Value >= idxBizFanPointVarCentralValue1.getProcess2Min() && processPoint2Value <= idxBizFanPointVarCentralValue1.getProcess2Max()
&& processPoint3Value >= idxBizFanPointVarCentralValue1.getProcess3Min() && processPoint3Value <= idxBizFanPointVarCentralValue1.getProcess3Max()
).collect(Collectors.toList()).get(0);
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()).
replace("Infinity", "∞"));
return result; return result;
} }
//获取sourceInfoMap-风机
public HashMap<String, Object> getSourceInfoMapFan(IdxBizFanWarningRecord idxBizFanWarningRecord) {
List<IdxBizFanPointVarCorrelation> idxBizFanPointVarCorrelationList = idxBizFanPointVarCorrelationMapper
.selectList(new QueryWrapper<IdxBizFanPointVarCorrelation>().eq("EQUIPMENT_NAME", idxBizFanWarningRecord.getEquipmentName()));
Map<String, Double> idxBizFanPointVarCorrelationListValues = new HashMap<>();
TreeSet<String> anaylysisPonites = new TreeSet<>();
TreeSet<String> processPointes = new TreeSet<>();
idxBizFanPointVarCorrelationList.forEach(
idxBizFanPointVarCorrelation -> {
anaylysisPonites.add(idxBizFanPointVarCorrelation.getAnalysisPointName());
processPointes.add(idxBizFanPointVarCorrelation.getProcessPointName());
idxBizFanPointVarCorrelationListValues.put(idxBizFanPointVarCorrelation
.getAnalysisPointName() + "_" + idxBizFanPointVarCorrelation.getProcessPointName(), idxBizFanPointVarCorrelation.getCorrelationCoefficient());
}
);
HashMap<String, Object> sourceInfoMap = new HashMap<>();
sourceInfoMap.put("xDatas", processPointes);
sourceInfoMap.put("yDatas", anaylysisPonites);
sourceInfoMap.put("values", idxBizFanPointVarCorrelationListValues);
return sourceInfoMap;
}
@Override //获取sourceInfoMap-光伏
public Map<String, Object> getAlramInfoDetailOfPv(String id) { public HashMap<String, Object> getSourceInfoMapPv(IdxBizPvWarningRecord idxBizPvWarningRecord) {
return null; List<IdxBizPvPointVarCorrelation> idxBizPvPointVarCorrelationList = idxBizPvPointVarCorrelationMapper
.selectList(new QueryWrapper<IdxBizPvPointVarCorrelation>().eq("EQUIPMENT_NAME", idxBizPvWarningRecord.getEquipmentName()));
Map<String, Double> idxBizPvPointVarCorrelationListValues = new HashMap<>();
TreeSet<String> anaylysisPonites = new TreeSet<>();
TreeSet<String> processPointes = new TreeSet<>();
idxBizPvPointVarCorrelationList.forEach(
idxBizPvPointVarCorrelation -> {
anaylysisPonites.add(idxBizPvPointVarCorrelation.getAnalysisPointName());
processPointes.add(idxBizPvPointVarCorrelation.getProcessPointName());
idxBizPvPointVarCorrelationListValues.put(idxBizPvPointVarCorrelation
.getAnalysisPointName() + "_" + idxBizPvPointVarCorrelation.getProcessPointName(), idxBizPvPointVarCorrelation.getCorrelationCoefficient());
}
);
HashMap<String, Object> sourceInfoMap = new HashMap<>();
sourceInfoMap.put("xDatas", processPointes);
sourceInfoMap.put("yDatas", anaylysisPonites);
sourceInfoMap.put("values", idxBizPvPointVarCorrelationListValues);
return sourceInfoMap;
} }
} }
...@@ -49,5 +49,7 @@ public interface IndicatorDataMapper extends BaseMapper<IndicatorData> { ...@@ -49,5 +49,7 @@ public interface IndicatorDataMapper extends BaseMapper<IndicatorData> {
@Select("select `value`,`value_f`, address, gateway_id from iot_data.indicator_data where ts > NOW()-10m and gateway_id = #{gatewayId}") @Select("select `value`,`value_f`, address, gateway_id from iot_data.indicator_data where ts > NOW()-10m and gateway_id = #{gatewayId}")
List<IndicatorData> selectDataByGatewayIdAndAddress(@Param("gatewayId") String gatewayId); List<IndicatorData> selectDataByGatewayIdAndAddress(@Param("gatewayId") String gatewayId);
@Select("select created_time,`value`,`value_f`, address, gateway_id from iot_data.indicator_data where gateway_id = #{gatewayId} and `address` in ( ${addresses} ) and ts >= #{startTime} and ts <= #{endTime}")
List<IndicatorData> selectDataByGatewayIdAndAddressForAlarmInfoDetail(@Param("gatewayId") String gatewayId,@Param("addresses") String addresses,@Param("startTime") String startTime, @Param("endTime") String endTime);
} }
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