using AutoMapper; 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 MonitorAlarmRecord { #region 最近记录 /// /// 通过 MonitorPointID 获取最近一条记录列表 /// public List GetLastRecordListByMonitorPointID(long CorpID, long MonitorPointID) { var list = new RedisCache.MonitorAlarmRecordCacheHelper().GetLastRecordList(CorpID,MonitorPointID); return list; } /// /// 通过 MonitorPointID 获取最近一条记录 /// public Model.MonitorAlarmRecordPure GetLastRecordByMonitorPointID(long CorpID, long MonitorPointID) { var list=new RedisCache.MonitorAlarmRecordCacheHelper().GetLastRecordList(CorpID, MonitorPointID); if (list == null || list.Count < 1) return default; return list.OrderBy(x => x.AlarmTime).Last(); } /// /// 通过 MonitorPointIds 获取最近一条记录 /// public List GetLastRecordByMonitorPointIds(long CorpID, IEnumerable MonitorPointIds) { if (MonitorPointIds == null || MonitorPointIds.Count() < 1) return default; var redisHelper = new RedisCache.MonitorAlarmRecordCacheHelper(); return MonitorPointIds.Select(x => { var list = redisHelper.GetLastRecordList(CorpID, x); return list?.OrderBy(x => x.AlarmTime).LastOrDefault(); }).Where(x => x != null).ToList(); } /// /// 通过 SignalID 获取最近一条记录列表 /// public List GetLastRecordListBySignalID(long CorpID, long MonitorPointID, long SignalID) { var list = new RedisCache.MonitorAlarmRecordCacheHelper().GetLastRecordList(CorpID, MonitorPointID,SignalID); return list; } /// /// 通过 SignalID 获取最近一条记录列表 /// public Model.MonitorAlarmRecordPure GetLastRecordBySignalID(long CorpID, long MonitorPointID, long SignalID) { var list = new RedisCache.MonitorAlarmRecordCacheHelper().GetLastRecordList(CorpID, MonitorPointID, SignalID); if (list == null || list.Count < 1) return default; return list.OrderBy(x => x.AlarmTime).Last(); } #endregion #region Query /// /// 通过 CorpID 获取 /// public List GetByCorpID(long CorpID) { var dal=new DAL.MonitorAlarmRecord(); var entity_list = dal.GetByCorpID(CorpID); var model_list = Entity2Models(entity_list); return model_list; } /// /// 通过 ID 获取 /// public Model.MonitorAlarmRecord GetByID(long CorpID, long ID) { var dal = new DAL.MonitorAlarmRecord(); var entity = dal.GetByID(CorpID, ID); var model = Entity2Model(entity); return model; } /// /// 通过 Ids 获取 /// public List GetByIds(long CorpID, List Ids) { if (Ids == null || Ids.Count() < 1) return default; var dal = new DAL.MonitorAlarmRecord(); var entity_list = dal.GetByIds(CorpID, Ids); var model_list = Entity2Models(entity_list); return model_list; } /// /// 通过 ConfigureID 获取 /// public List GetByConfigureID(long CorpID, long ConfigureID) { var dal = new DAL.MonitorAlarmRecord(); var entity_list = dal.GetByConfigureID(CorpID, ConfigureID); var model_list = Entity2Models(entity_list); return model_list; } /// /// 通过 ConfigureID 获取某天的数据 /// public List GetByConfigureIDOfDay(long CorpID, long ConfigureID, DateTime Day) { var dal = new DAL.MonitorAlarmRecord(); var entity_list = dal.GetByConfigureIDOfDay(CorpID, ConfigureID, Day); var model_list = Entity2Models(entity_list); return model_list; } /// /// 通过 MonitorPointID 获取 /// public List GetByMonitorPointID(long CorpID, long MonitorPointID) { var dal = new DAL.MonitorAlarmRecord(); var entity_list = dal.GetByMonitorPointID(CorpID, MonitorPointID); var model_list = Entity2Models(entity_list); return model_list; } /// /// 通过 MonitorPointID 获取某天的数据 /// public List GetByMonitorPointIDOfDay(long CorpID, long MonitorPointID, DateTime Day) { var dal = new DAL.MonitorAlarmRecord(); var entity_list = dal.GetByMonitorPointIDOfDay(CorpID, MonitorPointID, Day); var model_list = Entity2Models(entity_list); return model_list; } /// /// 通过 CorpID 获取最近一条 /// public Model.MonitorAlarmRecord GetLastByCorpID(long CorpID) { return GetLastByCorpID(CorpID, 1)?.FirstOrDefault(); } /// /// 通过 CorpID 获取最近几条 /// public List GetLastByCorpID(long CorpID, int Number) { if (Number < 1) Number = 1; var dal = new DAL.MonitorAlarmRecord(); var entity_list = dal.GetLastByCorpID(CorpID, Number); var model_list = Entity2Models(entity_list); return model_list; } /// /// 通过 MonitorPointID 获取最近一条 /// public Model.MonitorAlarmRecord GetLastByMonitorPointID(long CorpID, long MonitorPointID) { return GetLastByMonitorPointID(CorpID, MonitorPointID, 1)?.FirstOrDefault(); } /// /// 通过 MonitorPointID 获取最近几条 /// public List GetLastByMonitorPointID(long CorpID, long MonitorPointID, int Number) { if (Number < 1) Number = 1; var dal = new DAL.MonitorAlarmRecord(); var entity_list = dal.GetLastByMonitorPointID(CorpID, MonitorPointID, Number); var model_list = Entity2Models(entity_list); return model_list; } /// /// 获取模糊列表 /// public List GetFluzzyList (long CorpID, long? MonitorPointID, string AlarmType, int? AlarmLevel, int? HandleStatus, DateTime? StartTime, DateTime? EndTime) { var dal = new DAL.MonitorAlarmRecord(); var entity_list = dal.GetFluzzyList(CorpID, MonitorPointID, AlarmType, AlarmLevel, HandleStatus, StartTime, EndTime); var model_list = Entity2Models(entity_list); return model_list; } /// /// 获取模糊分页列表 /// public List GetFluzzyPageList (long CorpID, List MonitorPointIds, string AlarmType, int? AlarmLevel, int? HandleStatus, DateTime? StartTime, DateTime? EndTime,int PageIndex,int PageSize,ref int Total) { Total = 0; if (StartTime > EndTime) return default; var dal = new DAL.MonitorAlarmRecord(); var entity_list = dal.GetFluzzyPageList(CorpID, MonitorPointIds, AlarmType, AlarmLevel, HandleStatus, StartTime, EndTime,PageIndex,PageSize,ref Total); var model_list = Entity2Models(entity_list); return model_list; } /// /// 通过 CorpID 获取分页列表 /// public List GetPageListByCorpID(long CorpID, DateTime StartTime, DateTime EndTime, int PageIndex, int PageSize, ref int Total) { Total = 0; if (StartTime > EndTime) return default; var dal = new DAL.MonitorAlarmRecord(); var entity_list = dal.GetPageListByCorpID(CorpID, StartTime, EndTime, PageIndex, PageSize, ref Total); var model_list = Entity2Models(entity_list); return model_list; } /// /// 通过 MonitorPointID 获取分页列表 /// public List GetPageListByMonitorPointID (long CorpID, long MonitorPointID, DateTime StartTime, DateTime EndTime, int PageIndex, int PageSize, ref int Total) { Total = 0; if (StartTime > EndTime) return default; var dal = new DAL.MonitorAlarmRecord(); var entity_list = dal.GetPageListByMonitorPointID(CorpID, MonitorPointID, StartTime, EndTime, PageIndex, PageSize, ref Total); var model_list = Entity2Models(entity_list); return model_list; } /// /// 通过 MonitorPointIds 获取分页列表 /// public List GetPageListByMonitorPointIds (long CorpID, List MonitorPointIds, DateTime StartTime, DateTime EndTime, int PageIndex, int PageSize, ref int Total) { Total = 0; if (MonitorPointIds == null || MonitorPointIds.Count() < 1) return default; if (StartTime > EndTime) return default; var dal = new DAL.MonitorAlarmRecord(); var entity_list = dal.GetPageListByMonitorPointIds(CorpID, MonitorPointIds, StartTime, EndTime, PageIndex, PageSize, ref Total); var model_list = Entity2Models(entity_list); return model_list; } /// /// 获取报警类型数量列表 /// public Dictionary GetAlarmTypeCountList (long CorpID, List MonitorPointIds, int? AlarmLevel, int? HandleStatus, DateTime? StartTime, DateTime? EndTime) { var dal = new DAL.MonitorAlarmRecord(); var dict = new Dictionary(); foreach (var alarmType in IStation.Alarm.GetAlarmTypeList()) { var count= dal.GetCount(CorpID, MonitorPointIds,alarmType, AlarmLevel, HandleStatus, StartTime, EndTime ); dict.Add(alarmType,count); } return dict; } #endregion #region Insert /// /// 插入一条数据 /// public long Insert(Model.MonitorAlarmRecord model) { if (model == null) return default; if (model.CorpID < 1) return default; var entity = Model2Entity(model); var dal = new DAL.MonitorAlarmRecord(); return dal.Insert(entity); } /// /// 插入多条 /// public bool Inserts(List list) { if (list == null || list.Count() < 1) return default; var corpIds = list.Select(x => x.CorpID).Distinct().ToList(); if (corpIds.Count != 1 || corpIds[0] < 1) return default; var entity_list = Model2Entities(list.ToList()); var dal = new DAL.MonitorAlarmRecord(); return dal.Inserts(entity_list); } /// /// 插入最后一条记录 /// public bool InsertLastRecord(Model.MonitorAlarmRecordPure model) { if (model == null) return default; if (model.CorpID < 1) return default; var entity = Model2Entity(model); var dal = new DAL.MonitorAlarmRecord(); var id= dal.Insert(entity); if (id > 0) { new RedisCache.MonitorAlarmRecordCacheHelper().SetLastRecord(model); return true; } return false; } #endregion #region Update /// /// 更新一条 /// public bool Update(Model.MonitorAlarmRecord model) { if (model == null) return default; if (model.CorpID < 1) return default; if (model.ID < 1) return default; var entity = Model2Entity(model); var dal = new DAL.MonitorAlarmRecord(); return dal.Update(entity); } /// /// 更新多条 /// public bool Updates(List list) { if (list == null || list.Count() < 1) return default; var corpIds = list.Select(x => x.CorpID).Distinct().ToList(); if (corpIds.Count != 1 || corpIds[0] < 1) return default; if (list.ToList().Exists(x => x.ID < 1)) return default; var entity_list = Model2Entities(list.ToList()); var dal = new DAL.MonitorAlarmRecord(); return dal.Updates(entity_list); } /// /// 更新 HandleStatus /// public bool UpdateHandleStatus(long CorpID, long ID, Model.Alarm.eHandleStatus HandleStatus) { var dal = new DAL.MonitorAlarmRecord(); var bol = dal.UpdateHandleStatus(CorpID, ID, (int)HandleStatus); return bol; } #endregion } }