From cd30522aeca2885856ddf9490195ce3f1f9a9780 Mon Sep 17 00:00:00 2001 From: lucas Date: Mon, 1 Sep 2025 15:24:09 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E6=9F=A5=E8=AF=A2=E4=B8=8D=E5=88=B0?= =?UTF-8?q?=E5=8E=9F=E5=A7=8B=E5=91=8A=E8=AD=A6=E7=9A=84=20=E8=BF=9B?= =?UTF-8?q?=E8=A1=8C=E8=87=AA=E5=8A=A8=E6=81=A2=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- consumers/consumerAxySkAlarm.go | 44 +++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/consumers/consumerAxySkAlarm.go b/consumers/consumerAxySkAlarm.go index ac13814..4e39aac 100644 --- a/consumers/consumerAxySkAlarm.go +++ b/consumers/consumerAxySkAlarm.go @@ -11,6 +11,7 @@ import ( "goInOut/monitors" "gopkg.in/yaml.v3" "log" + "strconv" "sync" "time" ) @@ -243,6 +244,30 @@ func (the *consumerAxySkAlarm) judgeSK() string { } } } + + //无告警的测点,需要恢复 + var noAlarmStationIds []string + var alarmStationIdMap map[string]string + for _, alarm := range alarms { + alarmStationIdMap[alarm.SourceId] = alarm.AlarmCode + } + for _, stationId := range trigger.StationIds { + stationIdStr := strconv.Itoa(stationId) + if _, ok := alarmStationIdMap[stationIdStr]; !ok { + noAlarmStationIds = append(noAlarmStationIds, stationIdStr) + } + } + + //恢复无告警的双控测点 + log.Printf("无告警,待恢复的测点ids==%v", noAlarmStationIds) + for _, stationId := range noAlarmStationIds { + content := "原始告警都已恢复" + payload := the.skAlarmAutoElimination(trigger.StructId, trigger.StructName, stationId, "", trigger.AlarmLevel, content) + the.OutKafka.Publish(the.Info.IoConfig.Out.Kafka.AlarmTopic, payload) + hisK := fmt.Sprintf("%s_%s", stationId, fmt.Sprintf("3077000%d", trigger.AlarmLevel)) + delete(the.historyStationAlarmMap, hisK) + } + } return "" } @@ -316,6 +341,25 @@ func (the *consumerAxySkAlarm) skAlarmElimination(alarmInfoTemplate *models.EsAl payload, _ := json.Marshal(alarmMsg) return payload } +func (the *consumerAxySkAlarm) skAlarmAutoElimination(structureId int, structName string, sourceId, sourceName string, level int, content string) []byte { + alarmMsg := models.KafkaAlarm{ + MessageMode: "AlarmAutoElimination", + StructureId: structureId, + StructureName: structName, + SourceId: sourceId, + SourceName: sourceName, + AlarmTypeCode: "3077", + AlarmCode: fmt.Sprintf("3077000%d", level), + Content: content, + Time: time.Now().Format("2006-01-02T15:04:05.000+0800"), + SourceTypeId: 2, // 0:DTU, 1:传感器, 2:测点 + Sponsor: "goInOut_axySkAlarm", + Extras: nil, + SubDevices: nil, + } + payload, _ := json.Marshal(alarmMsg) + return payload +} func (the *consumerAxySkAlarm) isRuleAlarm(trigger AXY_SK.AlarmTrigger, stationAlarm AXY_SK.StationAlarmGroup) (bool, int, string, time.Time, []string) { level := 0