using IStation.CalcModel;
|
using SqlSugar;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
|
namespace IStation.DAL
|
{
|
/// <summary>
|
/// 数据库访问基类
|
/// </summary>
|
public partial class AnaProject
|
{
|
|
/// <summary>
|
/// 构造函数
|
/// </summary>
|
public AnaProject()
|
{
|
|
}
|
|
|
|
/// <summary>
|
/// 数据库连接
|
/// </summary>
|
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
|
|
/// <summary>
|
/// 插入指定对象到数据库中
|
/// </summary>
|
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)
|
{
|
if (ana_request.PerHourFlowOut.Count > 24)
|
{
|
var list = ana_request.PerHourFlowOut.Take(24).ToList();
|
entity.TotalFlowOut = string.Join(",", list);
|
}
|
else
|
{
|
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();
|
}
|
}
|
|
/// <summary>
|
/// 插入指定对象到数据库中
|
/// </summary>
|
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<Entity.AnaProjectEntity>(updateObj).UpdateColumns(it => new { it.Name, it.CreateTime }).ExecuteCommand();
|
var list = db.Queryable<Entity.AnaProjectEntity>().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<Entity.AnaProjectEntity>(m).UpdateColumns(x => x.UseStatus ).ExecuteCommand();
|
}
|
}
|
}
|
}
|
|
//确认方案
|
public string SetConfirmStatusByID(string PrjID)
|
{
|
using (ISqlSugarClient db = Connection)
|
{
|
var f_p = db.Queryable<Entity.AnaProjectEntity>().Where(x => x.PrjID == PrjID).First();
|
if (f_p == null)
|
return "未找到对应项目";
|
var startTime = f_p.StartTime.Date;
|
var all = db.Queryable<Entity.AnaProjectEntity>().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)
|
{
|
m.UseStatus = 1;
|
db.Updateable<Entity.AnaProjectEntity>(m).UpdateColumns(x => x.UseStatus).ExecuteCommand();
|
}
|
else
|
{
|
if (m.UseStatus == 1)
|
{//设置为失效
|
|
m.UseStatus = 0;
|
db.Updateable<Entity.AnaProjectEntity>(m).UpdateColumns(x => x.UseStatus).ExecuteCommand();
|
}
|
}
|
}
|
|
|
|
|
}
|
|
return null;
|
}
|
|
#endregion
|
|
|
|
#region Query
|
|
/// <summary>
|
/// 返回数据库所有的对象集合
|
/// </summary>
|
public List<Entity.AnaProjectEntity> GetAll()
|
{
|
using (ISqlSugarClient db = Connection)
|
{
|
return db.Queryable<Entity.AnaProjectEntity>()?.ToList();
|
}
|
}
|
|
/// <summary>
|
/// 查询数据库,返回指定ID的对象
|
/// </summary>
|
public Entity.AnaProjectEntity GetByPrjID(string prj_id)
|
{
|
using (ISqlSugarClient db = Connection)
|
{
|
return db.Queryable<Entity.AnaProjectEntity>().Single(x => x.PrjID == prj_id);
|
}
|
}
|
/// <summary>
|
/// 完整时间(带小时)
|
/// </summary>
|
public List<Entity.AnaProjectEntity> GetByEndTimeH相同(DateTime endTime)
|
{
|
using (ISqlSugarClient db = Connection)
|
{
|
return db.Queryable<Entity.AnaProjectEntity>().Where(x => x.EndTime == endTime && x.UseStatus == 1).ToList();
|
}
|
}
|
|
/// <summary>
|
/// 完整时间(带小时)
|
/// </summary>
|
public List<Entity.AnaProjectEntity> GetByEndTimeH大于(DateTime endTime)
|
{
|
using (ISqlSugarClient db = Connection)
|
{
|
return db.Queryable<Entity.AnaProjectEntity>().Where(x => x.EndTime >= endTime && x.UseStatus == 1).ToList();
|
}
|
}
|
|
/// <summary>
|
/// 日期(不带小时)
|
/// </summary>
|
public List<Entity.AnaProjectEntity> GetByEndDay(DateTime endTime)
|
{
|
using (ISqlSugarClient db = Connection)
|
{
|
var end_day = endTime.Date;
|
return db.Queryable<Entity.AnaProjectEntity>().Where(x => x.EndTime>= endTime && x.StartTime <= endTime.AddDays(1) && x.UseStatus == 1).ToList();
|
}
|
}
|
/// <summary>
|
/// 日期(不带小时)
|
/// </summary>
|
/// <param name="startTime"></param>
|
/// <returns></returns>
|
public List<Entity.AnaProjectEntity> GetByStartDay(DateTime startTime)
|
{
|
using (ISqlSugarClient db = Connection)
|
{
|
var start_day = startTime.Date;
|
return db.Queryable<Entity.AnaProjectEntity>().Where(x => x.StartTime >= start_day && x.StartTime <= start_day.AddDays(1) && x.UseStatus == 1).ToList();
|
}
|
}
|
/// <summary>
|
/// 日期(不带小时)
|
/// </summary>
|
/// <param name="startTime"></param>
|
/// <returns></returns>
|
public List<Entity.AnaProjectEntity> GetByCreateDay(DateTime startTime)
|
{
|
using (ISqlSugarClient db = Connection)
|
{
|
var start_day = startTime.Date;
|
return db.Queryable<Entity.AnaProjectEntity>().Where(x => x.CreateTime >= start_day && x.CreateTime <= start_day.AddDays(1) && x.UseStatus == 1).ToList();
|
}
|
}
|
/// <summary>
|
/// 日期(不带小时)
|
/// </summary>
|
/// <param name="startTime"></param>
|
/// <returns></returns>
|
public List<Entity.AnaProjectEntity> GetAllByCreateDay(DateTime startTime)
|
{
|
using (ISqlSugarClient db = Connection)
|
{
|
var start_day = startTime.Date;
|
return db.Queryable<Entity.AnaProjectEntity>().Where(x => x.CreateTime >= start_day && x.CreateTime <= start_day.AddDays(1)).ToList();
|
}
|
}
|
/// <summary>
|
/// 完整时间( 带小时)
|
/// </summary>
|
/// <param name="startTime"></param>
|
/// <returns></returns>
|
public List<Entity.AnaProjectEntity> GetByStartTimeH(DateTime startTime)
|
{
|
using (ISqlSugarClient db = Connection)
|
{
|
return db.Queryable<Entity.AnaProjectEntity>().Where(x => x.StartTime == startTime && x.UseStatus == 1).ToList();
|
}
|
}
|
|
/// <summary>
|
/// 完整时间( 带小时)
|
/// </summary>
|
/// <param name="startTime"></param>
|
/// <returns></returns>
|
public List<Entity.AnaProjectEntity> GetByTimeRangeH(DateTime startTime,DateTime endTime)
|
{
|
using (ISqlSugarClient db = Connection)
|
{
|
return db.Queryable<Entity.AnaProjectEntity>().Where(x => x.StartTime == startTime && x.EndTime == endTime && x.UseStatus == 1).ToList();
|
}
|
}
|
|
/// <summary>
|
/// 最后一条记录
|
/// </summary>
|
/// <returns></returns>
|
public Entity.AnaProjectEntity GetLastRecord()
|
{
|
using (ISqlSugarClient db = Connection)
|
{
|
return db.Queryable<Entity.AnaProjectEntity>().OrderByDescending(i => i.ID).Take(1).First();
|
}
|
}
|
/// <summary>
|
/// 最后一条记录
|
/// </summary>
|
/// <returns></returns>
|
public Entity.AnaProjectEntity GetLastConfirmRecord()
|
{
|
using (ISqlSugarClient db = Connection)
|
{
|
return db.Queryable<Entity.AnaProjectEntity>().Where(x=>x.UseStatus == 1).OrderByDescending(i => i.ID).Take(1).First();
|
}
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
}
|
}
|