using SqlSugar;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
namespace IStation.DAL
{
///
/// 能效(多)实时记录
///
public class EtaMultiRealRecord
{
///
///
///
public ConnectionConfig ConnectionConfig
{
get
{
var dbName = "eta.db";
var filePath = $"{FileHelper.GetDataFolder()}\\{dbName}";
var config = new ConnectionConfig
{
DbType = SqlSugar.DbType.Sqlite,//数据库类型
ConnectionString = $"DataSource={filePath}",
IsAutoCloseConnection = true,//是否自动关闭
MoreSettings = new ConnMoreSettings()
{
//PgSqlIsAutoToLower = false //数据库存在大写字段的 ,需要把这个设为false ,并且实体和字段名称要一样
},
AopEvents = new AopEvents
{
OnLogExecuting = (sql, p) =>
{
var sqlString = UtilMethods.GetNativeSql(sql, p);
}
},
ConfigureExternalServices = new ConfigureExternalServices()
{
EntityService = (property, column) =>
{
//除主键外都可空
if (!column.IsPrimarykey)
{
column.IsNullable = true;
}
}
}
};
if (!File.Exists(filePath))
{
var sqlSugarClient = new SqlSugarClient(config);
Type[] types = new Type[] { typeof(Model.EtaMultiRealRecord) };
if (!types.Any()) { return default; }
sqlSugarClient.DbMaintenance.CreateDatabase();
sqlSugarClient.CodeFirst.InitTables(types);
}
return config;
}
}
///
/// 通过 ObjectType 和 ObjectID 获取流量、扬程、日期区间内运行的汇总内容数据
///
public List GetRunSummaryContentByStationOfQHDayRange(int Station, double Qmin, double Qmax, double Hmin, double Hmax, DateTime StartDay, DateTime EndDay)
{
//判断流量
if (Qmin > Qmax)
{
return default;
}
//判断扬程
if (Hmin > Hmax)
{
return default;
}
//判断日期
if (StartDay.Date > EndDay.Date)
{
return default;
}
using (var db = new SqlSugarClient(ConnectionConfig))
{
return db.Queryable()
.GroupBy(x => new { x.Station, x.RunningCount, x.RunningFlag })
.Where(x => x.DataTime >= StartDay.Date && x.DataTime < EndDay.Date.AddDays(1))
.Where(x => x.Station == Station)
.Where(x => x.RunningCount > 0)
.Where(x => SqlFunc.Between(x.Qa, Qmin, Qmax))
.Where(x => SqlFunc.Between(x.Ha, Hmin, Hmax))
.Select(x => new Model.EtaMultiRunSummaryContent()
{
Station = x.Station,
RunningCount = x.RunningCount,
RunningFlag = x.RunningFlag,
Qavg = SqlFunc.AggregateAvg(x.Qa.Value),
Havg = SqlFunc.AggregateAvg(x.Ha.Value),
Pavg = SqlFunc.AggregateAvg(x.Pa.Value),
Eavg = SqlFunc.AggregateAvg(x.Ea.Value),
Tsum = SqlFunc.AggregateSum(x.Duration)
}).ToList();
}
}
///
/// 通过 ObjectType 和 ObjectID 获取时间区间内的运行QHET
///
public List GetRunQHETByStationOfDayRange(int Station, DateTime StartDay, DateTime EndDay)
{
//判断日期
if (StartDay.Date > EndDay.Date)
{
return default;
}
using (var db = new SqlSugarClient(ConnectionConfig))
{
return db.Queryable()
.Where(x => x.DataTime >= StartDay.Date && x.DataTime < EndDay.Date.AddDays(1))
.Where(x => x.Station == Station)
.Where(x => x.RunningCount > 0)
.Select(x => new Model.EtaQHET() { Q = x.Qa.Value, H = x.Ha.Value, E = x.Ea.Value, T = x.Duration }).ToList();
}
}
///
/// 大批量插入
///
public bool BulkInserts(List list)
{
if (list == null || list.Count < 1)
return default;
using (SqlSugarClient db = new SqlSugarClient(ConnectionConfig))
{
return db.Fastest().BulkCopy(list) > 0;
}
}
}
}