package Warning import ( "Cold_Api/logs" "Cold_Api/models" _ "github.com/astaxie/beego/cache/redis" "github.com/beego/beego/v2/adapter/orm" _ "github.com/go-sql-driver/mysql" "strconv" "strings" "time" ) // 模板 type WarningType struct { Id int `orm:"column(ID);size(11);auto;pk"` T_name string `orm:"size(256);null"` // 分类 T_Tips string `orm:"type(text);size(256);null"` // 提示 } //3 //tp 报警类型 // 1 温度超上限报警 // 2 温度超下限报警 // 3 温度超上限预警 // 4 温度超下限预警 // 5 温度恢复正常 // 6 湿度超上限报警 // 7 湿度超下限报警 // 8 湿度超上限预警 // 9 湿度超下限预警 // 10 湿度恢复正常 //12 //tp 报警类型 // 101 主机报警 // 102 时间报警 // 103 闪存报警 // 104 SD卡报警 // 105 网络报警 // 106 普通日志 // 107 升级固件报警 // 108 系统故障报警 // 109 市电断电报警 // 110 市电已恢复 // 111 电池电量低报警 // 112 电池电量恢复 // 113 传感器故障报警 // 114 传感器恢复 // 115 开始任务(移动端) // 116 中途打印任务(移动端) // 117 结束任务(移动端) // 预警系统 // 1001 设备状态异常 // 1002 传感器数据异常 // 1011 报警策略异常 func (t *WarningType) TableName() string { return "warning_type" // 数据库名称 // ************** 替换 FormulaList ************** } // var redisCache_WarningType cache.Cache var WarningType_list map[int]string // 泛型 func init() { //注册模型 WarningType_list = make(map[int]string) orm.RegisterModel(new(WarningType)) } type WarningType_R struct { Id int T_name string // 分类 T_check bool // 是否勾选 } type WarningType_ struct { Id int T_name string // 分类 } func WarningTypeToWarningType_R(r WarningType, T_warning string) (v WarningType_R) { v.Id = r.Id v.T_name = r.T_name if strings.Contains(T_warning, "W"+strconv.Itoa(v.Id)+"|") || T_warning == "*" { v.T_check = true } return v } func WarningTypeToWarningType_(r WarningType) (v WarningType_) { v.Id = r.Id v.T_name = r.T_name return v } // 获取全部 func Read_WarningType_All_T_Notice_mechanism() string { logs.Println("=========== 初始化报警规则 =========") time.Sleep(3 * time.Second) o := orm.NewOrm() var r []WarningType qs := o.QueryTable(new(WarningType)) qs.All(&r) str := "" for _, v := range r { str += v.T_Tips } return str } // 获取全部 func Read_WarningType_All() (r []WarningType_) { o := orm.NewOrm() var maps []WarningType qs := o.QueryTable(new(WarningType)) qs.All(&maps) for _, v := range maps { r = append(r, WarningTypeToWarningType_(v)) } return r } // 报警列表 返回权限拥有的报警类型列表 func Read_WarningType_Power_All(T_warning string) (r []WarningType_) { o := orm.NewOrm() var maps []WarningType qs := o.QueryTable(new(WarningType)) if T_warning == "*" { qs.All(&maps) } else { list := models.SplitStringIds(T_warning, "W") qs.Filter("Id__in", list).All(&maps) } for _, v := range maps { r = append(r, WarningTypeToWarningType_(v)) } return r } // 权限修改 返回全部,已勾选的T_check=true func Read_WarningType_All_Power_T_Warning(T_warning string) (r []WarningType_R) { o := orm.NewOrm() // 也可以直接使用 Model 结构体作为表名 var maps []WarningType qs := o.QueryTable(new(WarningType)) qs.OrderBy("Id").All(&maps) for _, v := range maps { r = append(r, WarningTypeToWarningType_R(v, T_warning)) } return r } // 获取全部 func Read_WarningType_All_Maps() { time.Sleep(time.Second) logs.Println("=========== 初始化报警类型 =========") o := orm.NewOrm() var r []WarningType qs := o.QueryTable(new(WarningType)) qs.All(&r) for _, v := range r { WarningType_list[v.Id] = v.T_name } } func Read_WarningType_Get(id int) string { // 有先加入 给全部人发消息 v, ok := WarningType_list[id] /*如果确定是真实的,则存在,否则不存在 */ if ok { return v } else { return "未知类型" } }