using IStation.Untity;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace IStation.DataProvider
{
///
/// json仓库
///
public class JsonStore
{
private static DateTime _debugDay=DateTime.MinValue;
private static List> _dayRecordList = null;//数据日缓存
//获取缓存
private static List GetDebugCache(DateTime dt)
{
var debugDay = dt.Date;
if (debugDay != _debugDay)
{
_debugDay = debugDay;
_dayRecordList = new List>();
var testDataFolder = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, ConfigHelper.TestDataFolder, _debugDay.Day.ToString());
if (!Directory.Exists(testDataFolder))
return default;
var directInfo = new DirectoryInfo(testDataFolder);
var files = directInfo.GetFiles();
if (files == null || files.Count() < 1)
return default;
foreach (var filePath in files)
{
var str = File.ReadAllText(filePath.FullName);
if (string.IsNullOrEmpty(str))
return default;
var data = JsonHelper.Json2Object>(str);
if (data == null || data.Count < 1)
continue;
_dayRecordList.Add(data);
}
}
var list = new List();
foreach (var records in _dayRecordList)
{
var record = records.FindLast(x =>
{
var dt1 = Convert.ToDateTime(x.DataTime);
var dt2 = new DateTime(dt.Year, dt.Month, dt.Day, dt1.Hour, dt1.Minute, dt1.Second);
return dt2 < dt;
});
list.Add(record);
}
return list.Where(x => x != null).ToList();
}
///
/// 获取当前记录
///
public static List GetCurrentRecord(DateTime dt)
{
var debugList = GetDebugCache(dt);
if (debugList == null || debugList.Count < 1)
return default;
var srcList = new List();
foreach (var debugRecord in debugList)
{
if (!string.IsNullOrEmpty(debugRecord.ObjectId))
{
var srcRecord = new SrcRecord();
srcRecord.TagName = debugRecord.ObjectId;
srcRecord.DataTime = debugRecord.DataTime;
srcRecord.DataValue = debugRecord.DataValue;
srcList.Add(srcRecord);
}
}
return srcList;
}
}
}