You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ZkRealHRMonitorService.cs 4.4KB

10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. using Confluent.Kafka;
  2. using Microsoft.Extensions.Logging;
  3. using Newtonsoft.Json;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using TelpoDataService.Util.Clients;
  10. using TelpoDataService.Util.Entities.GpsLocationHistory;
  11. using TelpoDataService.Util.Models;
  12. using TelpoDataService.Util.QueryObjects;
  13. using TelpoPush.Common;
  14. using TelpoPush.Models.Enum;
  15. using TelpoPush.Models.MqTemplates;
  16. using TelpoPush.Service.Cache;
  17. namespace TelpoPush.Service.Biz
  18. {
  19. public class ZkRealHRMonitorService : IZkRealHRMonitorService
  20. {
  21. private readonly ILogger<ZkRealHRMonitorService> _logger;
  22. private readonly HttpHelperAsync _httpHelper;
  23. private readonly RedisUtil _redis;
  24. private readonly GpsLocationHistoryAccessorClient<HisGpsRealHeartRate> _messageRealHeartRateAiClient;
  25. public ZkRealHRMonitorService(
  26. ILogger<ZkRealHRMonitorService> logger, RedisUtil redis, HttpHelperAsync httpHelper,
  27. GpsLocationHistoryAccessorClient<HisGpsRealHeartRate> messageRealHeartRateAiClient)
  28. {
  29. _logger = logger;
  30. _redis = redis;
  31. _httpHelper = httpHelper;
  32. _messageRealHeartRateAiClient = messageRealHeartRateAiClient;
  33. }
  34. //数据保存、推送
  35. public async Task Save(ZkRealHeartRateData data, string MessageId)
  36. {
  37. string deviceKey = await _redis.GetHealthyDeviceKey(data.imei);
  38. foreach (var item in data.data)
  39. {
  40. if (item.isAnomaly == 1)
  41. {
  42. DateTime lastUpdate = TimeHelper.ConvertToLocalDateTime(item.time.ToString());
  43. HisGpsRealHeartRate model = new HisGpsRealHeartRate()
  44. {
  45. HeartRateId = item.time.ToString(),
  46. MessageId = $"{MessageId}_{item.time}",
  47. Serialno = data.imei,
  48. ManufactorId = data.agencyid,
  49. HeartRate = item.value,
  50. IsAnomaly = item.isAnomaly,
  51. LastUpdate = lastUpdate,
  52. Method = 1,
  53. IsDisplay = 1,
  54. DeviceKey = deviceKey,
  55. CreateTime = DateTime.Now,
  56. };
  57. await _messageRealHeartRateAiClient.AddAsync(model);
  58. var settingInfo = await _redis.GetManufactorPushSettingHash(data.imei, data.agencyid, (int)MqDataType.ZkRealHeartRate);
  59. if (settingInfo != null)
  60. {
  61. Dictionary<string, object> dic = new Dictionary<string, object>();
  62. dic.Add("imei", data.imei);
  63. dic.Add("value", item.value);
  64. dic.Add("alarmType", item.isAnomaly);
  65. dic.Add("alarmInfo", "异常告警");
  66. dic.Add("value", item.value);
  67. dic.Add("dataTime", TimeHelper.ToDateTimeStr(lastUpdate));
  68. MultipartFormDataContent mfdc = Utils.GetMultipartFormDataContent(dic, data.agencyid, ref dic);
  69. var result = await _httpHelper.PostFormAsync(settingInfo.pushUrl, mfdc);
  70. _logger.LogInformation($"[中考实时心率-第三方数据推送<{data.imei}>] url:{settingInfo.pushUrl},参数:{JsonConvert.SerializeObject(dic)},结果:{result}");
  71. }
  72. }
  73. }
  74. }
  75. //取消 数据保存
  76. public async Task SaveAnomalyCancel(ZkRealHeartRateAnomalyCancelData data, string MessageId)
  77. {
  78. string deviceKey = await _redis.GetHealthyDeviceKey(data.imei);
  79. DateTime lastUpdate = TimeHelper.ConvertToLocalDateTime(data.time.ToString());
  80. HisGpsRealHeartRate model = new HisGpsRealHeartRate()
  81. {
  82. HeartRateId = data.time.ToString(),
  83. MessageId = $"{MessageId}_{data.time}",
  84. Serialno = data.imei,
  85. ManufactorId = data.agencyid,
  86. HeartRate = 0,
  87. IsAnomaly = -1,
  88. LastUpdate = lastUpdate,
  89. Method = 1,
  90. IsDisplay = 1,
  91. DeviceKey = deviceKey,
  92. CreateTime = DateTime.Now,
  93. };
  94. await _messageRealHeartRateAiClient.AddAsync(model);
  95. }
  96. }
  97. }