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) { 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; if(ana_request.TotalFlowIn != null) { entity.TotalFlowIn = ana_request.TotalFlowIn.ToString(); } if (ana_request.SpaceFlowOut != null) { entity.TotalFlowOut = string.Join(",", ana_request.SpaceFlowOut) ; } if(ana_request.MaxReservoirLevel != null) { entity.LevelRequest = string.Format("{0}@{1}", ana_request.MaxReservoirLevel, ana_request.MaxReservoirLevelTime); } entity.CalcOptType = (int)ana_request.CalcOptType; 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) { 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; if(ana_request.TotalFlowIn != null) { entity.TotalFlowIn = ana_request.TotalFlowIn.ToString(); } if (ana_request.SpaceFlowOut != null) { entity.TotalFlowOut = string.Join(",", ana_request.SpaceFlowOut); } 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.EndTimeOpenPumpStaus != null) { entity.EndOpenPumpIndexs = string.Join(",", result_prj.EndTimeOpenPumpStaus); } 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(); } } #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 Entity.AnaProjectEntity GetLastRecord() { using (ISqlSugarClient db = Connection) { return db.Queryable().OrderByDescending(i => i.ID).Take(1).First(); } } #endregion } }