DeviceSensor.go 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570
  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_online int // 在线状态 1 在线 0 离线
  71. T_datashow int // 0 屏蔽数据展示 1 正常数据展示
  72. }
  73. var redisCache_DeviceSensor cache.Cache
  74. var HTTPPort_int = 0
  75. func init() {
  76. //注册模型
  77. orm.RegisterModel(new(DeviceSensor))
  78. config := fmt.Sprintf(`{"key":"%s","conn":"%s","dbNum":"%s","password":"%s"}`,
  79. "redis_DeviceSensor", conf.Redis_address, conf.Redis_dbNum, conf.Redis_password)
  80. fmt.Println(config)
  81. var err error
  82. redisCache_DeviceSensor, err = cache.NewCache("redis", config)
  83. if err != nil || redisCache_DeviceSensor == nil {
  84. errMsg := "failed to init redis"
  85. fmt.Println(errMsg, err)
  86. }
  87. HTTPPort, _ := beego.AppConfig.String("HTTPPort")
  88. HTTPPort_int, _ = strconv.Atoi(HTTPPort)
  89. }
  90. // ---------------- Redis -------------------
  91. //Redis_Set(m.T_sn,m) // Redis 更新缓存
  92. func Redis_DeviceSensor_Set(r DeviceSensor) (err error) {
  93. key := r.T_sn + "|" + strconv.Itoa(r.T_id)
  94. //json序列化
  95. str, err := json.Marshal(r)
  96. if err != nil {
  97. fmt.Print(err)
  98. return
  99. }
  100. err = redisCache_DeviceSensor.Put(key, str, 24*time.Hour)
  101. if err != nil {
  102. fmt.Println("set key:", key, ",value:", str, err)
  103. }
  104. return
  105. }
  106. //if r,is :=Redis_Get(T_sn);is{
  107. //return r,nil
  108. //}
  109. func Redis_DeviceSensor_Get(key string) (r DeviceSensor, is bool) {
  110. if redisCache_DeviceSensor.IsExist(key) {
  111. //println("找到key:",key)
  112. v := redisCache_DeviceSensor.Get(key)
  113. json.Unmarshal(v.([]byte), &r)
  114. if r.Id == -1 {
  115. return DeviceSensor{}, false
  116. }
  117. return r, true
  118. }
  119. //println("没有 找到key:",key)
  120. return DeviceSensor{}, false
  121. }
  122. func Redis_DeviceSensor_DelK(r DeviceSensor) (err error) {
  123. key := r.T_sn + "|" + strconv.Itoa(r.T_id)
  124. err = redisCache_DeviceSensor.Delete(key)
  125. return
  126. }
  127. func DeviceSensorToDeviceSensor_R(DeviceSensor_ DeviceSensor) (DeviceSensor_r DeviceSensor_R) {
  128. DeviceSensor_r.T_sn = DeviceSensor_.T_sn
  129. DeviceSensor_r.T_id = DeviceSensor_.T_id
  130. DeviceSensor_r.T_name = DeviceSensor_.T_name
  131. DeviceSensor_r.T_t = DeviceSensor_.T_t
  132. DeviceSensor_r.T_rh = DeviceSensor_.T_rh
  133. DeviceSensor_r.T_Tlower = DeviceSensor_.T_Tlower
  134. DeviceSensor_r.T_Tupper = DeviceSensor_.T_Tupper
  135. DeviceSensor_r.T_RHlower = DeviceSensor_.T_RHlower
  136. DeviceSensor_r.T_RHupper = DeviceSensor_.T_RHupper
  137. DeviceSensor_r.T_time = DeviceSensor_.T_time.Format("2006-01-02 15:04:05")
  138. DeviceSensor_r.T_Site = DeviceSensor_.T_Site
  139. DeviceSensor_r.T_Dattery = DeviceSensor_.T_Dattery
  140. DeviceSensor_r.T_monitor = DeviceSensor_.T_monitor
  141. DeviceSensor_r.T_datashow = DeviceSensor_.T_datashow
  142. // 最新设备数据
  143. d_r, d_r_err := Read_Device_ByT_sn(DeviceSensor_.T_sn)
  144. if d_r_err == nil {
  145. DeviceSensor_r.T_monitor = d_r.T_monitor
  146. DeviceSensor_r.T_online = d_r.T_online
  147. }
  148. // 最新数据
  149. key_data := DeviceSensor_.T_sn + "|" + strconv.Itoa(DeviceSensor_.T_id)
  150. r, is := RedisDeviceData_Get_(key_data)
  151. if is {
  152. //logs.Println("时间对比:",DeviceSensor_.T_time.Format("2006-01-02 15:04:05") , r.T_time.Format("2006-01-02 15:04:05"))
  153. if DeviceSensor_.T_time.Unix() < r.T_time.Unix() {
  154. DeviceSensor_r.T_t = r.T_t
  155. DeviceSensor_r.T_rh = r.T_rh
  156. DeviceSensor_r.T_time = r.T_time.Format("2006-01-02 15:04:05")
  157. DeviceSensor_r.T_Site = r.T_Site
  158. DeviceSensor_r.T_Dattery = r.T_Dattery
  159. }
  160. }
  161. return
  162. }
  163. // ---------------- 特殊方法 -------------------
  164. // 获取
  165. func Read_DeviceSensor_ByT_sn(T_sn string, T_id int) (r DeviceSensor, is bool) {
  166. key := r.T_sn + "|" + strconv.Itoa(r.T_id)
  167. if r, is := Redis_DeviceSensor_Get(key); is {
  168. if r.Id == -1 {
  169. return r, false
  170. }
  171. return r, true
  172. }
  173. o := orm.NewOrm()
  174. r = DeviceSensor{T_sn: T_sn, T_id: T_id}
  175. err := o.Read(&r, "T_sn", "T_id") // o.Read(&r,"Tokey") 如果不是 主键 就得指定字段名
  176. if err != nil {
  177. fmt.Println("Delete_DeviceSensor_ById", err)
  178. r.Id = -1
  179. Redis_DeviceSensor_Set(r)
  180. return r, false
  181. }
  182. Redis_DeviceSensor_Set(r)
  183. return r, true
  184. }
  185. // 删除
  186. func Delete_DeviceSensor_ById(T_sn string, T_id int) (err error) {
  187. fmt.Println("Delete_DeviceSensor : T_sn", T_sn, "T_id", T_id)
  188. o := orm.NewOrm()
  189. r := DeviceSensor{T_sn: T_sn, T_id: T_id}
  190. err = o.Read(&r, "T_sn", "T_id") // o.Read(&r,"Tokey") 如果不是 主键 就得指定字段名
  191. if err != nil {
  192. fmt.Println("Delete_DeviceSensor_ById", err)
  193. return err
  194. }
  195. // ascertain id exists in the database
  196. var num int64
  197. if num, err = o.Delete(&DeviceSensor{Id: r.Id}); err == nil {
  198. fmt.Println("Number of records deleted in database:", num)
  199. }
  200. Redis_DeviceSensor_DelK(r)
  201. return
  202. }
  203. // 修改
  204. func Update_DeviceSensor(r DeviceSensor, cols ...string) bool {
  205. o := orm.NewOrm()
  206. if num, err := o.Update(&r, cols...); err == nil {
  207. fmt.Println("Number of records updated in database:", num)
  208. Redis_DeviceSensor_Set(r)
  209. return true
  210. }
  211. return false
  212. }
  213. // 修改
  214. func DeviceSensor_Bind_Del(T_sn string, T_id int, T_Calss_id int) (err error) {
  215. o := orm.NewOrm()
  216. v := DeviceSensor{T_sn: T_sn, T_id: T_id}
  217. T_Calss := "C" + strconv.Itoa(T_Calss_id) + "|"
  218. if err = o.Read(&v, "T_sn", "T_id"); err == nil {
  219. v.T_Calss = strings.Replace(v.T_Calss, T_Calss, "", -1)
  220. o.Update(&v, "T_Calss")
  221. }
  222. return err
  223. }
  224. // 修改
  225. func DeviceSensor_T_Calss_Add(T_sn string, T_id int, T_Calss_id int) (err error) {
  226. o := orm.NewOrm()
  227. v := DeviceSensor{T_sn: T_sn, T_id: T_id}
  228. T_Calss := "C" + strconv.Itoa(T_Calss_id) + "|"
  229. if err = o.Read(&v, "T_sn", "T_id"); err == nil {
  230. v.T_Calss = strings.Replace(v.T_Calss, T_Calss, "", -1)
  231. v.T_Calss = v.T_Calss + T_Calss
  232. o.Update(&v, "T_Calss")
  233. }
  234. return err
  235. }
  236. // 修改
  237. func DeviceSensor_T_Calss_ALL_Del(T_Calss_id int) {
  238. o := orm.NewOrm()
  239. qs := o.QueryTable(new(DeviceSensor))
  240. var r []DeviceSensor
  241. T_Calss := "C" + strconv.Itoa(T_Calss_id) + "|"
  242. qs.Filter("T_Calss__icontains", T_Calss).All(&r)
  243. for _, v := range r {
  244. v.T_Calss = strings.Replace(v.T_Calss, T_Calss, "", -1)
  245. o.Update(&v, "T_Calss")
  246. }
  247. }
  248. // 修改
  249. //func DeviceSensor_T_Bind_ALL_Del(admin_r Admin.Admin) {
  250. // o := orm.NewOrm()
  251. // qs := o.QueryTable(new(DeviceSensor))
  252. // var r []DeviceSensor
  253. // T_Bind := "U" + strconv.Itoa(admin_r.Id) + "|"
  254. // qs.Filter("T_Bind__icontains", T_Bind).All(&r)
  255. // for _, v := range r {
  256. // v.T_Bind = strings.Replace(v.T_Bind, T_Bind, "", -1)
  257. // o.Update(&v, "T_Bind")
  258. // }
  259. //}
  260. // 修改
  261. func DeviceSensor_T_Bind_Add(T_sn string, T_id int, admin_r Admin.Admin) (err error) {
  262. o := orm.NewOrm()
  263. v := DeviceSensor{T_sn: T_sn, T_id: T_id}
  264. T_Bind := "U" + strconv.Itoa(admin_r.Id) + "|"
  265. if err = o.Read(&v, "T_sn", "T_id"); err == nil {
  266. v.T_Bind = strings.Replace(v.T_Bind, T_Bind, "", -1)
  267. v.T_Bind = v.T_Bind + T_Bind
  268. o.Update(&v, "T_Bind")
  269. }
  270. return err
  271. }
  272. //
  273. //// 修改
  274. //func Update_DeviceSensor_ByTsn_All_T_Bind(T_sn string, T_Bind string) (err error) {
  275. // o := orm.NewOrm()
  276. // var r_l []DeviceSensor
  277. // qs := o.QueryTable(new(DeviceSensor))
  278. //
  279. // qs.Filter("T_sn", T_sn).OrderBy("T_id").All(&r_l)
  280. // for _, v := range r_l {
  281. // v.T_Bind = T_Bind
  282. //
  283. // o.Update(&v, "T_Bind")
  284. // }
  285. //
  286. // return err
  287. //}
  288. // 获取最新数据
  289. func DeviceSensor_T_Bind_ALL(T_sn string, T_Bind string) {
  290. o := orm.NewOrm()
  291. res, err := o.Raw("UPDATE DeviceSensor SET `t__bind` = '" + T_Bind + "' WHERE `t_sn` = '" + T_sn + "' ").Exec()
  292. if err == nil {
  293. num, _ := res.RowsAffected()
  294. fmt.Println("mysql row affected nums: ", num)
  295. }
  296. }
  297. // 获取最新数据
  298. func DeviceSensor_T_l_p_ALL(T_sn string, T_l_p int) {
  299. o := orm.NewOrm()
  300. res, err := o.Raw("UPDATE DeviceSensor SET `t_l_p` = " + strconv.Itoa(T_l_p) + " WHERE `t_sn` = '" + T_sn + "' ").Exec()
  301. if err == nil {
  302. num, _ := res.RowsAffected()
  303. fmt.Println("mysql row affected nums: ", num)
  304. }
  305. }
  306. // 获取最新数据
  307. func DeviceSensor_t_give_ALL(T_sn string, t_give int) {
  308. o := orm.NewOrm()
  309. res, err := o.Raw("UPDATE DeviceSensor SET `t_give` = " + strconv.Itoa(t_give) + " WHERE `t_sn` = '" + T_sn + "' ").Exec()
  310. if err == nil {
  311. num, _ := res.RowsAffected()
  312. fmt.Println("mysql row affected nums: ", num)
  313. }
  314. }
  315. // 获取 ById
  316. func Read_DeviceSensor_ByTsn_Tid(T_sn string, T_id int) (r DeviceSensor, err error) {
  317. o := orm.NewOrm()
  318. r = DeviceSensor{T_sn: T_sn, T_id: T_id}
  319. err = o.Read(&r, "T_sn", "T_id") // o.Read(&r,"Tokey") 如果不是 主键 就得指定字段名
  320. return r, err
  321. }
  322. // 获取列表
  323. func Read_DeviceSensor_ByTsn(T_sn string) ([]DeviceSensor_R, int) {
  324. o := orm.NewOrm()
  325. // 也可以直接使用 Model 结构体作为表名
  326. qs := o.QueryTable(new(DeviceSensor))
  327. var r []DeviceSensor
  328. qs.Filter("T_sn", T_sn).OrderBy("T_id").All(&r)
  329. cnt, _ := qs.Filter("T_sn", T_sn).Count()
  330. var DeviceSensor_r []DeviceSensor_R
  331. for _, v := range r {
  332. DeviceSensor_r = append(DeviceSensor_r, DeviceSensorToDeviceSensor_R(v))
  333. }
  334. return DeviceSensor_r, int(cnt)
  335. }
  336. // 获取列表
  337. func Read_DeviceSensor_ALL_1(page int, T_sn string) (r []DeviceSensor, cnt int64) {
  338. o := orm.NewOrm()
  339. // 也可以直接使用 Model 结构体作为表名
  340. qs := o.QueryTable(new(DeviceSensor))
  341. var offset int64
  342. if page <= 1 {
  343. offset = 0
  344. } else {
  345. offset = int64((page - 1) * conf.Page_size)
  346. }
  347. qs.Limit(conf.Page_size, offset).Filter("T_sn", T_sn).OrderBy("T_id").Filter("T_del", 1).All(&r)
  348. cnt, _ = qs.Filter("T_sn", T_sn).Filter("T_del", 1).Count()
  349. return r, cnt
  350. }
  351. // 获取列表
  352. func Read_DeviceSensor_ALL_T_del_x(page int, T_sn string) (r []DeviceSensor, cnt int64) {
  353. o := orm.NewOrm()
  354. // 也可以直接使用 Model 结构体作为表名
  355. qs := o.QueryTable(new(DeviceSensor))
  356. var offset int64
  357. if page <= 1 {
  358. offset = 0
  359. } else {
  360. offset = int64((page - 1) * conf.Page_size)
  361. }
  362. qs.Limit(conf.Page_size, offset).Filter("T_sn", T_sn).OrderBy("T_id").All(&r)
  363. cnt, _ = qs.Filter("T_sn", T_sn).Count()
  364. for i, v := range r {
  365. DeviceSensorData, is := Read_DeviceSensorData_ById_New(v.T_sn, v.T_id)
  366. if !is {
  367. continue
  368. }
  369. //fmt.Println(v.T_sn, v.T_id, DeviceSensorData.T_time)
  370. r[i].T_t = DeviceSensorData.T_t
  371. r[i].T_rh = DeviceSensorData.T_rh
  372. r[i].T_time = DeviceSensorData.T_time
  373. }
  374. return r, cnt
  375. }
  376. // 获取列表
  377. 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) {
  378. o := orm.NewOrm()
  379. // 也可以直接使用 Model 结构体作为表名
  380. qs := o.QueryTable(new(DeviceSensor))
  381. var offset int64
  382. if page_z == 0 {
  383. page_z = conf.Page_size
  384. }
  385. if page <= 1 {
  386. offset = 0
  387. } else {
  388. offset = int64((page - 1) * page_z)
  389. }
  390. T_Calss := ""
  391. if T_Calss_id != 0 {
  392. T_Calss = "C" + strconv.Itoa(T_Calss_id) + "|"
  393. }
  394. T_Bind := "U" + strconv.Itoa(user_.Id) + "|"
  395. if user_.Admin_master <= 1 {
  396. T_Bind = ""
  397. }
  398. fmt.Println("T_Bind:", T_Bind)
  399. fmt.Println("T_Calss:", T_Calss)
  400. cond := orm.NewCondition()
  401. 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)
  402. // 非内部权限
  403. println("user_.Admin_power:", user_.Admin_power)
  404. if len(T_sn) < 6 {
  405. cond1 = cond.AndCond(cond1).AndCond(cond.And("T_give", 1))
  406. }
  407. qs.Limit(page_z, offset).SetCond((*orm2.Condition)(cond1)).OrderBy("T_sort", "T_id").All(&r)
  408. cnt, _ = qs.SetCond((*orm2.Condition)(cond1)).Count()
  409. //
  410. //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)
  411. //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()
  412. for i, v := range r {
  413. // 提前最新数据
  414. DeviceSensorData, is := Read_DeviceSensorData_ById_New(v.T_sn, v.T_id)
  415. if !is {
  416. continue
  417. }
  418. if DeviceSensorData.T_time.After(v.T_time) {
  419. //fmt.Println(v.T_sn, v.T_id, DeviceSensorData.T_time)
  420. r[i].T_t = DeviceSensorData.T_t
  421. r[i].T_rh = DeviceSensorData.T_rh
  422. r[i].T_time = DeviceSensorData.T_time
  423. }
  424. }
  425. return r, cnt
  426. }
  427. // 获取列表
  428. func Read_DeviceSensor_Map_ALL_1(user_ Admin.Admin, T_Calss_id int, T_sn string, T_name string, SN_type string) (r []DeviceSensor) {
  429. o := orm.NewOrm()
  430. // 也可以直接使用 Model 结构体作为表名
  431. qs := o.QueryTable(new(DeviceSensor))
  432. //now := time.Now()
  433. //// 一天前
  434. //d, _ := time.ParseDuration("-1h")
  435. //now = now.Add(d)
  436. T_Calss := ""
  437. if T_Calss_id != 0 {
  438. T_Calss = "C" + strconv.Itoa(T_Calss_id) + "|"
  439. }
  440. T_Bind := "U" + strconv.Itoa(user_.Id) + "|"
  441. if user_.Admin_master <= 1 {
  442. T_Bind = ""
  443. }
  444. fmt.Println("T_Bind:", T_Bind)
  445. fmt.Println("T_Calss:", T_Calss)
  446. 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)
  447. return r
  448. }
  449. // 获取列表
  450. func Read_DeviceSensor_ALL_T_sn_T_id_class_1(T_sn string, T_id int, T_Calss_id int) (r []DeviceSensor) {
  451. o := orm.NewOrm()
  452. // 也可以直接使用 Model 结构体作为表名
  453. qs := o.QueryTable(new(DeviceSensor))
  454. T_Calss := "C" + strconv.Itoa(T_Calss_id) + "|"
  455. qs.Filter("T_Calss__icontains", T_Calss).Filter("T_id", T_id).Filter("T_sn", T_sn).All(&r)
  456. return r
  457. }
  458. // 获取列表
  459. func Read_DeviceSensor_ALL_class_1(T_Calss_id int) (r []DeviceSensor) {
  460. o := orm.NewOrm()
  461. // 也可以直接使用 Model 结构体作为表名
  462. qs := o.QueryTable(new(DeviceSensor))
  463. T_Calss := "C" + strconv.Itoa(T_Calss_id) + "|"
  464. qs.Filter("T_Calss__icontains", T_Calss).All(&r)
  465. return r
  466. }
  467. func DELETE_DeviceSensor(SN string) bool {
  468. sql := "DELETE FROM `culd`.`DeviceSensor` WHERE `t_sn` = '" + SN + "' "
  469. o := orm.NewOrm()
  470. _, err := o.Raw(sql).Exec()
  471. if err != nil {
  472. return false
  473. }
  474. return true
  475. }