datahandle.go 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. package main
  2. import (
  3. "errors"
  4. "strconv"
  5. "time"
  6. "github.com/sirupsen/logrus"
  7. "lc/common/protocol"
  8. "lc/common/util"
  9. )
  10. // 缓存最新状态到redis
  11. func cacheState(id, strTime string, state uint8) {
  12. fields := make(map[string]interface{})
  13. if state == 0 {
  14. fields[ONLINE] = 1 //在线
  15. } else {
  16. fields[ONLINE] = 0 //离线
  17. }
  18. fields[TLast] = strTime
  19. if err := redisCltRawData.HMSet(DevStatusPrefix+id, fields).Err(); err != nil {
  20. logrus.Errorf("更新设备[%s]状态[state=%d]失败", id, state)
  21. }
  22. }
  23. // 取缓存最新状态
  24. func getState(id string) (retTime time.Time, retState uint8, retErr error) {
  25. defer func() {
  26. if err1 := recover(); err1 != nil {
  27. logrus.Errorf("getState发生错误:%v", err1)
  28. }
  29. }()
  30. retTime = time.Time{}
  31. retState = 0
  32. retErr = errors.New("redis数据解析错误")
  33. list, err := redisCltRawData.HMGet(DevStatusPrefix+id, TLast, ONLINE).Result()
  34. if err == nil && list[0] != nil || list[1] != nil {
  35. s, err0 := strconv.Atoi(list[1].(string))
  36. t, err1 := util.MlParseTime(list[0].(string))
  37. if err0 == nil && err1 == nil {
  38. if s == 0 {
  39. s = 1
  40. } else {
  41. s = 0
  42. }
  43. retTime = t
  44. retState = uint8(s)
  45. retErr = nil
  46. }
  47. }
  48. return
  49. }
  50. // 缓存最新数据到redis
  51. func cacheData(id string, t time.Time, mapData map[uint16]float64) {
  52. if len(mapData) == 0 {
  53. return
  54. }
  55. redisMap := make(map[string]interface{})
  56. redisMap[TIME] = protocol.ToBJTime(t).Format("2006-01-02 15:04:05")
  57. for k, v := range mapData {
  58. redisMap[strconv.Itoa(int(k))] = v
  59. }
  60. if err := redisCltRawData.HMSet(DevDataPrefix+id, redisMap).Err(); err != nil {
  61. logrus.Errorf("缓存到redis失败:%s", err.Error())
  62. }
  63. }
  64. // 缓存最新数据到redis
  65. func cacheLedData(id string, t time.Time, mapData map[string]interface{}) {
  66. if len(mapData) == 0 {
  67. return
  68. }
  69. redisMap := make(map[string]interface{})
  70. redisMap[TIME] = protocol.ToBJTime(t).Format("2006-01-02 15:04:05")
  71. for k, v := range mapData {
  72. redisMap[k] = v
  73. }
  74. if err := redisCltRawData.HMSet(DevDataPrefix+id, redisMap).Err(); err != nil {
  75. logrus.Errorf("leddata缓存到redis失败:%s", err.Error())
  76. }
  77. }