From 0993fd532315a6a65ba91794a63a08d23fcd505b Mon Sep 17 00:00:00 2001 From: lucas Date: Sun, 31 Aug 2025 21:38:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20=E6=9C=80=E6=96=B0?= =?UTF-8?q?=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- consumers/consumerAxySkAlarm.go | 38 +++++++++++++-------------------- 1 file changed, 15 insertions(+), 23 deletions(-) diff --git a/consumers/consumerAxySkAlarm.go b/consumers/consumerAxySkAlarm.go index d4bf146..7144cfc 100644 --- a/consumers/consumerAxySkAlarm.go +++ b/consumers/consumerAxySkAlarm.go @@ -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 {