using Yw.DAL.PostgreSql;
namespace HStation.DAL.PostgreSql
{
///
/// 图表关联
///
public class PhartDiagramRelation : BaseDAL_Sorter, IPhartDiagramRelation
{
///
///
///
public override ConnectionConfig ConnectionConfig
{
get { return PhartRelation.ConfigHelper.PostgreSqlConnectionConfig; }
}
///
/// 插入拓展
///
public long InsertEx(Entity.PhartDiagramRelation relation, Yw.Entity.PhartDiagram diagram, List graphList)
{
if (relation == null)
{
return default;
}
using (var db = new SqlSugarClient(ConnectionConfig))
{
try
{
db.BeginTran();
long diagramId = relation.DiagramID;
if (diagram != null)
{
if (diagram.ID > 0)
{
var bol = db.Insertable(diagram).ExecuteCommand() > 0;
if (bol)
{
diagramId = diagram.ID;
}
}
else
{
diagramId = db.Insertable(diagram).ExecuteReturnSnowflakeId();
}
}
if (diagramId < 1)
{
db.RollbackTran();
return default;
}
if (graphList != null && graphList.Any())
{
List graphIds = null;
graphList.ForEach(x => x.DiagramID = diagramId);
if (graphList.Exists(x => x.ID > 0))
{
graphList.ForEach(x =>
{
if (x.ID < 1)
{
x.ID = SnowFlakeSingle.instance.NextId();
}
});
if (db.Insertable(graphList).ExecuteCommand() > 0)
{
graphIds = graphList.Select(x => x.ID).Distinct().ToList();
}
}
else
{
graphIds = db.Insertable(graphList).ExecuteReturnSnowflakeIdList();
}
if (graphIds == null || !graphIds.Any())
{
db.RollbackTran();
return default;
}
}
relation.DiagramID = diagramId;
long relationId = 0;
if (relation.ID > 0)
{
var bol = db.Insertable(relation).ExecuteCommand() > 0;
if (bol)
{
relationId = relation.ID;
}
}
else
{
relationId = db.Insertable(relation).ExecuteReturnSnowflakeId();
}
if (relationId < 1)
{
db.RollbackTran();
return default;
}
db.CommitTran();
return relationId;
}
catch
{
db.RollbackTran();
throw;
}
}
}
///
/// 更新拓展
///
public bool UpdateEx(Entity.PhartDiagramRelation relation, Yw.Entity.PhartDiagram diagram, List graphList)
{
using (var db = new SqlSugarClient(ConnectionConfig))
{
try
{
db.BeginTran();
var bol = db.Updateable(relation).ExecuteCommandHasChange();
if (!bol)
{
db.RollbackTran();
return false;
}
if (diagram != null)
{
if (diagram.ID != relation.DiagramID)
{
db.RollbackTran();
return false;
}
bol = db.Updateable(diagram).ExecuteCommandHasChange();
if (!bol)
{
db.RollbackTran();
return false;
}
}
if (graphList != null && graphList.Count > 0)
{
if (graphList.Exists(x => x.DiagramID != relation.DiagramID))
{
db.RollbackTran();
return false;
}
bol = db.Updateable(graphList).ExecuteCommandHasChange();
if (!bol)
{
db.RollbackTran();
return false;
}
}
db.CommitTran();
return true;
}
catch
{
db.RollbackTran();
throw;
}
}
}
///
/// 更新 OtherName
///
public bool UpdateOtherName(long ID, string OtherName)
{
using (var db = new SqlSugarClient(ConnectionConfig))
{
return db.Updateable()
.SetColumns(x => x.OtherName == OtherName)
.Where(x => x.ID == ID)
.ExecuteCommandHasChange();
}
}
///
/// 更新 Description
///
public bool UpdateDescription(long ID, string Description)
{
using (var db = new SqlSugarClient(ConnectionConfig))
{
return db.Updateable()
.SetColumns(x => x.Description == Description)
.Where(x => x.ID == ID)
.ExecuteCommandHasChange();
}
}
///
/// 更新 Importance
///
public bool UpdateImportance(long ID, int Importance)
{
using (var db = new SqlSugarClient(ConnectionConfig))
{
return db.Updateable()
.SetColumns(x => x.Importance == Importance)
.Where(x => x.ID == ID)
.ExecuteCommandHasChange();
}
}
///
/// 通过 ObjectType ObjectID 删除
///
public bool DeleteByObjectTypeAndObjectID(string ObjectType, long ObjectID)
{
using (var db = new SqlSugarClient(ConnectionConfig))
{
return db.Deleteable()
.Where(x => x.ObjectType == ObjectType)
.Where(x => x.ObjectID == ObjectID)
.ExecuteCommandHasChange();
}
}
///
/// 通过 DiagramID 删除所有映射、图表、图形
///
public bool DeleteByDiagramID(long DiagramID)
{
using (var db = new SqlSugarClient(ConnectionConfig))
{
try
{
db.BeginTran();
var bol = db.Deleteable().Where(x => x.DiagramID == DiagramID).ExecuteCommandHasChange();
if (!bol)
{
db.RollbackTran();
return false;
}
bol = db.Deleteable().Where(x => x.ID == DiagramID).ExecuteCommandHasChange();
if (!bol)
{
db.RollbackTran();
return false;
}
bol = db.Deleteable().Where(x => x.DiagramID == DiagramID).ExecuteCommandHasChange();
db.CommitTran();
return true;
}
catch
{
db.RollbackTran();
throw;
}
}
}
//public override bool DeleteByID(long ID)
//{
// using (var db = new SqlSugarClient(ConnectionConfig))
// {
// try
// {
// var entity = db.Queryable().Single(x => x.ID == ID);
// if (entity == null)
// return false;
// var list = db.Queryable().Where(x => x.DiagramID == entity.DiagramID);
// if (list != null && list.Count() > 1)
// {
// return base.DeleteByID(ID);
// }
// else
// {
// db.BeginTran();
// var bol = db.Deleteable().Where(x => x.DiagramID == entity.DiagramID).ExecuteCommandHasChange();
// if (!bol)
// {
// db.RollbackTran();
// return false;
// }
// bol = db.Deleteable().Where(x => x.ID == entity.DiagramID).ExecuteCommandHasChange();
// if (!bol)
// {
// db.RollbackTran();
// return false;
// }
// bol = db.Deleteable().Where(x => x.DiagramID == entity.DiagramID).ExecuteCommandHasChange();
// db.CommitTran();
// return true;
// }
// }
// catch
// {
// db.RollbackTran();
// throw;
// }
// }
//}
}
}