Quellcode durchsuchen

处理由于历史遗留数据,没有下推记录

datasub12_previous
H Vs vor 1 Jahr
Ursprung
Commit
b8e0e998bc
1 geänderte Dateien mit 66 neuen und 15 gelöschten Zeilen
  1. +66
    -15
      HealthMonitor.WebApi/Worker.cs

+ 66
- 15
HealthMonitor.WebApi/Worker.cs Datei anzeigen

@@ -9,6 +9,7 @@ using HealthMonitor.Model.Service;
using HealthMonitor.Model.Service.Mapper;
using HealthMonitor.Service.Biz;
using HealthMonitor.Service.Biz.db;
using HealthMonitor.Service.Cache;
using HealthMonitor.Service.Etcd;
using HealthMonitor.Service.Sub;
using Microsoft.AspNetCore.Mvc.RazorPages;
@@ -34,20 +35,24 @@ namespace HealthMonitor.WebApi
private readonly HttpHelper _httpHelper = default!;
private readonly IotWebApiService _serviceIotWebApi;
private readonly BoodPressResolverConfig _configBoodPressResolver;
private readonly BloodPressReferenceValueCacheManager _bpRefValCacheManager;
private readonly PersonCacheManager _personCacheMgr;

private CancellationTokenSource _tokenSource=default!;
private CancellationTokenSource _tokenSource = default!;

public Worker(ILogger<Worker> logger, IServiceProvider services, IotWebApiService iotWebApiService, IOptions<BoodPressResolverConfig> optionBoodPressResolver, PackageProcess processor,TDengineDataSubcribe tdEngineDataSubcribe, TDengineService serviceDengine, HttpHelper httpHelper, EtcdService serviceEtcd)
public Worker(ILogger<Worker> logger, IServiceProvider services, PersonCacheManager personCacheMgr, BloodPressReferenceValueCacheManager bpRefValCacheManager, IotWebApiService iotWebApiService, IOptions<BoodPressResolverConfig> optionBoodPressResolver, PackageProcess processor, TDengineDataSubcribe tdEngineDataSubcribe, TDengineService serviceDengine, HttpHelper httpHelper, EtcdService serviceEtcd)
{
_logger = logger;
_tdEngineDataSubcribe = tdEngineDataSubcribe;
_services = services;
_serviceIotWebApi = iotWebApiService;
_processor = processor;
_serviceEtcd = serviceEtcd;
_serviceEtcd = serviceEtcd;
_serviceTDengine = serviceDengine;
_httpHelper = httpHelper;
_configBoodPressResolver = optionBoodPressResolver.Value;
_bpRefValCacheManager = bpRefValCacheManager;
_personCacheMgr = personCacheMgr;
}

public override Task StartAsync(CancellationToken cancellationToken)
@@ -55,7 +60,7 @@ namespace HealthMonitor.WebApi
_logger.LogInformation("------StartAsync");
_tokenSource = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken);
// 创建消费者
// _tdEngineDataSubcribe.CreateConsumer();
// _tdEngineDataSubcribe.CreateConsumer();
return base.StartAsync(cancellationToken);
}

@@ -63,8 +68,8 @@ namespace HealthMonitor.WebApi
{
_logger.LogInformation("------StopAsync");
_tokenSource.Cancel(); //停止工作线程
// 关闭消费者
// _tdEngineDataSubcribe.CloseConsumer();
// 关闭消费者
// _tdEngineDataSubcribe.CloseConsumer();
return base.StopAsync(cancellationToken);
}

@@ -92,7 +97,7 @@ namespace HealthMonitor.WebApi
_logger.LogInformation("------_tdEngineDataSubcribe");
while (!_tokenSource.IsCancellationRequested)
{
_tdEngineDataSubcribe.BeginListen(_tokenSource.Token);
}
}, TaskCreationOptions.LongRunning);
@@ -219,15 +224,61 @@ namespace HealthMonitor.WebApi
}
var lastPushParser = JsonConvert.DeserializeObject<ParseTDengineRestResponse<BloodPressurePushRefIncModel>>(lastPushResponse);
var lastPush = lastPushParser!.Select().FirstOrDefault();
// 有下推记录
if (lastPush != null)
{
systolicRefValue = lastPush!.SystolicRefValue;
diastolicRefValue = lastPush!.DiastolicRefValue;
lastPushSystolicInc = lastPush!.SystolicIncValue;
lastPushDiastolicInc = lastPush!.DiastolicIncValue;
condition = $"ts between '{lastPush?.Timestamp:yyyy-MM-dd HH:mm:ss.fff}' and '{startTime:yyyy-MM-dd HH:mm:ss.fff}' " +
$"and serialno='{imeiDel}' " +
$"and is_display = true";
}
// 没有下推记录(历史遗留数据),没有初始的测量值产生的平均值(测量值=平均值)
else
{
#region 获取个人信息

var person = await _personCacheMgr.GetDeviceGpsPersonCacheBySerialNoAsync(Guid.NewGuid().ToString(), imeiDel).ConfigureAwait(false);
//验证这个信息是否存在
if (person == null || person?.Person.BornDate == null)
{
_logger.LogWarning($"{nameof(Worker)}--{imeiDel} 验证个人信息,找不到个人信息,跳过此消息");
return;
}
// 验证年龄是否在范围 (2 - 120)
var age = SafeType.SafeInt(DateTime.Today.Year - person?.Person.BornDate!.Value.Year!);
if (age < 2 || age > 120)
{
_logger.LogWarning($"{nameof(Worker)}--{imeiDel} 验证年龄,不在范围 (2 - 120)岁,跳过此消息");
return;
}

var gender = person?.Person.Gender == true ? 1 : 2;
var isHypertension = SafeType.SafeBool(person?.Person.Ishypertension!);
var height = SafeType.SafeDouble(person?.Person.Height!);
var weight = SafeType.SafeDouble(person?.Person.Weight!);

#endregion

#region 初始化常规血压标定值标定值
var bpRef = await _bpRefValCacheManager.GetBloodPressReferenceValueAsync(age, gender, isHypertension);
//systolicRefValue = bpRef!.Systolic;//?
//diastolicRefValue = bpRef!.Diastolic;//?
#endregion

systolicRefValue = bpRef!.Systolic;
diastolicRefValue = bpRef!.Diastolic;
lastPushSystolicInc = 0;
lastPushDiastolicInc = 0;
condition = $"ts <= '{startTime:yyyy-MM-dd HH:mm:ss.fff}' " +
$"and serialno='{imeiDel}' " +
$"and is_display = true";
}


systolicRefValue = lastPush!.SystolicRefValue;
diastolicRefValue = lastPush!.DiastolicRefValue;
lastPushSystolicInc = lastPush!.SystolicIncValue;
lastPushDiastolicInc = lastPush!.DiastolicIncValue;

condition = $"ts between '{lastPush?.Timestamp:yyyy-MM-dd HH:mm:ss.fff}' and '{startTime:yyyy-MM-dd HH:mm:ss.fff}' " +
$"and serialno='{imeiDel}' " +
$"and is_display = true";
var hmBpResponse = await _serviceTDengine.ExecuteSelectRestResponseAsync("stb_hm_bloodpress", condition);
var hmBpParser = JsonConvert.DeserializeObject<ParseTDengineRestResponse<BloodPressureModel>>(hmBpResponse!);
var hmBp = hmBpParser?.Select();
@@ -403,7 +454,7 @@ namespace HealthMonitor.WebApi
_logger.LogInformation($"向{imeiDel}统计数据已经失效");
}
#endregion

}



Laden…
Abbrechen
Speichern