Sfoglia il codice sorgente

定时开始时间

datasub12_previous
H Vs 1 anno fa
parent
commit
91f93b6cc8
1 ha cambiato i file con 15 aggiunte e 298 eliminazioni
  1. +15
    -298
      HealthMonitor.WebApi/Worker.cs

+ 15
- 298
HealthMonitor.WebApi/Worker.cs Vedi File

@@ -180,6 +180,12 @@ namespace HealthMonitor.WebApi

int systolicMax = 0;
int diastolicMax = 0;

// 统计时间
//DateTime endTime = DateTime.Now; //测试
DateTime statStartTime = DateTime.Now;


// 最小值
int systolicMin = 0;
int diastolicMin = 0;
@@ -235,6 +241,8 @@ namespace HealthMonitor.WebApi
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";
// 使用最近一次的下推时间作为统计的开始时间
statStartTime= lastPush!.Timestamp;
}
// 没有下推记录(历史遗留数据),没有初始的测量值产生的平均值(测量值=平均值)
else
@@ -291,6 +299,12 @@ namespace HealthMonitor.WebApi
_logger.LogInformation($"{imeiDel} -- {nameof(Worker)} --{nameof(WatchEvents)} 没有足够的数据样本,不会定时下发");
break;
}
// 没有下推记录重新计算统计时间
if (lastPush == null)
{
var firstHmBp = hmBpParser?.Select(i=>i).OrderBy(i=>i.Timestamp).FirstOrDefault();
statStartTime = firstHmBp!.Timestamp;
}

// NewMethod(systolicRefValue, hmBpParser);

@@ -350,7 +364,6 @@ namespace HealthMonitor.WebApi
var pushedBP = await _serviceIotWebApi.SetBloodPressCalibrationConfigAsync(bpIncData).ConfigureAwait(false);
if (pushedBP)
{

#region 保存下推记录 stb_hm_bp_push_ref_inc_value
var sql = $"INSERT INTO health_monitor.hm_bp_push_ref_inc_value_{imeiDel.Substring(imeiDel.Length - 2)} " +
$"USING health_monitor.stb_hm_bp_push_ref_inc_value " +
@@ -367,7 +380,7 @@ namespace HealthMonitor.WebApi
$"{diastolicAvg}," +
$"{systolicAvgOffset}," +
$"{diastolicAvgOffset}," +
$"'{lastPush?.Timestamp:yyyy-MM-dd HH:mm:ss.fff}'," +
$"'{statStartTime:yyyy-MM-dd HH:mm:ss.fff}'," +
$"'{startTime:yyyy-MM-dd HH:mm:ss.fff}'" +
$")";
_serviceTDengine.ExecuteInsertSQL(sql);
@@ -470,302 +483,6 @@ namespace HealthMonitor.WebApi

});
}

private static void NewMethod(int systolicRefValue, ParseTDengineRestResponse<BloodPressureModel>? hmBpParser)
{
var sortedList = hmBpParser?.Select(i => i)
.Where(i => i.IsDisplay.Equals(true))
.OrderByDescending(i => i.SystolicValue)
.ThenByDescending(i => i.DiastolicValue)
.ToList();
// 去除最大值和最小值各一个(列表的头和尾)
var trimmedList = sortedList?
.Skip(1)
.Take(sortedList.Count - 2)
.ToList();

// 去除异常值
var filteredList = trimmedList?.Where(bp => bp.SystolicValue < SafeType.SafeInt(systolicRefValue!)).ToList();

var systolicAvg1 = filteredList?.Select(bp => bp.SystolicValue).Average();
var diastolicAvg1 = filteredList?.Select(bp => bp.DiastolicValue).Average();
}

// private void WatchEvents(WatchResponse response)
// {

// response.Events.ToList().ForEach(async e =>
// {

// switch (e.Type.ToString())
// {
// case "Put":
// // 获取时间点计算TTL
// Console.BackgroundColor = ConsoleColor.Blue;
// Console.WriteLine($"--- {e.Type}--{e.Kv.Key.ToStringUtf8()}--{e.Kv.Value.ToStringUtf8()}---{DateTime.Now}");
// Console.BackgroundColor = ConsoleColor.Black;
// break;

// case "Delete":
// // TTL到了重新计算TTL,下发
// Console.BackgroundColor = ConsoleColor.Green;
// Console.WriteLine($"--- {e.Type}--{e.Kv.Key.ToStringUtf8()}--{e.Kv.Value.ToStringUtf8()}---{DateTime.Now}");

// // var key = $"health_moniter/schedule_push/imei/{bp.Serialno}";
// var key = e.Kv.Key.ToStringUtf8();
// var imeiDel = key.Split('/')[3];
// var schedule_push = await _serviceEtcd.GetValAsync(key).ConfigureAwait(false);
// if (string.IsNullOrWhiteSpace(schedule_push))
// {


// var startTime =DateTime.Now;
// // 下发增量值
// #region 定时下发增量值
// var last= await _serviceTDengine.GetLastAsync("stb_hm_bloodpress_stats_inc", $"serialno='{imeiDel}' order by last_update desc");
// var ts = last?[0];
// if (DateTime.TryParse(ts?.ToString(),out DateTime newTs))
// {
// // 7 天有效数据
// if (newTs.AddDays(7) > DateTime.Now)
// {
// Console.WriteLine(ts);
// var systolic_ref_value = last?[5];
// var diastolic_ref_value = last?[12];
// var systolic_inc_value = last?[10];
// var diastolic_inc_value = last?[17];

// #region 判断是否初始化remark


// // 判断是否初始化remark
// /**
// *
// var imei = imeiDel;
// var last_push = await _serviceTDengine.GetLastAsync("stb_hm_bp_push_ref_inc_value", $"serialno='{imei}' order by ts desc");
// if (last_push?.Count == 0)
// {
// var dataServiceBaseUrl = $"https://id.ssjlai.com/data";
// var DataServicePersionGet = $"{dataServiceBaseUrl}/api/GpsCard/GpsPerson/GetFirst";
// List<KeyValuePair<string, string>> Dataheaders = new()
// {
// new KeyValuePair<string, string>("requestId", $"{imei}")
// };
// var dataPersion = new
// {
// filters = new List<object>() { new { key = "serialno", value = $"{imei}", valueType = "string", @operator = "Equal" } },
// orderBys = new List<object>() { new { key = "serialno", isDesc = true } }
// };
// var resRef = await _httpHelper.HttpToPostAsync(DataServicePersionGet, dataPersion, Dataheaders).ConfigureAwait(false);
// var resObj = JsonConvert.DeserializeObject(resRef!) as JToken;
// var remark = resObj?["remarks"]?.ToString();

// // 修改数据库
// if (string.IsNullOrWhiteSpace(remark))
// {
// var newRemarkData = new
// {
// imei,
// time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
// commandValue = new
// {
// systolicCalibrationValue = systolic_ref_value, //收缩压标定值,值为0 表示不生效
// diastolicCalibrationValue = diastolic_ref_value, //舒张压标定值,值为0表示不生效
// systolicIncValue = 0, //收缩压显示增量,值为0 表示不生效
// diastolicIncValue = 0 //舒张压显示增量,值为0 表示不生效
// }
// };
// resObj!["remarks"] = $"is_blood_press:{JsonConvert.SerializeObject(newRemarkData)}|";
// var DataServicePersionUpdate = $"{dataServiceBaseUrl}/api/GpsCard/GpsPerson/Update";
// var resUpdate = await _httpHelper.HttpToPostAsync(DataServicePersionUpdate, resObj, Dataheaders).ConfigureAwait(false);
// _logger.LogInformation($"更新Person数据库|{resUpdate}");

// //更新缓存
// List<KeyValuePair<string, string>> headersCache = new()
// {
// new KeyValuePair<string, string>("AuthKey", "key1")
// };

// var cacheUrl = $"http://id.ssjlai.com/webapi/api/Device/UpdatePersonInfoCache?imei={imei}";
// var updateCache = await _httpHelper.HttpToGetAsync(cacheUrl, headersCache);
// _logger.LogInformation($"更新Person缓存|{updateCache}");
// }
// }
// */
// #endregion

// //var bpData = new
// //{
// // imei = imeiDel,
// // //systolicCalibrationValue = last?[5], //收缩压标定值,值为0 表示不生效
// // //diastolicCalibrationValue = last?[12], //舒张压标定值,值为0表示不生效
// // //systolicIncValue = last?[10], //收缩压显示增量,值为0 表示不生效
// // //diastolicIncValue = last?[17] //舒张压显示增量,值为0 表示不生效

// // systolicCalibrationValue = systolic_ref_value, //收缩压标定值,值为0 表示不生效
// // diastolicCalibrationValue = diastolic_ref_value, //舒张压标定值,值为0表示不生效
// // systolicIncValue = systolic_inc_value, //收缩压显示增量,值为0 表示不生效
// // diastolicIncValue = diastolic_inc_value //舒张压显示增量,值为0 表示不生效
// //};
// //var str = JsonConvert.SerializeObject(bpData);
// //var url = $"http://id.ssjlai.com/webapi/api/Command/SetBloodPressCalibrationConfig";
// //List<KeyValuePair<string, string>> headers = new()
// //{
// // new KeyValuePair<string, string>("AuthKey", "key1")
// //};
// //var res = await _httpHelper.HttpToPostAsync(url, bpData, headers).ConfigureAwait(false);
// //_logger.LogInformation($"向{imeiDel}下发增量值数据:{str},响应:{res}");
// //var resJToken = JsonConvert.DeserializeObject(res!) as JToken;


// //if (resJToken!["message"]!.ToString().Equals("ok"))
// Console.WriteLine($"{nameof(Worker)} 开启血压标定值下发: {_configBoodPressResolver.EnableBPRefPush}");
// // if (_configBoodPressResolver.EnableBPRefPush)
// if (false) // 临时关闭
// {
// BloodPressCalibrationConfigModel bpIncData = new()
// {

// Imei = imeiDel,
// SystolicRefValue = SafeType.SafeInt(((int)systolic_ref_value!)), //收缩压标定值,值为0 表示不生效
// DiastolicRefValue = SafeType.SafeInt(((int)diastolic_ref_value!)), //舒张压标定值,值为0表示不生效
// SystolicIncValue = SafeType.SafeInt(((int)systolic_inc_value!)), //收缩压显示增量,值为0 表示不生效
// DiastolicIncValue = SafeType.SafeInt(((int)diastolic_inc_value!)) //舒张压显示增量,值为0 表示不生效
// };
// var pushedBP = await _serviceIotWebApi.SetBloodPressCalibrationConfigAsync(bpIncData).ConfigureAwait(false);
// if (pushedBP)
// {

// #region 保存下推记录 stb_hm_bp_push_ref_inc_value
// var sql = $"INSERT INTO health_monitor.hm_bp_push_ref_inc_value_{imeiDel.Substring(imeiDel.Length - 2)} " +
// $"USING health_monitor.stb_hm_bp_push_ref_inc_value " +
// $"TAGS ('{imeiDel.Substring(imeiDel.Length - 2)}') " +
// $"VALUES(" +
// $"'{DateTime.Now:yyyy-MM-dd HH:mm:ss.fff}'," +
// $"'{imeiDel}'," +
// $"{systolic_ref_value}," +
// $"{diastolic_ref_value}," +
// $"{systolic_inc_value}," +
// $"{diastolic_inc_value}," +
// $"{false})";

// _serviceTDengine.ExecuteInsertSQL(sql);
// #endregion

// // 注册下次下推
// var endTime = DateTime.Now;




//#if DEBUG


// //long ttl = (long)((60 * 1000-(endTime-startTime).TotalMilliseconds)/1000);
// //await _serviceEtcd.PutValAsync(key, imeiDel,ttl, false).ConfigureAwait(false);

// var interval = 0;
// // 获取当前时间
// DateTime now = DateTime.Now;

// // 计算距离下一个$interval天后的8点的时间间隔
// DateTime nextRunTime = new DateTime(now.Year, now.Month, now.Day, now.Hour, now.Minute + 2, 0).AddDays(interval);
// TimeSpan timeUntilNextRun = nextRunTime - now;

// // 如果当前时间已经超过了8点,将等待到明天后的8点
// if (timeUntilNextRun < TimeSpan.Zero)
// {
// timeUntilNextRun = timeUntilNextRun.Add(TimeSpan.FromMinutes(1));
// nextRunTime += timeUntilNextRun;
// }

// // var ttl = timeUntilNextRun.TotalMilliseconds;
// long ttl = (long)((timeUntilNextRun.TotalMilliseconds - (endTime - startTime).TotalMilliseconds) / 1000);
// var data = new
// {
// imei = imeiDel,
// create_time = now.ToString("yyyy-MM-dd HH:mm:ss"),
// ttl,
// next_run_time = nextRunTime.ToString("yyyy-MM-dd HH:mm:ss")
// };
// var result = JsonConvert.SerializeObject(data);

// await _serviceEtcd.PutValAsync(key, result, ttl, false).ConfigureAwait(false);


//#else
// // 每$interval天,晚上8点
// var interval = 1;
// // 获取当前时间
// DateTime now = DateTime.Now;

// // 计算距离下一个$interval天后的8点的时间间隔
// DateTime nextRunTime = new DateTime(now.Year, now.Month, now.Day, 20, 0, 0).AddDays(interval);
// TimeSpan timeUntilNextRun = nextRunTime - now;

// // 如果当前时间已经超过了8点,将等待到明天后的8点
// if (timeUntilNextRun < TimeSpan.Zero)
// {
// timeUntilNextRun = timeUntilNextRun.Add(TimeSpan.FromDays(1));
// nextRunTime += timeUntilNextRun;
// }

// // var ttl = timeUntilNextRun.TotalMilliseconds;
// long ttl = (long)((timeUntilNextRun.TotalMilliseconds-(endTime-startTime).TotalMilliseconds)/1000);
// var data = new
// {
// imei = imeiDel,
// create_time = now.ToString("yyyy-MM-dd HH:mm:ss"),
// ttl,
// next_run_time = nextRunTime.ToString("yyyy-MM-dd HH:mm:ss")
// };
// var result = JsonConvert.SerializeObject(data);
// await _serviceEtcd.PutValAsync(key, result, ttl, false).ConfigureAwait(false);
//#endif


// }
// else
// {
// _logger.LogInformation($"错误响应,没有下推数据");
// }
// }
// }
// }
// else
// {
// _logger.LogInformation($"向{imeiDel}准备下推的数据已经失效ts,{ts}");
// }


// #endregion
// //if (imeiDel.Equals("861281060086216"))
// //{
// // var result = await _httpHelper.HttpToPostAsync(url, data, headers).ConfigureAwait(false);
// // _logger.LogInformation($"向{imeiDel}下发增量值数据:{str},响应:{result}");
// // Console.WriteLine(str);

// //}
// //Console.BackgroundColor = ConsoleColor.Black;

// }

// break;
// }

// });
// //if (response.Events.Count == 0)
// //{
// // Console.WriteLine(response);
// //}
// //else
// //{
// // Console.WriteLine($"{response.Events[0].Kv.Key.ToStringUtf8()}:{response.Events.Kv.Value.ToStringUtf8()}");
// //}
// }

}
}

Loading…
Annulla
Salva