DeviceSensor.go 20 KB

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