using System.Collections.Generic;
|
using System.IO;
|
using System.Linq;
|
using System.Text;
|
|
namespace IStation.DAL
|
{
|
/// <summary>
|
/// 曲线分析点
|
/// </summary>
|
public partial class CurveAnalyzePoint
|
{
|
#region Path
|
|
/// <summary>
|
///
|
/// </summary>
|
public string GetRootFolder(long monitorDataSourcesId)
|
{
|
var monitorDataSourcesFolder = FileHelper.GetMonitorDataSourcesFolder(Settings.Project.ID, monitorDataSourcesId);
|
if (!Directory.Exists(monitorDataSourcesFolder))
|
Directory.CreateDirectory(monitorDataSourcesFolder);
|
var curveAnalyzeDataFolder = Path.Combine(monitorDataSourcesFolder, Settings.File.CurveAnalyzeDataFolder);
|
if (!Directory.Exists(curveAnalyzeDataFolder))
|
Directory.CreateDirectory(curveAnalyzeDataFolder);
|
return curveAnalyzeDataFolder;
|
}
|
|
/// <summary>
|
///
|
/// </summary>
|
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;
|
}
|
|
/// <summary>
|
///
|
/// </summary>
|
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);
|
}
|
|
|
/// <summary>
|
///
|
/// </summary>
|
public bool GetCurveAnalyzePointFile(long monitorDataSourcesId, long curveAnalyzeId, long curveAnalyzePacketId, int recordCount, out string filePath)
|
{
|
var curveAnalyzePacketFolderPath = GetCurveAnalyzePacketFolder(monitorDataSourcesId, curveAnalyzeId);
|
var fileName = $"{curveAnalyzePacketId}{Settings.File.FileNameSpacer}{recordCount}";
|
filePath = Path.Combine(curveAnalyzePacketFolderPath, fileName + Settings.File.SignalRecordFileExtension);
|
return File.Exists(filePath);
|
}
|
|
#endregion
|
|
|
/// <summary>
|
///
|
/// </summary>
|
public List<Model.CurveAnalyzePoint> 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<Model.CurveAnalyzePoint>(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;
|
}
|
|
/// <summary>
|
///
|
/// </summary>
|
public List<Model.CurveAnalyzePoint> 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<Model.CurveAnalyzePoint>(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;
|
}
|
|
|
|
/// <summary>
|
/// 保存
|
/// </summary>
|
public bool Save(long monitorDataSourcesId, long curveAnalyzeId, long curveAnalyzePacketId, List<Model.CurveAnalyzePoint> 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;
|
}
|
|
|
/// <summary>
|
/// 是否存在
|
/// </summary>
|
public bool Exists(long monitorDataSourcesId, long curveAnalyzeId, long curveAnalyzePacketId)
|
{
|
var exist = GetCurveAnalyzePointFile(monitorDataSourcesId, curveAnalyzeId, curveAnalyzePacketId, out int recordCount, out string filePath);
|
return exist;
|
}
|
|
/// <summary>
|
/// 清除
|
/// </summary>
|
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);
|
}
|
|
|
/// <summary>
|
/// 清除
|
/// </summary>
|
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);
|
}
|
}
|
|
}
|
}
|