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
}
}