Commit f04556ce authored by caotao's avatar caotao

预警记录生成时新增时间判断

parent 963ffa17
...@@ -285,8 +285,8 @@ public class HealthStatusIndicatorServiceImpl { ...@@ -285,8 +285,8 @@ public class HealthStatusIndicatorServiceImpl {
List<PvWarningRecord> idxBizPvWarningRecords = pvWaringRecordMapper.selectList(query); List<PvWarningRecord> idxBizPvWarningRecords = pvWaringRecordMapper.selectList(query);
int flag = ObjectUtils.isEmpty(idxBizPvWarningRecords) || WarningNameEnum.getCode(level) > WarningNameEnum.getCode(idxBizPvWarningRecords.get(0).getWarningName()) ? 0 :1; int flag = ObjectUtils.isEmpty(idxBizPvWarningRecords) || WarningNameEnum.getCode(level) > WarningNameEnum.getCode(idxBizPvWarningRecords.get(0).getWarningName()) ? 0 :1;
Boolean timeFlag = format.equals(idxBizPvHealthIndices.get(0).getRecDate());
if (!level.equals("") && flag == 0){ if (!level.equals("") && flag == 0 && timeFlag){
IdxBizPvWarningRecord idxBizPvWarningRecord = new IdxBizPvWarningRecord(); IdxBizPvWarningRecord idxBizPvWarningRecord = new IdxBizPvWarningRecord();
idxBizPvWarningRecord.setKks(idxBizPvHealthIndices.get(0).getKks()); idxBizPvWarningRecord.setKks(idxBizPvHealthIndices.get(0).getKks());
idxBizPvWarningRecord.setArae(idxBizPvHealthIndices.get(0).getArea()); idxBizPvWarningRecord.setArae(idxBizPvHealthIndices.get(0).getArea());
...@@ -334,6 +334,186 @@ public class HealthStatusIndicatorServiceImpl { ...@@ -334,6 +334,186 @@ public class HealthStatusIndicatorServiceImpl {
} }
// @Scheduled(cron = "0 0/5 * * * ?")
// @Async("async")
// public void healthWarningMinuteNoArg( ) {
// Date time = new Date();
//// if (!openHealth){
//// return;
//// }
// String format = DateUtil.format(time, "yyyy-MM-dd HH:mm:00");
//// Date date = DateUtils.dateAddHours(time, -8);
// log.info("光伏---------------------预警时间----"+time);
// // Calendar calendar = Calendar.getInstance();
//// calendar.set(Calendar.HOUR_OF_DAY,calendar.get(Calendar.HOUR_OF_DAY)-1);
// SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm");
//
// Integer maxWaringCycle = idxBizPvWarningRuleSetMapper.getMaxWaringCycleOfMinutes();
// Date date =DateUtil.offsetHour(time,-8);
// date =DateUtil.offsetMinute(date,0-(maxWaringCycle*10));
// LambdaQueryWrapper<PvHealthIndexMoment> wrapper = new LambdaQueryWrapper<>();
// wrapper.ne(PvHealthIndexMoment::getHealthLevel,"安全");
// wrapper.ge(PvHealthIndexMoment::getTs,date);
// wrapper.eq(PvHealthIndexMoment::getAnalysisObjType, "测点");
// wrapper.orderByDesc(PvHealthIndexMoment::getTs);
// List<PvHealthIndexMoment> healthIndices = pvHealthIndexMomentMapper.selectList(wrapper);
// List<String> collect = healthIndices.stream().map(PvHealthIndexMoment::getAnalysisObjSeq).collect(Collectors.toList());
// if (null == healthIndices ){
// return;
// }
// LambdaQueryWrapper<IdxBizPvWarningRuleSet> queryWrapper = new LambdaQueryWrapper<>();
// queryWrapper.eq(IdxBizPvWarningRuleSet::getAnalysisType,"按时刻");
// queryWrapper.in(IdxBizPvWarningRuleSet::getAnalysisPointId, collect);
// List<IdxBizPvWarningRuleSet> idxBizPvWarningRules = idxBizPvWarningRuleSetMapper.selectList(queryWrapper);
//
//
// Map<String, Map<String, List<PvHealthIndexMoment>>> gateWayMaps = healthIndices.stream().collect(Collectors.groupingBy(PvHealthIndexMoment::getGatewayId, Collectors.groupingBy(PvHealthIndexMoment::getIndexAddress)));
// List<IdxBizPvWarningRecord> idxBizPvWarningRecordList = new ArrayList<>();
// List<PvWarningRecord> tdPvWarningRecordList = new ArrayList<>();
// HashMap<String, StationBasic> stationMap = new HashMap<>();
// for (String gateWayId : gateWayMaps.keySet()) {
//
// LambdaQueryWrapper<StationBasic> basicLambdaQueryWrapper = new LambdaQueryWrapper<>();
// basicLambdaQueryWrapper.eq(StationBasic::getFanGatewayId, gateWayId);
// basicLambdaQueryWrapper.last("limit 1");
// StationBasic stationBasic = stationBasicMapper.selectOne(basicLambdaQueryWrapper);
// stationMap.put(gateWayId, stationBasic);
//
// Map<String, List<PvHealthIndexMoment>> healthDataMaps = gateWayMaps.get(gateWayId);
// for (String address : healthDataMaps.keySet()) {
// List<PvHealthIndexMoment> idxBizPvHealthIndices = healthDataMaps.get(address);
// List<IdxBizPvWarningRuleSet> idxBizPvWarningRuleSets = idxBizPvWarningRules.stream().filter(t -> t.getAnalysisPointId().equals(idxBizPvHealthIndices.get(0).getAnalysisObjSeq())).collect(Collectors.toList());
// if (ObjectUtils.isEmpty(idxBizPvWarningRuleSets) ){
// continue;
// }
// Double healthValueWarn = 0.0;
// Double healthValueRisk = 0.0;
// Double healthValueNotice = 0.0;
//
// int healthValueWarnCount = 0;
// int healthValueRiskCount = 0;
// int healthValueNoticeCount = 0;
// int healthValueMinCount = 0;
// int riskNum=0;
// int warnNum=0;
// int noticeNum=0;
//
//
//
// for (IdxBizPvWarningRuleSet e : idxBizPvWarningRuleSets) {
// switch (e.getWarningName()){
// case "警告":
// healthValueWarn = Double.parseDouble(e.getWarningIf().substring(2));
// healthValueWarnCount =Integer.parseInt(e.getWarningCycle());
// break;
// case "危险":
// healthValueRisk = Double.parseDouble(e.getWarningIf().substring(2));
// healthValueRiskCount =Integer.parseInt(e.getWarningCycle());
// break;
// case "注意":
// healthValueNotice = Double.parseDouble(e.getWarningIf().substring(2));
// healthValueNoticeCount =Integer.parseInt(e.getWarningCycle());
// break;
// }
//
// }
//
// List<Double> healthIndex = idxBizPvHealthIndices.stream().map(PvHealthIndexMoment::getHealthIndex).collect(Collectors.toList());
// Double finalHealthValueRisk = healthValueRisk;
// if(healthIndex.size()>=healthValueRiskCount){
// List<Double> healthIndexList = healthIndex.subList(healthIndex.size()-healthValueRiskCount,healthIndex.size());
// riskNum = (int) healthIndexList.stream().filter(e -> e <= finalHealthValueRisk).count();
// }
// Double finalHealthValueWarn = healthValueWarn;
// if(healthIndex.size()>=healthValueWarnCount){
// List<Double> healthIndexList = healthIndex.subList(healthIndex.size()-healthValueWarnCount,healthIndex.size());
// warnNum = (int) healthIndexList.stream().filter(e -> e <= finalHealthValueWarn).count();
// }
// Double finalHealthValueNotice = healthValueNotice;
// if(healthIndex.size()>=healthValueNoticeCount){
// List<Double> healthIndexList = healthIndex.subList(healthIndex.size()-healthValueWarnCount,healthIndex.size());
// noticeNum = (int) healthIndexList.stream().filter(e -> e <= finalHealthValueNotice).count();
// }
// String level = "";
// String content = "";
// String num = "";
// if (noticeNum == healthValueNoticeCount ){
// // redisUtils.set(gateWayId+"_"+address+"_health_notice_minute","notice");
// level ="注意";
// num = ""+healthValueNotice;
// content = healthValueNoticeCount*10 + "分钟";
// }
// if (warnNum == healthValueWarnCount ){
// // redisUtils.set(gateWayId+"_"+address+"_health_warn_minute","warn");
// level ="警告";
// num = ""+healthValueWarn;
// content = healthValueWarnCount*10 + "分钟";
// }
// if (riskNum == healthValueRiskCount ){
// // redisUtils.set(gateWayId+"_"+address+"_health_risk_minute","risk");
// level ="危险";
// num = ""+healthValueRisk;
// content = healthValueRiskCount*10 + "分钟";
//
// }
// //库里若已存在该测点预警 不生成重复的 若新生预警等级高于历史 则生成
// LambdaQueryWrapper<PvWarningRecord> query = new LambdaQueryWrapper<>();
// query.eq(PvWarningRecord::getAnalysisPointId,idxBizPvHealthIndices.get(0).getAnalysisObjSeq());
// query.isNotNull(PvWarningRecord::getDisposotionDate);
// query.orderByDesc(PvWarningRecord::getTs);
// List<PvWarningRecord> idxBizPvWarningRecords = pvWaringRecordMapper.selectList(query);
//
// int flag = ObjectUtils.isEmpty(idxBizPvWarningRecords) || WarningNameEnum.getCode(level) > WarningNameEnum.getCode(idxBizPvWarningRecords.get(0).getWarningName()) ? 0 :1;
//
// if (!level.equals("") && flag == 0){
// IdxBizPvWarningRecord idxBizPvWarningRecord = new IdxBizPvWarningRecord();
// idxBizPvWarningRecord.setKks(idxBizPvHealthIndices.get(0).getKks());
// idxBizPvWarningRecord.setArae(idxBizPvHealthIndices.get(0).getArea());
// idxBizPvWarningRecord.setStation(idxBizPvHealthIndices.get(0).getStation());
// idxBizPvWarningRecord.setSubarray(idxBizPvHealthIndices.get(0).getSubarray());
// idxBizPvWarningRecord.setGatewayId(gateWayId);
// idxBizPvWarningRecord.setIndexAddress(address);
// idxBizPvWarningRecord.setEquipmentName(idxBizPvHealthIndices.get(0).getEquipmentName());
// idxBizPvWarningRecord.setAnalysisPointId(idxBizPvHealthIndices.get(0).getAnalysisObjSeq());
// idxBizPvWarningRecord.setDisposotionState("待确认");
// idxBizPvWarningRecord.setStatus("0");
// idxBizPvWarningRecord.setWarningName(level);
// idxBizPvWarningRecord.setCONTENT(idxBizPvHealthIndices.get(0).getPointName() + "连续"+content+"健康指数≤"+num );
// idxBizPvWarningRecord.setRecDate(time);
// idxBizPvWarningRecord.setWarningPeriod("按时刻");
// idxBizPvWarningRecord.setManufacturer(idxBizPvHealthIndices.get(0).getManufacturer());
// idxBizPvWarningRecord.setPointName(idxBizPvHealthIndices.get(0).getPointName());
// idxBizPvWarningRecord.setHealthIndexSeq(idxBizPvHealthIndices.get(0).getHealthIndex().toString());
// idxBizPvWarningRecord.setHealthLevel(idxBizPvHealthIndices.get(0).getHealthLevel());
// idxBizPvWarningRecordList.add(idxBizPvWarningRecord);
// long currentTimeMillis = System.currentTimeMillis();
// long nanoTime = System.nanoTime();
// long timestamp = currentTimeMillis * 1000000 + nanoTime % 1000000;
// PvWarningRecord pvWarningRecord = new PvWarningRecord();
// BeanUtils.copyProperties(idxBizPvWarningRecord, pvWarningRecord, "disposotionDate", "recDate", "CONTENT");
// pvWarningRecord.setContent(idxBizPvWarningRecord.getCONTENT());
// pvWarningRecord.setRecDate(format);
// pvWarningRecord.setTs(timestamp);
// pvWarningRecord.setHealthIndex(String.format(CommonConstans.Onedecimalplaces,idxBizPvHealthIndices.get(0).getHealthIndex()));
// pvWarningRecord.setOrgCode(idxBizPvHealthIndices.get(0).getOrgCode());
// tdPvWarningRecordList.add(pvWarningRecord);
// // idxBizPvWarningRecordMapper.insert(idxBizPvWarningRecord);
// }
// }
// }
//// idxBizPvWarningRecordService.saveBatch(idxBizPvWarningRecordList);
//
// if (CollUtil.isNotEmpty(tdPvWarningRecordList)) {
// log.info("==================光伏按时刻产生预警数据成功",JSON.toJSONString(tdPvWarningRecordList));
// // tdengine插入
//// pvWaringRecordMapper.saveBatchWarningRecords(tdPvWarningRecordList);
// }
// // 触发风险模型生成预警处置模块的预警记录
// fetchDataPv(tdPvWarningRecordList, stationMap);
//
// }
/*** /***
* 每五小时获取一次最大粒度内的指数异常数据 * 每五小时获取一次最大粒度内的指数异常数据
...@@ -475,8 +655,8 @@ public class HealthStatusIndicatorServiceImpl { ...@@ -475,8 +655,8 @@ public class HealthStatusIndicatorServiceImpl {
List<PvWarningRecord> idxBizPvWarningRecords = pvWaringRecordMapper.selectList(query); List<PvWarningRecord> idxBizPvWarningRecords = pvWaringRecordMapper.selectList(query);
int flag = ObjectUtils.isEmpty(idxBizPvWarningRecords) || WarningNameEnum.getCode(level) > WarningNameEnum.getCode(idxBizPvWarningRecords.get(0).getWarningName()) ? 0 :1; int flag = ObjectUtils.isEmpty(idxBizPvWarningRecords) || WarningNameEnum.getCode(level) > WarningNameEnum.getCode(idxBizPvWarningRecords.get(0).getWarningName()) ? 0 :1;
Boolean timeFlag = format.equals(idxBizPvHealthIndices.get(0).getRecDate());
if (!level.equals("") && flag == 0){ if (!level.equals("") && flag == 0 && timeFlag){
IdxBizPvWarningRecord idxBizPvWarningRecord = new IdxBizPvWarningRecord(); IdxBizPvWarningRecord idxBizPvWarningRecord = new IdxBizPvWarningRecord();
idxBizPvWarningRecord.setKks(idxBizPvHealthIndices.get(0).getKks()); idxBizPvWarningRecord.setKks(idxBizPvHealthIndices.get(0).getKks());
idxBizPvWarningRecord.setArae(idxBizPvHealthIndices.get(0).getArea()); idxBizPvWarningRecord.setArae(idxBizPvHealthIndices.get(0).getArea());
...@@ -663,8 +843,8 @@ public class HealthStatusIndicatorServiceImpl { ...@@ -663,8 +843,8 @@ public class HealthStatusIndicatorServiceImpl {
List<PvWarningRecord> idxBizPvWarningRecords = pvWaringRecordMapper.selectList(query); List<PvWarningRecord> idxBizPvWarningRecords = pvWaringRecordMapper.selectList(query);
int flag = ObjectUtils.isEmpty(idxBizPvWarningRecords) || WarningNameEnum.getCode(level) > WarningNameEnum.getCode(idxBizPvWarningRecords.get(0).getWarningName()) ? 0 :1; int flag = ObjectUtils.isEmpty(idxBizPvWarningRecords) || WarningNameEnum.getCode(level) > WarningNameEnum.getCode(idxBizPvWarningRecords.get(0).getWarningName()) ? 0 :1;
Boolean timeFlag = format.equals(idxBizPvHealthIndices.get(0).getRecDate());
if (!level.equals("") && flag == 0){ if (!level.equals("") && flag == 0 && timeFlag){
IdxBizPvWarningRecord idxBizPvWarningRecord = new IdxBizPvWarningRecord(); IdxBizPvWarningRecord idxBizPvWarningRecord = new IdxBizPvWarningRecord();
idxBizPvWarningRecord.setKks(idxBizPvHealthIndices.get(0).getKks()); idxBizPvWarningRecord.setKks(idxBizPvHealthIndices.get(0).getKks());
idxBizPvWarningRecord.setArae(idxBizPvHealthIndices.get(0).getArea()); idxBizPvWarningRecord.setArae(idxBizPvHealthIndices.get(0).getArea());
...@@ -853,8 +1033,8 @@ public class HealthStatusIndicatorServiceImpl { ...@@ -853,8 +1033,8 @@ public class HealthStatusIndicatorServiceImpl {
List<FanWarningRecord> idxBizFanWarningRecords = fanWaringRecordMapper.selectList(query); List<FanWarningRecord> idxBizFanWarningRecords = fanWaringRecordMapper.selectList(query);
int flag = ObjectUtils.isEmpty(idxBizFanWarningRecords) || WarningNameEnum.getCode(level) > WarningNameEnum.getCode(idxBizFanWarningRecords.get(0).getWarningName()) ? 0 :1; int flag = ObjectUtils.isEmpty(idxBizFanWarningRecords) || WarningNameEnum.getCode(level) > WarningNameEnum.getCode(idxBizFanWarningRecords.get(0).getWarningName()) ? 0 :1;
Boolean timeFlag = format.equals(idxBizFanHealthIndices.get(0).getRecDate());
if (!level.equals("") && flag == 0){ if (!level.equals("") && flag == 0 && timeFlag){
IdxBizFanWarningRecord idxBizFanWarningRecord = new IdxBizFanWarningRecord(); IdxBizFanWarningRecord idxBizFanWarningRecord = new IdxBizFanWarningRecord();
idxBizFanWarningRecord.setKks(idxBizFanHealthIndices.get(0).getKks()); idxBizFanWarningRecord.setKks(idxBizFanHealthIndices.get(0).getKks());
idxBizFanWarningRecord.setArae(idxBizFanHealthIndices.get(0).getArea()); idxBizFanWarningRecord.setArae(idxBizFanHealthIndices.get(0).getArea());
...@@ -1047,8 +1227,8 @@ public class HealthStatusIndicatorServiceImpl { ...@@ -1047,8 +1227,8 @@ public class HealthStatusIndicatorServiceImpl {
List<FanWarningRecord> idxBizFanWarningRecords = fanWaringRecordMapper.selectList(query); List<FanWarningRecord> idxBizFanWarningRecords = fanWaringRecordMapper.selectList(query);
int flag = ObjectUtils.isEmpty(idxBizFanWarningRecords) || WarningNameEnum.getCode(level) > WarningNameEnum.getCode(idxBizFanWarningRecords.get(0).getWarningName()) ? 0 :1; int flag = ObjectUtils.isEmpty(idxBizFanWarningRecords) || WarningNameEnum.getCode(level) > WarningNameEnum.getCode(idxBizFanWarningRecords.get(0).getWarningName()) ? 0 :1;
Boolean timeFlag = format.equals(idxBizFanHealthIndices.get(0).getRecDate());
if (!level.equals("") && flag == 0){ if (!level.equals("") && flag == 0 && timeFlag){
IdxBizFanWarningRecord idxBizFanWarningRecord = new IdxBizFanWarningRecord(); IdxBizFanWarningRecord idxBizFanWarningRecord = new IdxBizFanWarningRecord();
idxBizFanWarningRecord.setKks(idxBizFanHealthIndices.get(0).getKks()); idxBizFanWarningRecord.setKks(idxBizFanHealthIndices.get(0).getKks());
idxBizFanWarningRecord.setArae(idxBizFanHealthIndices.get(0).getArea()); idxBizFanWarningRecord.setArae(idxBizFanHealthIndices.get(0).getArea());
...@@ -1243,7 +1423,8 @@ public class HealthStatusIndicatorServiceImpl { ...@@ -1243,7 +1423,8 @@ public class HealthStatusIndicatorServiceImpl {
List<FanWarningRecord> idxBizFanWarningRecords = fanWaringRecordMapper.selectList(query); List<FanWarningRecord> idxBizFanWarningRecords = fanWaringRecordMapper.selectList(query);
int flag = ObjectUtils.isEmpty(idxBizFanWarningRecords) || WarningNameEnum.getCode(level) > WarningNameEnum.getCode(idxBizFanWarningRecords.get(0).getWarningName()) ? 0 :1; int flag = ObjectUtils.isEmpty(idxBizFanWarningRecords) || WarningNameEnum.getCode(level) > WarningNameEnum.getCode(idxBizFanWarningRecords.get(0).getWarningName()) ? 0 :1;
if (!level.equals("") && flag == 0) { Boolean timeFlag = format.equals(idxBizFanHealthIndices.get(0).getRecDate());
if (!level.equals("") && flag == 0 && timeFlag) {
IdxBizFanWarningRecord idxBizFanWarningRecord = new IdxBizFanWarningRecord(); IdxBizFanWarningRecord idxBizFanWarningRecord = new IdxBizFanWarningRecord();
idxBizFanWarningRecord.setKks(idxBizFanHealthIndices.get(0).getKks()); idxBizFanWarningRecord.setKks(idxBizFanHealthIndices.get(0).getKks());
idxBizFanWarningRecord.setArae(idxBizFanHealthIndices.get(0).getArea()); idxBizFanWarningRecord.setArae(idxBizFanHealthIndices.get(0).getArea());
......
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