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(); } } } }