|
|
@ -110,22 +110,7 @@ func (the *consumerAxySkAlarm) monitorInitial() error { |
|
|
|
//the.updateTriggerStationConfig()
|
|
|
|
return nil |
|
|
|
} |
|
|
|
func (the *consumerAxySkAlarm) updateTriggerConfig() { |
|
|
|
log.Printf("--> 定时 查询pg 更新 双控配置信息") |
|
|
|
sql := `SELECT at.* FROM t_alarm_trigger as at order by at.struct_id, at.factor_id,at.alarm_level asc;` |
|
|
|
err := the.infoPg.Query(&the.configAlarmTrigger, sql) |
|
|
|
if err != nil { |
|
|
|
log.Printf("查询数据库异常:err-> %s", err.Error()) |
|
|
|
return |
|
|
|
} |
|
|
|
for i, trigger := range the.configAlarmTrigger { |
|
|
|
the.configAlarmTrigger[i].ConditionArray = trigger.ConditionRaw |
|
|
|
} |
|
|
|
log.Printf("当前共 %d条 启用配置", len(the.configAlarmTrigger)) |
|
|
|
|
|
|
|
//立即触发
|
|
|
|
the.judgeSK() |
|
|
|
} |
|
|
|
func (the *consumerAxySkAlarm) updateTriggerStationConfig() { |
|
|
|
log.Printf("--> 定时 查询pg 更新 双控配置信息") |
|
|
|
sql := `SELECT at.*,s.id as station_id,s.name as station_name |
|
|
@ -204,13 +189,13 @@ func (the *consumerAxySkAlarm) judgeSK() string { |
|
|
|
|
|
|
|
//判断是否满足告警
|
|
|
|
for sid, stationAlarmInfo := range stationAlarmMap { |
|
|
|
log.Printf("判断测点[%s] 是否满足双控告警", sid) |
|
|
|
if v, ok := onceTriggerStationAlarmMap[sid]; ok { |
|
|
|
log.Printf("测点[%s]本次已经触发过[%s],不再重复触发", sid, v) |
|
|
|
continue |
|
|
|
} |
|
|
|
isAlarm, level, detail, alarmTime, triggerTypeCodes := the.isRuleAlarm(trigger, stationAlarmInfo) |
|
|
|
|
|
|
|
isAlarm, level, detail, alarmTime, triggerTypeCodes := the.isRuleAlarm(trigger, stationAlarmInfo) |
|
|
|
log.Printf("trigger.Id=%d, 测点[%s]判断双控 告警[%v] level=%d", trigger.Id, sid, isAlarm, level) |
|
|
|
var alarmInfoTemplate *models.EsAlarm |
|
|
|
if stationAlarmInfo.Alarm3007 != nil { |
|
|
|
alarmInfoTemplate = stationAlarmInfo.Alarm3007 |
|
|
@ -240,7 +225,7 @@ func (the *consumerAxySkAlarm) judgeSK() string { |
|
|
|
} |
|
|
|
} |
|
|
|
//纪录历史告警
|
|
|
|
log.Printf("测点[%s]本次触发双控,时刻[%s]level=%d", sid, alarmTime.Format("2006-01-02 15:04:05"), level) |
|
|
|
log.Printf("trigger.Id=%d, 测点[%s]本次触发双控,时刻[%s]level=%d", trigger.Id, sid, alarmTime.Format("2006-01-02 15:04:05"), level) |
|
|
|
the.historyStationAlarmMap[sid] = AXY_SK.HistoryAlarm{ |
|
|
|
SourceId: sid, |
|
|
|
AlarmLevel: level, |
|
|
@ -255,9 +240,13 @@ func (the *consumerAxySkAlarm) judgeSK() string { |
|
|
|
level = v.AlarmLevel |
|
|
|
} |
|
|
|
} |
|
|
|
payload := the.skAlarmElimination(alarmInfoTemplate, level, detail) |
|
|
|
the.OutKafka.Publish(the.Info.IoConfig.Out.Kafka.AlarmTopic, payload) |
|
|
|
delete(the.historyStationAlarmMap, sid) |
|
|
|
if _, ok := the.historyStationAlarmMap[sid]; ok { |
|
|
|
log.Printf("trigger.Id=%d, 测点[%s]本次 恢复双控,时刻[%s]level=%d", trigger.Id, sid, alarmTime.Format("2006-01-02 15:04:05"), level) |
|
|
|
|
|
|
|
payload := the.skAlarmElimination(alarmInfoTemplate, level, detail) |
|
|
|
the.OutKafka.Publish(the.Info.IoConfig.Out.Kafka.AlarmTopic, payload) |
|
|
|
delete(the.historyStationAlarmMap, sid) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
@ -274,7 +263,7 @@ func (the *consumerAxySkAlarm) skAlarmInfo(alarmInfoTemplate *models.EsAlarm, le |
|
|
|
AlarmTypeCode: "3077", |
|
|
|
AlarmCode: fmt.Sprintf("3077000%d", level), |
|
|
|
Content: detail, |
|
|
|
Time: alarmTime.Add(8 * time.Hour).Format("2006-01-02T15:04:05+0800"), |
|
|
|
Time: alarmTime.Add(8 * time.Hour).Format("2006-01-02T15:04:05.000+0800"), |
|
|
|
SourceTypeId: 2, // 0:DTU, 1:传感器, 2:测点
|
|
|
|
Sponsor: "goInOut_axySkAlarm", |
|
|
|
Extras: nil, |
|
|
@ -293,7 +282,7 @@ func (the *consumerAxySkAlarm) skAlarmElimination(alarmInfoTemplate *models.EsAl |
|
|
|
AlarmTypeCode: "3077", |
|
|
|
AlarmCode: fmt.Sprintf("3077000%d", level), |
|
|
|
Content: "", |
|
|
|
Time: time.Now().Format("2006-01-02T15:04:05+0800"), |
|
|
|
Time: time.Now().Format("2006-01-02T15:04:05.000+0800"), |
|
|
|
SourceTypeId: 2, // 0:DTU, 1:传感器, 2:测点
|
|
|
|
Sponsor: "goInOut_axySkAlarm", |
|
|
|
Extras: nil, |
|
|
@ -395,13 +384,16 @@ func (the *consumerAxySkAlarm) updateEsAlarmTriggerHistory(structId int) { |
|
|
|
if err != nil { |
|
|
|
log.Printf("结构物[%d] 查询历史有效AlarmTrigger 异常=>%s", structId, err.Error()) |
|
|
|
} |
|
|
|
the.historyStationAlarmMap = make(map[string]AXY_SK.HistoryAlarm) |
|
|
|
for _, alarm := range alarms { |
|
|
|
the.historyStationAlarmMap[alarm.SourceId] = AXY_SK.HistoryAlarm{ |
|
|
|
SourceId: alarm.SourceId, |
|
|
|
Time: alarm.EndTime, |
|
|
|
AlarmLevel: alarm.CurrentLevel, |
|
|
|
} |
|
|
|
log.Printf("加载双控历史告警 SourceId=%s,time=%v", alarm.SourceId, alarm.EndTime) |
|
|
|
} |
|
|
|
log.Printf("双控历史告警 共 %d条", len(the.historyStationAlarmMap)) |
|
|
|
} |
|
|
|
func (the *consumerAxySkAlarm) getEsAlarmTriggerHistoryQueryStr(structId int) string { |
|
|
|
|
|
|
|