NatsColdApi.go 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270
  1. package nats_server
  2. import (
  3. "cold-logistics/common/nats"
  4. "errors"
  5. "github.com/vmihailenco/msgpack/v5"
  6. "sort"
  7. "time"
  8. )
  9. func Cold_CompanyDeviceSensor_List_ByKey(T_sn, T_key string) (data []DeviceSensor_R, count int64, err error) {
  10. type T_Req struct {
  11. T_sn string `xml:"T_sn"`
  12. T_key string `xml:"T_key"`
  13. }
  14. t_Req := T_Req{
  15. T_sn: T_sn,
  16. T_key: T_key,
  17. }
  18. b, _ := msgpack.Marshal(&t_Req)
  19. msg, err := nats.Nats.Request("Cold_CompanyDeviceSensor_List_ByKey", b, 3*time.Second)
  20. if err != nil {
  21. return
  22. }
  23. type T_R struct {
  24. Code int16 `xml:"Code"`
  25. Msg string `xml:"Msg"`
  26. Count int64 `xml:"Count"`
  27. Data []DeviceSensor_R `xml:"Data"` // 泛型
  28. }
  29. var t_R T_R
  30. err = msgpack.Unmarshal(msg.Data, &t_R)
  31. if err != nil {
  32. return
  33. }
  34. if t_R.Code != 200 {
  35. err = errors.New(t_R.Msg)
  36. return
  37. }
  38. return t_R.Data, t_R.Count, nil
  39. }
  40. func Cold_ReadDeviceDataListBy_T_snid(T_snid, startTime, endTime string, page, page_z int) (data []DeviceData_R, count int64, err error) {
  41. type T_Req struct {
  42. T_snid string `xml:"T_snid"`
  43. Time_start string `xml:"Time_start"`
  44. Time_end string `xml:"Time_end"`
  45. Page int `xml:"Page"`
  46. Page_z int `xml:"Page_z"`
  47. }
  48. t_Req := T_Req{
  49. T_snid: T_snid,
  50. Time_start: startTime,
  51. Time_end: endTime,
  52. Page: page,
  53. Page_z: page_z,
  54. }
  55. b, _ := msgpack.Marshal(&t_Req)
  56. msg, err := nats.Nats.Request("Cold_ReadDeviceDataListBy_T_snid", b, 3*time.Second)
  57. if err != nil {
  58. return
  59. }
  60. type T_R struct {
  61. Code int16 `xml:"Code"`
  62. Msg string `xml:"Msg"`
  63. Count int64 `xml:"Count"`
  64. Data []DeviceData_R `xml:"Data"` // 泛型
  65. }
  66. var t_R T_R
  67. err = msgpack.Unmarshal(msg.Data, &t_R)
  68. if err != nil {
  69. return
  70. }
  71. if t_R.Code != 200 {
  72. err = errors.New(t_R.Msg)
  73. return
  74. }
  75. list := t_R.Data
  76. sort.Slice(list, func(i, j int) bool {
  77. // 先按 T_time 字段排序,如果 T_time 相同则按 T_name 字段排序
  78. if list[i].T_time == list[j].T_time {
  79. return list[i].T_name < list[j].T_name
  80. }
  81. return list[i].T_time > list[j].T_time
  82. })
  83. return list, t_R.Count, nil
  84. }
  85. func Cold_ReadDeviceDataBy_T_snid_T_time(T_sn string, T_id int, Time string) (data DeviceData_, err error) {
  86. type T_Req struct {
  87. T_sn string `xml:"T_sn"`
  88. T_id int `xml:"T_id"`
  89. Time string `xml:"Time"`
  90. }
  91. t_Req := T_Req{
  92. T_sn: T_sn,
  93. T_id: T_id,
  94. Time: Time,
  95. }
  96. b, _ := msgpack.Marshal(&t_Req)
  97. msg, err := nats.Nats.Request("Cold_ReadDeviceDataBy_T_snid_T_time", b, 3*time.Second)
  98. if err != nil {
  99. return
  100. }
  101. type T_R struct {
  102. Code int16 `xml:"Code"`
  103. Msg string `xml:"Msg"`
  104. Data DeviceData_ `xml:"Data"` // 泛型
  105. }
  106. var t_R T_R
  107. err = msgpack.Unmarshal(msg.Data, &t_R)
  108. if err != nil {
  109. return
  110. }
  111. if t_R.Code != 200 {
  112. err = errors.New(t_R.Msg)
  113. return
  114. }
  115. return t_R.Data, nil
  116. }
  117. // 查询轨迹信息
  118. func Cold_ReadDeviceDataListBy_T_snidForLocus(T_snid, startTime, endTime string, page, page_z int) (data []DeviceData_R2, count int64, err error) {
  119. type T_Req struct {
  120. T_snid string `xml:"T_snid"`
  121. Time_start string `xml:"Time_start"`
  122. Time_end string `xml:"Time_end"`
  123. Page int `xml:"Page"`
  124. Page_z int `xml:"Page_z"`
  125. }
  126. t_Req := T_Req{
  127. T_snid: T_snid,
  128. Time_start: startTime,
  129. Time_end: endTime,
  130. Page: page,
  131. Page_z: page_z,
  132. }
  133. b, _ := msgpack.Marshal(&t_Req)
  134. msg, err := nats.Nats.Request("Cold_ReadDeviceDataListBy_T_snid", b, 3*time.Second)
  135. if err != nil {
  136. return
  137. }
  138. type T_R struct {
  139. Code int16 `xml:"Code"`
  140. Msg string `xml:"Msg"`
  141. Count int64 `xml:"Count"`
  142. Data []DeviceData_R2 `xml:"Data"` // 泛型
  143. }
  144. var t_R T_R
  145. err = msgpack.Unmarshal(msg.Data, &t_R)
  146. if err != nil {
  147. return
  148. }
  149. if t_R.Code != 200 {
  150. err = errors.New(t_R.Msg)
  151. return
  152. }
  153. return t_R.Data, t_R.Count, nil
  154. }
  155. func Cold_ReadDevice_List(name, T_key string, page, page_z int) (data []Device_R, count int64, err error) {
  156. type T_Req struct {
  157. Key string `xml:"Key"`
  158. Name string `xml:"Name"`
  159. Page int `xml:"Page"`
  160. Page_z int `xml:"Page_z"`
  161. }
  162. t_Req := T_Req{
  163. Key: T_key,
  164. Name: name,
  165. Page: page,
  166. Page_z: page_z,
  167. }
  168. b, _ := msgpack.Marshal(&t_Req)
  169. msg, err := nats.Nats.Request("Cold_ReadDevice_List", b, 3*time.Second)
  170. if err != nil {
  171. return
  172. }
  173. type T_R struct {
  174. Code int16 `xml:"Code"`
  175. Msg string `xml:"Msg"`
  176. Count int64 `xml:"Count"`
  177. Data []Device_R `xml:"Data"` // 泛型
  178. }
  179. var t_R T_R
  180. err = msgpack.Unmarshal(msg.Data, &t_R)
  181. if err != nil {
  182. return
  183. }
  184. if t_R.Code != 200 {
  185. err = errors.New(t_R.Msg)
  186. return
  187. }
  188. list := t_R.Data
  189. return list, t_R.Count, nil
  190. }
  191. func Cold_ReadDeviceByT_sn(T_sn string) (data Device, err error) {
  192. msg, err := nats.Nats.Request("Cold_ReadDeviceByT_sn", []byte(T_sn), 3*time.Second)
  193. if err != nil {
  194. return
  195. }
  196. type T_R struct {
  197. Code int16 `xml:"Code"`
  198. Msg string `xml:"Msg"`
  199. Data Device `xml:"Data"` // 泛型
  200. }
  201. var t_R T_R
  202. err = msgpack.Unmarshal(msg.Data, &t_R)
  203. if err != nil {
  204. return
  205. }
  206. if t_R.Code != 200 {
  207. err = errors.New(t_R.Msg)
  208. return
  209. }
  210. data = t_R.Data
  211. return data, nil
  212. }
  213. func Cold_ReadCompanyByT_key(T_key string) (data Company, err error) {
  214. msg, err := nats.Nats.Request("Cold_ReadCompanyByT_key", []byte(T_key), 3*time.Second)
  215. if err != nil {
  216. return
  217. }
  218. type T_R struct {
  219. Code int16 `xml:"Code"`
  220. Msg string `xml:"Msg"`
  221. Data Company `xml:"Data"` // 泛型
  222. }
  223. var t_R T_R
  224. err = msgpack.Unmarshal(msg.Data, &t_R)
  225. if err != nil {
  226. return
  227. }
  228. if t_R.Code != 200 {
  229. err = errors.New(t_R.Msg)
  230. return
  231. }
  232. data = t_R.Data
  233. return data, nil
  234. }