using System.Collections.Generic; using System.Data; using System.IO; using System.Linq; namespace IStation.DAL { /// /// 监测数据集概要 /// public class MonitorDataSetSummary { #region Path /// /// 查询文件路径 /// public string GetRootFolder(long monitorDataSourcesId) { var monitorDataSourcesFolder = FileHelper.GetMonitorDataSourcesFolder(Settings.Project.ID, monitorDataSourcesId); if (!Directory.Exists(monitorDataSourcesFolder)) Directory.CreateDirectory(monitorDataSourcesFolder); var monitorDataSetFolder = Path.Combine(monitorDataSourcesFolder, Settings.File.MonitorDataFolder); if (!Directory.Exists(monitorDataSetFolder)) Directory.CreateDirectory(monitorDataSetFolder); return monitorDataSetFolder; } #endregion #region Get /// /// 查询全部 /// public List GetAll(long monitorDataSourcesId) { var path = GetRootFolder(monitorDataSourcesId); var all = FileIdHelper.GetAll(path); var models = all?.ToList(); return models; } /// /// 根据 日期查询全部 /// public List GetAllByDate(long monitorDataSourcesId, int year, int month) { var all = GetAll(monitorDataSourcesId); var models = all?.Where(x => x.Year == year && x.Month == month).ToList(); return models; } /// /// 根据 Id查询 /// public Model.MonitorDataSetSummary GetByID(long monitorDataSourcesId, long Id) { if (Id < 1) return default; var all = GetAll(monitorDataSourcesId); var models = all?.ToList(); return models?.Find(t => t.ID == Id); } /// /// 根据 Id集合查询 /// public List GetByIds(long monitorDataSourcesId, IEnumerable Ids) { if (Ids == null || Ids.Count() < 1) return default; var all = GetAll(monitorDataSourcesId); var models = all?.Where(x => Ids.Contains(x.ID)).ToList(); return models; } /// /// 根据 监测点信息查询 /// public List GetByMonitor(long monitorDataSourcesId, long monitorPointId) { if (monitorPointId < 0) return default; var all = GetAll(monitorDataSourcesId); if (all == null || all.Count < 1) return default; var models = all.FindAll(t => t.MonitorPointID == monitorPointId); return models; } /// /// 根据 监测点信息查询 /// public List GetByMonitor(long monitorDataSourcesId, long monitorPointId, long signalId) { if (monitorPointId < 0) return default; var all = GetByMonitor(monitorDataSourcesId, monitorPointId); if (all == null || all.Count < 1) return default; var models = all.FindAll(t => t.SignalID == signalId); return models; } /// /// 根据 监测点信息查询 /// public List GetByMonitor(long monitorDataSourcesId, long monitorPointId, int year, int month) { if (monitorPointId < 0) return default; var all = GetAllByDate(monitorDataSourcesId, year, month); if (all == null || all.Count < 1) return default; var models = all.FindAll(t => t.MonitorPointID == monitorPointId); return models; } /// /// 根据 监测点信息查询 /// public Model.MonitorDataSetSummary GetByMonitor(long monitorDataSourcesId, long monitorPointId, long signalId, int year, int month) { if (monitorPointId < 0) return default; var all = GetByMonitor(monitorDataSourcesId, monitorPointId, year, month); if (all == null || all.Count < 1) return default; if (all == null || all.Count < 1) return default; var model = all.Find(t => t.SignalID == signalId); return model; } /// /// 根据 监测点信息查询 /// public List GetByMonitor(long monitorDataSourcesId, List monitorPointIds, int year, int month) { if (monitorPointIds == null || monitorPointIds.Count < 1) return default; var all = GetAllByDate(monitorDataSourcesId, year, month); if (all == null || all.Count < 1) return default; var models = all.FindAll(t => monitorPointIds.Contains(t.MonitorPointID)); return models; } #endregion #region Get - Count /// /// 查询监测数据集数量 /// public int GetMonitorDataSetCount(long monitorDataSourcesId) { var all = GetAll(monitorDataSourcesId); if (all == null || all.Count < 1) return default; var count = all.GroupBy(x => new { x.MonitorPointID, x.Year, x.Month }).Count(); return count; } /// /// 查询信号记录包数量 /// public int GetSignalRecordPacketCount(long monitorDataSourcesId, long monitorPointId) { var all = GetByMonitor(monitorDataSourcesId, monitorPointId); if (all == null || all.Count < 1) return default; var count = all.GroupBy(x => x.SignalID).Count(); return count; } /// /// 查询信号记录包数量 /// public int GetSignalRecordPacketCount(long monitorDataSourcesId, long monitorPointId, int year, int month) { var all = GetByMonitor(monitorDataSourcesId, monitorPointId, year, month); if (all == null || all.Count < 1) return default; var count = all.GroupBy(x => x.SignalID).Count(); return count; } /// /// 查询某个信号记录数量 /// public int GetSignalRecordCount(long monitorDataSourcesId, long monitorPointId, long signalId) { var all = GetByMonitor(monitorDataSourcesId, monitorPointId, signalId); if (all == null || all.Count < 1) return default; var count = all.Sum(x => x.Count); return count; } /// /// 查询某个信号记录数量 /// public int GetSignalRecordCount(long monitorDataSourcesId, long monitorPointId, long signalId, int year, int month) { var model = GetByMonitor(monitorDataSourcesId, monitorPointId, signalId, year, month); if (model == null) return default; var count = model.Count; return count; } #endregion #region Get - YearMonth /// /// 查询年月记录 /// public List GetYearMonth(long monitorDataSourcesId) { var all = GetAll(monitorDataSourcesId); if (all == null || all.Count < 1) return default; var group = all.GroupBy(x => new { x.Year, x.Month }); var models = group.Select(x => new Model.YearMonth() { Year = x.Key.Year, Month = x.Key.Month }).ToList(); return models; } #endregion #region Insert /// /// 插入 /// public long Insert(long monitorDataSourcesId, Model.MonitorDataSetSummary rhs) { if (rhs == null) return default; var path = GetRootFolder(monitorDataSourcesId); return FileIdHelper.Insert(path, rhs); } /// /// 批量插入 /// public bool Inserts(long monitorDataSourcesId, IEnumerable list) { if (list == null || list.Count() < 1) return default; var path = GetRootFolder(monitorDataSourcesId); return FileIdHelper.Inserts(path, list); } /// /// 插入并返回 /// public Model.MonitorDataSetSummary InsertR(long monitorDataSourcesId, Model.MonitorDataSetSummary rhs) { if (rhs == null) return default; var path = GetRootFolder(monitorDataSourcesId); var entities = FileIdHelper.InsertR(path, rhs); return entities; } /// /// 批量插入并返回 /// public List InsertRs(long monitorDataSourcesId, IEnumerable list) { if (list == null || list.Count() < 1) return default; var path = GetRootFolder(monitorDataSourcesId); var models = FileIdHelper.InsertRs(path, list); return models; } #endregion #region Update /// /// 更新 /// public bool Update(long monitorDataSourcesId, Model.MonitorDataSetSummary rhs) { if (rhs == null) return default; var path = GetRootFolder(monitorDataSourcesId); return FileIdHelper.Update(path, rhs); } /// /// 批量更新 /// public bool Updates(long monitorDataSourcesId, IEnumerable list) { if (list == null || list.Count() < 1) return default; var path = GetRootFolder(monitorDataSourcesId); return FileIdHelper.Updates(path, list); } #endregion #region Set /// /// 设置 /// public bool Set(long monitorDataSourcesId, Model.MonitorDataSetSummary monthSummary, int year, int month) { var path = GetRootFolder(monitorDataSourcesId); var monitorRecordMonthSummary = GetByMonitor(monitorDataSourcesId, monthSummary.MonitorPointID, monthSummary.SignalID, year, month); if (monitorRecordMonthSummary == null) { return FileIdHelper.Insert(path, monthSummary) > 0; } else { return FileIdHelper.Update(path, monitorRecordMonthSummary); } } #endregion #region Delete /// /// 根据 Id删除 /// public bool DeleteByID(long monitorDataSourcesId, long Id) { if (Id < 0) return default; var path = GetRootFolder(monitorDataSourcesId); var bol = FileIdHelper.DeleteByID(path, Id); return bol; } /// /// 根据 Id集合删除 /// public bool DeleteByIds(long monitorDataSourcesId, IEnumerable Ids) { if (Ids == null || Ids.Count() < 1) return default; var path = GetRootFolder(monitorDataSourcesId); var bol = FileIdHelper.DeleteByIds(path, Ids); return bol; } /// /// 删除 /// public bool Delete(long monitorDataSourcesId, Model.MonitorDataSetSummary rhs) { if (rhs == null) return default; var path = GetRootFolder(monitorDataSourcesId); var bol = FileIdHelper.DeleteByID(path, rhs.ID); return bol; } /// /// 批量删除 /// public bool Deletes(long monitorDataSourcesId, IEnumerable list) { if (list == null || list.Count() < 1) return true; var path = GetRootFolder(monitorDataSourcesId); var Ids = list.Select(x => x.ID).ToList(); var bol = FileIdHelper.DeleteByIds(path, Ids); return bol; } /// /// 删除全部 /// public bool DeleteAll(long monitorDataSourcesId) { var path = GetRootFolder(monitorDataSourcesId); var bol = FileIdHelper.DeleteAll(path); return bol; } #endregion #region Exist /// /// 是否存在 /// public bool IsExist(long monitorDataSourcesId) { var path = GetRootFolder(monitorDataSourcesId); return FileIdHelper.IsExist(path); } #endregion } }