|
|
@@ -17,6 +17,7 @@ using TelpoDataService.Util.Clients; |
|
|
|
using TelpoDataService.Util.Models; |
|
|
|
using TelpoDataService.Util.QueryObjects; |
|
|
|
using HealthMonitor.Service.Cache; |
|
|
|
using HealthMonitor.Model.Cache; |
|
|
|
|
|
|
|
namespace HealthMonitor.Service.Biz |
|
|
|
{ |
|
|
@@ -174,9 +175,98 @@ namespace HealthMonitor.Service.Biz |
|
|
|
return flag; |
|
|
|
} |
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
///// <summary> |
|
|
|
///// 初次开通更新 gps_person remark和对应的缓存 |
|
|
|
///// </summary> |
|
|
|
///// <param name="imei"></param> |
|
|
|
///// <param name="systolicRefValue"></param> |
|
|
|
///// <param name="diastolicRefValue"></param> |
|
|
|
///// <param name="systolicIncValue"></param> |
|
|
|
///// <param name="diastolicIncValue"></param> |
|
|
|
///// <returns></returns> |
|
|
|
//public async Task<bool> UpdatePersonRemarksAsync0(string imei, int systolicRefValue, int diastolicRefValue,int systolicIncValue,int diastolicIncValue) |
|
|
|
//{ |
|
|
|
// var flag = false; |
|
|
|
// try |
|
|
|
// { |
|
|
|
// GeneralParam condition = new() |
|
|
|
// { |
|
|
|
// Filters = new List<QueryFilterCondition> { |
|
|
|
// new QueryFilterCondition { |
|
|
|
// Key=nameof(GpsDevice.Serialno), |
|
|
|
// Value=imei, |
|
|
|
// Operator= QueryOperatorEnum.Equal, |
|
|
|
// ValueType=QueryValueTypeEnum.String |
|
|
|
// } |
|
|
|
// }, |
|
|
|
// OrderBys = new List<OrderByCondition> { new OrderByCondition { Key = "serialno", IsDesc = true } } |
|
|
|
|
|
|
|
// }; |
|
|
|
// var person = await _gpsPersonApiClient.GetFirstAsync(condition, new RequestHeader() { RequestId = $"{imei}" }).ConfigureAwait(false); |
|
|
|
// // 若remark为空,更新person remark字段 |
|
|
|
// if (string.IsNullOrWhiteSpace(person?.Remarks)) |
|
|
|
// { |
|
|
|
// var newRemarkData = new |
|
|
|
// { |
|
|
|
// imei, |
|
|
|
// time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), |
|
|
|
// commandValue = new |
|
|
|
// { |
|
|
|
// systolicCalibrationValue = systolicRefValue, //收缩压标定值,值为0 表示不生效 |
|
|
|
// diastolicCalibrationValue = diastolicRefValue, //舒张压标定值,值为0表示不生效 |
|
|
|
// systolicIncValue, //收缩压显示增量,值为0 表示不生效 |
|
|
|
// diastolicIncValue //舒张压显示增量,值为0 表示不生效 |
|
|
|
// } |
|
|
|
// }; |
|
|
|
// person!.Remarks = $"is_blood_press:{JsonConvert.SerializeObject(newRemarkData)}|"; |
|
|
|
// await _gpsPersonApiClient.UpdateAsync(person, new RequestHeader() { RequestId = $"{imei}" }).ConfigureAwait(false); |
|
|
|
// _logger.LogInformation($"更新Person remarks字段|{person.Remarks}"); |
|
|
|
|
|
|
|
// // 更新缓存 |
|
|
|
// var personCache = await _personCacheMgr.GetDeviceGpsPersonCacheObjectBySerialNoAsync(new Guid().ToString(), imei).ConfigureAwait(false); |
|
|
|
|
|
|
|
// if (personCache != null) |
|
|
|
// { |
|
|
|
|
|
|
|
// //personCache.Person.Remarks = person!.Remarks; |
|
|
|
// personCache["person"]!["remarks"] = person!.Remarks; |
|
|
|
// bool cacheFlag= await _personCacheMgr.UpdateDeviceGpsPersonCacheObjectBySerialNoAsync(personCache, imei); |
|
|
|
|
|
|
|
// // flag = true; |
|
|
|
// if (cacheFlag) |
|
|
|
// { |
|
|
|
// flag = true; |
|
|
|
// _logger.LogInformation($"{imei} 更新缓存{nameof(UpdatePersonRemarksAsync)}成功,{JsonConvert.SerializeObject(personCache)}"); |
|
|
|
// } |
|
|
|
// else |
|
|
|
// { |
|
|
|
// flag = false; |
|
|
|
// _logger.LogInformation($"{imei} 更新缓存{nameof(UpdatePersonRemarksAsync)}失败,{JsonConvert.SerializeObject(personCache)}"); |
|
|
|
// } |
|
|
|
// } |
|
|
|
|
|
|
|
|
|
|
|
// //var url = $"{_configService.IotWebApiUrl}Device/UpdatePersonInfoCache?imei={imei}"; |
|
|
|
// //List<KeyValuePair<string, string>> headers = new() |
|
|
|
// //{ |
|
|
|
// // new KeyValuePair<string, string>("AuthKey", "key1") |
|
|
|
// //}; |
|
|
|
// //var res = await _httpHelper.HttpToGetAsync(url, headers).ConfigureAwait(false); |
|
|
|
// //_logger.LogInformation($"{imei} 更新缓存{nameof(UpdatePersonRemarksAsync)},响应:{res}"); |
|
|
|
// //var resJToken = JsonConvert.DeserializeObject(res ?? string.Empty) as JToken; |
|
|
|
// //flag = resJToken?["message"]?.ToString().Equals("ok") ?? false; |
|
|
|
// } |
|
|
|
// } |
|
|
|
// catch (Exception ex) |
|
|
|
// { |
|
|
|
// _logger.LogError($"{nameof(UpdatePersonRemarksAsync)} 更新个人信息异常:{ex.Message}, {ex.StackTrace}"); |
|
|
|
// } |
|
|
|
// return flag; |
|
|
|
//} |
|
|
|
|
|
|
|
/// <summary> |
|
|
|
/// 初次开通更新 gps_person remark和对应的缓存 |
|
|
|
/// 更新 gps_person remark缓存和数据库 |
|
|
|
/// </summary> |
|
|
|
/// <param name="imei"></param> |
|
|
|
/// <param name="systolicRefValue"></param> |
|
|
@@ -184,27 +274,17 @@ namespace HealthMonitor.Service.Biz |
|
|
|
/// <param name="systolicIncValue"></param> |
|
|
|
/// <param name="diastolicIncValue"></param> |
|
|
|
/// <returns></returns> |
|
|
|
public async Task<bool> UpdatePersonRemarksAsync(string imei, int systolicRefValue, int diastolicRefValue,int systolicIncValue,int diastolicIncValue) |
|
|
|
public async Task<bool> UpdatePersonRemarksAsync(string imei, int systolicRefValue, int diastolicRefValue, int systolicIncValue, int diastolicIncValue) |
|
|
|
{ |
|
|
|
var flag = false; |
|
|
|
try |
|
|
|
{ |
|
|
|
GeneralParam condition = new() |
|
|
|
{ |
|
|
|
Filters = new List<QueryFilterCondition> { |
|
|
|
new QueryFilterCondition { |
|
|
|
Key=nameof(GpsDevice.Serialno), |
|
|
|
Value=imei, |
|
|
|
Operator= QueryOperatorEnum.Equal, |
|
|
|
ValueType=QueryValueTypeEnum.String |
|
|
|
} |
|
|
|
}, |
|
|
|
OrderBys = new List<OrderByCondition> { new OrderByCondition { Key = "serialno", IsDesc = true } } |
|
|
|
|
|
|
|
}; |
|
|
|
var person = await _gpsPersonApiClient.GetFirstAsync(condition, new RequestHeader() { RequestId = $"{imei}" }).ConfigureAwait(false); |
|
|
|
// 若remark为空,更新person remark字段 |
|
|
|
if (string.IsNullOrWhiteSpace(person?.Remarks)) |
|
|
|
// 保证实时性,先更新缓存,再更新数据库 |
|
|
|
var personCache = await _personCacheMgr.GetDeviceGpsPersonCacheObjectBySerialNoAsync(new Guid().ToString(), imei).ConfigureAwait(false); |
|
|
|
if (personCache != null |
|
|
|
&& |
|
|
|
string.IsNullOrWhiteSpace(personCache["person"]!["remarks"]!.ToString()) |
|
|
|
) |
|
|
|
{ |
|
|
|
var newRemarkData = new |
|
|
|
{ |
|
|
@@ -218,43 +298,43 @@ namespace HealthMonitor.Service.Biz |
|
|
|
diastolicIncValue //舒张压显示增量,值为0 表示不生效 |
|
|
|
} |
|
|
|
}; |
|
|
|
person!.Remarks = $"is_blood_press:{JsonConvert.SerializeObject(newRemarkData)}|"; |
|
|
|
await _gpsPersonApiClient.UpdateAsync(person, new RequestHeader() { RequestId = $"{imei}" }).ConfigureAwait(false); |
|
|
|
_logger.LogInformation($"更新Person remarks字段|{person.Remarks}"); |
|
|
|
|
|
|
|
// 更新缓存 |
|
|
|
var personCache = await _personCacheMgr.GetDeviceGpsPersonCacheObjectBySerialNoAsync(new Guid().ToString(), imei).ConfigureAwait(false); |
|
|
|
|
|
|
|
if (personCache != null) |
|
|
|
var newRemarkStr = $"is_blood_press:{JsonConvert.SerializeObject(newRemarkData)}|"; |
|
|
|
personCache["person"]!["remarks"] = newRemarkStr; |
|
|
|
bool cacheFlag = await _personCacheMgr.UpdateDeviceGpsPersonCacheObjectBySerialNoAsync(personCache, imei); |
|
|
|
if (cacheFlag) |
|
|
|
{ |
|
|
|
|
|
|
|
//personCache.Person.Remarks = person!.Remarks; |
|
|
|
personCache["person"]!["remarks"] = person!.Remarks; |
|
|
|
bool cacheFlag= await _personCacheMgr.UpdateDeviceGpsPersonCacheObjectBySerialNoAsync(personCache, imei); |
|
|
|
|
|
|
|
// flag = true; |
|
|
|
if (cacheFlag) |
|
|
|
GeneralParam condition = new() |
|
|
|
{ |
|
|
|
flag = true; |
|
|
|
_logger.LogInformation($"{imei} 更新缓存{nameof(UpdatePersonRemarksAsync)}成功,{JsonConvert.SerializeObject(personCache)}"); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
flag = false; |
|
|
|
_logger.LogInformation($"{imei} 更新缓存{nameof(UpdatePersonRemarksAsync)}失败,{JsonConvert.SerializeObject(personCache)}"); |
|
|
|
} |
|
|
|
Filters = new List<QueryFilterCondition> { |
|
|
|
new QueryFilterCondition { |
|
|
|
Key=nameof(GpsDevice.Serialno), |
|
|
|
Value=imei, |
|
|
|
Operator= QueryOperatorEnum.Equal, |
|
|
|
ValueType=QueryValueTypeEnum.String |
|
|
|
} |
|
|
|
}, |
|
|
|
OrderBys = new List<OrderByCondition> { new OrderByCondition { Key = "serialno", IsDesc = true } } |
|
|
|
|
|
|
|
}; |
|
|
|
_logger.LogInformation($"{imei} 更新缓存{nameof(UpdatePersonRemarksAsync)}成功,{JsonConvert.SerializeObject(personCache)}"); |
|
|
|
// 读取数据库 |
|
|
|
var person = await _gpsPersonApiClient.GetFirstAsync(condition, new RequestHeader() { RequestId = $"{imei}" }).ConfigureAwait(false); |
|
|
|
// 更新字段 |
|
|
|
person!.Remarks = newRemarkStr; |
|
|
|
await _gpsPersonApiClient.UpdateAsync(person, new RequestHeader() { RequestId = $"{imei}" }).ConfigureAwait(false); |
|
|
|
_logger.LogInformation($"更新Person remarks字段|{person.Remarks}"); |
|
|
|
|
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
_logger.LogInformation($"{imei} 更新缓存和数据库{nameof(UpdatePersonRemarksAsync)}失败,{JsonConvert.SerializeObject(personCache)}"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//var url = $"{_configService.IotWebApiUrl}Device/UpdatePersonInfoCache?imei={imei}"; |
|
|
|
//List<KeyValuePair<string, string>> headers = new() |
|
|
|
//{ |
|
|
|
// new KeyValuePair<string, string>("AuthKey", "key1") |
|
|
|
//}; |
|
|
|
//var res = await _httpHelper.HttpToGetAsync(url, headers).ConfigureAwait(false); |
|
|
|
//_logger.LogInformation($"{imei} 更新缓存{nameof(UpdatePersonRemarksAsync)},响应:{res}"); |
|
|
|
//var resJToken = JsonConvert.DeserializeObject(res ?? string.Empty) as JToken; |
|
|
|
//flag = resJToken?["message"]?.ToString().Equals("ok") ?? false; |
|
|
|
flag = cacheFlag; |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
_logger.LogInformation($"Person remarks数据异常,检查缓存和数据库"); |
|
|
|
} |
|
|
|
} |
|
|
|
catch (Exception ex) |
|
|
@@ -263,7 +343,6 @@ namespace HealthMonitor.Service.Biz |
|
|
|
} |
|
|
|
return flag; |
|
|
|
} |
|
|
|
|
|
|
|
/** 取消 |
|
|
|
public async Task<bool> UpdatePersonInfoCacheAsync(string imei) |
|
|
|
{ |
|
|
|