using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; namespace IStation.DAL { /// /// 曲线分析点 /// public partial class CurveAnalyzePoint { #region Path /// /// /// public string GetRootFolder(long monitorDataSourcesId) { var monitorDataSourcesFolder = FileHelper.GetMonitorDataSourcesFolder(SettingsD.Project.ID, monitorDataSourcesId); if (!Directory.Exists(monitorDataSourcesFolder)) Directory.CreateDirectory(monitorDataSourcesFolder); var curveAnalyzeDataFolder = Path.Combine(monitorDataSourcesFolder, SettingsD.File.CurveAnalyzeDataFolder); if (!Directory.Exists(curveAnalyzeDataFolder)) Directory.CreateDirectory(curveAnalyzeDataFolder); return curveAnalyzeDataFolder; } /// /// /// public string GetCurveAnalyzePacketFolder(long monitorDataSourcesId, long curveAnalyzeId) { var rootFolder = GetRootFolder(monitorDataSourcesId); var curveAnalyzeFolderPath = Path.Combine(rootFolder, curveAnalyzeId.ToString()); if (!Directory.Exists(curveAnalyzeFolderPath)) Directory.CreateDirectory(curveAnalyzeFolderPath); return curveAnalyzeFolderPath; } /// /// /// public bool GetCurveAnalyzePointFile(long monitorDataSourcesId, long curveAnalyzeId, long curveAnalyzePacketId, out int recordCount, out string filePath) { recordCount = 0; filePath = string.Empty; var curveAnalyzePacketFolderPath = GetCurveAnalyzePacketFolder(monitorDataSourcesId, curveAnalyzeId); var fileInfo = GetCurveAnalyzePointFileInfo(curveAnalyzePacketFolderPath, curveAnalyzePacketId); if (fileInfo == null) return false; recordCount = fileInfo.RecordCount; filePath = fileInfo.FullName; return File.Exists(filePath); } /// /// /// public bool GetCurveAnalyzePointFile(long monitorDataSourcesId, long curveAnalyzeId, long curveAnalyzePacketId, int recordCount, out string filePath) { var curveAnalyzePacketFolderPath = GetCurveAnalyzePacketFolder(monitorDataSourcesId, curveAnalyzeId); var fileName = $"{curveAnalyzePacketId}{SettingsD.File.FileNameSpacer}{recordCount}"; filePath = Path.Combine(curveAnalyzePacketFolderPath, fileName + SettingsD.File.SignalRecordFileExtension); return File.Exists(filePath); } #endregion /// /// /// public List Get(long monitorDataSourcesId, long curveAnalyzeId, long curveAnalyzePacketId) { var valid = GetCurveAnalyzePointFile(monitorDataSourcesId, curveAnalyzeId, curveAnalyzePacketId, out int recordCount, out string filePath); if (!valid) return default; var list = new List(recordCount); 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); list.Add(content); } } return list; } /// /// /// public List GetValid(long monitorDataSourcesId, long curveAnalyzeId, long curveAnalyzePacketId) { var valid = GetCurveAnalyzePointFile(monitorDataSourcesId, curveAnalyzeId, curveAnalyzePacketId, out int recordCount, out string filePath); if (!valid) return default; var list = new List(recordCount); 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); if (content.Status == Model.AnalyzePointStatus.Valid) { list.Add(content); } } } return list; } /// /// 保存 /// public bool Save(long monitorDataSourcesId, long curveAnalyzeId, long curveAnalyzePacketId, List list) { if (list == null || list.Count < 1) return default; GetCurveAnalyzePointFile(monitorDataSourcesId, curveAnalyzeId, curveAnalyzePacketId, list.Count, 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 point in list) { var strLine = ToDsString(point); sw.WriteLine(strLine); } } return true; } /// /// 是否存在 /// public bool Exists(long monitorDataSourcesId, long curveAnalyzeId, long curveAnalyzePacketId) { var exist = GetCurveAnalyzePointFile(monitorDataSourcesId, curveAnalyzeId, curveAnalyzePacketId, out int recordCount, out string filePath); return exist; } /// /// 清除 /// public void Clear(long monitorDataSourcesId, long curveAnalyzeId, long curveAnalyzePacketId) { var valid = GetCurveAnalyzePointFile(monitorDataSourcesId, curveAnalyzeId, curveAnalyzePacketId, out int recordCount, out string filePath); if (!valid) return; File.Delete(filePath); } /// /// 清除 /// public void Clear(long monitorDataSourcesId, long curveAnalyzeId) { var curveAnalyzePacketFolderPath = GetCurveAnalyzePacketFolder(monitorDataSourcesId, curveAnalyzeId); var list = GetCurveAnalyzePointFileInfoList(curveAnalyzePacketFolderPath, curveAnalyzeId); if (list == null || !list.Any()) return; foreach (var fileInfo in list) { File.Delete(fileInfo.FullName); } } } }