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