using IStation.CalcModel; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; namespace IStation.DAL { /// /// 数据库访问基类 /// public partial class AnaProject { /// /// 构造函数 /// public AnaProject() { } /// /// 数据库连接 /// public virtual ISqlSugarClient Connection { get { var connection = CreateConnection(); return connection; } } public static ISqlSugarClient CreateConnection() { var path = System.IO.Path.Combine(IStation.DataFolderHelper.GetRootPath(), "AnaProject.db"); if (!System.IO.File.Exists(path)) { throw new Exception($"缺少Project.db文件"); } ConnectionConfig connectionConfig = new ConnectionConfig() { DbType = SqlSugar.DbType.Sqlite, ConnectionString = "Data Source=" + path,// + ";Version=3;", IsAutoCloseConnection = true,//是否自动关闭 }; ISqlSugarClient conn = new SqlSugarClient(connectionConfig); return conn; } #region Insert /// /// 插入指定对象到数据库中 /// public long Insert(IStation.CalcModel.AnaPrj result_prj, IStation.CalcModel.AnaRequest ana_request) { RefreshSameTime(result_prj.StartTime, result_prj.EndTime); IStation.Entity.AnaProjectEntity entity = new Entity.AnaProjectEntity(); entity.PrjID = result_prj.ID; entity.PrjName = result_prj.Name; entity.StartTime = result_prj.StartTime; entity.EndTime = result_prj.EndTime; entity.CreateTime = DateTime.Now; entity.UseStatus = 0; if (ana_request.TotalFlowIn != null) { entity.TotalFlowIn = ana_request.TotalFlowIn.ToString(); } if (ana_request.PerHourFlowOut != null) { entity.TotalFlowOut = string.Join(",", ana_request.PerHourFlowOut); } if (ana_request.MaxReservoirLevel != null) { entity.LevelRequest = string.Format("{0}@{1}", ana_request.MaxReservoirLevel, ana_request.MaxReservoirLevelTime); } ana_request.StartReservoirLevel = ana_request.StartReservoirLevel; entity.CalcOptType = (int)ana_request.CalcOptType; if (ana_request.IsKnownStartOpenPump && ana_request.StartOpenPumpIndexArray != null) { entity.StartOpenPumpIndexs = string.Join(",", ana_request.StartOpenPumpIndexArray); } if (result_prj.EndTimeOpenPumpStatus != null) { entity.EndOpenPumpIndexs = string.Join(",", result_prj.EndTimeOpenPumpStatus); } entity.StartReservoirLevel = ana_request.StartReservoirLevel.ToString(); if (result_prj.BlockTimes != null && result_prj.BlockTimes.Count > 0) { entity.EndReservoirLevel = result_prj.BlockTimes.Last().ReservoirEndHeight.ToString(); } SnowFlakeSingle.WorkId = 1; using (ISqlSugarClient db = Connection) { return db.Insertable(entity).ExecuteReturnSnowflakeId(); } } /// /// 插入指定对象到数据库中 /// public long Insert(IStation.CalcModel.AnaPrj result_prj, IStation.CalcModel.AnaRequestBase ana_request) { RefreshSameTime(result_prj.StartTime, result_prj.EndTime); IStation.Entity.AnaProjectEntity entity = new Entity.AnaProjectEntity(); entity.PrjID = result_prj.ID; entity.StartTime = result_prj.StartTime; entity.EndTime = result_prj.EndTime; entity.CreateTime = DateTime.Now; entity.UseStatus = 1; if (ana_request.TotalFlowIn != null) { entity.TotalFlowIn = ana_request.TotalFlowIn.ToString(); } if (ana_request.PerHourFlowOut != null) { entity.TotalFlowOut = string.Join(",", ana_request.PerHourFlowOut); } if (ana_request.MaxReservoirLevel != null) { entity.LevelRequest = string.Format("{0}@{1}", ana_request.MaxReservoirLevel, ana_request.MaxReservoirLevelTime); } entity.CalcOptType = (int)ana_request.CalcOptType; if (ana_request.IsKnownStartOpenPump && ana_request.StartOpenPumpIndexArray != null) { entity.StartOpenPumpIndexs = string.Join(",", ana_request.StartOpenPumpIndexArray); } if (result_prj.EndTimeOpenPumpStatus != null) { entity.EndOpenPumpIndexs = string.Join(",", result_prj.EndTimeOpenPumpStatus); } entity.StartReservoirLevel = ana_request.StartReservoirLevel.ToString(); if (result_prj.BlockTimes != null && result_prj.BlockTimes.Count > 0) { entity.EndReservoirLevel = result_prj.BlockTimes.Last().ReservoirEndHeight.ToString(); } SnowFlakeSingle.WorkId = 1; using (ISqlSugarClient db = Connection) { return db.Insertable(entity).ExecuteReturnSnowflakeId(); } } private void RefreshSameTime(DateTime startTime, DateTime endTime) { using (ISqlSugarClient db = Connection) { //db.Updateable(updateObj).UpdateColumns(it => new { it.Name, it.CreateTime }).ExecuteCommand(); var list = db.Queryable().Where(x => x.StartTime == startTime && x.EndTime == endTime).ToList(); if (list == null || list.Count == 0) return; foreach (var m in list) { if (m.UseStatus == 1) { m.UseStatus = 0; db.Updateable(m).UpdateColumns(x => x.UseStatus ).ExecuteCommand(); } } } } //确认方案 public string SetConfirmStatusByID(string PrjID) { using (ISqlSugarClient db = Connection) { var f_p = db.Queryable().Where(x => x.PrjID == PrjID).First(); if (f_p == null) return "未找到对应项目"; var startTime = f_p.StartTime.Date; var all = db.Queryable().Where(x => x.StartTime >= startTime && x.StartTime <= startTime.AddDays(1)).ToList(); if(all == null || all.Count == 0) { return "未找到对应项目 StartTime = " + f_p.StartTime.Date; } //IStation.LogHelper.Info("Count" + all.Count); foreach(var m in all) { if (m.ID == f_p.ID) { //IStation.LogHelper.Info("id set 1 :" + m.ID); m.UseStatus = 1; db.Updateable(m).UpdateColumns(x => x.UseStatus).ExecuteCommand(); } else { if (m.UseStatus == 1) {//设置为失效 //IStation.LogHelper.Info("id set 0:" + m.ID); m.UseStatus = 0; db.Updateable(m).UpdateColumns(x => x.UseStatus).ExecuteCommand(); } } } } return null; } #endregion #region Query /// /// 返回数据库所有的对象集合 /// public List GetAll() { using (ISqlSugarClient db = Connection) { return db.Queryable()?.ToList(); } } /// /// 查询数据库,返回指定ID的对象 /// public Entity.AnaProjectEntity GetByPrjID(string prj_id) { using (ISqlSugarClient db = Connection) { return db.Queryable().Single(x => x.PrjID == prj_id); } } /// /// 完整时间(带小时) /// public List GetByEndTimeH相同(DateTime endTime) { using (ISqlSugarClient db = Connection) { return db.Queryable().Where(x => x.EndTime == endTime && x.UseStatus == 1).ToList(); } } /// /// 完整时间(带小时) /// public List GetByEndTimeH大于(DateTime endTime) { using (ISqlSugarClient db = Connection) { return db.Queryable().Where(x => x.EndTime >= endTime && x.UseStatus == 1).ToList(); } } /// /// 日期(不带小时) /// public List GetByEndDay(DateTime endTime) { using (ISqlSugarClient db = Connection) { var end_day = endTime.Date; return db.Queryable().Where(x => x.EndTime>= endTime && x.StartTime <= endTime.AddDays(1) && x.UseStatus == 1).ToList(); } } /// /// 日期(不带小时) /// /// /// public List GetByStartDay(DateTime startTime) { using (ISqlSugarClient db = Connection) { var start_day = startTime.Date; return db.Queryable().Where(x => x.StartTime >= start_day && x.StartTime <= start_day.AddDays(1) && x.UseStatus == 1).ToList(); } } /// /// 日期(不带小时) /// /// /// public List GetByCreateDay(DateTime startTime) { using (ISqlSugarClient db = Connection) { var start_day = startTime.Date; return db.Queryable().Where(x => x.CreateTime >= start_day && x.CreateTime <= start_day.AddDays(1) && x.UseStatus == 1).ToList(); } } /// /// 日期(不带小时) /// /// /// public List GetAllByCreateDay(DateTime startTime) { using (ISqlSugarClient db = Connection) { var start_day = startTime.Date; return db.Queryable().Where(x => x.CreateTime >= start_day && x.CreateTime <= start_day.AddDays(1)).ToList(); } } /// /// 完整时间( 带小时) /// /// /// public List GetByStartTimeH(DateTime startTime) { using (ISqlSugarClient db = Connection) { return db.Queryable().Where(x => x.StartTime == startTime && x.UseStatus == 1).ToList(); } } /// /// 完整时间( 带小时) /// /// /// public List GetByTimeRangeH(DateTime startTime,DateTime endTime) { using (ISqlSugarClient db = Connection) { return db.Queryable().Where(x => x.StartTime == startTime && x.EndTime == endTime && x.UseStatus == 1).ToList(); } } /// /// 最后一条记录 /// /// public Entity.AnaProjectEntity GetLastRecord() { using (ISqlSugarClient db = Connection) { return db.Queryable().OrderByDescending(i => i.ID).Take(1).First(); } } #endregion } }