jcOPenApi.go 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. package openApi
  2. import (
  3. "Cold_Api/models/Device"
  4. "bytes"
  5. "encoding/json"
  6. "github.com/beego/beego/v2/adapter/orm"
  7. "github.com/beego/beego/v2/core/logs"
  8. beego "github.com/beego/beego/v2/server/web"
  9. "io"
  10. "net/http"
  11. "strconv"
  12. "strings"
  13. "time"
  14. )
  15. type T struct {
  16. Msg string `json:"msg"`
  17. Code int `json:"code"`
  18. Data struct {
  19. Code int `json:"code"`
  20. Data []struct {
  21. DeviceGuid string `json:"deviceGuid"`
  22. SubUid int `json:"subUid"`
  23. DeviceName string `json:"deviceName"`
  24. Tmp1 string `json:"tmp1"`
  25. Tmp2 string `json:"tmp2"`
  26. Tmp3 string `json:"tmp3"`
  27. Tmp4 string `json:"tmp4"`
  28. Hum1 string `json:"hum1"`
  29. Hum2 string `json:"hum2"`
  30. Lux1 string `json:"lux1"`
  31. Power string `json:"power"`
  32. Signal string `json:"signal"`
  33. Position string `json:"position"`
  34. Address string `json:"address"`
  35. LastDataTime int64 `json:"lastDataTime"`
  36. LastSessionTime int64 `json:"lastSessionTime"`
  37. LastAddressTime string `json:"lastAddressTime"`
  38. AlarmState bool `json:"alarmState"`
  39. WarnState bool `json:"warnState"`
  40. WaybillStart string `json:"waybillStart"`
  41. WaybillEnd string `json:"waybillEnd"`
  42. WaybillState string `json:"waybillState"`
  43. } `json:"data"`
  44. Time string `json:"time"`
  45. Message string `json:"message"`
  46. Error string `json:"error"`
  47. } `json:"data"`
  48. }
  49. func GetRealtime() {
  50. url, err := beego.AppConfig.String("apiurl")
  51. if err != nil {
  52. logs.Debug("无法获取apiurl:", err)
  53. return
  54. }
  55. o := orm.NewOrm()
  56. var DeviceList []string
  57. //查询设备表中精创设备
  58. sql := "select t_sn from device where Islocal = '1'"
  59. rows, err := o.Raw(sql).QueryRows(&DeviceList)
  60. if rows == 0 {
  61. logs.Debug("未查询到设备")
  62. return
  63. }
  64. if err != nil {
  65. logs.Debug("查询设备表失败:", err)
  66. return
  67. }
  68. marshal, err := json.Marshal(DeviceList)
  69. if err != nil {
  70. logs.Debug("json转换失败:", err)
  71. return
  72. }
  73. resp, err := http.Post(url+"getRealTimeData", "application/json", bytes.NewReader(marshal))
  74. if err != nil {
  75. logs.Debug("请求失败:", err)
  76. return
  77. }
  78. defer resp.Body.Close()
  79. body, _ := io.ReadAll(resp.Body)
  80. var temp T
  81. err = json.Unmarshal(body, &temp)
  82. if err != nil {
  83. logs.Error("解析失败:", err)
  84. return
  85. }
  86. if temp.Code != 0 {
  87. logs.Error("请求失败:", temp.Msg)
  88. return
  89. }
  90. for _, v := range temp.Data.Data {
  91. var T_t, T_rh float64
  92. if len(v.Tmp1) != 0 {
  93. Tmp1 := strings.Trim(v.Tmp1, "℃")
  94. T_t, err = strconv.ParseFloat(Tmp1, 32)
  95. if err != nil {
  96. logs.Error("转换温度失败:", err)
  97. return
  98. }
  99. }
  100. if len(v.Hum1) != 0 {
  101. Hum1 := strings.Trim(v.Hum1, "%RH")
  102. T_rh, err = strconv.ParseFloat(Hum1, 32)
  103. if err != nil {
  104. logs.Error("转换湿度失败:", err)
  105. return
  106. }
  107. }
  108. var T_time time.Time
  109. if v.LastSessionTime != 0 {
  110. T_time = time.Unix(v.LastSessionTime, 0).Local()
  111. }
  112. key := v.DeviceGuid + "|" + strconv.Itoa(v.SubUid+1)
  113. r, is := Device.Read_DeviceSensorParameter(v.DeviceGuid, v.SubUid+1)
  114. if !is {
  115. logs.Error("获取最新设备参数失败:", err)
  116. return
  117. }
  118. Device.RedisDeviceData_Set(key, Device.DeviceData_{
  119. T_rh: float32(T_rh),
  120. T_t: float32(T_t),
  121. T_time: T_time,
  122. T_site: v.Position,
  123. T_sp: r.Id,
  124. T_id: v.SubUid + 1,
  125. })
  126. }
  127. }