DeviceParameter.go 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. package Device
  2. import (
  3. "Cold_mqtt/logs"
  4. "github.com/beego/beego/v2/adapter/orm"
  5. orm2 "github.com/beego/beego/v2/client/orm"
  6. _ "github.com/go-sql-driver/mysql"
  7. "time"
  8. )
  9. // 模板
  10. type DeviceParameter struct {
  11. Id int `orm:"column(ID);size(11);auto;pk"`
  12. T_sn string `orm:"size(256);"` // 设备序列号 KF开头,环境监测主机。 YD开头,温途监测主机
  13. T_name string `orm:"size(256);"` //设备名称 (传 * 代表托管给平台处理) *
  14. T_saveT int `orm:"size(5);"` //数据保存间隔 s(60~3600) 默认:60 *
  15. T_overA int `orm:"size(5);"` //数据保存间隔 超限报警触发间隔 s(60~600) 默认:60 *
  16. T_outA int `orm:"size(5);"` //超限报警触发间隔 s(0,60~600) 为0时只触发一次 默认:60 *
  17. T_lostA int `orm:"size(5);"` //传感器掉线报警触发间隔 s(0,60~600) 为0时只触发一次 默认:60 *
  18. T_bat int `orm:"size(5);"` // 电池电量下限 %(0~30) 默认:20 *
  19. T_warn int `orm:"size(5);"` // 超限预警触发间隔 s(0,60~600)为0时只触发一次 默认:60 *
  20. T_warnD int `orm:"size(5);"` // 超限预警延时 s(0~600) 默认:0 *
  21. T_scan int `orm:"size(5);"` // 显示轮播间隔 s(1~240) 默认:5 *
  22. T_dormancy int `orm:"size(5);"` // 是否进入休眠 0:关闭 1:开启 默认:0
  23. T_snum int `orm:"size(5);"` // 【管理主机】 - 传感器数量 (范围0~255)
  24. T_btname string `orm:"size(256);"` //蓝牙打印机名称
  25. T_btsid int `orm:"size(256);"` //打印机服务号
  26. T_btchar int `orm:"size(256);"` //蓝牙特征码
  27. T_uuid string `orm:"size(256);"` //处理 人员
  28. T_Msid int64 `orm:"size(50);default(0)"` // 消息识别ID
  29. T_SendState int `orm:"size(2);default(1)"` // 发送状态 0 待发送 1 发送成功 2 发送失败 3 丢弃
  30. T_State int `orm:"size(2);default(1)"` // 1 系统获取 2 用户提交
  31. CreateTime time.Time `orm:"column(create_time);type(timestamp);auto_now_add"` //auto_now_add 第一次保存时才设置时间
  32. UpdateTime time.Time `orm:"column(update_time);type(timestamp);auto_now"` //auto_now 每次 model 保存时都会对时间自动更新
  33. }
  34. func (t *DeviceParameter) TableName() string {
  35. return "device_parameter" // 数据库名称 // ************** 替换 FormulaList **************
  36. }
  37. func init() {
  38. //注册模型
  39. orm.RegisterModel(new(DeviceParameter))
  40. orm.Debug = true
  41. }
  42. // ---------------- 特殊方法 -------------------
  43. // 添加
  44. func Add_DeviceParameter_fun(Deviceparameter DeviceParameter) bool {
  45. if DeviceParameter_r, is := Read_DeviceParameter(Deviceparameter.T_sn); is {
  46. if Deviceparameter.T_name != DeviceParameter_r.T_name ||
  47. Deviceparameter.T_saveT != DeviceParameter_r.T_saveT ||
  48. Deviceparameter.T_overA != DeviceParameter_r.T_overA ||
  49. Deviceparameter.T_outA != DeviceParameter_r.T_outA ||
  50. Deviceparameter.T_lostA != DeviceParameter_r.T_lostA ||
  51. Deviceparameter.T_bat != DeviceParameter_r.T_bat ||
  52. Deviceparameter.T_scan != DeviceParameter_r.T_scan ||
  53. Deviceparameter.T_warn != DeviceParameter_r.T_warn ||
  54. Deviceparameter.T_warnD != DeviceParameter_r.T_warnD ||
  55. Deviceparameter.T_dormancy != DeviceParameter_r.T_dormancy ||
  56. Deviceparameter.T_snum != DeviceParameter_r.T_snum ||
  57. Deviceparameter.T_btname != DeviceParameter_r.T_btname ||
  58. //Deviceparameter.T_speed != DeviceParameter_r.T_speed ||
  59. Deviceparameter.T_btsid != DeviceParameter_r.T_btsid ||
  60. Deviceparameter.T_btchar != DeviceParameter_r.T_btchar {
  61. if _, is := Add_DeviceParameter(Deviceparameter); !is {
  62. logs.PrintlnError("Add_DeviceParameter_fun", "插入失败 [DeviceParameter]")
  63. }
  64. return true
  65. }
  66. } else {
  67. if _, is := Add_DeviceParameter(Deviceparameter); !is {
  68. logs.PrintlnError("Add_DeviceParameter_fun", "插入失败 [DeviceParameter]")
  69. }
  70. return true
  71. }
  72. return false
  73. }
  74. // 添加
  75. func Add_DeviceParameter(m DeviceParameter) (DeviceParameter, bool) {
  76. o := orm.NewOrm()
  77. m.Id = 0
  78. id, err := o.Insert(&m)
  79. if err != nil {
  80. logs.Println("Add_DeviceParameter", err)
  81. return m, false
  82. }
  83. m.Id = int(id)
  84. return m, true
  85. }
  86. // 获取设备参数
  87. func Read_DeviceParameter(T_sn string) (t DeviceParameter, bool bool) {
  88. o := orm.NewOrm()
  89. qs := o.QueryTable(new(DeviceParameter))
  90. cond := orm.NewCondition()
  91. cond = cond.And("T_sn", T_sn).And("T_State", 1)
  92. qs.SetCond((*orm2.Condition)(cond)).OrderBy("-UpdateTime").One(&t)
  93. // 判断是否有数据
  94. if t.Id == 0 {
  95. return t, false
  96. }
  97. return t, true
  98. }
  99. // 修改
  100. func Update_DeviceParameter(r DeviceParameter, cols ...string) bool {
  101. o := orm.NewOrm()
  102. if _, err := o.Update(&r, cols...); err == nil {
  103. //logs.Println("Number of records updated in database:", num)
  104. return true
  105. }
  106. return false
  107. }
  108. // 获取列表
  109. func Read_DeviceParameter_SN_Msid(T_sn string, T_Msid int64) (r DeviceParameter, err error) {
  110. o := orm.NewOrm()
  111. // 也可以直接使用 Model 结构体作为表名
  112. qs := o.QueryTable(new(DeviceParameter))
  113. err = qs.Filter("T_sn", T_sn).Filter("T_Msid", T_Msid).One(&r)
  114. if err != nil {
  115. logs.Println("Read_DeviceParameter_SN_Msid:", err)
  116. }
  117. return r, err
  118. }
  119. // 修改
  120. func Update_DeviceParameter_(m DeviceParameter) (err error) {
  121. o := orm.NewOrm()
  122. if _, err := o.Update(&m, "T_SendState"); err == nil {
  123. //logs.Println("Number of records updated in database:", num)
  124. }
  125. return err
  126. }
  127. // 获取列表
  128. func Read_DeviceParameter_SN_T_State_1(T_sn string) (r []DeviceParameter) {
  129. o := orm.NewOrm()
  130. // 也可以直接使用 Model 结构体作为表名
  131. qs := o.QueryTable(new(DeviceParameter))
  132. qs.Limit(3, 0).Filter("T_sn", T_sn).Filter("T_State", 2).OrderBy("-Id").All(&r)
  133. return r
  134. }
  135. // 获取列表
  136. func Read_DeviceParameter_SN_T_SendState_0(T_sn string) (r []DeviceParameter) {
  137. o := orm.NewOrm()
  138. // 也可以直接使用 Model 结构体作为表名
  139. qs := o.QueryTable(new(DeviceParameter))
  140. qs.Limit(1, 0).Filter("T_sn", T_sn).Filter("T_State", 2).Filter("T_SendState", 0).OrderBy("-Id").All(&r)
  141. return r
  142. }
  143. // 获取最新数据
  144. func UPDATE_DeviceParameter_SN_T_SendState_2_sql(T_sn string) {
  145. o := orm.NewOrm()
  146. res, err := o.Raw("UPDATE device_parameter SET `t__send_state` = 3 WHERE `t_sn` LIKE '%" + T_sn + "%' AND `t__send_state` = '0' AND `t__state` = '2'").Exec()
  147. if err == nil {
  148. num, _ := res.RowsAffected()
  149. logs.Println("mysql row affected nums: ", num)
  150. }
  151. }