using SqlSugar;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Transactions;
namespace IStation.DAL
{
///
/// 测点
///
public partial class MonitorPoint : CorpDAL_Sorter_UseStatus_TagName_TerminalId
{
///
///
///
public override ConnectionConfig ConnectionConfig
{
get { return ConfigHelper.DefaultConnectionConfig; }
}
///
/// 通过 BelongType 和 BelongID 获取
///
public List GetByBelongTypeAndBelongID(long CorpID, string BelongType, long BelongID)
{
using (var db = new SqlSugarClient(ConnectionConfig))
{
return db.Queryable()
.Where(x => x.CorpID == CorpID && x.BelongType == BelongType && x.BelongID == BelongID).ToList();
}
}
///
/// 插入拓展
///
public long InsertEx(Entity.MonitorPoint entity, List signals)
{
if (entity == null)
return default;
if (signals == null || signals.Count() < 1)
return default;
using (var db = new SqlSugarClient(ConnectionConfig))
{
try
{
db.BeginTran();
var id = db.Insertable(entity).ExecuteReturnSnowflakeId();
if (id < 1)
{
db.RollbackTran();
return default;
}
signals.ForEach(x => x.MonitorPointID = id);
var bol = db.Insertable(signals).ExecuteReturnSnowflakeIdList().Count() > 0;
if (!bol)
{
db.RollbackTran();
return default;
}
db.CommitTran();
return id;
}
catch
{
db.RollbackTran();
throw;
}
}
}
///
/// 批量插入拓展
///
public bool InsertsEx(Dictionary> dict)
{
if (dict == null || dict.Count < 1)
return default;
using (var db = new SqlSugarClient(ConnectionConfig))
{
try
{
db.BeginTran();
foreach (var kvp in dict)
{
var id = db.Insertable(kvp.Key).ExecuteReturnSnowflakeId();
if (id < 1)
{
db.RollbackTran();
return default;
}
kvp.Value.ForEach(x => x.MonitorPointID = id);
var bol = db.Insertable(kvp.Value).ExecuteReturnSnowflakeIdList().Count() > 0;
if (!bol)
{
db.RollbackTran();
return default;
}
}
db.CommitTran();
return true;
}
catch
{
db.RollbackTran();
throw;
}
}
}
///
/// 批量插入拓展
///
public List InsertsREx(Dictionary> dict)
{
if (dict == null || dict.Count < 1)
return default;
using (var db = new SqlSugarClient(ConnectionConfig))
{
try
{
db.BeginTran();
var list = new List();
foreach (var kvp in dict)
{
var id = db.Insertable(kvp.Key).ExecuteReturnSnowflakeId();
if (id < 1)
{
db.RollbackTran();
return default;
}
kvp.Value.ForEach(x => x.MonitorPointID = id);
var bol = db.Insertable(kvp.Value).ExecuteReturnSnowflakeIdList().Count() > 0;
if (!bol)
{
db.RollbackTran();
return default;
}
list.Add(id);
}
db.CommitTran();
return list;
}
catch
{
db.RollbackTran();
throw;
}
}
}
///
/// 更新拓展
///
public bool UpdateEx(Entity.MonitorPoint entity, List signals)
{
if (entity == null)
return default;
if (signals == null || signals.Count() < 1)
return default;
using (var db = new SqlSugarClient(ConnectionConfig))
{
try
{
db.BeginTran();
var result = db.Updateable(entity).ExecuteCommandHasChange();
if (!result)
{
db.RollbackTran();
return default;
}
result = db.Updateable(signals).ExecuteCommandHasChange();
if (!result)
{
db.RollbackTran();
return default;
}
db.CommitTran();
return true;
}
catch
{
db.RollbackTran();
throw;
}
}
}
///
/// 批量更新拓展
///
public bool UpdatesEx(Dictionary> dict)
{
if (dict == null || dict.Count < 1)
return default;
using (var db = new SqlSugarClient(ConnectionConfig))
{
try
{
db.BeginTran();
foreach (var kvp in dict)
{
var result = db.Updateable(kvp.Key).ExecuteCommandHasChange();
if (!result)
{
db.RollbackTran();
return default;
}
result = db.Insertable(kvp.Value).ExecuteCommand() > 0;
if (!result)
{
db.RollbackTran();
return default;
}
}
db.CommitTran();
return true;
}
catch
{
db.RollbackTran();
throw;
}
}
}
///
/// 通过 ID 删除
///
public override bool DeleteByID(long CorpID, long ID)
{
using (var db = new SqlSugarClient(ConnectionConfig))
{
try
{
db.BeginTran();
var result = db.Deleteable()
.Where(x => x.CorpID == CorpID && x.ID == ID)
.ExecuteCommandHasChange();
if (!result)
{
db.RollbackTran();
return default;
}
result = db.Deleteable()
.Where(x => x.CorpID == CorpID && x.MonitorPointID == ID)
.ExecuteCommandHasChange();
if (!result)
{
db.RollbackTran();
return default;
}
db.CommitTran();
return true;
}
catch
{
db.RollbackTran();
throw;
}
}
}
///
/// 更新 GroupID
///
public bool UpdateGroupID(long CorpID, long ID, long GroupID)
{
using (SqlSugarClient db = new SqlSugarClient(ConnectionConfig))
{
return db.Updateable()
.SetColumns(x => x.GroupID == GroupID)
.Where(x =>x.CorpID==CorpID&& x.ID == ID)
.ExecuteCommand() > 0;
}
}
}
}