From 9391806395118b77b52cd8b38fc314893bf8b996 Mon Sep 17 00:00:00 2001 From: 18926517547 Date: Fri, 26 Mar 2021 10:19:14 +0800 Subject: [PATCH 1/2] add --- common/event/datatype.go | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/common/event/datatype.go b/common/event/datatype.go index a5f10533..2868b91f 100644 --- a/common/event/datatype.go +++ b/common/event/datatype.go @@ -6,39 +6,36 @@ import ( //AlarmKey 告警key type AlarmKey struct { - TID string `gorm:"unique_index:alarm_index" json:"t_id"` - MID string `gorm:"unique_index:alarm_index" json:"m_id"` - SubID string `gorm:"unique_index:alarm_index" json:"sub_id"` - Mindex int `gorm:"unique_index:alarm_index" json:"mindex"` + TID string `gorm:"unique_index:alarm_index" json:"t_id"` + // + + ID string `gorm:"unique_index:alarm_index" json:"m_id"` + //SubID string `gorm:"unique_index:alarm_index" json:"sub_id"` + Mindex int `gorm:"unique_index:alarm_index" json:"mindex"` AlarmID string `gorm:"unique_index:alarm_index" json:"alarm_id"` } //Info 信息 type Info struct { - Properties []property.Value `json:"properties"` + Properties []property.Value `json:"properties"` Params map[string]interface{} `json:"params"` } //Event 事件 type Event struct { - AlarmKey - Time int64 `json:"time"` - + AlarmKey + Time int64 `json:"time"` + Level int8 `json:"level"` Info } -type AlarmDisp struct { - ThingName string `json:"thing_name"` - AlarmName string `json:"alarm_name"` - MName string `json:"m_name"` - SubName string `json:"sub_name"` - Level int `json:"level"` -} - //Alarm 告警 type Alarm struct { Flag string `json:"flag"` Event ClearTime int64 `json:"clear_time"` - AlarmDisp + ThingName string `json:"thing_name"` + AlarmName string `json:"alarm_name"` + MName string `json:"m_name"` + SubName string `json:"sub_name"` } -- Gitee From 089cf75f3aa16e81646cb1824b2852f761aaf7a6 Mon Sep 17 00:00:00 2001 From: 18926517547 Date: Fri, 26 Mar 2021 10:31:24 +0800 Subject: [PATCH 2/2] add --- common/event/alarm.go | 69 +++++++++---------------------------------- 1 file changed, 14 insertions(+), 55 deletions(-) diff --git a/common/event/alarm.go b/common/event/alarm.go index 18db95e2..f57ca2bf 100644 --- a/common/event/alarm.go +++ b/common/event/alarm.go @@ -40,7 +40,6 @@ type AlarmState struct { AlarmKey AlarmChanged AlarmObj datatypes.JSON `json:"alarm_obj"` - AlarmDisp } //AlarmHistroy 告警历史表,存储已经消除的告警 @@ -52,7 +51,6 @@ type AlarmHistroy struct { ClearTime time.Time AlarmObj datatypes.JSON `json:"alarm_obj"` ClearObj datatypes.JSON `json:"clear_obj"` - AlarmDisp } func init() { @@ -74,36 +72,7 @@ func saveToDB(alarm *Alarm, id string) (*ActiveAlarm, error) { cache.SetHashObj(id, alarm) return &activeAlarm, err }*/ -func (disp *AlarmDisp) initAlarmDisp(palarm *AlarmKey) { - if palarm != nil { - pThing, err := cache.GetThing(palarm.TID) - if err == nil && pThing != nil { - disp.ThingName = pThing.SName - if palarm.AlarmID == "offline" { - disp.AlarmName = "断线" - disp.Level = pThing.Level - - } else { - if palarm.MID != "" { - isExists, pInfo := cache.GetModelProperty(pThing.ModelID, palarm.MID, "") - if isExists && pInfo != nil { - disp.MName = pInfo.Name - } - if palarm.SubID != "" { - isExists, pInfo = cache.GetModelProperty(pThing.ModelID, palarm.MID, palarm.SubID) - if isExists && pInfo != nil { - disp.SubName = pInfo.Name - } - } - } - - } - - } - } - -} func getAlarmDigit(id string, now int64, key *AlarmKey) (*AlarmDigist, bool, int64) { var alarmInRs AlarmDigist //var alarmActive *ActiveAlarm @@ -117,8 +86,8 @@ func getAlarmDigit(id string, now int64, key *AlarmKey) (*AlarmDigist, bool, int } if isNeedRefresh { var alarmInDB AlarmState - errdb := dbconn.DBConnection.Model(&alarmInDB).Where("t_id=? and m_id=? and mindex=? and sub_id=? and alarm_id=?", - key.TID, key.MID, key.Mindex, key.SubID, key.AlarmID).First(&alarmInDB).Error + errdb := dbconn.DBConnection.Model(&alarmInDB).Where("t_id=? and mindex=? and alarm_id=?", + key.TID, key.Mindex,key.AlarmID).First(&alarmInDB).Error if errdb != nil { //alarmInDB.TimeRefreshed = now alarmInDB.IsAlarm = false @@ -137,7 +106,7 @@ func getAlarmDigit(id string, now int64, key *AlarmKey) (*AlarmDigist, bool, int } func getID(curAlarm *Alarm) string { - id := fmt.Sprintf("active_alarm.%s.%s.%d.%s.%s", curAlarm.TID, curAlarm.MID, curAlarm.Mindex, curAlarm.SubID, curAlarm.AlarmID) + id := fmt.Sprintf("active_alarm.%s.%d.%s", curAlarm.TID,curAlarm.Mindex, curAlarm.AlarmID) return id } @@ -162,9 +131,7 @@ func ThingAlarm(curAlarm *Alarm) { } if pAlarmInRedis.TimeChanged == 0 || pAlarmInRedis.TimeChanged < curAlarm.Time { //redis中无记录或消除时间比较早 - curAlarm.initAlarmDisp(&curAlarm.AlarmKey) - jobj, _ := json.Marshal(&curAlarm) - + jobj, _ := json.Marshal(curAlarm) var alarmDB = AlarmState{ UID: seq, //AlarmChanged.IsAlarm:true, @@ -173,21 +140,17 @@ func ThingAlarm(curAlarm *Alarm) { AlarmKey: curAlarm.AlarmKey, AlarmObj: jobj, } - alarmDB.AlarmDisp = curAlarm.AlarmDisp alarmDB.TimeChanged = time.Unix(curAlarm.Time, 0) fmt.Println("-------------alarmdb--------", alarmDB.TimeChanged) alarmDB.IsAlarm = true dbconn.DBConnection.Transaction(func(tx *gorm.DB) error { var dberr error - pAlarmDB := &alarmDB - if seq != 0 { - dberr = tx.Save(pAlarmDB).Error + dberr = tx.Save(&alarmDB).Error } else { - var alarmState AlarmState - err := tx.Model(pAlarmDB).Where("t_id=? and m_id=? and mindex=? and sub_id=? and alarm_id=?", - curAlarm.TID, curAlarm.MID, curAlarm.Mindex, curAlarm.SubID, curAlarm.AlarmID).First(&alarmState).Error + err := tx.Model(&alarmState).Where("t_id=? and mindex=? and alarm_id=?", + curAlarm.TID, curAlarm.Mindex, curAlarm.AlarmID).First(&alarmState).Error if alarmState.IsAlarm && err == nil { if pAlarmInRedis.TimeChanged == 0 { //redis中没有记录 rerr := cache.SetHashObj(id, @@ -196,16 +159,13 @@ func ThingAlarm(curAlarm *Alarm) { } return nil } - if err == nil { - pAlarmDB.UID = alarmState.UID - dberr = tx.Save(pAlarmDB).Error + alarmDB.UID = alarmState.UID + dberr = tx.Save(&alarmDB).Error } else { - dberr = tx.Create(pAlarmDB).Error + dberr = tx.Create(&alarmDB).Error } if dberr == nil { - - curAlarm.AlarmDisp = pAlarmDB.AlarmDisp notify.PubMsg(false, "alarm", curAlarm) } @@ -246,15 +206,16 @@ func ThingAlarmClear(curAlarm *Alarm) { if pAlarmInRedis.TimeChanged < curAlarm.ClearTime { //此时为告警状态,且消除时间大于告警时间,此消除有效 dbconn.DBConnection.Transaction(func(tx *gorm.DB) error { var alarmState AlarmState - err := tx.Model(&alarmState).Where("t_id=? and m_id=? and mindex=? and sub_id=? and alarm_id=?", - curAlarm.TID, curAlarm.MID, curAlarm.Mindex, curAlarm.SubID, curAlarm.AlarmID).First(&alarmState).Error + err := tx.Model(&alarmState).Where("t_id=? and mindex=? and alarm_id=?", + curAlarm.TID, //curAlarm.MID, + curAlarm.Mindex, //curAlarm.SubID, + curAlarm.AlarmID).First(&alarmState).Error //找到当前数据库中的状态 if err == nil { //找到数据库中的告警 if alarmState.IsAlarm { if alarmState.TimeChanged.Unix() < curAlarm.ClearTime { clearTime := time.Unix(curAlarm.ClearTime, 0) clearObj, _ := json.Marshal(curAlarm.Info) - curAlarm.AlarmDisp = alarmState.AlarmDisp alarmHistroy := AlarmHistroy{ Seq: alarmState.UID, AlarmKey: alarmState.AlarmKey, @@ -262,7 +223,6 @@ func ThingAlarmClear(curAlarm *Alarm) { ClearTime: clearTime, AlarmObj: alarmState.AlarmObj, ClearObj: clearObj, - AlarmDisp: alarmState.AlarmDisp, } alarmState.IsAlarm = false alarmState.TimeChanged = clearTime @@ -276,7 +236,6 @@ func ThingAlarmClear(curAlarm *Alarm) { if err != nil { fmt.Println("dberror------", err) } else { - curAlarm.AlarmDisp = alarmState.AlarmDisp notify.PubMsg(false, "alarm", curAlarm) rerr := cache.SetHashObj(id, &AlarmDigist{IsAlarm: false, TimeChanged: curAlarm.ClearTime, TimeRefreshed: now}) if rerr != nil { -- Gitee