using System;
|
using System.Collections.Generic;
|
using System.IO;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
using SqlSugar;
|
|
namespace IStation.DAL
|
{
|
public class WaterPredictRecord
|
{
|
private static Dictionary<int, ConnectionConfig> _connectionConfigDict = new Dictionary<int, ConnectionConfig>();
|
|
public static ISqlSugarClient CreateConnection(int year)
|
{
|
if (_connectionConfigDict.ContainsKey(year))
|
{
|
return new SqlSugarClient(_connectionConfigDict[year]);
|
}
|
|
var root_directory = System.Configuration.ConfigurationManager.AppSettings["WaterPredictDsPath"];
|
if (System.IO.File.Exists(root_directory) || !System.IO.Directory.Exists(root_directory))
|
{
|
throw new Exception($"缺少WaterPredictDsPath配置");
|
}
|
var dsName = string.Format("WaterPredict{0}.db", year);
|
|
var filePath = Path.Combine(root_directory, dsName);
|
if (!System.IO.File.Exists(filePath))
|
{
|
throw new Exception($"缺少db文件:" + dsName);
|
}
|
|
var connectionConfig = new ConnectionConfig()
|
{
|
DbType = SqlSugar.DbType.Sqlite,
|
ConnectionString = "Data Source=" + filePath,// + ";Version=3;",
|
IsAutoCloseConnection = true,//是否自动关闭
|
};
|
|
_connectionConfigDict[year] = connectionConfig;
|
ISqlSugarClient conn = new SqlSugarClient(connectionConfig);
|
return conn;
|
}
|
|
#region Query
|
|
/// <summary>
|
/// 查询num条
|
/// </summary>
|
public List<IStation.Model.WaterPredictRecord> GetLast(int num)
|
{
|
using (ISqlSugarClient db = CreateConnection(DateTime.Now.Year))
|
{
|
return db.Queryable<IStation.Model.WaterPredictRecord>().Take(num).ToList();
|
}
|
}
|
|
/// <summary>
|
/// 查询num条
|
/// </summary>
|
public IStation.Model.WaterPredictRecord GetBySingleHour(DateTime time)
|
{
|
using (ISqlSugarClient db = CreateConnection(time.Year))
|
{
|
return db.Queryable<IStation.Model.WaterPredictRecord>().Where(x => x.DayHour == IStation.Model.WaterPredictRecord.ConvertIntDay(time)).First();
|
}
|
}
|
|
/// <summary>
|
/// 查询num条
|
/// </summary>
|
public List<IStation.Model.WaterPredictRecord> GetByHourRangle(DateTime start_time, DateTime end_time)
|
{
|
using (ISqlSugarClient db = CreateConnection(start_time.Year))
|
{
|
return db.Queryable<IStation.Model.WaterPredictRecord>().Where(x =>
|
x.DayHour >= IStation.Model.WaterPredictRecord.ConvertIntDay(start_time)
|
&& x.DayHour < IStation.Model.WaterPredictRecord.ConvertIntDay(end_time)
|
).ToList();
|
}
|
}
|
|
#endregion Query
|
}
|
}
|