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