models.go 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. package nats_server
  2. import (
  3. "database/sql/driver"
  4. "encoding/json"
  5. "fmt"
  6. "time"
  7. )
  8. type JsonTime struct {
  9. time.Time
  10. }
  11. func (t JsonTime) MarshalJSON() ([]byte, error) {
  12. str := fmt.Sprintf("\"%s\"", t.Format("2006-01-02 15:04:05"))
  13. return []byte(str), nil
  14. }
  15. func (t JsonTime) Value() (driver.Value, error) {
  16. var zeroTime time.Time
  17. if t.Time.UnixNano() == zeroTime.UnixNano() {
  18. return nil, nil
  19. }
  20. return t.Time, nil
  21. }
  22. func (t *JsonTime) Scan(v interface{}) error {
  23. value, ok := v.(time.Time)
  24. if ok {
  25. *t = JsonTime{Time: value}
  26. return nil
  27. }
  28. return fmt.Errorf("error %v", v)
  29. }
  30. type DeviceSensor_R struct {
  31. T_sn string // 设备序列号 KF开头,环境监测主机。 YD开头,温途监测主机
  32. T_id int // 传感器编号
  33. T_name string // 标题
  34. //T_pid int // 公司id
  35. //T_pid_name string // 公司名称
  36. //
  37. //T_3dview string // 3D 视图ID
  38. //T_sort int // 排序
  39. //T_Dattery int // 电量
  40. //T_Site string // GPS
  41. //T_monitor int // 记录状态
  42. //T_online int // 在线状态 1 在线 0 离线
  43. //T_online_s int // 在线状态-备用 0 未启用 1 在线 2 离线
  44. //T_datashow int // 0 屏蔽数据展示 1 正常数据展示
  45. //T_type int // 类型
  46. //T_link int // 0:断开/故障 1连接 实时数据
  47. //T_State int // 0 屏蔽 1 正常 (屏蔽后 只有内部管理员才能看到,用户 输入SN\名称 搜索时 也能看到)
  48. T_DeviceSensorData DeviceData_R2 // 传感器最新数据
  49. T_DeviceSensorParameter DeviceSensorParameter_R // 设备参数
  50. }
  51. type DeviceData_R2 struct {
  52. T_t float32 // 温度
  53. T_rh float32 // 湿度
  54. T_site string // GPS
  55. T_time string // 采集时间
  56. }
  57. type DeviceData_ struct {
  58. T_id int // 传感器id
  59. T_sp int // 传感器参数id
  60. T_t float32 // 温度
  61. T_rh float32 // 湿度
  62. T_site string // GPS
  63. T_time time.Time // 采集时间
  64. }
  65. func (ab *DeviceData_) MarshalJSON() ([]byte, error) {
  66. loc, _ := time.LoadLocation("Asia/Shanghai")
  67. type Alias DeviceData_
  68. return json.Marshal(&struct {
  69. T_time string `json:"T_time,omitempty"`
  70. *Alias
  71. }{
  72. T_time: ab.T_time.In(loc).Format("2006-01-02 15:04:05"),
  73. Alias: (*Alias)(ab),
  74. })
  75. }
  76. type DeviceSensor struct {
  77. Id int `orm:"column(ID);size(11);auto;pk"`
  78. T_sn string `orm:"index;size(256);null"` // 设备序列号 KF开头,环境监测主机。 YD开头,温途监测主机
  79. T_id int `orm:"index;size(11);null"` // 传感器编号
  80. T_sp int `orm:"size(11);null"` // 传感器参数id
  81. T_name string `orm:"size(256);null"` // 标题
  82. T_pid int `orm:"index;size(256);null"` // Account.Company 绑定公司
  83. T_Class string `orm:"size(256);null"` // Device.DeviceClass.Id 设备分类 C1|C2|
  84. T_Notice string `orm:"size(256);null"` // 通知绑定
  85. T_datashow int `orm:"size(2);default(1)"` // 0 屏蔽数据展示 1 正常数据展示 (屏蔽后 数据展示无法看到,设备管理中 不受影响)
  86. T_sort int `orm:"size(200);default(1)"` // 排序
  87. T_3dview string `orm:"size(256);null"` // 3D 视图ID
  88. T_type int `orm:"size(4);null"` // Device.DeviceSensorType 1库房 2移动
  89. T_link int `orm:"size(4);default(1)"` // 0:断开/故障 1连接 实时数据
  90. T_State int `orm:"index;size(2);default(1)"` // 0 屏蔽 1 正常 (屏蔽后 只有内部管理员才能看到,用户 输入SN\名称 搜索时 也能看到)
  91. // 设备同步参数
  92. T_Dattery int `orm:"size(4);null"` // 电量
  93. T_Site string `orm:"size(200);null"` // GPS
  94. T_monitor int `orm:"size(2);null"` // 监控状态 0 未监控 1 监控
  95. T_online int `orm:"size(2);default(1)"` // 在线状态 0 未启用 1 在线 2 离线
  96. T_online_s int `orm:"size(2);default(0)"` // 在线状态-备用 0 未启用 1 在线 2 离线
  97. CreateTime time.Time `orm:"column(create_time);type(timestamp);null;auto_now_add"` //auto_now_add 第一次保存时才设置时间
  98. UpdateTime time.Time `orm:"column(update_time);type(timestamp);null;auto_now"` //auto_now 每次 model 保存时都会对时间自动更新
  99. }
  100. type DeviceData_R struct {
  101. T_sn string // sn
  102. T_id int // 传感器id
  103. T_name string // 传感器名称
  104. T_t float32 // 温度
  105. T_rh float32 // 湿度
  106. T_site string // GPS
  107. T_tl float32 // 温度下限
  108. T_tu float32 // 温度上限
  109. T_rhl float32 // 湿度下限
  110. T_rhu float32 // 湿度上限
  111. T_time string // 采集时间
  112. //T_sp int // 传感器参数id
  113. //T_ist int // 温度 1开启 2关闭
  114. //T_ish int // 湿度 1开启 2关闭
  115. //T_remark string // 备注
  116. }
  117. type DeviceSensorParameter_R struct {
  118. Id int
  119. T_name string
  120. // 报警
  121. T_Tlower float32 // 温度下限
  122. T_Tupper float32 // 温度上限
  123. T_RHlower float32 // 湿度下限
  124. T_RHupper float32 // 湿度上限
  125. // 预警
  126. //T_enprel int // 是否启用预警
  127. //T_tprel float32 // 温度预警下限
  128. //T_tpreu float32 // 温度预警上限
  129. //T_hprel float32 // 湿度预警下限
  130. //T_hpreu float32 // 温度预警上限
  131. //T_enprelnote int // 预警记录数据
  132. //T_speed int // 传感器采样率 s(1~240) 默认:15 *
  133. //T_sense int // 传感器灵敏度 s(0~10) 默认:5
  134. //T_en int // en:是否启用传感器,
  135. //T_free int // free:监测点是否为闲置状态(空库,只监测不报警)
  136. T_time JsonTime
  137. }
  138. type Device_R struct {
  139. T_sn string // 设备序列号 KF开头,环境监测主机。 YD开头,温途监测主机
  140. T_devName string // 设备名称
  141. T_protocol int // 1 1.0协议 2 2.0协议
  142. T_VerifyTime string // 验证时间
  143. T_CalibrationTime string // 校准时间
  144. T_PatrolTime string // 巡检时间
  145. T_ist int // 温度 1开启 2关闭
  146. T_ish int // 湿度 1开启 2关闭
  147. T_Dattery int // 电量
  148. T_Site string // GPS
  149. T_monitor int // 监控状态 0 未监控 1 监控 停止记录
  150. T_online int // 在线状态 0 未启用 1 在线 2 离线
  151. T_online_s int // 在线状态-备用 0 未启用 1 在线 2 离线
  152. T_State int // 0 屏蔽 1 正常
  153. // 硬件信息
  154. T_model string // KF200BG 产品型号
  155. T_ProductTypeName string // 验证工具LoRa 产品统称 + 类型
  156. T_sver string // "1.0.0",//软件版本
  157. T_hver string // "1.0.0",//硬件版本
  158. T_imei string // "867387060327718",//模组imei
  159. T_iccid string // "89860477102170049750",//sim卡号
  160. T_rssi string // "80",//信号强度
  161. CreateTime string //auto_now_add 第一次保存时才设置时间
  162. UpdateTime string //auto_now 每次 model 保存时都会对时间自动更新
  163. T_DeviceSensor_Num int // 传感器数量
  164. }
  165. type Company_R struct {
  166. Id int
  167. T_mid int // 上一级 ID
  168. T_name string // 公司名称
  169. T_plan string // 平面图
  170. T_data string // 大数据
  171. T_v3d string // 3D 视图
  172. T_money float32 // 余额
  173. T_warning int // 报警统计
  174. T_key string
  175. T_type int // 公司类型 1-医药公司 2-运输企业
  176. T_Charging int
  177. Children []Company_R
  178. }
  179. type Device struct {
  180. T_sn string // 设备序列号
  181. T_pid int // Account.Company 绑定公司
  182. T_devName string // 设备名称 20字
  183. T_protocol int // 冷链通讯协议 1 :1.0协议 2 :2.0协议 3 :3.0协议
  184. T_mqttid string // MQTT 服务ID
  185. T_VerifyTime time.Time // 验证时间
  186. T_CalibrationTime time.Time // 校准时间
  187. T_PatrolTime time.Time // 巡检时间
  188. T_abandonTime time.Time // 弃用时间
  189. T_ist int // 温度 1开启 2关闭
  190. T_ish int // 湿度 1开启 2关闭
  191. T_State int // 0 屏蔽 1 正常 (屏蔽后 只有内部管理员才能看到,用户 输入SN\名称 搜索时 也能看到)
  192. // 设备同步参数
  193. T_Dattery int // 电量
  194. T_Site string // GPS
  195. T_monitor int // 监控状态 0 未监控 1 监控 停止记录
  196. T_online int // 在线状态 0 未启用 1 在线 2 离线
  197. T_online_s int // 在线状态-备用 0 未启用 1 在线 2 离线
  198. // 硬件信息
  199. T_model string // KF200BG 设备型号
  200. T_sver string // "1.0.0",//软件版本
  201. T_hver string // "1.0.0",//硬件版本
  202. T_imei string // "867387060327718",//模组imei
  203. T_iccid string // "89860477102170049750",//sim卡号
  204. T_rssi string // "80",//信号强度
  205. CreateTime time.Time //auto_now_add 第一次保存时才设置时间
  206. UpdateTime time.Time //auto_now 每次 model 保存时都会对时间自动更新
  207. }
  208. // 设备任务
  209. type DeviceTask struct {
  210. Id int `orm:"column(ID);size(11);auto;pk"`
  211. T_sn string `orm:"size(256);null"` // 设备序列号 KF开头,环境监测主机。 YD开头,温途监测主机
  212. T_Ut_start time.Time `orm:"type(timestamp);null;"` // 采集时间
  213. T_Ut_end time.Time `orm:"type(timestamp);null;"` // 采集时间
  214. T_Ut time.Time `orm:"type(timestamp);null;"` // 采集时间
  215. T_State int `orm:"size(2);default(1)"`
  216. // 1 start:开始监测任务,
  217. // 2 stop:结束监测任务,
  218. // 3 print:中途打印任务
  219. }