| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- package models
- import (
- "time"
- )
- type DeviceAlarm struct {
- ID int64 `gorm:"primary_key"` //主键
- DID string `gorm:"type:varchar(32)"` //设备编码
- TStart time.Time `gorm:"type:datetime"` //开始时间
- TEnd time.Time `gorm:"type:datetime;default:null"` //结束时间
- Threshold float32 `gorm:"type:float(10,2)"` //阈值
- SValue float32 `gorm:"type:float(10,2)"` //告警值
- EValue float32 `gorm:"type:float(10,2)"` //恢复值
- Content string `gorm:"type:varchar(128)"` //告警内容
- AlarmType uint16 `gorm:"type:smallint"` //告警类型
- Level uint8 `gorm:"type:smallint"` //告警等级,0:普通,1:重要,2:严重
- Sid uint16 `gorm:"type:smallint;default:0"` //sid
- Cid uint16 `gorm:"type:smallint;default:0"` //策略id
- Cname string `gorm:"type:varchar(40)"` //策略名称
- LcModel
- }
- func (DeviceAlarm) TableName() string {
- return "t_device_alarm"
- }
- func (o DeviceAlarm) Update() error {
- err := G_db.Model(&o).Where("id = ?", o.ID).Updates(
- map[string]interface{}{"t_end": o.TEnd, "e_value": o.EValue}).Error
- return err
- }
- //用于web端告警信息同步
- func GetUpdateAlarm(id uint64, update string) ([]DeviceAlarm, error) {
- var array []DeviceAlarm
- err := G_db.Model(&DeviceAlarm{}).Where("id > ? OR updated_at > ?", id, update).Order("id asc").Find(&array).Error
- return array, err
- }
- //获取告警信息
- //flag=0获取所有告警信息
- //flag=1获取结束的告警信息
- //flag=2获取未结束的告警信息
- func GetAlarmByCodes(codes []string, flag int) ([]DeviceAlarm, error) {
- var array []DeviceAlarm
- var err error
- switch flag {
- case 2: //未结束的告警
- err = G_db.Model(&DeviceAlarm{}).Where("d_id IN (?) AND t_end IS NULL", codes).Order("d_id asc,t_start desc").Find(&array).Error
- case 1: //已结束的告警
- err = G_db.Model(&DeviceAlarm{}).Where("d_id IN (?) AND t_end IS NOT NULL", codes).Order("d_id asc,t_start desc").Find(&array).Error
- case 0: //所有告警
- err = G_db.Model(&DeviceAlarm{}).Where("d_id IN (?)", codes).Order("d_id asc,t_start desc").Find(&array).Error
- }
- return array, err
- }
- type AlarmStrategy struct {
- ID int64 `gorm:"primary_key"` //主键
- Name string `gorm:"type:varchar(64)"` //策略名称
- UpLimit float32 `gorm:"type:float(10,1)"` //上限
- LowLimit float32 `gorm:"type:float(10,1)"` //下限
- Duration uint8 `gorm:"type:int"` //持续时间
- State int `gorm:"type:int"` //1启用,0禁用
- LcModel
- }
- func (AlarmStrategy) TableName() string {
- return "t_alarm_strategy"
- }
- func (o AlarmStrategy) Delete() error {
- return G_db.Model(&o).Where("id = ?", o.ID).Updates(map[string]interface{}{"state": 0}).Error
- }
- func (o AlarmStrategy) IsExistedByCode() (bool, error) {
- var count int = 0
- err := G_db.Model(&o).Where(" id = ? ", o.ID).Count(&count).Error
- return count > 0, err
- }
- func (o AlarmStrategy) SaveFromWeb() error {
- has, err := o.IsExistedByCode()
- if err != nil {
- return err
- }
- if has {
- //更新
- return G_db.Model(&o).Updates(map[string]interface{}{
- "name": o.Name, "up_limit": o.UpLimit,
- "low_limit": o.LowLimit, "duration": o.Duration, "state": o.State}).Error
- } else {
- //插入
- return G_db.Create(&o).Error
- }
- }
- func GetAllAlarmStrategy() ([]AlarmStrategy, error) {
- var arr []AlarmStrategy
- if err := G_db.Model(AlarmStrategy{}).Where("state = 1").Find(&arr).Error; err != nil {
- return nil, err
- }
- return arr, nil
- }
- type AlarmAssociate struct {
- ID string `gorm:"primary_key" sql:"type:varchar(32) NOT NULL"`
- Mid int `gorm:"primary_key" sql:"type:int"`
- Sid int `gorm:"primary_key" sql:"type:int"`
- Cid int `gorm:"primary_key" sql:"type:int"`
- State int `gorm:"type:int"`
- CreatedAt time.Time
- UpdatedAt time.Time
- }
- func (AlarmAssociate) TableName() string {
- return "t_alarm_associate"
- }
- //func (o AlarmAssociate) Delete() error {
- // return G_db.Model(&o).Where("id = ? AND mid = ? AND sid = ? AND cid = ?",
- // o.ID, o.Mid, o.Sid, o.Cid).Updates(map[string]interface{}{"state": 0}).Error
- //}
- func (o AlarmAssociate) IsExistedByCode() (bool, error) {
- var count int = 0
- err := G_db.Model(&o).Where("id = ? AND mid = ? AND sid = ? AND cid = ?",
- o.ID, o.Mid, o.Sid, o.Cid).Count(&count).Error
- return count > 0, err
- }
- func (o AlarmAssociate) SaveFromWeb() error {
- has, err := o.IsExistedByCode()
- if err != nil {
- return err
- }
- if has {
- //更新
- return G_db.Model(&o).Updates(map[string]interface{}{"state": o.State}).Error
- } else {
- //插入
- return G_db.Create(&o).Error
- }
- }
- func GetAllAlarmAssociate() ([]AlarmAssociate, error) {
- var arr []AlarmAssociate
- if err := G_db.Model(AlarmAssociate{}).Where("state = 1").Find(&arr).Error; err != nil {
- return nil, err
- }
- return arr, nil
- }
|