using System;
|
using System.Collections.Generic;
|
using System.Data;
|
using System.IO;
|
using System.Linq;
|
|
namespace IStation.DAL
|
{
|
/// <summary>
|
/// 监测月数据集
|
/// </summary>
|
public partial class MonitorDataSet
|
{
|
/// <summary>
|
/// 日期文件夹信息类
|
/// </summary>
|
private class DateFolderInfo
|
{
|
public string FullName { get; set; }
|
public int Year { get; set; }
|
public int Month { get; set; }
|
}
|
|
#region DateFolderInfo
|
/// <summary>
|
/// 查询年月
|
/// </summary>
|
private bool GetYearMonth(string folderPath, out int year, out int month)
|
{
|
year = month = 0;
|
if (!Directory.Exists(folderPath))
|
return false;
|
|
var name = Path.GetFileName(folderPath);
|
var strList = name.Split(SettingsD.File.FileNameSpacer);
|
if (strList.Length != 2)
|
return false;
|
if (!int.TryParse(strList[0], out year))
|
{
|
return false;
|
}
|
if (!int.TryParse(strList[1], out month))
|
{
|
return false;
|
}
|
return true;
|
}
|
|
/// <summary>
|
/// 查询日期文件夹信息列表
|
/// </summary>
|
private List<DateFolderInfo> GetDateFolderInfoList(string monitorDataFolderPath)
|
{
|
if (!Directory.Exists(monitorDataFolderPath))
|
return default;
|
var directories = Directory.GetDirectories(monitorDataFolderPath);
|
if (directories == null || directories.Count() < 1)
|
return default;
|
|
var list = new List<DateFolderInfo>(directories.Count());
|
foreach (var directory in directories)
|
{
|
if (!GetYearMonth(directory, out int year, out int month))
|
continue;
|
var info = new DateFolderInfo
|
{
|
FullName = directory,
|
Year = year,
|
Month = month
|
};
|
list.Add(info);
|
}
|
if (list.Count > 0)
|
{
|
list = list.OrderBy(x => x.Year).ThenBy(x => x.Month).ToList();
|
}
|
return list;
|
}
|
|
#endregion
|
|
/// <summary>
|
/// 监测月数据集文件夹信息类
|
/// </summary>
|
private class MonitorDataSetFolderInfo
|
{
|
public string FullName { get; set; }
|
public long MonitorPointID { get; set; }
|
public int Year { get; set; }
|
public int Month { get; set; }
|
}
|
|
#region MonitorDataSetFolderInfo
|
/// <summary>
|
/// 查询监测记录文件夹信息
|
/// </summary>
|
private List<MonitorDataSetFolderInfo> GetMonitorDataSetFolderInfoList(string dateFolderPath)
|
{
|
if (!Directory.Exists(dateFolderPath))
|
return default;
|
if (!GetYearMonth(dateFolderPath, out int year, out int month))
|
return default;
|
var directories = Directory.GetDirectories(dateFolderPath);
|
if (directories == null || directories.Count() < 1)
|
return default;
|
|
var infoList = new List<MonitorDataSetFolderInfo>(directories.Count());
|
foreach (var directory in directories)
|
{
|
var name = Path.GetFileName(directory);
|
if (long.TryParse(name, out long Id))
|
{
|
var info = new MonitorDataSetFolderInfo
|
{
|
FullName = directory,
|
Year = year,
|
Month = month,
|
MonitorPointID = Id
|
};
|
infoList.Add(info);
|
}
|
}
|
return infoList;
|
}
|
|
/// <summary>
|
/// 查询监测记录文件夹信息
|
/// </summary>
|
private List<MonitorDataSetFolderInfo> GetMonitorDataSetFolderInfoList(long monitorDataSourcesId, int year, int month)
|
{
|
var dateFolderInfo = GetYearMonthFolder(monitorDataSourcesId, year, month);
|
var directories = Directory.GetDirectories(dateFolderInfo);
|
if (directories == null || directories.Count() < 1)
|
return default;
|
|
var infoList = new List<MonitorDataSetFolderInfo>();
|
foreach (var directory in directories)
|
{
|
var name = Path.GetFileName(directory);
|
if (long.TryParse(name, out long Id))
|
{
|
var info = new MonitorDataSetFolderInfo
|
{
|
FullName = directory,
|
Year = year,
|
Month = month,
|
MonitorPointID = Id
|
};
|
infoList.Add(info);
|
}
|
}
|
return infoList;
|
}
|
|
/// <summary>
|
/// 查询监测记录文件夹信息
|
/// </summary>
|
private List<MonitorDataSetFolderInfo> GetMonitorDataSetFolderInfoList(DateFolderInfo dateFolderInfo)
|
{
|
if (dateFolderInfo == null)
|
return default;
|
var directories = Directory.GetDirectories(dateFolderInfo.FullName);
|
if (directories == null || directories.Count() < 1)
|
return default;
|
|
var infoList = new List<MonitorDataSetFolderInfo>();
|
foreach (var directory in directories)
|
{
|
var name = Path.GetFileName(directory);
|
if (long.TryParse(name, out long Id))
|
{
|
var info = new MonitorDataSetFolderInfo
|
{
|
FullName = directory,
|
Year = dateFolderInfo.Year,
|
Month = dateFolderInfo.Month,
|
MonitorPointID = Id
|
};
|
infoList.Add(info);
|
}
|
}
|
return infoList;
|
}
|
|
#endregion
|
|
|
/// <summary>
|
/// 信号记录包文件信息类
|
/// </summary>
|
public class SignalRecordPackFileInfo
|
{
|
public string FullName { get; set; }
|
public long MonitorPointID { get; set; }
|
public long SignalID { get; set; }
|
public int Year { get; set; }
|
public int Month { get; set; }
|
}
|
|
#region SignalRecordPackFileInfo
|
|
/// <summary>
|
/// 查询信号记录包文件信息
|
/// </summary>
|
private List<SignalRecordPackFileInfo> GetSignalRecordPackFileInfoList(string dateFolderPath)
|
{
|
if (!Directory.Exists(dateFolderPath))
|
return default;
|
if (!GetYearMonth(dateFolderPath, out int year, out int month))
|
return default;
|
var monitorDirectories = Directory.GetDirectories(dateFolderPath);
|
if (monitorDirectories == null || monitorDirectories.Count() < 1)
|
return default;
|
|
var infoList = new List<SignalRecordPackFileInfo>(monitorDirectories.Count());
|
foreach (var monitorDirectory in monitorDirectories)
|
{
|
var list = GetSignalRecordPackFileInfoList(monitorDirectory, year, month);
|
if (list != null && list.Any())
|
{
|
infoList.AddRange(list);
|
}
|
}
|
return infoList;
|
}
|
|
/// <summary>
|
/// 查询信号记录包文件信息
|
/// </summary>
|
private List<SignalRecordPackFileInfo> GetSignalRecordPackFileInfoList(string monitorDataSetFolder, int year, int month)
|
{
|
if (!Directory.Exists(monitorDataSetFolder))
|
return default;
|
var folderName = Path.GetFileName(monitorDataSetFolder);
|
if (!long.TryParse(folderName, out long monitorPointId))
|
return default;
|
|
var files = Directory.GetFiles(monitorDataSetFolder);
|
if (files == null || files.Count() < 1)
|
return default;
|
|
var infoList = new List<SignalRecordPackFileInfo>(files.Count());
|
foreach (var filePath in files)
|
{
|
var name = Path.GetFileNameWithoutExtension(filePath);
|
if (long.TryParse(name, out long Id))
|
{
|
var info = new SignalRecordPackFileInfo
|
{
|
FullName = filePath,
|
MonitorPointID = monitorPointId,
|
SignalID = Id,
|
Year = year,
|
Month = month
|
};
|
infoList.Add(info);
|
}
|
}
|
return infoList;
|
}
|
|
/// <summary>
|
/// 查询信号记录包文件信息
|
/// </summary>
|
private List<SignalRecordPackFileInfo> GetSignalRecordPackFileInfoList(MonitorDataSetFolderInfo monitorDataSetFolderInfo)
|
{
|
if (monitorDataSetFolderInfo == null)
|
return default;
|
var files = Directory.GetFiles(monitorDataSetFolderInfo.FullName);
|
if (files == null || files.Count() < 1)
|
return default;
|
|
var infos = new List<SignalRecordPackFileInfo>(files.Count());
|
foreach (var filePath in files)
|
{
|
var name = Path.GetFileNameWithoutExtension(filePath);
|
if (long.TryParse(name, out long Id))
|
{
|
var info = new SignalRecordPackFileInfo
|
{
|
FullName = filePath,
|
MonitorPointID = monitorDataSetFolderInfo.MonitorPointID,
|
SignalID = Id,
|
Year = monitorDataSetFolderInfo.Year,
|
Month = monitorDataSetFolderInfo.Month
|
};
|
infos.Add(info);
|
}
|
}
|
return infos;
|
}
|
|
#endregion
|
|
|
#region CsvConvert
|
//To
|
private string ToDsString(Model.SignalRecord record)
|
{
|
return $"{record.Time:yyyy-MM-dd HH:mm:ss},{record.Value}";
|
}
|
|
//from
|
public Model.SignalRecord FromDsString(string dsString)
|
{
|
var strList = dsString.Split(',');
|
if (strList.Length < 2)
|
return default;
|
var model = new Model.SignalRecord
|
{
|
Time = DateTime.Parse(strList[0]),
|
Value = double.Parse(strList[1])
|
};
|
return model;
|
}
|
#endregion
|
}
|
}
|