DeviceSensor.go 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576
  1. package Device
  2. import (
  3. "Cold_Api/conf"
  4. "Cold_Api/models/Admin"
  5. "encoding/json"
  6. "fmt"
  7. "github.com/astaxie/beego/cache"
  8. _ "github.com/astaxie/beego/cache/redis"
  9. "github.com/beego/beego/v2/adapter/orm"
  10. orm2 "github.com/beego/beego/v2/client/orm"
  11. beego "github.com/beego/beego/v2/server/web"
  12. _ "github.com/go-sql-driver/mysql"
  13. "strconv"
  14. "strings"
  15. "time"
  16. )
  17. // 模板
  18. type DeviceSensor struct {
  19. Id int `orm:"column(ID);size(11);auto;pk"`
  20. T_sn string `orm:"size(256);null"` // 设备序列号 KF开头,环境监测主机。 YD开头,温途监测主机
  21. T_id int `orm:"size(11);null"` // 传感器编号
  22. T_name string `orm:"size(256);null"` // 标题
  23. T_t float32 `orm:"size(10);null"` // 温度
  24. T_rh float32 `orm:"size(10);null"` // 湿度
  25. T_Tlower float32 `orm:"size(200);null"` // 温度下限
  26. T_Tupper float32 `orm:"size(200);null"` // 温度上限
  27. T_RHlower float32 `orm:"size(200);null"` // 湿度下限
  28. T_RHupper float32 `orm:"size(200);null"` // 湿度上限
  29. T_en int `orm:"size(2);1"` // en:是否启用传感器,
  30. T_free int `orm:"size(2);1"` // free:监测点是否为闲置状态(空库,只监测不报警)
  31. //T_del int `orm:"size(2);1"` // 0 删除 1 正常
  32. //T_err int `orm:"size(2);1"` // 0 正常 1 异常
  33. T_time time.Time `orm:"type(timestamp);null;"` // 采集时间
  34. T_Bind string `orm:"size(256);null"` //设备绑定 Uid (这里单独改没有,要在 设备里面加入)
  35. T_Site string `orm:"size(256);null"` //GPS
  36. T_Dattery int `orm:"size(256);null"` //电量
  37. T_monitor int `orm:"size(256);null"` // 记录状态
  38. T_3dview string `orm:"size(256);null"` //3D 视图ID
  39. T_Calss string `orm:"size(256);null"` //设备分类
  40. T_l_p int `orm:"size(22);null"` // 1物流端 2药店端
  41. T_give int `orm:"size(2);1"` // 0 丢弃 1 正常
  42. T_datashow int `orm:"size(2);1"` // 0 屏蔽数据展示 1 正常数据展示
  43. T_Visit int `orm:"size(200);1"` // 浏览量
  44. T_sort int `orm:"size(200);1"` // 排序
  45. T_State int `orm:"size(2);1"` // 0 删除 1 正常
  46. CreateTime time.Time `orm:"column(create_time);type(timestamp);null;auto_now_add"` //auto_now_add 第一次保存时才设置时间
  47. UpdateTime time.Time `orm:"column(update_time);type(timestamp);null;auto_now"` //auto_now 每次 model 保存时都会对时间自动更新
  48. }
  49. type DeviceSensor_Del struct {
  50. T_sn string
  51. T_id int
  52. }
  53. func (t *DeviceSensor) TableName() string {
  54. return "DeviceSensor" // 数据库名称 // ************** 替换 FormulaList **************
  55. }
  56. // 模板
  57. type DeviceSensor_R struct {
  58. T_sn string // 设备序列号 KF开头,环境监测主机。 YD开头,温途监测主机
  59. T_id int // 传感器编号
  60. T_name string // 标题
  61. T_t float32 // 温度
  62. T_rh float32 // 湿度
  63. T_Tlower float32 // 温度下限
  64. T_Tupper float32 // 温度上限
  65. T_RHlower float32 // 湿度下限
  66. T_RHupper float32 // 湿度上限
  67. T_time string // 采集时间
  68. T_Site string //GPS
  69. T_3dview string //3D 视图ID
  70. T_Dattery int //电量
  71. T_monitor int // 记录状态
  72. T_online int // 在线状态 1 在线 0 离线
  73. T_datashow int // 0 屏蔽数据展示 1 正常数据展示
  74. }
  75. var redisCache_DeviceSensor cache.Cache
  76. var HTTPPort_int = 0
  77. func init() {
  78. //注册模型
  79. orm.RegisterModel(new(DeviceSensor))
  80. config := fmt.Sprintf(`{"key":"%s","conn":"%s","dbNum":"%s","password":"%s"}`,
  81. "redis_DeviceSensor", conf.Redis_address, conf.Redis_dbNum, conf.Redis_password)
  82. fmt.Println(config)
  83. var err error
  84. redisCache_DeviceSensor, err = cache.NewCache("redis", config)
  85. if err != nil || redisCache_DeviceSensor == nil {
  86. errMsg := "failed to init redis"
  87. fmt.Println(errMsg, err)
  88. }
  89. HTTPPort, _ := beego.AppConfig.String("HTTPPort")
  90. HTTPPort_int, _ = strconv.Atoi(HTTPPort)
  91. }
  92. // ---------------- Redis -------------------
  93. //Redis_Set(m.T_sn,m) // Redis 更新缓存
  94. func Redis_DeviceSensor_Set(r DeviceSensor) (err error) {
  95. key := r.T_sn + "|" + strconv.Itoa(r.T_id)
  96. //json序列化
  97. str, err := json.Marshal(r)
  98. if err != nil {
  99. fmt.Print(err)
  100. return
  101. }
  102. err = redisCache_DeviceSensor.Put(key, str, 24*time.Hour)
  103. if err != nil {
  104. fmt.Println("set key:", key, ",value:", str, err)
  105. }
  106. return
  107. }
  108. //if r,is :=Redis_Get(T_sn);is{
  109. //return r,nil
  110. //}
  111. func Redis_DeviceSensor_Get(key string) (r DeviceSensor, is bool) {
  112. if redisCache_DeviceSensor.IsExist(key) {
  113. //println("找到key:",key)
  114. v := redisCache_DeviceSensor.Get(key)
  115. json.Unmarshal(v.([]byte), &r)
  116. if r.Id == -1 {
  117. return DeviceSensor{}, false
  118. }
  119. return r, true
  120. }
  121. //println("没有 找到key:",key)
  122. return DeviceSensor{}, false
  123. }
  124. func Redis_DeviceSensor_DelK(r DeviceSensor) (err error) {
  125. key := r.T_sn + "|" + strconv.Itoa(r.T_id)
  126. err = redisCache_DeviceSensor.Delete(key)
  127. return
  128. }
  129. func DeviceSensorToDeviceSensor_R(DeviceSensor_ DeviceSensor) (DeviceSensor_r DeviceSensor_R) {
  130. DeviceSensor_r.T_sn = DeviceSensor_.T_sn
  131. DeviceSensor_r.T_id = DeviceSensor_.T_id
  132. DeviceSensor_r.T_name = DeviceSensor_.T_name
  133. DeviceSensor_r.T_t = DeviceSensor_.T_t
  134. DeviceSensor_r.T_rh = DeviceSensor_.T_rh
  135. DeviceSensor_r.T_Tlower = DeviceSensor_.T_Tlower
  136. DeviceSensor_r.T_Tupper = DeviceSensor_.T_Tupper
  137. DeviceSensor_r.T_RHlower = DeviceSensor_.T_RHlower
  138. DeviceSensor_r.T_RHupper = DeviceSensor_.T_RHupper
  139. DeviceSensor_r.T_time = DeviceSensor_.T_time.Format("2006-01-02 15:04:05")
  140. DeviceSensor_r.T_Site = DeviceSensor_.T_Site
  141. DeviceSensor_r.T_Dattery = DeviceSensor_.T_Dattery
  142. DeviceSensor_r.T_monitor = DeviceSensor_.T_monitor
  143. DeviceSensor_r.T_3dview = DeviceSensor_.T_3dview
  144. DeviceSensor_r.T_datashow = DeviceSensor_.T_datashow
  145. // 最新设备数据
  146. d_r, d_r_err := Read_Device_ByT_sn(DeviceSensor_.T_sn)
  147. if d_r_err == nil {
  148. DeviceSensor_r.T_monitor = d_r.T_monitor
  149. DeviceSensor_r.T_online = d_r.T_online
  150. }
  151. // 最新数据
  152. key_data := DeviceSensor_.T_sn + "|" + strconv.Itoa(DeviceSensor_.T_id)
  153. r, is := RedisDeviceData_Get_(key_data)
  154. if is {
  155. //logs.Println("时间对比:",DeviceSensor_.T_time.Format("2006-01-02 15:04:05") , r.T_time.Format("2006-01-02 15:04:05"))
  156. if DeviceSensor_.T_time.Unix() < r.T_time.Unix() {
  157. DeviceSensor_r.T_t = r.T_t
  158. DeviceSensor_r.T_rh = r.T_rh
  159. DeviceSensor_r.T_time = r.T_time.Format("2006-01-02 15:04:05")
  160. DeviceSensor_r.T_Site = r.T_Site
  161. DeviceSensor_r.T_Dattery = r.T_Dattery
  162. }
  163. }
  164. return
  165. }
  166. // ---------------- 特殊方法 -------------------
  167. // 获取
  168. func Read_DeviceSensor_ByT_sn(T_sn string, T_id int) (r DeviceSensor, is bool) {
  169. key := r.T_sn + "|" + strconv.Itoa(r.T_id)
  170. if r, is := Redis_DeviceSensor_Get(key); is {
  171. if r.Id == -1 {
  172. return r, false
  173. }
  174. return r, true
  175. }
  176. o := orm.NewOrm()
  177. r = DeviceSensor{T_sn: T_sn, T_id: T_id}
  178. err := o.Read(&r, "T_sn", "T_id") // o.Read(&r,"Tokey") 如果不是 主键 就得指定字段名
  179. if err != nil {
  180. fmt.Println("Delete_DeviceSensor_ById", err)
  181. r.Id = -1
  182. Redis_DeviceSensor_Set(r)
  183. return r, false
  184. }
  185. Redis_DeviceSensor_Set(r)
  186. return r, true
  187. }
  188. // 删除
  189. func Delete_DeviceSensor_ById(T_sn string, T_id int) (err error) {
  190. fmt.Println("Delete_DeviceSensor : T_sn", T_sn, "T_id", T_id)
  191. o := orm.NewOrm()
  192. r := DeviceSensor{T_sn: T_sn, T_id: T_id}
  193. err = o.Read(&r, "T_sn", "T_id") // o.Read(&r,"Tokey") 如果不是 主键 就得指定字段名
  194. if err != nil {
  195. fmt.Println("Delete_DeviceSensor_ById", err)
  196. return err
  197. }
  198. // ascertain id exists in the database
  199. var num int64
  200. if num, err = o.Delete(&DeviceSensor{Id: r.Id}); err == nil {
  201. fmt.Println("Number of records deleted in database:", num)
  202. }
  203. Redis_DeviceSensor_DelK(r)
  204. return
  205. }
  206. // 修改
  207. func Update_DeviceSensor(r DeviceSensor, cols ...string) bool {
  208. o := orm.NewOrm()
  209. if num, err := o.Update(&r, cols...); err == nil {
  210. fmt.Println("Number of records updated in database:", num)
  211. Redis_DeviceSensor_Set(r)
  212. return true
  213. }
  214. return false
  215. }
  216. // 修改
  217. func DeviceSensor_Bind_Del(T_sn string, T_id int, T_Calss_id int) (err error) {
  218. o := orm.NewOrm()
  219. v := DeviceSensor{T_sn: T_sn, T_id: T_id}
  220. T_Calss := "C" + strconv.Itoa(T_Calss_id) + "|"
  221. if err = o.Read(&v, "T_sn", "T_id"); err == nil {
  222. v.T_Calss = strings.Replace(v.T_Calss, T_Calss, "", -1)
  223. o.Update(&v, "T_Calss")
  224. }
  225. return err
  226. }
  227. // 修改
  228. func DeviceSensor_T_Calss_Add(T_sn string, T_id int, T_Calss_id int) (err error) {
  229. o := orm.NewOrm()
  230. v := DeviceSensor{T_sn: T_sn, T_id: T_id}
  231. T_Calss := "C" + strconv.Itoa(T_Calss_id) + "|"
  232. if err = o.Read(&v, "T_sn", "T_id"); err == nil {
  233. v.T_Calss = strings.Replace(v.T_Calss, T_Calss, "", -1)
  234. v.T_Calss = v.T_Calss + T_Calss
  235. o.Update(&v, "T_Calss")
  236. }
  237. return err
  238. }
  239. // 修改
  240. func DeviceSensor_T_Calss_ALL_Del(T_Calss_id int) {
  241. o := orm.NewOrm()
  242. qs := o.QueryTable(new(DeviceSensor))
  243. var r []DeviceSensor
  244. T_Calss := "C" + strconv.Itoa(T_Calss_id) + "|"
  245. qs.Filter("T_Calss__icontains", T_Calss).All(&r)
  246. for _, v := range r {
  247. v.T_Calss = strings.Replace(v.T_Calss, T_Calss, "", -1)
  248. o.Update(&v, "T_Calss")
  249. }
  250. }
  251. // 修改
  252. //func DeviceSensor_T_Bind_ALL_Del(admin_r Admin.Admin) {
  253. // o := orm.NewOrm()
  254. // qs := o.QueryTable(new(DeviceSensor))
  255. // var r []DeviceSensor
  256. // T_Bind := "U" + strconv.Itoa(admin_r.Id) + "|"
  257. // qs.Filter("T_Bind__icontains", T_Bind).All(&r)
  258. // for _, v := range r {
  259. // v.T_Bind = strings.Replace(v.T_Bind, T_Bind, "", -1)
  260. // o.Update(&v, "T_Bind")
  261. // }
  262. //}
  263. // 修改
  264. func DeviceSensor_T_Bind_Add(T_sn string, T_id int, admin_r Admin.Admin) (err error) {
  265. o := orm.NewOrm()
  266. v := DeviceSensor{T_sn: T_sn, T_id: T_id}
  267. T_Bind := "U" + strconv.Itoa(admin_r.Id) + "|"
  268. if err = o.Read(&v, "T_sn", "T_id"); err == nil {
  269. v.T_Bind = strings.Replace(v.T_Bind, T_Bind, "", -1)
  270. v.T_Bind = v.T_Bind + T_Bind
  271. o.Update(&v, "T_Bind")
  272. }
  273. return err
  274. }
  275. //
  276. //// 修改
  277. //func Update_DeviceSensor_ByTsn_All_T_Bind(T_sn string, T_Bind string) (err error) {
  278. // o := orm.NewOrm()
  279. // var r_l []DeviceSensor
  280. // qs := o.QueryTable(new(DeviceSensor))
  281. //
  282. // qs.Filter("T_sn", T_sn).OrderBy("T_id").All(&r_l)
  283. // for _, v := range r_l {
  284. // v.T_Bind = T_Bind
  285. //
  286. // o.Update(&v, "T_Bind")
  287. // }
  288. //
  289. // return err
  290. //}
  291. // 获取最新数据
  292. func DeviceSensor_T_Bind_ALL(T_sn string, T_Bind string) {
  293. o := orm.NewOrm()
  294. res, err := o.Raw("UPDATE DeviceSensor SET `t__bind` = '" + T_Bind + "' WHERE `t_sn` = '" + T_sn + "' ").Exec()
  295. if err == nil {
  296. num, _ := res.RowsAffected()
  297. fmt.Println("mysql row affected nums: ", num)
  298. }
  299. }
  300. // 获取最新数据
  301. func DeviceSensor_T_l_p_ALL(T_sn string, T_l_p int) {
  302. o := orm.NewOrm()
  303. res, err := o.Raw("UPDATE DeviceSensor SET `t_l_p` = " + strconv.Itoa(T_l_p) + " WHERE `t_sn` = '" + T_sn + "' ").Exec()
  304. if err == nil {
  305. num, _ := res.RowsAffected()
  306. fmt.Println("mysql row affected nums: ", num)
  307. }
  308. }
  309. // 获取最新数据
  310. func DeviceSensor_t_give_ALL(T_sn string, t_give int) {
  311. o := orm.NewOrm()
  312. res, err := o.Raw("UPDATE DeviceSensor SET `t_give` = " + strconv.Itoa(t_give) + " WHERE `t_sn` = '" + T_sn + "' ").Exec()
  313. if err == nil {
  314. num, _ := res.RowsAffected()
  315. fmt.Println("mysql row affected nums: ", num)
  316. }
  317. }
  318. // 获取 ById
  319. func Read_DeviceSensor_ByTsn_Tid(T_sn string, T_id int) (r DeviceSensor, err error) {
  320. o := orm.NewOrm()
  321. r = DeviceSensor{T_sn: T_sn, T_id: T_id}
  322. err = o.Read(&r, "T_sn", "T_id") // o.Read(&r,"Tokey") 如果不是 主键 就得指定字段名
  323. return r, err
  324. }
  325. // 获取列表
  326. func Read_DeviceSensor_ByTsn(T_sn string) ([]DeviceSensor_R, int) {
  327. o := orm.NewOrm()
  328. // 也可以直接使用 Model 结构体作为表名
  329. qs := o.QueryTable(new(DeviceSensor))
  330. var r []DeviceSensor
  331. qs.Filter("T_sn", T_sn).OrderBy("T_id").All(&r)
  332. cnt, _ := qs.Filter("T_sn", T_sn).Count()
  333. var DeviceSensor_r []DeviceSensor_R
  334. for _, v := range r {
  335. DeviceSensor_r = append(DeviceSensor_r, DeviceSensorToDeviceSensor_R(v))
  336. }
  337. return DeviceSensor_r, int(cnt)
  338. }
  339. // 获取列表
  340. func Read_DeviceSensor_ALL_T_sn(T_sn string, page int, page_z int) (DeviceSensor_r []DeviceSensor_R, cnt int64) {
  341. o := orm.NewOrm()
  342. // 也可以直接使用 Model 结构体作为表名
  343. qs := o.QueryTable(new(DeviceSensor))
  344. var offset int64
  345. if page <= 1 {
  346. offset = 0
  347. } else {
  348. offset = int64((page - 1) * page_z)
  349. }
  350. var r []DeviceSensor
  351. qs.Limit(page_z, offset).Filter("T_sn", T_sn).OrderBy("T_id").All(&r)
  352. cnt, _ = qs.Filter("T_sn", T_sn).Count()
  353. //for i, v := range r {
  354. // DeviceSensorData, is := Read_DeviceSensorData_ById_New(v.T_sn, v.T_id)
  355. // if !is {
  356. // continue
  357. // }
  358. // //fmt.Println(v.T_sn, v.T_id, DeviceSensorData.T_time)
  359. // r[i].T_t = DeviceSensorData.T_t
  360. // r[i].T_rh = DeviceSensorData.T_rh
  361. // r[i].T_time = DeviceSensorData.T_time
  362. //}
  363. for _, v := range r {
  364. DeviceSensor_r = append(DeviceSensor_r, DeviceSensorToDeviceSensor_R(v))
  365. }
  366. return DeviceSensor_r, cnt
  367. }
  368. // 获取列表
  369. func Read_DeviceSensor_class_ALL_1(user_ Admin.Admin, T_Calss_id int, page int, page_z int, T_sn string, T_name string, SN_type string) (DeviceSensor_r []DeviceSensor_R, cnt int64) {
  370. o := orm.NewOrm()
  371. // 也可以直接使用 Model 结构体作为表名
  372. qs := o.QueryTable(new(DeviceSensor))
  373. var offset int64
  374. if page_z == 0 {
  375. page_z = conf.Page_size
  376. }
  377. if page <= 1 {
  378. offset = 0
  379. } else {
  380. offset = int64((page - 1) * page_z)
  381. }
  382. T_Calss := ""
  383. if T_Calss_id != 0 {
  384. T_Calss = "C" + strconv.Itoa(T_Calss_id) + "|"
  385. }
  386. T_Bind := "U" + strconv.Itoa(user_.Id) + "|"
  387. if user_.Admin_master <= 1 {
  388. T_Bind = ""
  389. }
  390. fmt.Println("T_Bind:", T_Bind)
  391. fmt.Println("T_Calss:", T_Calss)
  392. var r []DeviceSensor
  393. cond := orm.NewCondition()
  394. cond1 := cond.And("T_Bind__icontains", T_Bind).And("T_Calss__icontains", T_Calss).And("T_sn__icontains", SN_type).And("T_sn__icontains", T_sn).And("T_name__icontains", T_name).And("T_datashow", 1) // .AndNot("status__in", 1).Or("profile__age__gt", 2000)
  395. if len(T_sn) < 6 {
  396. cond1 = cond.AndCond(cond1).AndCond(cond.And("T_give", 1))
  397. }
  398. // 非内部权限
  399. println("user_.Admin_power:", user_.Admin_power)
  400. if len(T_sn) < 6 {
  401. cond1 = cond.AndCond(cond1).AndCond(cond.And("T_give", 1))
  402. }
  403. qs.Limit(page_z, offset).SetCond((*orm2.Condition)(cond1)).OrderBy("T_sort", "T_id").All(&r)
  404. cnt, _ = qs.SetCond((*orm2.Condition)(cond1)).Count()
  405. //
  406. //qs.Limit(page_z, offset).Filter("T_Bind__icontains", T_Bind).Filter("T_Calss__icontains", T_Calss).Filter("T_sn__icontains", SN_type).Filter("T_sn__icontains", T_sn).Filter("T_name__icontains", T_name).OrderBy("T_sort").All(&r)
  407. //cnt, _ = qs.Filter("T_Bind__icontains", T_Bind).Filter("T_Calss__icontains", T_Calss).Filter("T_sn__icontains", T_sn).Filter("T_sn__icontains", SN_type).Filter("T_name__icontains", T_name).Count()
  408. //for i, v := range r {
  409. //
  410. // // 提前最新数据
  411. // DeviceSensorData, is := Read_DeviceSensorData_ById_New(v.T_sn, v.T_id)
  412. // if !is {
  413. // continue
  414. // }
  415. // if DeviceSensorData.T_time.After(v.T_time) {
  416. // //fmt.Println(v.T_sn, v.T_id, DeviceSensorData.T_time)
  417. // r[i].T_t = DeviceSensorData.T_t
  418. // r[i].T_rh = DeviceSensorData.T_rh
  419. // r[i].T_time = DeviceSensorData.T_time
  420. // }
  421. //
  422. //}
  423. for _, v := range r {
  424. DeviceSensor_r = append(DeviceSensor_r, DeviceSensorToDeviceSensor_R(v))
  425. }
  426. return DeviceSensor_r, cnt
  427. //return r, cnt
  428. }
  429. // 获取列表
  430. func Read_DeviceSensor_Map_ALL_1(user_ Admin.Admin, T_Calss_id int, T_sn string, T_name string, SN_type string) (r []DeviceSensor) {
  431. o := orm.NewOrm()
  432. // 也可以直接使用 Model 结构体作为表名
  433. qs := o.QueryTable(new(DeviceSensor))
  434. //now := time.Now()
  435. //// 一天前
  436. //d, _ := time.ParseDuration("-1h")
  437. //now = now.Add(d)
  438. T_Calss := ""
  439. if T_Calss_id != 0 {
  440. T_Calss = "C" + strconv.Itoa(T_Calss_id) + "|"
  441. }
  442. T_Bind := "U" + strconv.Itoa(user_.Id) + "|"
  443. if user_.Admin_master <= 1 {
  444. T_Bind = ""
  445. }
  446. fmt.Println("T_Bind:", T_Bind)
  447. fmt.Println("T_Calss:", T_Calss)
  448. qs.Filter("T_Bind__icontains", T_Bind).Filter("T_Calss__icontains", T_Calss).Filter("T_sn__icontains", SN_type).Filter("T_sn__icontains", T_sn).Filter("T_name__icontains", T_name).OrderBy("-UpdateTime").All(&r) //.Filter("UpdateTime__gte", now)
  449. return r
  450. }
  451. // 获取列表
  452. func Read_DeviceSensor_ALL_T_sn_T_id_class_1(T_sn string, T_id int, T_Calss_id int) (r []DeviceSensor) {
  453. o := orm.NewOrm()
  454. // 也可以直接使用 Model 结构体作为表名
  455. qs := o.QueryTable(new(DeviceSensor))
  456. T_Calss := "C" + strconv.Itoa(T_Calss_id) + "|"
  457. qs.Filter("T_Calss__icontains", T_Calss).Filter("T_id", T_id).Filter("T_sn", T_sn).All(&r)
  458. return r
  459. }
  460. // 获取列表
  461. func Read_DeviceSensor_ALL_List_T_sn(T_sn string) (r []DeviceSensor) {
  462. o := orm.NewOrm()
  463. // 也可以直接使用 Model 结构体作为表名
  464. qs := o.QueryTable(new(DeviceSensor))
  465. qs.Filter("T_sn", T_sn).All(&r)
  466. return r
  467. }
  468. // 获取列表
  469. func Read_DeviceSensor_ALL_class_1(T_Calss_id int) (r []DeviceSensor) {
  470. o := orm.NewOrm()
  471. // 也可以直接使用 Model 结构体作为表名
  472. qs := o.QueryTable(new(DeviceSensor))
  473. T_Calss := "C" + strconv.Itoa(T_Calss_id) + "|"
  474. qs.Filter("T_Calss__icontains", T_Calss).All(&r)
  475. return r
  476. }
  477. func DELETE_DeviceSensor(SN string) bool {
  478. sql := "DELETE FROM `culd`.`DeviceSensor` WHERE `t_sn` = '" + SN + "' "
  479. o := orm.NewOrm()
  480. _, err := o.Raw(sql).Exec()
  481. if err != nil {
  482. return false
  483. }
  484. return true
  485. }