StatisticsStruct.go 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. package models
  2. import (
  3. "Cold_Data/conf"
  4. "Cold_Data/logs"
  5. "encoding/json"
  6. "fmt"
  7. "github.com/astaxie/beego/cache"
  8. _ "github.com/astaxie/beego/cache/redis"
  9. "strconv"
  10. "time"
  11. )
  12. var redisCache_DeviceSensor cache.Cache
  13. func init() {
  14. config := fmt.Sprintf(`{"key":"%s","conn":"%s","dbNum":"%s","password":"%s"}`,
  15. "ColdDataV_Company", conf.Redis_address, conf.Redis_dbNum, conf.Redis_password)
  16. logs.Println(config)
  17. var err error
  18. redisCache_DeviceSensor, err = cache.NewCache("redis", config)
  19. if err != nil || redisCache_DeviceSensor == nil {
  20. errMsg := "failed to init redis"
  21. logs.Println(errMsg, err)
  22. panic(any(errMsg))
  23. }
  24. }
  25. // ---------------- Redis -------------------
  26. // Redis_Set(m.T_sn,m) // Redis 更新缓存
  27. func Redis_DeviceSensor_Set(T_id int, r Company_Project) (err error) {
  28. key := strconv.Itoa(T_id)
  29. //json序列化
  30. str, err := json.Marshal(r)
  31. if err != nil {
  32. logs.PrintlnError("Redis_DeviceSensor_Set", err)
  33. return
  34. }
  35. err = redisCache_DeviceSensor.Put(key, str, 24*time.Hour)
  36. if err != nil {
  37. logs.Println("set key:", key, ",value:", str, err)
  38. }
  39. return
  40. }
  41. func Redis_DeviceSensor_Get(key string) (r Company_Project, is bool) {
  42. if redisCache_DeviceSensor.IsExist(key) {
  43. //println("找到key:",key)
  44. v := redisCache_DeviceSensor.Get(key)
  45. json.Unmarshal(v.([]byte), &r)
  46. return r, true
  47. }
  48. //println("没有 找到key:",key)
  49. return Company_Project{}, false
  50. }
  51. //////////////////////////
  52. // 设备列表类
  53. type DeviceList_Project struct {
  54. T_sn string // 设备序列号 KF开头,环境监测主机。 YD开头,温途监测主机
  55. T_id int // 传感器编号
  56. T_name string // 标题
  57. T_sort int // 排序
  58. T_3dview string //3D 视图ID
  59. T_type int // 0:未知类型 1库房 2移动
  60. T_link int // 0:断开/故障 1连接 :实时数据
  61. // 实时数据
  62. T_t float32 // 温度
  63. T_rh float32 // 湿度
  64. T_Tlower float32 // 温度下限
  65. T_Tupper float32 // 温度上限
  66. T_RHlower float32 // 湿度下限
  67. T_RHupper float32 // 湿度上限
  68. T_time string // 采集时间
  69. // 设备同步参数
  70. T_Dattery int // 电量
  71. T_Site string // GPS :实时数据
  72. T_monitor int // 监控状态 0 未监控 1 监控 :记录数据(=0) 下线(=0)
  73. T_online int // 在线状态 0 未启用 1 在线 2 离线 :上下线
  74. T_online_s int // 在线状态-备用 0 未启用 1 在线 2 离线 :上下线
  75. }
  76. // 设备类
  77. type Device_Project struct {
  78. T_库房总数 int
  79. T_移动总数 int
  80. T_移动离线总数 int
  81. T_移动监控总数 int
  82. //DeviceList []DeviceList_Project
  83. }
  84. // 报警类
  85. type Warning_Project struct {
  86. //T_库房报警总数 int
  87. T_库房未处理总数 int
  88. T_库房设备报警数_今天 int
  89. T_库房报警设备数_今天 int
  90. //T_库房设备报警数_昨天 int
  91. //T_库房设备报警数_近7天 int
  92. //T_库房设备报警数_本月 int
  93. //T_库房设备报警数_上一月 int
  94. T_库房报警类型统计 map[string]int
  95. //T_库房报警设备数_近7天 map[string]int
  96. //T_移动警数总数 int
  97. T_移动未处理总数 int
  98. T_移动设备报警数_今天 int
  99. T_移动报警设备数_今天 int
  100. T_移动报警类型统计 map[string]int
  101. //T_移动设备报警数_昨天 int
  102. //T_移动设备报警数_近7天 int
  103. //T_移动设备报警数_本月 int
  104. //T_移动设备报警数_上一月 int
  105. //T_移动报警设备数_近7天 map[string]int
  106. T_报警设备数_近7天 map[string]int
  107. T_报警设备数_近30天 map[string]int
  108. T_报警设备数_近90天 map[string]int
  109. T_探头报警类型统计 map[string]int
  110. T_探头报警类型统计_30天 map[string]int
  111. T_探头报警类型统计_90天 map[string]int
  112. }
  113. // 任务类
  114. type Task_Project struct {
  115. T_任务总数_今天 int
  116. //T_任务总数_昨天 int
  117. //T_任务总数_近7天 int
  118. //T_任务总数_本月 int
  119. //T_任务总数_上一月 int
  120. //T_任务总数_近一年 map[string]int
  121. T_任务总数_近7天 map[string]int
  122. T_任务设备数_今天 int
  123. //T_任务设备数_昨天 int
  124. //T_任务设备数_近7天 int
  125. //T_任务设备数_本月 int
  126. //T_任务设备数_上一月 int
  127. }
  128. // 公司类
  129. type Company_Project struct {
  130. Company_Id int
  131. Company_name string
  132. Company_key string
  133. Company_plan string
  134. Company_data string
  135. Company_v3d string
  136. Company_Address string
  137. Company_coordinate string
  138. Company_mid int
  139. Company_path string
  140. Device Device_Project
  141. Warning Warning_Project
  142. Task Task_Project
  143. Children []*Company_Project
  144. }