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