using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
namespace IStation.DAL
{
///
/// 泵站监测数据集
///
public partial class StationStatisticalRecordPacket
{
#region Path
///
/// 查询泵站监测数据集文件夹
///
public string GetRootFolder(long monitorDataSourcesId)
{
var monitorDataSourcesFolder = FileHelper.GetMonitorDataSourcesFolder(SettingsD.Project.ID, monitorDataSourcesId);
if (!Directory.Exists(monitorDataSourcesFolder))
Directory.CreateDirectory(monitorDataSourcesFolder);
var stationMonitorDataFolder = Path.Combine(monitorDataSourcesFolder, SettingsD.File.StationMonitorDataFolder);
if (!Directory.Exists(stationMonitorDataFolder))
Directory.CreateDirectory(stationMonitorDataFolder);
return stationMonitorDataFolder;
}
///
/// 查询泵站文件夹
///
public string GetStationFolder(long monitorDataSourcesId, long stationId)
{
var rootFolder = GetRootFolder(monitorDataSourcesId);
var stationFolderPath = Path.Combine(rootFolder, stationId.ToString());
if (!Directory.Exists(stationFolderPath))
Directory.CreateDirectory(stationFolderPath);
return stationFolderPath;
}
///
/// 查询泵站记录文件路径
///
public bool GetStationStatisticalRecordPacketFile(long monitorDataSourcesId, long stationId, int year, int month, out string filePath)
{
var stationFolderPath = GetStationFolder(monitorDataSourcesId, stationId);
var fileName = "";
if (month < 10)
{
fileName = $"{year}{SettingsD.File.FileNameSpacer}0{month}";
}
else
{
fileName = $"{year}{SettingsD.File.FileNameSpacer}{month}";
}
filePath = Path.Combine(stationFolderPath, fileName + SettingsD.File.SignalRecordFileExtension);
return File.Exists(filePath);
}
#endregion
#region Get
///
/// 查询泵站月数据列表
///
public List Get(long monitorDataSourcesId, long stationId)
{
var stationFolder = GetStationFolder(monitorDataSourcesId, stationId);
var fileInfoList = GetStationStatisticalRecordPacketFileInfoList(stationFolder);
if (fileInfoList == null || fileInfoList.Count() < 1)
return default;
var stationSignalRecordPackets = new List(fileInfoList.Count);
foreach (var fileInfo in fileInfoList)
{
var packet = Get(monitorDataSourcesId, stationId, fileInfo.Year, fileInfo.Month);
if (packet == null)
continue;
stationSignalRecordPackets.Add(packet);
}
return stationSignalRecordPackets;
}
///
/// 查询监测数据集
///
public Model.StationStatisticalRecordPacket Get(long monitorDataSourcesId, long stationId, int year, int month)
{
var valid = GetStationStatisticalRecordPacketFile(monitorDataSourcesId, stationId, year, month, out string filePath);
if (!valid)
return default;
var packet = new Model.StationStatisticalRecordPacket();
packet.StationID = stationId;
packet.Year = year;
packet.Month = month;
packet.StationStatisticalRecords = new List();
using (var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
using (var sr = new StreamReader(fs, Encoding.UTF8))
{
var strLine = string.Empty;
while (!string.IsNullOrEmpty(strLine = sr.ReadLine()))
{
var content = FromDsString(strLine);
packet.StationStatisticalRecords.Add(content);
}
}
return packet;
}
#endregion
#region Save
///
/// 保存
///
public bool Save(long monitorDataSourcesId, long stationId, IEnumerable list)
{
if (list == null || list.Count() < 1)
return default;
for (int i = 0; i < list.Count(); i++)
{
var dataSet = list.ElementAt(i);
if (!Save(monitorDataSourcesId, stationId, dataSet))
{
//未做判断
}
}
return true;
}
///
/// 保存
///
public bool Save(long monitorDataSourcesId, long stationId, Model.StationStatisticalRecordPacket rhs)
{
if (rhs == null)
return default;
if (rhs.StationStatisticalRecords == null || rhs.StationStatisticalRecords.Count < 1)
return default;
GetStationStatisticalRecordPacketFile(monitorDataSourcesId, stationId, rhs.Year, rhs.Month, out string filePath);
using (var fs = new FileStream(filePath, System.IO.FileMode.Create, System.IO.FileAccess.Write, FileShare.ReadWrite))
using (var sw = new StreamWriter(fs, System.Text.Encoding.UTF8))
{
foreach (var record in rhs.StationStatisticalRecords)
{
var strLine = ToDsString(record);
sw.WriteLine(strLine);
}
}
return true;
}
#endregion
///
/// 保存
///
public void Clear(long monitorDataSourcesId, long stationId)
{
var folder = GetStationFolder(monitorDataSourcesId, stationId);
if (Directory.Exists(folder))
{
Directory.Delete(folder, true);
}
}
}
}