DeviceSensor.go 19 KB

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