DeviceSensor.go 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646
  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_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. DeviceSensor_r.T_sn = DeviceSensor_.T_sn
  125. DeviceSensor_r.T_id = DeviceSensor_.T_id
  126. DeviceSensor_r.T_name = DeviceSensor_.T_name
  127. DeviceSensor_r.T_t = DeviceSensor_.T_t
  128. DeviceSensor_r.T_rh = DeviceSensor_.T_rh
  129. DeviceSensor_r.T_Tlower = DeviceSensor_.T_Tlower
  130. DeviceSensor_r.T_Tupper = DeviceSensor_.T_Tupper
  131. DeviceSensor_r.T_RHlower = DeviceSensor_.T_RHlower
  132. DeviceSensor_r.T_RHupper = DeviceSensor_.T_RHupper
  133. DeviceSensor_r.T_time = DeviceSensor_.T_time.Format("2006-01-02 15:04:05")
  134. DeviceSensor_r.T_Site = DeviceSensor_.T_Site
  135. DeviceSensor_r.T_Dattery = DeviceSensor_.T_Dattery
  136. DeviceSensor_r.T_monitor = DeviceSensor_.T_monitor
  137. DeviceSensor_r.T_datashow = DeviceSensor_.T_datashow
  138. // 最新设备数据
  139. d_r, d_r_err := Read_Device_ByT_sn(DeviceSensor_.T_sn)
  140. if d_r_err == nil {
  141. DeviceSensor_r.T_monitor = d_r.T_monitor
  142. }
  143. // 最新数据
  144. key_data := DeviceSensor_.T_sn + "|" + strconv.Itoa(DeviceSensor_.T_id)
  145. r, is := RedisDeviceData_Get_(key_data)
  146. if is {
  147. if DeviceSensor_.T_time.Unix() < r.T_time.Unix() {
  148. DeviceSensor_r.T_t = r.T_t
  149. DeviceSensor_r.T_rh = r.T_rh
  150. DeviceSensor_r.T_time = r.T_time.Format("2006-01-02 15:04:05")
  151. DeviceSensor_r.T_Site = r.T_Site
  152. DeviceSensor_r.T_Dattery = r.T_Dattery
  153. }
  154. }
  155. return
  156. }
  157. // ---------------- 特殊方法 -------------------
  158. // 获取
  159. func Read_DeviceSensor_ByT_sn(T_sn string, T_id int) (r DeviceSensor, is bool) {
  160. key := r.T_sn + "|" + strconv.Itoa(r.T_id)
  161. if r, is := Redis_DeviceSensor_Get(key); is {
  162. return r, true
  163. }
  164. o := orm.NewOrm()
  165. r = DeviceSensor{T_sn: T_sn, T_id: T_id}
  166. err := o.Read(&r, "T_sn", "T_id") // o.Read(&r,"Tokey") 如果不是 主键 就得指定字段名
  167. if err != nil {
  168. fmt.Println("Delete_DeviceSensor_ById", err)
  169. return r, false
  170. }
  171. Redis_DeviceSensor_Set(r)
  172. return r, true
  173. }
  174. // 删除
  175. func Delete_DeviceSensor_ById(T_sn string, T_id int) (err error) {
  176. fmt.Println("Delete_DeviceSensor : T_sn", T_sn, "T_id", T_id)
  177. o := orm.NewOrm()
  178. r := DeviceSensor{T_sn: T_sn, T_id: T_id}
  179. err = o.Read(&r, "T_sn", "T_id") // o.Read(&r,"Tokey") 如果不是 主键 就得指定字段名
  180. if err != nil {
  181. fmt.Println("Delete_DeviceSensor_ById", err)
  182. return err
  183. }
  184. // ascertain id exists in the database
  185. var num int64
  186. if num, err = o.Delete(&DeviceSensor{Id: r.Id}); err == nil {
  187. fmt.Println("Number of records deleted in database:", num)
  188. }
  189. Redis_DeviceSensor_DelK(r)
  190. return
  191. }
  192. // 添加
  193. func Add_DeviceSensor(Devicesensor DeviceSensor) int {
  194. //if(conf.Test_server) {return }
  195. o := orm.NewOrm()
  196. r := Devicesensor
  197. r.T_give = 1
  198. r.T_datashow = 1
  199. // 三个返回参数依次为:是否新创建的,对象 Id 值,错误
  200. _, id, err := o.ReadOrCreate(&r, "T_sn", "T_id")
  201. if err != nil {
  202. return 0
  203. }
  204. //if !is {
  205. // //fmt.Println(Devicesensor.T_id," ReadOrCreate ",id)
  206. // Devicesensor.Id = int(id)
  207. // if Devicesensor.T_name == "*" || len(Devicesensor.T_name) == 0 {
  208. // //fmt.Println("Add_DeviceSensor:",Devicesensor.T_sn,Devicesensor.T_id,Devicesensor.T_Bind)
  209. // o.Update(&Devicesensor, "T_Bind", "T_t", "T_rh", "T_Tlower", "T_Tupper", "T_RHlower", "T_RHupper", "T_Site", "T_Dattery", "T_time")
  210. //
  211. // } else {
  212. // //fmt.Println("Add_DeviceSensor:",Devicesensor.T_sn,Devicesensor.T_id,Devicesensor.T_Bind)
  213. // 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")
  214. //
  215. // }
  216. //}
  217. Redis_DeviceSensor_Set(Devicesensor)
  218. return int(id)
  219. }
  220. // 修改
  221. func Update_DeviceSensor(r DeviceSensor, cols ...string) bool {
  222. o := orm.NewOrm()
  223. if num, err := o.Update(&r, cols...); err == nil {
  224. fmt.Println("Number of records updated in database:", num)
  225. Redis_DeviceSensor_Set(r)
  226. return true
  227. }
  228. return false
  229. }
  230. // 修改
  231. 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) {
  232. o := orm.NewOrm()
  233. v := DeviceSensor{T_sn: T_sn, T_id: T_id}
  234. // ascertain id exists in the database
  235. if err = o.Read(&v, "T_sn", "T_id"); err == nil {
  236. v.T_Tlower = T_Tlower
  237. v.T_Tupper = T_Tupper
  238. v.T_RHlower = T_RHlower
  239. v.T_RHupper = T_RHupper
  240. o.Update(&v, "T_en", "T_free", "T_del")
  241. }
  242. return err
  243. }
  244. // 修改
  245. 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) {
  246. o := orm.NewOrm()
  247. v := DeviceSensor{T_sn: T_sn, T_id: T_id}
  248. // ascertain id exists in the database
  249. if err = o.Read(&v, "T_sn", "T_id"); err == nil {
  250. v.T_en = T_en
  251. //v.T_del = T_del
  252. v.T_free = T_free
  253. o.Update(&v, "T_en", "T_free", "T_del")
  254. }
  255. return err
  256. }
  257. //// 修改
  258. //func Update_DeviceSensor_ByTsn_T_err(T_sn string, T_id int, T_err int) (err error) {
  259. // o := orm.NewOrm()
  260. // v := DeviceSensor{T_sn: T_sn, T_id: T_id}
  261. // // ascertain id exists in the database
  262. // if err = o.Read(&v, "T_sn", "T_id"); err == nil {
  263. //
  264. // v.T_err = T_err
  265. //
  266. // o.Update(&v, "T_err")
  267. // }
  268. // return err
  269. //}
  270. // 修改
  271. func DeviceSensor_Bind_Del(T_sn string, T_id int, T_Calss_id int) (err error) {
  272. o := orm.NewOrm()
  273. v := DeviceSensor{T_sn: T_sn, T_id: T_id}
  274. T_Calss := "C" + strconv.Itoa(T_Calss_id) + "|"
  275. if err = o.Read(&v, "T_sn", "T_id"); err == nil {
  276. v.T_Calss = strings.Replace(v.T_Calss, T_Calss, "", -1)
  277. o.Update(&v, "T_Calss")
  278. }
  279. return err
  280. }
  281. // 修改
  282. func DeviceSensor_T_Calss_Add(T_sn string, T_id int, T_Calss_id int) (err error) {
  283. o := orm.NewOrm()
  284. v := DeviceSensor{T_sn: T_sn, T_id: T_id}
  285. T_Calss := "C" + strconv.Itoa(T_Calss_id) + "|"
  286. if err = o.Read(&v, "T_sn", "T_id"); err == nil {
  287. v.T_Calss = strings.Replace(v.T_Calss, T_Calss, "", -1)
  288. v.T_Calss = v.T_Calss + T_Calss
  289. o.Update(&v, "T_Calss")
  290. }
  291. return err
  292. }
  293. // 修改
  294. func DeviceSensor_T_Calss_ALL_Del(T_Calss_id int) {
  295. o := orm.NewOrm()
  296. qs := o.QueryTable(new(DeviceSensor))
  297. var r []DeviceSensor
  298. T_Calss := "C" + strconv.Itoa(T_Calss_id) + "|"
  299. qs.Filter("T_Calss__icontains", T_Calss).All(&r)
  300. for _, v := range r {
  301. v.T_Calss = strings.Replace(v.T_Calss, T_Calss, "", -1)
  302. o.Update(&v, "T_Calss")
  303. }
  304. }
  305. // 修改
  306. //func DeviceSensor_T_Bind_ALL_Del(admin_r Admin.Admin) {
  307. // o := orm.NewOrm()
  308. // qs := o.QueryTable(new(DeviceSensor))
  309. // var r []DeviceSensor
  310. // T_Bind := "U" + strconv.Itoa(admin_r.Id) + "|"
  311. // qs.Filter("T_Bind__icontains", T_Bind).All(&r)
  312. // for _, v := range r {
  313. // v.T_Bind = strings.Replace(v.T_Bind, T_Bind, "", -1)
  314. // o.Update(&v, "T_Bind")
  315. // }
  316. //}
  317. // 修改
  318. func DeviceSensor_T_Bind_Add(T_sn string, T_id int, admin_r Admin.Admin) (err error) {
  319. o := orm.NewOrm()
  320. v := DeviceSensor{T_sn: T_sn, T_id: T_id}
  321. T_Bind := "U" + strconv.Itoa(admin_r.Id) + "|"
  322. if err = o.Read(&v, "T_sn", "T_id"); err == nil {
  323. v.T_Bind = strings.Replace(v.T_Bind, T_Bind, "", -1)
  324. v.T_Bind = v.T_Bind + T_Bind
  325. o.Update(&v, "T_Bind")
  326. }
  327. return err
  328. }
  329. //
  330. //// 修改
  331. //func Update_DeviceSensor_ByTsn_All_T_Bind(T_sn string, T_Bind string) (err error) {
  332. // o := orm.NewOrm()
  333. // var r_l []DeviceSensor
  334. // qs := o.QueryTable(new(DeviceSensor))
  335. //
  336. // qs.Filter("T_sn", T_sn).OrderBy("T_id").All(&r_l)
  337. // for _, v := range r_l {
  338. // v.T_Bind = T_Bind
  339. //
  340. // o.Update(&v, "T_Bind")
  341. // }
  342. //
  343. // return err
  344. //}
  345. // 获取最新数据
  346. func DeviceSensor_T_Bind_ALL(T_sn string, T_Bind string) {
  347. o := orm.NewOrm()
  348. res, err := o.Raw("UPDATE DeviceSensor SET `t__bind` = '" + T_Bind + "' WHERE `t_sn` = '" + T_sn + "' ").Exec()
  349. if err == nil {
  350. num, _ := res.RowsAffected()
  351. fmt.Println("mysql row affected nums: ", num)
  352. }
  353. }
  354. // 获取最新数据
  355. func DeviceSensor_T_l_p_ALL(T_sn string, T_l_p int) {
  356. o := orm.NewOrm()
  357. res, err := o.Raw("UPDATE DeviceSensor SET `t_l_p` = " + strconv.Itoa(T_l_p) + " WHERE `t_sn` = '" + T_sn + "' ").Exec()
  358. if err == nil {
  359. num, _ := res.RowsAffected()
  360. fmt.Println("mysql row affected nums: ", num)
  361. }
  362. }
  363. // 获取最新数据
  364. func DeviceSensor_t_give_ALL(T_sn string, t_give int) {
  365. o := orm.NewOrm()
  366. res, err := o.Raw("UPDATE DeviceSensor SET `t_give` = " + strconv.Itoa(t_give) + " WHERE `t_sn` = '" + T_sn + "' ").Exec()
  367. if err == nil {
  368. num, _ := res.RowsAffected()
  369. fmt.Println("mysql row affected nums: ", num)
  370. }
  371. }
  372. // 获取 ById
  373. func Read_DeviceSensor_ByTsn_Tid(T_sn string, T_id int) (r DeviceSensor, err error) {
  374. o := orm.NewOrm()
  375. r = DeviceSensor{T_sn: T_sn, T_id: T_id}
  376. err = o.Read(&r, "T_sn", "T_id") // o.Read(&r,"Tokey") 如果不是 主键 就得指定字段名
  377. return r, err
  378. }
  379. // 获取列表
  380. func Read_DeviceSensor_ByTsn(T_sn string) ([]DeviceSensor_R, int) {
  381. o := orm.NewOrm()
  382. // 也可以直接使用 Model 结构体作为表名
  383. qs := o.QueryTable(new(DeviceSensor))
  384. var r []DeviceSensor
  385. qs.Filter("T_sn", T_sn).OrderBy("T_id").All(&r)
  386. cnt, _ := qs.Filter("T_sn", T_sn).Count()
  387. var DeviceSensor_r []DeviceSensor_R
  388. for _, v := range r {
  389. DeviceSensor_r = append(DeviceSensor_r, DeviceSensorToDeviceSensor_R(v))
  390. //DeviceSensorData, is := Read_DeviceSensorData_ById_New(v.T_sn, v.T_id)
  391. //if !is {
  392. // continue
  393. //}
  394. ////fmt.Println(v.T_sn, v.T_id, DeviceSensorData.T_time)
  395. //r[i].T_t = DeviceSensorData.T_t
  396. //r[i].T_rh = DeviceSensorData.T_rh
  397. //r[i].T_time = DeviceSensorData.T_time
  398. }
  399. return DeviceSensor_r, int(cnt)
  400. }
  401. // 获取列表
  402. func Read_DeviceSensor_ALL_1(page int, T_sn string) (r []DeviceSensor, cnt int64) {
  403. o := orm.NewOrm()
  404. // 也可以直接使用 Model 结构体作为表名
  405. qs := o.QueryTable(new(DeviceSensor))
  406. var offset int64
  407. if page <= 1 {
  408. offset = 0
  409. } else {
  410. offset = int64((page - 1) * conf.Page_size)
  411. }
  412. qs.Limit(conf.Page_size, offset).Filter("T_sn", T_sn).OrderBy("T_id").Filter("T_del", 1).All(&r)
  413. cnt, _ = qs.Filter("T_sn", T_sn).Filter("T_del", 1).Count()
  414. return r, cnt
  415. }
  416. // 获取列表
  417. func Read_DeviceSensor_ALL_T_del_x(page int, T_sn string) (r []DeviceSensor, cnt int64) {
  418. o := orm.NewOrm()
  419. // 也可以直接使用 Model 结构体作为表名
  420. qs := o.QueryTable(new(DeviceSensor))
  421. var offset int64
  422. if page <= 1 {
  423. offset = 0
  424. } else {
  425. offset = int64((page - 1) * conf.Page_size)
  426. }
  427. qs.Limit(conf.Page_size, offset).Filter("T_sn", T_sn).OrderBy("T_id").All(&r)
  428. cnt, _ = qs.Filter("T_sn", T_sn).Count()
  429. for i, v := range r {
  430. DeviceSensorData, is := Read_DeviceSensorData_ById_New(v.T_sn, v.T_id)
  431. if !is {
  432. continue
  433. }
  434. //fmt.Println(v.T_sn, v.T_id, DeviceSensorData.T_time)
  435. r[i].T_t = DeviceSensorData.T_t
  436. r[i].T_rh = DeviceSensorData.T_rh
  437. r[i].T_time = DeviceSensorData.T_time
  438. }
  439. return r, cnt
  440. }
  441. // 获取列表
  442. 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) {
  443. o := orm.NewOrm()
  444. // 也可以直接使用 Model 结构体作为表名
  445. qs := o.QueryTable(new(DeviceSensor))
  446. var offset int64
  447. if page_z == 0 {
  448. page_z = conf.Page_size
  449. }
  450. if page <= 1 {
  451. offset = 0
  452. } else {
  453. offset = int64((page - 1) * page_z)
  454. }
  455. T_Calss := ""
  456. if T_Calss_id != 0 {
  457. T_Calss = "C" + strconv.Itoa(T_Calss_id) + "|"
  458. }
  459. T_Bind := "U" + strconv.Itoa(user_.Id) + "|"
  460. if user_.Admin_master <= 1 {
  461. T_Bind = ""
  462. }
  463. fmt.Println("T_Bind:", T_Bind)
  464. fmt.Println("T_Calss:", T_Calss)
  465. cond := orm.NewCondition()
  466. 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)
  467. // 非内部权限
  468. println("user_.Admin_power:", user_.Admin_power)
  469. if len(T_sn) < 6 {
  470. cond1 = cond.AndCond(cond1).AndCond(cond.And("T_give", 1))
  471. }
  472. qs.Limit(page_z, offset).SetCond((*orm2.Condition)(cond1)).OrderBy("T_sort", "T_id").All(&r)
  473. cnt, _ = qs.SetCond((*orm2.Condition)(cond1)).Count()
  474. //
  475. //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)
  476. //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()
  477. for i, v := range r {
  478. // 提前最新数据
  479. DeviceSensorData, is := Read_DeviceSensorData_ById_New(v.T_sn, v.T_id)
  480. if !is {
  481. continue
  482. }
  483. if DeviceSensorData.T_time.After(v.T_time) {
  484. //fmt.Println(v.T_sn, v.T_id, DeviceSensorData.T_time)
  485. r[i].T_t = DeviceSensorData.T_t
  486. r[i].T_rh = DeviceSensorData.T_rh
  487. r[i].T_time = DeviceSensorData.T_time
  488. }
  489. }
  490. return r, cnt
  491. }
  492. // 获取列表
  493. func Read_DeviceSensor_Map_ALL_1(user_ Admin.Admin, T_Calss_id int, T_sn string, T_name string, SN_type string) (r []DeviceSensor) {
  494. o := orm.NewOrm()
  495. // 也可以直接使用 Model 结构体作为表名
  496. qs := o.QueryTable(new(DeviceSensor))
  497. //now := time.Now()
  498. //// 一天前
  499. //d, _ := time.ParseDuration("-1h")
  500. //now = now.Add(d)
  501. T_Calss := ""
  502. if T_Calss_id != 0 {
  503. T_Calss = "C" + strconv.Itoa(T_Calss_id) + "|"
  504. }
  505. T_Bind := "U" + strconv.Itoa(user_.Id) + "|"
  506. if user_.Admin_master <= 1 {
  507. T_Bind = ""
  508. }
  509. fmt.Println("T_Bind:", T_Bind)
  510. fmt.Println("T_Calss:", T_Calss)
  511. 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)
  512. return r
  513. }
  514. // 获取列表
  515. func Read_DeviceSensor_ALL_T_sn_T_id_class_1(T_sn string, T_id int, T_Calss_id int) (r []DeviceSensor) {
  516. o := orm.NewOrm()
  517. // 也可以直接使用 Model 结构体作为表名
  518. qs := o.QueryTable(new(DeviceSensor))
  519. T_Calss := "C" + strconv.Itoa(T_Calss_id) + "|"
  520. qs.Filter("T_Calss__icontains", T_Calss).Filter("T_id", T_id).Filter("T_sn", T_sn).All(&r)
  521. return r
  522. }
  523. // 获取列表
  524. func Read_DeviceSensor_ALL_class_1(T_Calss_id int) (r []DeviceSensor) {
  525. o := orm.NewOrm()
  526. // 也可以直接使用 Model 结构体作为表名
  527. qs := o.QueryTable(new(DeviceSensor))
  528. T_Calss := "C" + strconv.Itoa(T_Calss_id) + "|"
  529. qs.Filter("T_Calss__icontains", T_Calss).All(&r)
  530. return r
  531. }
  532. func DELETE_DeviceSensor(SN string) bool {
  533. sql := "DELETE FROM `culd`.`DeviceSensor` WHERE `t_sn` = '" + SN + "' "
  534. o := orm.NewOrm()
  535. _, err := o.Raw(sql).Exec()
  536. if err != nil {
  537. return false
  538. }
  539. return true
  540. }