|
|
@ -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 |
|
|
|