using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace IStation.RedisCache
{
///
/// 监测记录缓存辅助类
///
public class MonitorRecordCacheHelper
{
//监测记录
private const string _flag = "monitor-record";
//最后一条记录
private const string _lastRecord = "last-record";
//最后一条正常记录
private const string _lastNormalRecord = "last-normal-record";
//最后一条不正常记录
private const string _lastAbnormalRecord = "last-abnormal-record";
//Redis客户端辅助类对象
private readonly RedisClientHelper _redisClient = new RedisClientHelper();
//获取 RedisKey前缀
private static string GetRedisKeyPrefix(long CorpID, long MonitorPointID)
{
return $"{RedisKeyHelper.CreateKey(_flag)}:{CorpID}-{MonitorPointID}-";
}
//创建RedisKey
private static string CreateRedisKey(long CorpID, long MonitorPointID, long SignalID)
{
return $"{RedisKeyHelper.CreateKey(_flag)}:{CorpID}-{MonitorPointID}-{SignalID}";
}
#region 记录(只允许获取)
///
/// 获取最后一条记录
///
public Model.MonitorBasicRecord GetLastRecord(long CorpID, long MonitorPointID, long SignalID)
{
return GetLastRecord(CorpID, MonitorPointID, SignalID);
}
///
/// 获取最后一条记录
///
public List GetLastRecord(long CorpID,long MonitorPointID,IEnumerable SignalIds)
{
return GetLastRecord(CorpID, MonitorPointID,SignalIds);
}
///
/// 获取最后一条记录
///
public List GetLastRecord(long CorpID, Dictionary dict)
{
return GetLastRecord(CorpID, dict);
}
///
/// 获取最后一条记录
///
public List GetLastRecord(long CorpID, long MonitorPointID)
{
return GetLastRecord(CorpID, MonitorPointID);
}
///
/// 获取最后一条记录
///
public List GetLastRecord(long CorpID, IEnumerable MonitorPointIds)
{
return GetLastRecord(CorpID, MonitorPointIds);
}
///
/// 获取最后一条正常记录
///
public Model.MonitorBasicRecord GetLastNormalRecord(long CorpID, long MonitorPointID, long SignalID)
{
return GetLastNormalRecord(CorpID, MonitorPointID, SignalID);
}
///
/// 获取最后一条正常记录
///
public List GetLastNormalRecord(long CorpID, long MonitorPointID, IEnumerable SignalIds)
{
return GetLastNormalRecord(CorpID, MonitorPointID,SignalIds);
}
///
/// 获取最后一条正常记录
///
public List GetLastNormalRecord(long CorpID, Dictionary dict)
{
return GetLastNormalRecord(CorpID, dict);
}
///
/// 获取最后一条正常记录
///
public List GetLastNormalRecord(long CorpID, long MonitorPointID)
{
return GetLastNormalRecord(CorpID, MonitorPointID);
}
///
/// 获取最后一条正常记录
///
public List GetLastNormalRecord(long CorpID, IEnumerable MonitorPointIds)
{
return GetLastNormalRecord(CorpID,MonitorPointIds);
}
//
/// 获取最后一条不正常记录
///
public Model.MonitorBasicRecord GetLastAbnormalRecord(long CorpID, long MonitorPointID, long SignalID)
{
return GetLastAbnormalRecord(CorpID, MonitorPointID, SignalID);
}
///
/// 获取最后一条不正常记录
///
public List GetLastAbnormalRecord(long CorpID, long MonitorPointID, IEnumerable SignalIds)
{
return GetLastAbnormalRecord(CorpID, MonitorPointID,SignalIds);
}
///
/// 获取最后一条不正常记录
///
public List GetLastAbnormalRecord(long CorpID, Dictionary dict)
{
return GetLastAbnormalRecord(CorpID, dict);
}
///
/// 获取最后一条不正常记录
///
public List GetLastAbnormalRecord(long CorpID, long MonitorPointID)
{
return GetLastAbnormalRecord(CorpID, MonitorPointID);
}
///
/// 获取最后一条不正常记录
///
public List GetLastAbnormalRecord(long CorpID, IEnumerable MonitorPointIds)
{
return GetLastAbnormalRecord(CorpID, MonitorPointIds);
}
#endregion
#region 实时记录
///
/// 设置最近一条实时记录
///
public void SetLastRealRecord(Model.MonitorRealRecordPure model)
{
SetLastRecord(model);
}
///
/// 设置最近一条实时记录
///
public void SetLastRealRecord(IEnumerable list)
{
SetLastRecord(list);
}
///
/// 获取最后一条实时记录
///
public Model.MonitorRealRecordPure GetLastRealRecord(long CorpID, long MonitorPointID, long SignalID)
{
return GetLastRecord(CorpID, MonitorPointID, SignalID);
}
///
/// 获取最后一条实时记录
///
public List GetLastRealRecord(long CorpID, long MonitorPointID, IEnumerable SignalIds)
{
return GetLastRecord(CorpID, MonitorPointID, SignalIds);
}
///
/// 获取最后一条实时记录
///
public List GetLastRealRecord(long CorpID, Dictionary dict)
{
return GetLastRecord(CorpID,dict);
}
///
/// 获取最后一条实时记录
///
public List GetLastRealRecord(long CorpID, long MonitorPointID)
{
return GetLastRecord(CorpID,MonitorPointID);
}
///
/// 获取最后一条实时记录
///
public List GetLastRealRecord(long CorpID, IEnumerable MonitorPointIds)
{
return GetLastRecord(CorpID,MonitorPointIds);
}
///
/// 获取最后一条实时正常记录
///
public Model.MonitorRealRecordPure GetLastNormalRealRecord(long CorpID, long MonitorPointID, long SignalID)
{
return GetLastNormalRecord(CorpID, MonitorPointID, SignalID);
}
///
/// 获取最后一条实时正常记录
///
public List GetLastNormalRealRecord(long CorpID, Dictionary dict)
{
return GetLastNormalRecord(CorpID, dict);
}
///
/// 获取最后一条实时正常记录
///
public List GetLastNormalRealRecord(long CorpID, long MonitorPointID)
{
return GetLastNormalRecord(CorpID, MonitorPointID);
}
///
/// 获取最后一条实时正常记录
///
public List GetLastNormalRealRecord(long CorpID, IEnumerable MonitorPointIds)
{
return GetLastNormalRecord(CorpID, MonitorPointIds);
}
#endregion
#region 时记录
///
/// 设置最近一条时记录
///
public void SetLastHourRecord(Model.MonitorHourRecordPure model)
{
SetLastRecord(model);
}
///
/// 设置最近一条时记录
///
public void SetLastHourRecord(IEnumerable list)
{
SetLastRecord(list);
}
///
/// 获取最后一条时记录
///
public Model.MonitorHourRecordPure GetLastHourRecord(long CorpID, long MonitorPointID, long SignalID)
{
return GetLastRecord(CorpID, MonitorPointID, SignalID);
}
///
///获取最后一条时记录
///
public List GetLastHourRecord(long CorpID, long MonitorPointID,IEnumerable SignalIds)
{
return GetLastRecord(CorpID, MonitorPointID,SignalIds);
}
///
///获取最后一条时记录
///
public List GetLastHourRecord(long CorpID, Dictionary dict)
{
return GetLastRecord(CorpID, dict);
}
///
/// 获取最后一条时记录
///
public List GetLastHourRecord(long CorpID, long MonitorPointID)
{
return GetLastRecord(CorpID, MonitorPointID);
}
///
/// 获取最后一条时记录
///
public List GetLastHourRecord(long CorpID, IEnumerable MonitorPointIds)
{
return GetLastRecord(CorpID, MonitorPointIds);
}
///
/// 获取最后一条正常时记录
///
public Model.MonitorHourRecordPure GetLastNormalHourRecord(long CorpID, long MonitorPointID, long SignalID)
{
return GetLastNormalRecord(CorpID, MonitorPointID, SignalID);
}
///
///获取最后一条正常时记录
///
public List GetLastNormalHourRecord(long CorpID, Dictionary dict)
{
return GetLastNormalRecord(CorpID, dict);
}
///
/// 获取最后一条正常时记录
///
public List GetLastNormalHourRecord(long CorpID, long MonitorPointID)
{
return GetLastNormalRecord(CorpID, MonitorPointID);
}
///
/// 获取最后一条正常时记录
///
public List GetLastNormalHourRecord(long CorpID, IEnumerable MonitorPointIds)
{
return GetLastNormalRecord(CorpID, MonitorPointIds);
}
#endregion
#region 日记录
///
/// 设置最近一条日记录
///
public void SetLastDayRecord(Model.MonitorDayRecordPure model)
{
SetLastRecord(model);
}
///
/// 设置最近一条日记录
///
public void SetLastDayRecord(IEnumerable list)
{
SetLastRecord(list);
}
///
/// 获取最后一条日记录
///
public Model.MonitorDayRecordPure GetLastDayRecord(long CorpID, long MonitorPointID, long SignalID)
{
return GetLastRecord(CorpID, MonitorPointID, SignalID);
}
///
///获取最后一条日记录
///
public List GetLastDayRecord(long CorpID, long MonitorPointID, IEnumerable SignalIds)
{
return GetLastRecord(CorpID, MonitorPointID, SignalIds);
}
///
///获取最后一条日记录
///
public List GetLastDayRecord(long CorpID, Dictionary dict)
{
return GetLastRecord(CorpID, dict);
}
///
/// 获取最后一条日记录
///
public List GetLastDayRecord(long CorpID, long MonitorPointID)
{
return GetLastRecord(CorpID, MonitorPointID);
}
///
/// 获取最后一条日记录
///
public List GetLastDayRecord(long CorpID, IEnumerable MonitorPointIds)
{
return GetLastRecord(CorpID, MonitorPointIds);
}
///
/// 获取最后一条正常日记录
///
public Model.MonitorDayRecordPure GetLastNormalDayRecord(long CorpID, long MonitorPointID, long SignalID)
{
return GetLastNormalRecord(CorpID, MonitorPointID, SignalID);
}
///
///获取最后一条正常日记录
///
public List GetLastNormalDayRecord(long CorpID, Dictionary dict)
{
return GetLastNormalRecord(CorpID, dict);
}
///
/// 获取最后一条正常日记录
///
public List GetLastNormalDayRecord(long CorpID, long MonitorPointID)
{
return GetLastNormalRecord(CorpID, MonitorPointID);
}
///
/// 获取最后一条正常日记录
///
public List GetLastNormalDayRecord(long CorpID, IEnumerable MonitorPointIds)
{
return GetLastNormalRecord(CorpID, MonitorPointIds);
}
#endregion
#region 周记录
///
/// 设置最近一条周记录
///
public void SetLastWeekRecord(Model.MonitorWeekRecordPure model)
{
SetLastRecord(model);
}
///
/// 设置最近一条周记录
///
public void SetLastWeekRecord(IEnumerable list)
{
SetLastRecord(list);
}
///
/// 获取最后一条周记录
///
public Model.MonitorWeekRecordPure GetLastWeekRecord(long CorpID, long MonitorPointID, long SignalID)
{
return GetLastRecord(CorpID, MonitorPointID, SignalID);
}
///
///获取最后一条周记录
///
public List GetLastWeekRecord(long CorpID, long MonitorPointID, IEnumerable SignalIds)
{
return GetLastRecord(CorpID, MonitorPointID, SignalIds);
}
///
///获取最后一条周记录
///
public List GetLastWeekRecord(long CorpID, Dictionary dict)
{
return GetLastRecord(CorpID, dict);
}
///
/// 获取最后一条周记录
///
public List GetLastWeekRecord(long CorpID, long MonitorPointID)
{
return GetLastRecord(CorpID, MonitorPointID);
}
///
/// 获取最后一条周记录
///
public List GetLastWeekRecord(long CorpID, IEnumerable MonitorPointIds)
{
return GetLastRecord(CorpID, MonitorPointIds);
}
///
/// 获取最后一条正常周记录
///
public Model.MonitorWeekRecordPure GetLastNormalWeekRecord(long CorpID, long MonitorPointID, long SignalID)
{
return GetLastNormalRecord(CorpID, MonitorPointID, SignalID);
}
///
///获取最后一条正常周记录
///
public List GetLastNormalWeekRecord(long CorpID, Dictionary dict)
{
return GetLastNormalRecord(CorpID, dict);
}
///
/// 获取最后一条正常周记录
///
public List GetLastNormalWeekRecord(long CorpID, long MonitorPointID)
{
return GetLastNormalRecord(CorpID, MonitorPointID);
}
///
/// 获取最后一条正常周记录
///
public List GetLastNormalWeekRecord(long CorpID, IEnumerable MonitorPointIds)
{
return GetLastNormalRecord(CorpID, MonitorPointIds);
}
#endregion
#region 月记录
///
/// 设置最近一条月记录
///
public void SetLastMonthRecord(Model.MonitorMonthRecordPure model)
{
SetLastRecord(model);
}
///
/// 设置最近一条月记录
///
public void SetLastMonthRecord(IEnumerable list)
{
SetLastRecord(list);
}
///
/// 获取最后一条月记录
///
public Model.MonitorMonthRecordPure GetLastMonthRecord(long CorpID, long MonitorPointID, long SignalID)
{
return GetLastRecord(CorpID, MonitorPointID, SignalID);
}
///
///获取最后一条月记录
///
public List GetLastMonthRecord(long CorpID, long MonitorPointID, IEnumerable SignalIds)
{
return GetLastRecord(CorpID, MonitorPointID, SignalIds);
}
///
///获取最后一条月记录
///
public List GetLastMonthRecord(long CorpID, Dictionary dict)
{
return GetLastRecord(CorpID, dict);
}
///
/// 获取最后一条月记录
///
public List GetLastMonthRecord(long CorpID, long MonitorPointID)
{
return GetLastRecord(CorpID, MonitorPointID);
}
///
/// 获取最后一条月记录
///
public List GetLastMonthRecord(long CorpID, IEnumerable MonitorPointIds)
{
return GetLastRecord(CorpID, MonitorPointIds);
}
///
/// 获取最后一条正常月记录
///
public Model.MonitorMonthRecordPure GetLastNormalMonthRecord(long CorpID, long MonitorPointID, long SignalID)
{
return GetLastNormalRecord(CorpID, MonitorPointID, SignalID);
}
///
///获取最后一条正常月记录
///
public List GetLastNormalMonthRecord(long CorpID, Dictionary dict)
{
return GetLastNormalRecord(CorpID, dict);
}
///
/// 获取最后一条正常月记录
///
public List GetLastNormalMonthRecord(long CorpID, long MonitorPointID)
{
return GetLastNormalRecord(CorpID, MonitorPointID);
}
///
/// 获取最后一条正常月记录
///
public List GetLastNormalMonthRecord(long CorpID, IEnumerable MonitorPointIds)
{
return GetLastNormalRecord(CorpID, MonitorPointIds);
}
#endregion
#region 年记录
///
/// 设置最近一条年记录
///
public void SetLastYearRecord(Model.MonitorYearRecordPure model)
{
SetLastRecord(model);
}
///
/// 设置最近一条年记录
///
public void SetLastYearRecord(IEnumerable list)
{
SetLastRecord(list);
}
///
/// 获取最后一条年记录
///
public Model.MonitorYearRecordPure GetLastYearRecord(long CorpID, long MonitorPointID, long SignalID)
{
return GetLastRecord(CorpID, MonitorPointID, SignalID);
}
///
///获取最后一条年记录
///
public List GetLastYearRecord(long CorpID, long MonitorPointID, IEnumerable SignalIds)
{
return GetLastRecord(CorpID, MonitorPointID, SignalIds);
}
///
///获取最后一条年记录
///
public List GetLastYearRecord(long CorpID, Dictionary dict)
{
return GetLastRecord(CorpID, dict);
}
///
/// 获取最后一条年记录
///
public List GetLastYearRecord(long CorpID, long MonitorPointID)
{
return GetLastRecord(CorpID, MonitorPointID);
}
///
/// 获取最后一条年记录
///
public List GetLastYearRecord(long CorpID, IEnumerable MonitorPointIds)
{
return GetLastRecord(CorpID, MonitorPointIds);
}
///
/// 获取最后一条正常年记录
///
public Model.MonitorYearRecordPure GetLastNormalYearRecord(long CorpID, long MonitorPointID, long SignalID)
{
return GetLastNormalRecord(CorpID, MonitorPointID, SignalID);
}
///
///获取最后一条正常年记录
///
public List GetLastNormalYearRecord(long CorpID, Dictionary dict)
{
return GetLastNormalRecord(CorpID, dict);
}
///
/// 获取最后一条正常年记录
///
public List GetLastNormalYearRecord(long CorpID, long MonitorPointID)
{
return GetLastNormalRecord(CorpID, MonitorPointID);
}
///
/// 获取最后一条正常年记录
///
public List GetLastNormalYearRecord(long CorpID, IEnumerable MonitorPointIds)
{
return GetLastNormalRecord(CorpID, MonitorPointIds);
}
#endregion
#region 最后一条记录
///
/// 设置最后一条记录
///
public void SetLastRecord(T t) where T : Model.MonitorBasicRecord
{
if (t == null)
return;
var redisKey = CreateRedisKey(t.CorpID, t.MonitorPointID, t.SignalID);
_redisClient.HashSetJosn(redisKey, _lastRecord, t);
if (t.DataStatus != null && (t.DataStatus.Contains(MonitorRecord.Status_DataFormatError) || t.DataStatus.Contains(MonitorRecord.Status_ConvertFailed) || t.DataStatus.Contains(MonitorRecord.Status_FilterFailed)))
{
_redisClient.HashSetJosn(redisKey, _lastAbnormalRecord, t);
}
else
{
_redisClient.HashSetJosn(redisKey, _lastNormalRecord, t);
}
}
///
/// 设置最后一条记录
///
public void SetLastRecord(IEnumerable list) where T : Model.MonitorBasicRecord
{
if (list == null || list.Count() < 1)
return;
foreach (var item in list)
{
SetLastRecord(item);
}
}
///
/// 获取最后一条记录
///
public T GetLastRecord(long CorpID, long MonitorPointID, long SignalID) where T : Model.MonitorBasicRecord
{
var redisKey = CreateRedisKey(CorpID, MonitorPointID, SignalID);
return _redisClient.HashGetJson(redisKey, _lastRecord);
}
///
/// 获取最后一条记录
///
public List GetLastRecord(long CorpID, long MonitorPointID, IEnumerable SignalIds) where T : Model.MonitorBasicRecord
{
if (SignalIds == null || SignalIds.Count() < 1)
return default;
return SignalIds.Select(x => GetLastRecord(CorpID, MonitorPointID, x)).Where(x => x != null).ToList();
}
///
/// 获取最后一条记录
///
public List GetLastRecord(long CorpID, Dictionary dict) where T : Model.MonitorBasicRecord
{
if (dict == null || dict.Count < 1)
return default;
return dict.Select(x => GetLastRecord(CorpID, x.Key, x.Value)).Where(x => x != null).ToList();
}
///
/// 获取最后一条记录
///
public List GetLastRecord(long CorpID, long MonitorPointID) where T : Model.MonitorBasicRecord
{
var key = GetRedisKeyPrefix(CorpID, MonitorPointID);
var allKeys = _redisClient.AllKeyStartWidth(key);
if (allKeys == null || allKeys.Count < 1)
return default;
var vm_list = new List();
foreach (var redisKey in allKeys)
{
var vm = _redisClient.HashGetJson(redisKey, _lastRecord);
if (vm != null)
{
vm_list.Add(vm);
}
}
return vm_list;
}
///
/// 获取最后一条记录
///
public List GetLastRecord(long CorpID, IEnumerable MonitorPointIds) where T : Model.MonitorBasicRecord
{
if (MonitorPointIds == null || MonitorPointIds.Count() < 1)
return default;
var vm_list = new List();
foreach (var MonitorPointID in MonitorPointIds)
{
var vm = GetLastRecord(CorpID, MonitorPointID);
if (vm != null && vm.Count > 0)
{
vm_list.AddRange(vm);
}
}
return vm_list;
}
///
/// 获取最后一条正常记录
///
public T GetLastNormalRecord(long CorpID, long MonitorPointID, long SignalID) where T : Model.MonitorBasicRecord
{
var redisKey = CreateRedisKey(CorpID, MonitorPointID, SignalID);
return _redisClient.HashGetJson(redisKey, _lastNormalRecord);
}
///
/// 获取最后一条正常记录
///
public List GetLastNormalRecord(long CorpID, long MonitorPointID,IEnumerable SignalIds) where T : Model.MonitorBasicRecord
{
if (SignalIds == null || SignalIds.Count() < 1)
return default;
return SignalIds.Select(x => GetLastNormalRecord(CorpID, MonitorPointID, x)).Where(x => x != null).ToList();
}
///
/// 获取最后一条正常记录
///
public List GetLastNormalRecord(long CorpID, Dictionary dict) where T : Model.MonitorBasicRecord
{
if (dict == null || dict.Count < 1)
return default;
return dict.Select(x => GetLastNormalRecord(CorpID, x.Key, x.Value)).Where(x => x != null).ToList();
}
///
/// 获取最后一条正常记录
///
public List GetLastNormalRecord(long CorpID, long MonitorPointID) where T : Model.MonitorBasicRecord
{
var key = GetRedisKeyPrefix(CorpID, MonitorPointID);
var allKeys = _redisClient.AllKeyStartWidth(key);
if (allKeys == null || allKeys.Count < 1)
return default;
var vm_list = new List();
foreach (var redisKey in allKeys)
{
var vm = _redisClient.HashGetJson(redisKey, _lastNormalRecord);
if (vm != null)
{
vm_list.Add(vm);
}
}
return vm_list;
}
///
/// 获取最后一条正常记录
///
public List GetLastNormalRecord(long CorpID, IEnumerable MonitorPointIds) where T : Model.MonitorBasicRecord
{
if (MonitorPointIds == null || MonitorPointIds.Count() < 1)
return default;
var vm_list = new List();
foreach (var MonitorPointID in MonitorPointIds)
{
var vm = GetLastNormalRecord(CorpID, MonitorPointID);
if (vm != null && vm.Count > 0)
{
vm_list.AddRange(vm);
}
}
return vm_list;
}
///
/// 获取最后一条不正常记录
///
public T GetLastAbnormalRecord(long CorpID, long MonitorPointID, long SignalID) where T : Model.MonitorBasicRecord
{
var redisKey = CreateRedisKey(CorpID, MonitorPointID, SignalID);
return _redisClient.HashGetJson(redisKey, _lastAbnormalRecord);
}
///
/// 获取最后一条不正常记录
///
public List GetLastAbnormalRecord(long CorpID, long MonitorPointID, IEnumerable SignalIds) where T : Model.MonitorBasicRecord
{
if (SignalIds == null || SignalIds.Count() < 1)
return default;
return SignalIds.Select(x => GetLastAbnormalRecord(CorpID, MonitorPointID, x)).Where(x => x != null).ToList();
}
///
/// 获取最后一条不正常记录
///
public List GetLastAbnormalRecord(long CorpID, Dictionary dict) where T : Model.MonitorBasicRecord
{
if (dict == null || dict.Count < 1)
return default;
return dict.Select(x => GetLastAbnormalRecord(CorpID, x.Key, x.Value)).Where(x => x != null).ToList();
}
///
/// 获取最后一条不正常记录
///
public List GetLastAbnormalRecord(long CorpID, long MonitorPointID) where T : Model.MonitorBasicRecord
{
var key = GetRedisKeyPrefix(CorpID, MonitorPointID);
var allKeys = _redisClient.AllKeyStartWidth(key);
if (allKeys == null || allKeys.Count < 1)
return default;
var vm_list = new List();
foreach (var redisKey in allKeys)
{
var vm = _redisClient.HashGetJson(redisKey, _lastAbnormalRecord);
if (vm != null)
{
vm_list.Add(vm);
}
}
return vm_list;
}
///
/// 获取最后一条不正常记录
///
public List GetLastAbnormalRecord(long CorpID, IEnumerable MonitorPointIds) where T : Model.MonitorBasicRecord
{
if (MonitorPointIds == null || MonitorPointIds.Count() < 1)
return default;
var vm_list = new List();
foreach (var MonitorPointID in MonitorPointIds)
{
var vm = GetLastAbnormalRecord(CorpID, MonitorPointID);
if (vm != null && vm.Count > 0)
{
vm_list.AddRange(vm);
}
}
return vm_list;
}
#endregion
}
}