using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
namespace IStation.DAL
{
///
/// 曲线分析点包
///
public partial class CurveAnalyzePoint
{
///
/// 文件信息类
///
private class FileInfo
{
public string FullName { get; set; }
public int RecordCount { get; set; }
}
#region FolderInfo
///
/// 查询年月
///
private bool GetFileInfo(string filePath, out long curveAnalyzeId, out int recordCount)
{
curveAnalyzeId = recordCount = 0;
if (!File.Exists(filePath))
return false;
var name = Path.GetFileNameWithoutExtension(filePath);
var strList = name.Split(Settings.File.FileNameSpacer);
if (strList.Length != 2)
return false;
if (!long.TryParse(strList[0], out curveAnalyzeId))
{
return false;
}
if (!int.TryParse(strList[1], out recordCount))
{
return false;
}
return true;
}
///
/// 查询文件信息
///
private FileInfo GetCurveAnalyzePointFileInfo(string folder, long curveAnalyzeId)
{
if (!Directory.Exists(folder))
return default;
var files = Directory.GetFiles(folder);
if (files == null || files.Count() < 1)
return default;
FileInfo info = null;
foreach (var file in files)
{
if (!GetFileInfo(file, out long id, out int recordCount))
continue;
if (id != curveAnalyzeId)
continue;
info = new FileInfo
{
FullName = file,
RecordCount = recordCount
};
}
return info;
}
///
/// 查询文件信息
///
private List GetCurveAnalyzePointFileInfoList(string folder, long curveAnalyzeId)
{
if (!Directory.Exists(folder))
return default;
var files = Directory.GetFiles(folder);
if (files == null || files.Count() < 1)
return default;
List list = new List();
foreach (var file in files)
{
if (!GetFileInfo(file, out long id, out int recordCount))
continue;
if (id != curveAnalyzeId)
continue;
list.Add(new FileInfo
{
FullName = file,
RecordCount = recordCount
});
}
return list;
}
#endregion
#region CsvConvert
//To
public static string ToDsString(Model.CurveAnalyzePoint model)
{
var line =
$"{model.Time:yyyy-MM-dd HH:mm:ss}" +
$",{model.Q}" +
$",{model.P1}" +
$",{model.P2}" +
$",{model.H}" +
$",{model.P}" +
$",{model.E}" +
$",{model.N}" +
$",{model.HZ}" +
$",{model.Status}";
return line;
}
//from
public static Model.CurveAnalyzePoint FromDsString(string dsString)
{
var strList = dsString.Split(',');
if (strList.Length < 2)
return default;
var model = new Model.CurveAnalyzePoint();
model.Time = DateTime.Parse(strList[0]);
model.Q = double.Parse(strList[1]);
model.P1 = double.Parse(strList[2]);
model.P2 = double.Parse(strList[3]);
model.H = double.Parse(strList[4]);
model.P = double.Parse(strList[5]);
model.E = double.Parse(strList[6]);
model.N = double.Parse(strList[7]);
model.HZ = double.Parse(strList[8]);
model.Status = int.Parse(strList[9]);
return model;
}
#endregion
}
}