WarningType.go 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. package Warning
  2. import (
  3. "Cold_Api/logs"
  4. "Cold_Api/models"
  5. _ "github.com/astaxie/beego/cache/redis"
  6. "github.com/beego/beego/v2/adapter/orm"
  7. _ "github.com/go-sql-driver/mysql"
  8. "strconv"
  9. "strings"
  10. "sync"
  11. "time"
  12. )
  13. // 模板
  14. type WarningType struct {
  15. Id int `orm:"column(ID);size(11);auto;pk"`
  16. T_name string `orm:"size(256);null"` // 分类
  17. T_Tips string `orm:"type(text);size(256);null"` // 提示
  18. T_Notice int `orm:"size(2);default(0)"` // 是否在报警策略通知机制处展示 0 不展示 1 展示
  19. }
  20. //3
  21. //tp 报警类型
  22. // 1 温度超上限报警
  23. // 2 温度超下限报警
  24. // 3 温度超上限预警
  25. // 4 温度超下限预警
  26. // 5 温度恢复正常
  27. // 6 湿度超上限报警
  28. // 7 湿度超下限报警
  29. // 8 湿度超上限预警
  30. // 9 湿度超下限预警
  31. // 10 湿度恢复正常
  32. //12
  33. //tp 报警类型
  34. // 101 主机报警
  35. // 102 时间报警
  36. // 103 闪存报警
  37. // 104 SD卡报警
  38. // 105 网络报警
  39. // 106 普通日志
  40. // 107 升级固件报警
  41. // 108 系统故障报警
  42. // 109 市电断电报警
  43. // 110 市电已恢复
  44. // 111 电池电量低报警
  45. // 112 电池电量恢复
  46. // 113 传感器故障报警
  47. // 114 传感器恢复
  48. // 115 开始任务(移动端)
  49. // 116 中途打印任务(移动端)
  50. // 117 结束任务(移动端)
  51. // 预警系统
  52. // 1001 设备状态异常
  53. // 1002 传感器数据异常
  54. // 1011 报警策略异常
  55. func (t *WarningType) TableName() string {
  56. return "warning_type" // 数据库名称 // ************** 替换 FormulaList **************
  57. }
  58. // var redisCache_WarningType cache.Cache
  59. var WarningType_list *sync.Map // 泛型
  60. func init() {
  61. //注册模型
  62. WarningType_list = new(sync.Map)
  63. orm.RegisterModel(new(WarningType))
  64. go Read_WarningType_All_Maps()
  65. }
  66. type WarningType_R struct {
  67. Id int
  68. T_name string // 分类
  69. T_check bool // 是否勾选
  70. }
  71. type WarningType_ struct {
  72. Id int
  73. T_name string // 分类
  74. }
  75. func WarningTypeToWarningType_R(r WarningType, T_warning string) (v WarningType_R) {
  76. v.Id = r.Id
  77. v.T_name = r.T_name
  78. if strings.Contains(T_warning, "W"+strconv.Itoa(v.Id)+"|") || T_warning == "*" {
  79. v.T_check = true
  80. }
  81. return v
  82. }
  83. func WarningTypeToWarningType_(r WarningType) (v WarningType_) {
  84. v.Id = r.Id
  85. v.T_name = r.T_name
  86. return v
  87. }
  88. // 获取全部
  89. func Read_WarningType_All_T_Notice_mechanism() string {
  90. logs.Println("=========== 初始化报警规则 =========")
  91. time.Sleep(3 * time.Second)
  92. o := orm.NewOrm()
  93. var r []WarningType
  94. qs := o.QueryTable(new(WarningType))
  95. qs.Filter("T_Notice", 1).All(&r)
  96. str := ""
  97. for _, v := range r {
  98. str += v.T_Tips
  99. }
  100. return str
  101. }
  102. // 获取全部
  103. func Read_WarningType_All() (r []WarningType_) {
  104. o := orm.NewOrm()
  105. var maps []WarningType
  106. qs := o.QueryTable(new(WarningType))
  107. qs.All(&maps)
  108. for _, v := range maps {
  109. r = append(r, WarningTypeToWarningType_(v))
  110. }
  111. return r
  112. }
  113. // 报警列表 返回权限拥有的报警类型列表
  114. func Read_WarningType_Power_All(T_warning string) (r []WarningType_) {
  115. o := orm.NewOrm()
  116. var maps []WarningType
  117. qs := o.QueryTable(new(WarningType))
  118. if T_warning == "*" {
  119. qs.All(&maps)
  120. } else {
  121. list := models.SplitStringIds(T_warning, "W")
  122. qs.Filter("Id__in", list).All(&maps)
  123. }
  124. for _, v := range maps {
  125. r = append(r, WarningTypeToWarningType_(v))
  126. }
  127. return r
  128. }
  129. // 权限修改 返回全部,已勾选的T_check=true
  130. func Read_WarningType_All_Power_T_Warning(T_warning string) (r []WarningType_R) {
  131. o := orm.NewOrm()
  132. // 也可以直接使用 Model 结构体作为表名
  133. var maps []WarningType
  134. qs := o.QueryTable(new(WarningType))
  135. qs.OrderBy("Id").All(&maps)
  136. for _, v := range maps {
  137. r = append(r, WarningTypeToWarningType_R(v, T_warning))
  138. }
  139. return r
  140. }
  141. // 获取全部
  142. func Read_WarningType_All_Maps() {
  143. time.Sleep(2 * time.Second)
  144. logs.Println("=========== 初始化报警类型 =========")
  145. o := orm.NewOrm()
  146. for true {
  147. var r []WarningType
  148. qs := o.QueryTable(new(WarningType))
  149. qs.All(&r)
  150. for _, v := range r {
  151. WarningType_list.Store(v.Id, v.T_name)
  152. }
  153. time.Sleep(1 * time.Hour)
  154. }
  155. }
  156. func Read_WarningType_Get(id int) string {
  157. // 有先加入 给全部人发消息
  158. v, ok := WarningType_list.Load(id) /*如果确定是真实的,则存在,否则不存在 */
  159. if ok {
  160. return v.(string)
  161. } else {
  162. return "未知类型"
  163. }
  164. }