package service import ( "omc/core/db" "omc/core/emun" "omc/handle/model" "github.com/aceld/zinx/zlog" ) // AlarmSeqCount alarm_seq大于等于的记录数 func AlarmSeqCount(neType, neId string, alarmSeq int64) int64 { var num int64 tx := db.Client.Model(&model.Alarm{}).Where("ne_type = ? and ne_id = ?", neType, neId) if alarmSeq > 0 { tx = tx.Where("alarm_seq >= ?", alarmSeq) } if err := tx.Order("alarm_seq desc").Count(&num).Error; err != nil { zlog.Ins().ErrorF("HasAlarmSeq db error %s", err) return num } return num } // List 获取告警信息 alarm_seq大于等于的 func List(neType, neId string, alarmSeq int64) ([]model.Alarm, error) { // 从数据库读取告警记录 var alarms []model.Alarm if err := db.Client.Model(&model.Alarm{}).Where("ne_type = ? and ne_id = ? and alarm_seq >= ?", neType, neId, alarmSeq).Order("alarm_seq asc").Find(&alarms).Error; err != nil { zlog.Ins().ErrorF("AlarmList db error %s", err) return nil, err } return alarms, nil } // ConvertOMCAlarm 转换上报的告警信息 func ConvertOMCAlarm(alarms []model.Alarm) []model.OmcAlarm { result := make([]model.OmcAlarm, 0) for _, v := range alarms { var item model.OmcAlarm item.AlarmSeq = v.AlarmSeq item.AlarmTitle = v.AlarmTitle item.AlarmStatus = v.AlarmStatus item.AlarmType = v.AlarmType item.OrigSeverity = emun.OrigSeverity(v.OrigSeverity) item.EventTime = v.EventTime.Format("2006-01-02 15:04:05") item.AlarmId = v.AlarmId item.SpecificProblemID = v.SpecificProblemId item.SpecificProblem = v.SpecificProblem item.NeUID = v.NeId item.NeName = v.NeName item.NeType = v.NeType item.ObjectUID = v.ObjectUid item.ObjectName = v.NeName item.ObjectType = v.ObjectType item.LocationInfo = v.LocationInfo item.AddInfo = v.AddInfo item.PVFlag = v.PvFlag item.Province = v.Province result = append(result, item) } return result } // 检查列表里最大的AlarmSeq func MaxAlarmSeq(current int64, alarms []model.OmcAlarm) int64 { var maxAlarmSeq = current for _, v := range alarms { if v.AlarmSeq > maxAlarmSeq { maxAlarmSeq = v.AlarmSeq } } return maxAlarmSeq } // LastAlarmSeq 获取最新的alarm_seq 序号 func LastAlarmSeq(neType, neId string) int64 { var alarm model.Alarm if err := db.Client.Model(&model.Alarm{}).Where("ne_type = ? and ne_id = ?", neType, neId).Order("alarm_seq desc").First(&alarm).Error; err != nil { zlog.Ins().ErrorF("LastAlarmSeq db error %s", err) return 0 } return alarm.AlarmSeq } // List 获取告警信息为文件保存 func ListForSaveFile(neType, neId string, alarmSeq int64, startTime, endTime, syncSource string) ([]model.Alarm, error) { if syncSource == "0" { return alarmByEventTime(neType, neId, startTime, endTime) } else { if alarmSeq > 0 { return GetAlarmOfAlarmSeq(neType, neId, alarmSeq) } else { return GetAlarmOfLog(neType, neId, startTime, endTime) } } } // 从数据库读取告警记录 var alarms []model.Alarm if err := db.Client.Model(&model.Alarm{}).Where("ne_type = ? and ne_id = ? and alarm_seq >= ?", neType, neId, alarmSeq).Order("alarm_seq asc").Find(&alarms).Error; err != nil { zlog.Ins().ErrorF("AlarmList db error %s", err) return nil, err } return alarms, nil } func alarmByEventTime(startTime, endTime string) { }