using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using IStation.RedisCache;
namespace IStation.Service
{
///
/// 实时监测记录
///
public partial class MonitorRealRecord
{
#region 最近一条记录
///
/// 获取最近一条记录
///
public Model.MonitorRealRecordPure GetLastRecord(long CorpID, long MonitorPointID, long SignalID)
{
var redisHelper = new MonitorRecordCacheHelper();
var record = redisHelper.GetLastRealRecord(CorpID, MonitorPointID, SignalID);
return record;
}
///
/// 获取最近一条记录
///
public List GetLastRecord(long CorpID, long MonitorPointID, IEnumerable SignalIds)
{
if (SignalIds == null || SignalIds.Count() < 1)
return default;
var redisHelper = new MonitorRecordCacheHelper();
var records = redisHelper.GetLastRealRecord(CorpID, MonitorPointID,SignalIds);
return records;
}
///
/// 获取最近一条记录
///
public List GetLastRecord(long CorpID, Dictionary dict)
{
if (dict == null || dict.Count < 1)
return default;
var redisHelper = new MonitorRecordCacheHelper();
var records = redisHelper.GetLastRealRecord(CorpID, dict);
return records;
}
///
/// 获取最近一条记录
///
public List GetLastRecord(long CorpID, long MonitorPointID)
{
var redisHelper = new MonitorRecordCacheHelper();
var records = redisHelper.GetLastRealRecord(CorpID, MonitorPointID);
return records;
}
///
/// 获取最近一条记录
///
public List GetLastRecord(long CorpID, IEnumerable MonitorPointIds)
{
if (MonitorPointIds == null || MonitorPointIds.Count() < 1)
return default;
var redisHelper = new MonitorRecordCacheHelper();
var records = redisHelper.GetLastRealRecord(CorpID, MonitorPointIds);
return records;
}
///
/// 获取最近一条正常记录
///
public Model.MonitorRealRecordPure GetLastNormalRecord(long CorpID, long MonitorPointID, long SignalID)
{
var redisHelper = new MonitorRecordCacheHelper();
var record = redisHelper.GetLastNormalRealRecord(CorpID, MonitorPointID, SignalID);
return record;
}
///
/// 获取最近一条正常记录
///
public List GetLastNormalRecord(long CorpID, Dictionary dict)
{
if (dict == null || dict.Count < 1)
return default;
var redisHelper = new MonitorRecordCacheHelper();
var records = redisHelper.GetLastNormalRealRecord(CorpID, dict);
return records;
}
///
/// 获取最近一条正常记录
///
public List GetLastNormalRecord(long CorpID, long MonitorPointID)
{
var redisHelper = new MonitorRecordCacheHelper();
var records = redisHelper.GetLastNormalRealRecord(CorpID, MonitorPointID);
return records;
}
///
/// 获取最近一条正常记录
///
public List GetLastNormalRecord(long CorpID, IEnumerable MonitorPointIds)
{
if (MonitorPointIds == null || MonitorPointIds.Count() < 1)
return default;
var redisHelper = new MonitorRecordCacheHelper();
var records = redisHelper.GetLastNormalRealRecord(CorpID, MonitorPointIds);
return records;
}
#endregion
#region 通过 MonitorPointID 获取
///
/// 通过 MonitorPointID 获取某一天的数据
///
public List GetByMonitorPointIDOfDay(long CorpID, long MonitorPointID, DateTime Day)
{
var dal = new DAL.MonitorRealRecord();
var entity_list = dal.GetByMonitorPointIDOfDay(CorpID, MonitorPointID, Day);
return Entity2Models(entity_list);
}
///
/// 通过 MonitorPointID 获取某一天固定数量的数据
///
public List GetFixedByMonitorPointIDOfDay(long CorpID, long MonitorPointID, DateTime Day, int Fixed)
{
var dal = new DAL.MonitorRealRecord();
var entity_list = dal.GetFixedByMonitorPointIDOfDay(CorpID, MonitorPointID, Day, Fixed);
return Entity2Models(entity_list);
}
///
/// 通过 MonitorPointID 获取某一天的内容数据
///
public List GetContentByMonitorPointIDOfDay(long CorpID, long MonitorPointID, DateTime Day)
{
var dal = new DAL.MonitorRealRecord();
var entity_list = dal.GetByMonitorPointIDOfDay(CorpID, MonitorPointID, Day);
return Entity2SignalContents(entity_list);
}
///
/// 通过 MonitorPointID 获取某一天固定数量的内容数据
///
public List GetFixedContentByMonitorPointIDOfDay(long CorpID, long MonitorPointID, DateTime Day, int Fixed)
{
var dal = new DAL.MonitorRealRecord();
var entity_list = dal.GetFixedByMonitorPointIDOfDay(CorpID, MonitorPointID, Day,Fixed);
return Entity2SignalContents(entity_list);
}
///
/// 通过 MonitorPointID 获取日期区间内的数据
///
public List GetByMonitorPointIDOfDayRange(long CorpID, long MonitorPointID, DateTime StartDay, DateTime EndDay)
{
if (StartDay.Date > EndDay.Date)
return default;
var dal = new DAL.MonitorRealRecord();
var entity_list = dal.GetByMonitorPointIDOfDayRange(CorpID, MonitorPointID, StartDay, EndDay);
return Entity2Models(entity_list);
}
///
/// 通过 MonitorPointID 获取日期区间内固定数量的数据
///
public List GetFixedByMonitorPointIDOfDayRange(long CorpID, long MonitorPointID, DateTime StartDay, DateTime EndDay, int Fixed)
{
if (StartDay.Date > EndDay.Date)
return default;
var dal = new DAL.MonitorRealRecord();
var entity_list = dal.GetFixedByMonitorPointIDOfDayRange(CorpID, MonitorPointID, StartDay, EndDay,Fixed);
return Entity2Models(entity_list);
}
///
/// 通过 MonitorPointID 获取日期区间内的内容数据
///
public List GetContentByMonitorPointIDOfDayRange(long CorpID, long MonitorPointID, DateTime StartDay, DateTime EndDay)
{
if (StartDay.Date > EndDay.Date)
return default;
var dal = new DAL.MonitorRealRecord();
var entity_list = dal.GetByMonitorPointIDOfDayRange(CorpID, MonitorPointID, StartDay, EndDay);
return Entity2SignalContents(entity_list);
}
///
/// 通过 MonitorPointID 获取日期区间内的内容数据
///
public List GetFixedContentByMonitorPointIDOfDayRange(long CorpID, long MonitorPointID, DateTime StartDay, DateTime EndDay, int Fixed)
{
if (StartDay.Date > EndDay.Date)
return default;
var dal = new DAL.MonitorRealRecord();
var entity_list = dal.GetFixedByMonitorPointIDOfDayRange(CorpID, MonitorPointID, StartDay, EndDay,Fixed);
return Entity2SignalContents(entity_list);
}
///
/// 通过 MonitorPointID 获取时间区间内的数据
///
public List GetByMonitorPointIDOfTimeRange(long CorpID, long MonitorPointID, DateTime StartTime, DateTime EndTime)
{
if (StartTime > EndTime)
return default;
var dal = new DAL.MonitorRealRecord();
var entity_list = dal.GetByMonitorPointIDOfTimeRange(CorpID, MonitorPointID, StartTime, EndTime);
return Entity2Models(entity_list);
}
///
/// 通过 MonitorPointID 获取时间区间内固定数量的数据
///
public List GetFixedByMonitorPointIDOfTimeRange(long CorpID, long MonitorPointID, DateTime StartTime, DateTime EndTime, int Fixed)
{
if (StartTime > EndTime)
return default;
var dal = new DAL.MonitorRealRecord();
var entity_list = dal.GetFixedByMonitorPointIDOfTimeRange(CorpID, MonitorPointID, StartTime, EndTime,Fixed);
return Entity2Models(entity_list);
}
///
/// 通过 MonitorPointID 获取时间区间内的内容数据
///
public List GetContentByMonitorPointIDOfTimeRange(long CorpID, long MonitorPointID, DateTime StartTime, DateTime EndTime)
{
if (StartTime > EndTime)
return default;
var dal = new DAL.MonitorRealRecord();
var entity_list = dal.GetByMonitorPointIDOfTimeRange(CorpID, MonitorPointID, StartTime, EndTime);
return Entity2SignalContents(entity_list);
}
///
/// 通过 MonitorPointID 获取时间区间内固定数量的内容数据
///
public List GetFixedContentByMonitorPointIDOfTimeRange(long CorpID, long MonitorPointID, DateTime StartTime, DateTime EndTime, int Fixed)
{
if (StartTime > EndTime)
return default;
var dal = new DAL.MonitorRealRecord();
var entity_list = dal.GetFixedByMonitorPointIDOfTimeRange(CorpID, MonitorPointID, StartTime, EndTime,Fixed);
return Entity2SignalContents(entity_list);
}
#endregion
#region 通过 SignalID 获取
///
/// 通过 SignalID 获取某一时刻数据
///
public Model.MonitorRealRecord GetBySignalIDOfDataTime(long CorpID, long MonitorPointID, long SignalID, DateTime DataTime)
{
var dal = new DAL.MonitorRealRecord();
var entity = dal.GetBySignalIDOfDataTime(CorpID,MonitorPointID,SignalID,DataTime);
return Entity2Model(entity);
}
///
/// 通过 SignalID 获取某天的数据
///
public List GetBySignalIDOfDay(long CorpID, long MonitorPointID, long SignalID, DateTime Day)
{
var dal = new DAL.MonitorRealRecord();
var entity_list = dal.GetBySignalIDOfDay(CorpID, MonitorPointID, SignalID, Day);
return Entity2Models(entity_list);
}
///
/// 通过 SignalID 获取某天的第一条数据
///
public Model.MonitorRealRecord GetFirstBySignalIDOfDay(long CorpID, long MonitorPointID, long SignalID, DateTime Day)
{
var dal = new DAL.MonitorRealRecord();
var entity = dal.GetFirstBySignalIDOfDay(CorpID,MonitorPointID,SignalID,Day);
return Entity2Model(entity);
}
///
/// 通过 SignalID 获取某天的最后一条数据
///
public Model.MonitorRealRecord GetLastBySignalIDOfDay(long CorpID, long MonitorPointID, long SignalID, DateTime Day)
{
var dal = new DAL.MonitorRealRecord();
var entity = dal.GetLastBySignalIDOfDay(CorpID, MonitorPointID, SignalID, Day);
return Entity2Model(entity);
}
///
/// 通过 SignalID 获取某天的数据
///
public List GetBySignalIdsOfDay(long CorpID, long MonitorPointID, IEnumerable SignalIds, DateTime Day)
{
if (SignalIds == null || SignalIds.Count() < 1)
return default;
var dal = new DAL.MonitorRealRecord();
var entity_list = dal.GetBySignalIdsOfDay(CorpID, MonitorPointID, SignalIds, Day);
return Entity2Models(entity_list);
}
///
/// 通过 SignalID 获取某天的内容数据
///
public List GetContentBySignalIDOfDay(long CorpID, long MonitorPointID, long SignalID, DateTime Day)
{
var dal = new DAL.MonitorRealRecord();
var entity_list = dal.GetBySignalIDOfDay(CorpID, MonitorPointID,SignalID, Day);
return Entity2Contents(entity_list);
}
///
/// 通过 SignalID 获取时间区间内的数据
///
public List GetBySignalIDOfTimeRange(long CorpID, long MonitorPointID, long SignalID, DateTime StartTime, DateTime EndTime)
{
if (StartTime > EndTime)
return default;
var dal = new DAL.MonitorRealRecord();
var entityList = dal.GetBySignalIDOfTimeRange(CorpID, MonitorPointID, SignalID, StartTime, EndTime);
var modelList= Entity2Models(entityList);
return modelList;
}
///
/// 通过 SignalID 获取时间区间内的固定数量的数据
///
public List GetFixedBySignalIDOfTimeRange(long CorpID, long MonitorPointID, long SignalID, int Fixed, DateTime StartTime, DateTime EndTime)
{
if (StartTime > EndTime)
return default;
var dal = new DAL.MonitorRealRecord();
var entityList = dal.GetFixedBySignalIDOfTimeRange(CorpID, MonitorPointID, SignalID, Fixed, StartTime, EndTime);
var modelList=Entity2Models(entityList);
return modelList;
}
///
/// 通过 SignalID 获取时间区间内的内容数据
///
public List GetContentBySignalIDOfTimeRange(long CorpID, long MonitorPointID, long SignalID, DateTime StartTime, DateTime EndTime)
{
if (StartTime > EndTime)
return default;
var dal = new DAL.MonitorRealRecord();
var entity_list = dal.GetBySignalIDOfTimeRange(CorpID,MonitorPointID,SignalID,StartTime,EndTime);
return Entity2Contents(entity_list);
}
///
/// 通过 SignalID 获取时间区间内的基础内容数据
///
public List GetBasicContentBySignalIDOfTimeRange(long CorpID, long MonitorPointID, long SignalID, DateTime StartTime, DateTime EndTime)
{
if (StartTime > EndTime)
return default;
var dal = new DAL.MonitorRealRecord();
var entity_list = dal.GetBySignalIDOfTimeRange(CorpID, MonitorPointID, SignalID, StartTime, EndTime);
return Entity2BasicContents(entity_list);
}
///
/// 通过 SignalID 获取时间区间内的固定数量的基础内容数据
///
public List GetFixedBasicContentBySignalIDOfTimeRange(long CorpID, long MonitorPointID, long SignalID, int Fixed, DateTime StartTime, DateTime EndTime)
{
if (StartTime > EndTime)
return default;
var dal = new DAL.MonitorRealRecord();
var entity_list = dal.GetFixedBySignalIDOfTimeRange(CorpID, MonitorPointID, SignalID,Fixed, StartTime, EndTime);
return Entity2BasicContents(entity_list);
}
#endregion
#region Insert
///
/// 插入一条
///
public long Insert(Model.MonitorRealRecordPure model)
{
if (model == null)
return default;
var dal = new DAL.MonitorRealRecord();
var entity = Model2Entity(model);
var id = dal.Insert(entity);
return id;
}
///
/// 插入多条
///
public bool Inserts(List list)
{
if (list == null || list.Count < 1)
return false;
var dal = new DAL.MonitorRealRecord();
var entity_list = Model2Entities(list);
var bol = dal.Inserts(entity_list);
return bol;
}
///
/// 插入
///
public bool Insert(long CorpID,List list)
{
if (list == null || list.Count < 1)
return default;
var models = list.Select(x => new Model.MonitorRealRecordPure()
{
CorpID = CorpID,
MonitorPointID = x.MonitorPointID,
SignalID = x.SignalID,
RecordType = x.RecordType,
SrcTime = x.SrcTime,
SrcValue = x.SrcValue,
DataTime = x.DataTime,
DataValue = x.DataValue,
DataStatus = x.DataStatus?.ToList()
}).ToList();
return Inserts(models);
}
///
/// 插入最近一条记录
///
public bool InsertLastRecord(Model.MonitorRealRecordPure model)
{
if (model == null)
return default;
var queueHelper = new RabbitMqQueueHelper();
var bol = queueHelper.Push(ConfigHelper.StoreQueueName, new Model.MonitorStoreCorpRecord()
{
CorpID = model.CorpID,
Records = new List()
{
Pure2Store(model)
}
});
if (bol)
{
var redisHelper = new MonitorRecordCacheHelper();
redisHelper.SetLastRealRecord(model);
}
return bol;
}
///
/// 插入最近多条记录
///
public bool InsertsLastRecord(List list)
{
if (list == null || list.Count() < 1)
return default;
var queueHelper = new RabbitMqQueueHelper();
var bol = queueHelper.Push(ConfigHelper.StoreQueueName, new Model.MonitorStoreCorpRecord()
{
CorpID = list.First().CorpID,
Records = Pure2Stores(list)
}) ;
if (bol)
{
var redisHelper = new MonitorRecordCacheHelper();
redisHelper.SetLastRealRecord(list);
}
return bol;
}
///
/// 补录一条
///
public bool InsertSupplement(Model.MonitorRealRecordPure model)
{
if (model == null)
{
return default;
}
var queueHelper = new RabbitMqQueueHelper();
var bol = queueHelper.Push(ConfigHelper.StoreQueueName, new Model.MonitorStoreCorpRecord()
{
CorpID = model.CorpID,
Records =new List() { Pure2Store(model) }
}); ;
return bol;
}
///
/// 补录多条
///
public bool InsertsSupplement(List list)
{
if (list == null || list.Count() < 1)
{
return default;
}
var corpIds = list.Select(x => x.CorpID).Distinct().ToList();
if (corpIds.Count > 1)
{
return default;
}
var queueHelper = new RabbitMqQueueHelper();
var bol = queueHelper.Push(ConfigHelper.StoreQueueName, new Model.MonitorStoreCorpRecord()
{
CorpID = corpIds[0],
Records = Pure2Stores(list)
});
return bol;
}
///
/// 重录一条
///
public bool InsertAgain(Model.MonitorRealRecordPure model)
{
if (model == null)
return false;
var dal = new DAL.MonitorRealRecord();
var result= dal.DeleteBySignalIDOfDataTime(model.CorpID,model.MonitorPointID,model.SignalID,model.DataTime);
if (!result)
{
LogHelper.Info($"重录一条监测实时记录中,CorpID:{model.CorpID},MonitorPointID:{model.MonitorPointID},SignalID:{model.SignalID},DataTime:{model.DataTime:yyyy-MM-dd HH:mm:ss},未检索到已存在记录!");
}
var queueHelper = new RabbitMqQueueHelper();
var bol = queueHelper.Push(ConfigHelper.StoreQueueName, new Model.MonitorStoreCorpRecord()
{
CorpID = model.CorpID,
Records = new List() { Pure2Store(model) }
}); ;
return bol;
}
///
/// 重录多条
///
public bool InsertsAgain(List list)
{
if (list == null || list.Count < 1)
return false;
var corpIds = list.Select(x => x.CorpID).Distinct().ToList();
if (corpIds.Count > 1)
{
return default;
}
var groupList = list.GroupBy(x => new { x.CorpID, x.MonitorPointID, x.SignalID }).ToList();
var dal = new DAL.MonitorRealRecord();
foreach (var group in groupList)
{
var startTime = group.Min(x=>x.DataTime);
var endTime = group.Max(x=>x.DataTime);
var result = dal.DeleteBySignalIDOfTimeRange(group.Key.CorpID, group.Key.MonitorPointID, group.Key.SignalID, startTime, endTime);
if (!result)
{
LogHelper.Info($"重录多条监测实时记录中,CorpID:{group.Key.CorpID},MonitorPointID:{group.Key.MonitorPointID},SignalID:{group.Key.SignalID},StartTime:{startTime:yyyy-MM-dd HH:mm:ss},EndTime:{endTime:yyyy-MM-dd HH:mm:ss},未检索到已存在记录!");
}
}
var queueHelper = new RabbitMqQueueHelper();
var bol = queueHelper.Push(ConfigHelper.StoreQueueName, new Model.MonitorStoreCorpRecord()
{
CorpID = corpIds[0],
Records = Pure2Stores(list)
});
return bol;
}
#endregion
#region Update
///
/// 更新一条
///
public bool Update(Model.MonitorRealRecord model)
{
if (model == null)
return default;
var dal = new DAL.MonitorRealRecord();
var entity = Model2Entity(model);
var bol = dal.Update(entity);
return bol;
}
///
/// 批量更新
///
public bool Updates(List list)
{
if (list == null || list.Count < 1)
return default;
var dal = new DAL.MonitorRealRecord();
var entityList = Model2Entities(list);
var bol = dal.Updates(entityList);
return bol;
}
#endregion
}
}