WarningSand.go 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. package Warning
  2. import (
  3. "Cold_Api/models/Admin"
  4. "fmt"
  5. "github.com/beego/beego/v2/adapter/orm"
  6. orm2 "github.com/beego/beego/v2/client/orm"
  7. _ "github.com/go-sql-driver/mysql"
  8. "strconv"
  9. "time"
  10. )
  11. // 模板
  12. type WarningSand struct {
  13. Id int `orm:"column(ID);size(11);auto;pk"`
  14. T_sn string `orm:"size(256);null"` // 设备序列号 KF开头,环境监测主机。 YD开头,温途监测主机
  15. T_Id int `orm:"size(200);null"` // 传感器 ID
  16. T_Name string `orm:"size(256);null"` // 传感器 温度探头1
  17. T_Msid int `orm:"size(256);null"` //
  18. T_T float32 `orm:"size(20);null"` // 湿度下限
  19. T_RH float32 `orm:"size(20);null"` // 湿度上限
  20. T_Title string `orm:"size(256);null"` // 报警标题 温度超上限报警
  21. T_Addr string `orm:"size(256);null"` // 地址 车载环境监测仪
  22. T_Remark string `orm:"size(256);null"` // 备注
  23. T_Ut time.Time `orm:"type(timestamp);null;"` // 采集时间
  24. T_Bind string `orm:"size(256);null"` //设备绑定 Uid (这里单独改没有,要在 设备里面加入)
  25. T_Filter int `orm:"size(200);null"` // 过滤次数
  26. T_Send_x int `orm:"type(text);size(256);null"` // 发送记录
  27. T_State int `orm:"size(2);1"` // 0 删除 1 等待发送 2 发送成功
  28. CreateTime time.Time `orm:"column(create_time);type(timestamp);null;auto_now_add"` //auto_now_add 第一次保存时才设置时间
  29. UpdateTime time.Time `orm:"column(update_time);type(timestamp);null;auto_now"` //auto_now 每次 model 保存时都会对时间自动更新
  30. }
  31. func (t *WarningSand) TableName() string {
  32. return "WarningSand" // 数据库名称 // ************** 替换 FormulaList **************
  33. }
  34. func init() {
  35. //注册模型
  36. orm.RegisterModel(new(WarningSand))
  37. orm.Debug = true
  38. }
  39. // ---------------- 特殊方法 -------------------
  40. // 获取 ById
  41. func Read_WarningWx_ById(id int) (r WarningSand) {
  42. o := orm.NewOrm()
  43. r = WarningSand{Id: id}
  44. err := o.Read(&r) // o.Read(&r,"Tokey") 如果不是 主键 就得指定字段名
  45. if err != nil {
  46. fmt.Println(err)
  47. }
  48. return r
  49. }
  50. // 添加
  51. func Add_WarningHand(m WarningSand) {
  52. warningWxList := Read_DeviceWarning(m)
  53. if len(warningWxList) == 0 {
  54. Add_Warning(m)
  55. }
  56. }
  57. // 添加
  58. func Add_Warning(m WarningSand) (id int64, err error) {
  59. o := orm.NewOrm()
  60. id, err = o.Insert(&m)
  61. //if err != nil {
  62. // fmt.Println(err)
  63. //}
  64. return id, err
  65. }
  66. // 获取列表
  67. func Read_DeviceWarning(Warning WarningSand) (r []WarningSand) {
  68. o := orm.NewOrm()
  69. // 也可以直接使用 Model 结构体作为表名
  70. qs := o.QueryTable(new(WarningSand))
  71. now := time.Now()
  72. // N 个小时前
  73. dd, _ := time.ParseDuration("-1m") //"s", "m", "h".
  74. currentTime := now.Add(dd)
  75. qs.Filter("T_sn", Warning.T_sn).Filter("T_Id", Warning.T_Id).Filter("T_Title", Warning.T_Title).Filter("CreateTime__gte", currentTime.Format("2006-01-02 15:04:05")).OrderBy("-Id").All(&r)
  76. // 记录 ++
  77. if len(r) > 0 {
  78. ColAdd_DeviceWarningBy_ID(r[0].Id)
  79. }
  80. return r
  81. }
  82. // 获取时 累加 1
  83. func ColAdd_DeviceWarningBy_ID(id int ) {
  84. o := orm.NewOrm()
  85. // 也可以直接使用 Model 结构体作为表名
  86. design := new(WarningSand)
  87. qs := o.QueryTable(design)
  88. // 获取时 累加 1
  89. qs.Filter("Id", id).Update(orm2.Params{"T_Filter": orm2.ColValue(orm.ColAdd, 1)})
  90. return
  91. }
  92. //
  93. func Read_WarningSand_ALL_T_sn_TIME_Count(T_sn string) (cnt int) {
  94. o := orm.NewOrm()
  95. var maps_z []orm2.ParamsList
  96. now := time.Now()
  97. timeStr:= now.Format("2006-01-02") + " 00:00:00"
  98. sql := "SELECT COUNT(ID) FROM WarningSand WHERE t__title NOT LIKE '%恢复%' AND t__ut > '"+timeStr+"' AND t_sn LIKE '%"+T_sn+"%' ";
  99. fmt.Println(sql)
  100. _, err := o.Raw( sql).ValuesList(&maps_z)
  101. if err != nil {
  102. return 0
  103. }
  104. if len(maps_z) == 0 {
  105. return 0
  106. }
  107. //value, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", cnt), 64)
  108. key,_ := strconv.Atoi(maps_z[0][0].(string))
  109. return key
  110. }
  111. //
  112. func Read_WarningSand_ALL_T_Bind_TIME_Count(user_ Admin.Admin,T_sn string) (cnt int) {
  113. o := orm.NewOrm()
  114. var maps_z []orm2.ParamsList
  115. now := time.Now()
  116. timeStr:= now.Format("2006-01-02") + " 00:00:00"
  117. T_Bind := "U"+strconv.Itoa(user_.Id)+"|"
  118. sql := "SELECT COUNT(ID) FROM WarningSand WHERE t__title NOT LIKE '%恢复%' AND t__ut > '"+timeStr+"' AND t__bind LIKE '%"+T_Bind+"%' AND t_sn LIKE '%"+T_sn+"%'";
  119. fmt.Println(sql)
  120. _, err := o.Raw( sql).ValuesList(&maps_z)
  121. if err != nil {
  122. return 0
  123. }
  124. if len(maps_z) == 0 {
  125. return 0
  126. }
  127. //value, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", cnt), 64)
  128. key,_ := strconv.Atoi(maps_z[0][0].(string))
  129. return key
  130. }