namespace IStation.DAL.SQLite
{
///
/// 能效(多)实时记录
///
public class EtaMultiRealRecord : IEtaMultiRealRecord
{
///
///
///
public ConnectionConfig ConnectionConfig
{
get
{
var dbName = "eta.db";
var filePath = $"{Settings.ParasHelper.LocalFile.DataFolderDirectory}\\{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;
}
}
}
};
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 Entity.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 Entity.EtaQHET() { Q = x.Qa.Value, H = x.Ha.Value, E = x.Ea.Value, T = x.Duration }).ToList();
}
}
}
}