|
- using HealthMonitor.Common;
- using Microsoft.Extensions.Logging;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using TelpoDataService.Util.Clients;
- using TelpoDataService.Util.Entities.GpsLocationHistory;
- using TelpoDataService.Util.Models;
- using TelpoDataService.Util.QueryObjects;
-
- namespace HealthMonitor.Service.Cache
- {
- public class FetalHeartRateCacheManager
- {
- private readonly ILogger<FetalHeartRateCacheManager> _logger;
-
- private readonly GpsLocationHistoryAccessorClient<HisGpsFetalHeartRate> _hisFetalHeartRateApiClient;
-
- private const string CACHE_KEY_FETALHEARTRATE = "FHR_";
-
- public FetalHeartRateCacheManager(ILogger<FetalHeartRateCacheManager> logger, GpsLocationHistoryAccessorClient<HisGpsFetalHeartRate> hisFetalHeartRateApiClient)
- {
- _logger = logger;
- _hisFetalHeartRateApiClient = hisFetalHeartRateApiClient;
- }
-
- public async Task SetFetalHeartRateAsync(string serialNo, string sampleTime)
- {
- try
- {
- var key = $"{CACHE_KEY_FETALHEARTRATE}_{serialNo}_{sampleTime}";
- var time = long.Parse(sampleTime.Length < 13 ? sampleTime.PadRight(13, '0') : sampleTime);
- var value = DateTimeUtil.GetDateTimeFromUnixTimeMilliseconds(time).ToString("yyyy-MM-dd HH:mm:ss");
- await RedisHelper.SetAsync(key, value, 7200).ConfigureAwait(false);
- }
- catch (Exception ex)
- {
-
- _logger.LogWarning($"Redis 发生异常:{ex.Message}, {ex.StackTrace}");
- }
- }
-
- public async Task<bool> FetalHeartRateIsExistedAsync(string serialNo, string sampleTime)
- {
- try
- {
- var key = $"{CACHE_KEY_FETALHEARTRATE}_{serialNo}_{sampleTime}";
- var res = await RedisHelper.GetAsync(key).ConfigureAwait(false);
-
- if (string.IsNullOrEmpty(res))
- {
- GeneralParam param = new()
- {
- Filters = new List<QueryFilterCondition>
- {
- new ()
- {
- Key=nameof(HisGpsFetalHeartRate.Serialno),
- Value=serialNo,
- ValueType=QueryValueTypeEnum.String,
- Operator=QueryOperatorEnum.Equal
- },
- new ()
- {
- Key=nameof(HisGpsFetalHeartRate.SampleTime),
- Value=sampleTime,
- ValueType=QueryValueTypeEnum.String,
- Operator=QueryOperatorEnum.Equal
- },
- }
- };
- var isFetalMovementExist = await _hisFetalHeartRateApiClient.GetFirstAsync(param, serialNo[^2..], null, new RequestHeader { RequestId = Guid.NewGuid().ToString("D") });
- if (isFetalMovementExist != null)
- {
- await SetFetalHeartRateAsync(serialNo, sampleTime);
- return true;
- }
- }
- else
- {
- return true;
- }
-
- }
- catch (Exception ex)
- {
- _logger.LogWarning($"Redis 发生异常:{ex.Message}, {ex.StackTrace}");
- }
- return false;
- }
- }
- }
|