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