Browse Source

update 添加 双控告警的 triggers 存储子告警的 type,用于手动恢复必要信息

dev
lucas 1 week ago
parent
commit
b05d8d65ed
  1. 22
      consumers/consumerAxySkAlarm.go

22
consumers/consumerAxySkAlarm.go

@ -208,7 +208,7 @@ func (the *consumerAxySkAlarm) judgeSK() string {
log.Printf("测点[%s]本次已经触发过[%s],不再重复触发", sid, v) log.Printf("测点[%s]本次已经触发过[%s],不再重复触发", sid, v)
continue continue
} }
isAlarm, level, detail, alarmTime := the.isRuleAlarm(trigger, stationAlarmInfo) isAlarm, level, detail, alarmTime, triggerTypeCodes := the.isRuleAlarm(trigger, stationAlarmInfo)
var alarmInfoTemplate *models.EsAlarm var alarmInfoTemplate *models.EsAlarm
if stationAlarmInfo.Alarm3007 != nil { if stationAlarmInfo.Alarm3007 != nil {
@ -245,7 +245,7 @@ func (the *consumerAxySkAlarm) judgeSK() string {
Time: alarmTime, Time: alarmTime,
} }
payload := the.skAlarmInfo(alarmInfoTemplate, level, detail, alarmTime) payload := the.skAlarmInfo(alarmInfoTemplate, level, detail, alarmTime, triggerTypeCodes)
the.OutKafka.Publish(the.Info.IoConfig.Out.Kafka.AlarmTopic, payload) the.OutKafka.Publish(the.Info.IoConfig.Out.Kafka.AlarmTopic, payload)
} else { } else {
if level == 0 { if level == 0 {
@ -262,7 +262,7 @@ func (the *consumerAxySkAlarm) judgeSK() string {
return "" return ""
} }
func (the *consumerAxySkAlarm) skAlarmInfo(alarmInfoTemplate *models.EsAlarm, level int, detail string, alarmTime time.Time) []byte { func (the *consumerAxySkAlarm) skAlarmInfo(alarmInfoTemplate *models.EsAlarm, level int, detail string, alarmTime time.Time, triggerTypeCodes []string) []byte {
alarmMsg := models.KafkaAlarm{ alarmMsg := models.KafkaAlarm{
MessageMode: "AlarmGeneration", MessageMode: "AlarmGeneration",
StructureId: alarmInfoTemplate.StructureId, StructureId: alarmInfoTemplate.StructureId,
@ -275,7 +275,7 @@ func (the *consumerAxySkAlarm) skAlarmInfo(alarmInfoTemplate *models.EsAlarm, le
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+0800"),
SourceTypeId: 2, // 0:DTU, 1:传感器, 2:测点 SourceTypeId: 2, // 0:DTU, 1:传感器, 2:测点
Sponsor: "goInOut_axySkAlarm", Sponsor: "goInOut_axySkAlarm",
Extras: nil, Extras: map[string][]string{"triggerTypeCodes": triggerTypeCodes},
SubDevices: nil, SubDevices: nil,
} }
payload, _ := json.Marshal(alarmMsg) payload, _ := json.Marshal(alarmMsg)
@ -301,10 +301,11 @@ func (the *consumerAxySkAlarm) skAlarmElimination(alarmInfoTemplate *models.EsAl
return payload return payload
} }
func (the *consumerAxySkAlarm) isRuleAlarm(trigger AXY_SK.AlarmTrigger, stationAlarm AXY_SK.StationAlarmGroup) (bool, int, string, time.Time) { func (the *consumerAxySkAlarm) isRuleAlarm(trigger AXY_SK.AlarmTrigger, stationAlarm AXY_SK.StationAlarmGroup) (bool, int, string, time.Time, []string) {
level := 0 level := 0
detail := "" detail := ""
dt := time.Time{} dt := time.Time{}
var triggerTypeCodes []string
//3007和3008都要有 //3007和3008都要有
if trigger.Rule == 0 { if trigger.Rule == 0 {
isAlarm := true isAlarm := true
@ -323,7 +324,7 @@ func (the *consumerAxySkAlarm) isRuleAlarm(trigger AXY_SK.AlarmTrigger, stationA
dt = stationAlarm.Alarm3007.EndTime dt = stationAlarm.Alarm3007.EndTime
} }
detail += stationAlarm.Alarm3007.Detail detail += stationAlarm.Alarm3007.Detail
triggerTypeCodes = append(triggerTypeCodes, stationAlarm.Alarm3007.AlarmTypeCode)
} }
case 1: case 1:
@ -339,6 +340,7 @@ func (the *consumerAxySkAlarm) isRuleAlarm(trigger AXY_SK.AlarmTrigger, stationA
if stationAlarm.Alarm3008.EndTime.After(dt) { if stationAlarm.Alarm3008.EndTime.After(dt) {
dt = stationAlarm.Alarm3008.EndTime dt = stationAlarm.Alarm3008.EndTime
} }
triggerTypeCodes = append(triggerTypeCodes, stationAlarm.Alarm3008.AlarmTypeCode)
} }
} }
@ -346,7 +348,7 @@ func (the *consumerAxySkAlarm) isRuleAlarm(trigger AXY_SK.AlarmTrigger, stationA
if isAlarm { if isAlarm {
level = trigger.AlarmLevel level = trigger.AlarmLevel
} }
return isAlarm, level, detail, dt return isAlarm, level, detail, dt, triggerTypeCodes
} }
//3007和3008 任何一个 //3007和3008 任何一个
@ -362,6 +364,7 @@ func (the *consumerAxySkAlarm) isRuleAlarm(trigger AXY_SK.AlarmTrigger, stationA
if stationAlarm.Alarm3007.EndTime.After(dt) { if stationAlarm.Alarm3007.EndTime.After(dt) {
dt = stationAlarm.Alarm3007.EndTime dt = stationAlarm.Alarm3007.EndTime
} }
triggerTypeCodes = append(triggerTypeCodes, stationAlarm.Alarm3007.AlarmTypeCode)
} }
case 1: case 1:
if stationAlarm.Alarm3008.CurrentLevel <= trigger.AlarmLevel { if stationAlarm.Alarm3008.CurrentLevel <= trigger.AlarmLevel {
@ -370,6 +373,7 @@ func (the *consumerAxySkAlarm) isRuleAlarm(trigger AXY_SK.AlarmTrigger, stationA
if stationAlarm.Alarm3008.EndTime.After(dt) { if stationAlarm.Alarm3008.EndTime.After(dt) {
dt = stationAlarm.Alarm3008.EndTime dt = stationAlarm.Alarm3008.EndTime
} }
triggerTypeCodes = append(triggerTypeCodes, stationAlarm.Alarm3008.AlarmTypeCode)
} }
} }
@ -378,9 +382,9 @@ func (the *consumerAxySkAlarm) isRuleAlarm(trigger AXY_SK.AlarmTrigger, stationA
break break
} }
} }
return isAlarm, level, detail, dt return isAlarm, level, detail, dt, triggerTypeCodes
} }
return false, level, detail, dt return false, level, detail, dt, triggerTypeCodes
} }
func (the *consumerAxySkAlarm) updateEsAlarmTriggerHistory(structId int) { func (the *consumerAxySkAlarm) updateEsAlarmTriggerHistory(structId int) {

Loading…
Cancel
Save