From ba4fd2f2456a3cee97cc90204c9e21505a42b2aa Mon Sep 17 00:00:00 2001 From: lixiaojun <1287241240@qq.com> Date: 星期五, 25 十月 2024 14:40:09 +0800 Subject: [PATCH] 优化Revit解析 --- Service/HStation.Service.Xhs.Core/05-service/01-project/XhsProject.cs | 580 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 580 insertions(+), 0 deletions(-) diff --git a/Service/HStation.Service.Xhs.Core/05-service/01-project/XhsProject.cs b/Service/HStation.Service.Xhs.Core/05-service/01-project/XhsProject.cs new file mode 100644 index 0000000..cc9042b --- /dev/null +++ b/Service/HStation.Service.Xhs.Core/05-service/01-project/XhsProject.cs @@ -0,0 +1,580 @@ +锘縩amespace HStation.Service +{ + /// <summary> + /// + /// </summary> + public partial class XhsProject + { + #region Cache + + //鑾峰彇缂撳瓨 + private static List<Model.XhsProject> GetCache() + { + var all = XhsProjectCacheHelper.GetSet(() => + { + var dal = DALCreateHelper.CreateDAL<HStation.DAL.IXhsProject>(); + var entity_list = dal.GetAll(); + var model_list = Entity2Models(entity_list); + if (model_list == null) + { + model_list = new List<Model.XhsProject>(); + } + return model_list; + }, Yw.Service.ConfigHelper.CacheKeepTime, Yw.Service.ConfigHelper.CacheRandomTime); + return all; + } + + //閫氳繃 ID 鏇存柊缂撳瓨 + private static void UpdateCache(long ID) + { + var dal = DALCreateHelper.CreateDAL<HStation.DAL.IXhsProject>(); + var entity_ds = dal.GetByID(ID); + var model_ds = Entity2Model(entity_ds); + var all = GetCache(); + var model = all.Find(x => x.ID == ID); + if (model == null) + { + all.Add(model_ds); + } + else + { + model.Reset(model_ds); + } + XhsProjectCacheHelper.Trigger(); + } + + //閫氳繃 Ids 鏇存柊缂撳瓨 + private static void UpdateCache(List<long> Ids) + { + if (Ids == null || Ids.Count < 1) + { + return; + } + var dal = DALCreateHelper.CreateDAL<HStation.DAL.IXhsProject>(); + var entity_list = dal.GetByIds(Ids); + var model_list = Entity2Models(entity_list); + var all = GetCache(); + all.RemoveAll(x => Ids.Contains(x.ID)); + if (model_list != null && model_list.Count > 0) + { + all.AddRange(model_list); + } + XhsProjectCacheHelper.Trigger(); + } + + //绉婚櫎缂撳瓨 + private static void RemoveCache(long ID) + { + var all = GetCache(); + all.RemoveAll(x => x.ID == ID); + XhsProjectCacheHelper.Trigger(); + } + + /// <summary> + /// 鍙戝竷缂撳瓨 + /// </summary> + public static void PublishCache(string key) + { + XhsProjectCacheHelper.Publish(key); + } + + #endregion + + #region Query + + /// <summary> + /// 鑾峰彇鎵�鏈� + /// </summary> + public List<Model.XhsProject> GetAll() + { + var all = GetCache(); + return all.OrderBy(x => x.ParentIds.Count).ThenBy(x => x.SortCode).ToList(); + } + + /// <summary> + /// 閫氳繃 ID 鑾峰彇 + /// </summary> + public Model.XhsProject GetByID(long ID) + { + var all = GetAll(); + return all.Find(x => x.ID == ID); + } + + /// <summary> + /// 閫氳繃 ID 鑾峰彇 + /// </summary> + public List<Model.XhsProject> GetByIds(List<long> Ids) + { + if (Ids == null || Ids.Count < 1) + { + return default; + } + var all = GetAll(); + return all.Where(x => Ids.Contains(x.ID)).OrderBy(x => x.ParentIds.Count).ThenBy(x => x.SortCode).ToList(); + } + + /// <summary> + /// 閫氳繃 ID 鑾峰彇瀛愮骇鍙婅嚜韬� + /// </summary> + public List<Model.XhsProject> GetChildAndSelfByID(long ID) + { + var all = GetAll(); + var list = all.Where(x => x.ID == ID || x.ParentIds.Contains(ID)).OrderBy(x => x.ParentIds.Count).ThenBy(x => x.SortCode).ToList(); + return list; + } + + /// <summary> + /// 閫氳繃 ID 鑾峰彇瀛愮骇 + /// </summary> + public List<Model.XhsProject> GetChildrenByID(long ID) + { + var all = GetAll(); + var list = all.Where(x => x.ParentIds.Contains(ID)).OrderBy(x => x.ParentIds.Count).ThenBy(x => x.SortCode).ToList(); + return list; + } + + /// <summary> + /// 閫氳繃 ID 鑾峰彇鐖剁骇 + /// </summary> + public List<Model.XhsProject> GetParentByID(long ID) + { + var all = GetAll(); + var model = all.Find(x => x.ID == ID); + if (model == null) + { + return default; + } + return all.Where(x => model.ParentIds.Contains(x.ID)).OrderBy(x => x.ParentIds.Count).ThenBy(x => x.SortCode).ToList(); + } + + /// <summary> + /// 閫氳繃 ID 鑾峰彇鐖剁骇鍙婅嚜韬� + /// </summary> + public List<Model.XhsProject> GetParentAndSelfByID(long ID) + { + var all = GetAll(); + var model = all.Find(x => x.ID == ID); + if (model == null) + { + return default; + } + return all.Where(x => model.ParentIds.Contains(x.ID) || x.ID == ID).OrderBy(x => x.ParentIds.Count).ThenBy(x => x.SortCode).ToList(); + } + + /// <summary> + /// 閫氳繃 ParentID 鑾峰彇 + /// </summary> + public List<Model.XhsProject> GetByParentID(long ParentID) + { + var all = GetAll(); + return all.Where(x => x.ParentIds.LastOrDefault() == ParentID).OrderBy(x => x.SortCode).ToList(); + } + + /// <summary> + /// 鏄惁鍖呭惈瀛愰」 + /// </summary> + public bool HasChildren(long ID) + { + var all = GetAll(); + return all.Exists(x => x.ParentIds.Contains(ID)); + } + + /// <summary> + /// 鑾峰彇鏈�澶ф帓搴忕爜 + /// </summary> + public int GetMaxSortCode(long ParentID) + { + List<Model.XhsProject> list = null; + if (ParentID < 1) + { + list = GetAll(); + list = list?.Where(x => x.ParentIds.Count < 1).ToList(); + } + else + { + list = GetByParentID(ParentID); + } + if (list == null || list.Count < 1) + { + return 0; + } + return list.Max(x => x.SortCode); + } + + /// <summary> + /// 鍒涘缓缂栧彿 + /// </summary> + public string CreateNO() + { + var all = GetAll(); + var allNoList = all.Select(x => x.NO).Distinct().ToList(); + var prefix = $"PRJ-{DateTime.Now:yyyy-MM-dd}"; + var no = new Yw.Untity.UniqueNameCreater().Create(prefix, allNoList, "-"); + return no; + } + + #endregion + + #region Insert + + /// <summary> + /// 鎻掑叆涓�鏉℃暟鎹� + /// </summary> + public long Insert(Model.XhsProject model) + { + if (model == null) + { + return default; + } + if (string.IsNullOrEmpty(model.NO)) + { + model.NO = CreateNO(); + } + var dal = DALCreateHelper.CreateDAL<HStation.DAL.IXhsProject>(); + var entity = Model2Entity(model); + var id = dal.Insert(entity); + if (id > 0) + { + UpdateCache(id); + } + return id; + } + + /// <summary> + /// 鎻掑叆澶氭潯 + /// </summary> + public bool Inserts(List<Model.XhsProject> list) + { + if (list == null || list.Count < 1) + { + return false; + } + list.ForEach(x => + { + if (string.IsNullOrEmpty(x.NO)) + { + x.NO = CreateNO(); + } + }); + var dal = DALCreateHelper.CreateDAL<HStation.DAL.IXhsProject>(); + var entity_list = Model2Entities(list); + var ids = dal.InsertsR(entity_list); + if (ids != null && ids.Count > 0) + { + UpdateCache(ids); + return true; + } + return false; + } + + /// <summary> + /// 鎻掑叆鎷撳睍 + /// </summary> + public long InsertEx(Model.XhsProject project, List<Model.XhsProjectSite> siteList) + { + if (project == null) + { + return default; + } + if (string.IsNullOrEmpty(project.NO)) + { + project.NO = CreateNO(); + } + var dal = DALCreateHelper.CreateDAL<HStation.DAL.IXhsProject>(); + var entityProject = Model2Entity(project); + var entitySiteList = XhsProjectSite.Model2Entities(siteList); + + var id = dal.InsertEx(entityProject, entitySiteList); + if (id > 0) + { + UpdateCache(id); + XhsProjectSite.UpdateCacheByProjectID(id); + } + return id; + } + + #endregion + + #region Update + + /// <summary> + /// 鏇存柊涓�鏉� + /// </summary> + public bool Update(Model.XhsProject model) + { + if (model == null) + { + return false; + } + var entity = Model2Entity(model); + var dal = DALCreateHelper.CreateDAL<HStation.DAL.IXhsProject>(); + var bol = dal.Update(entity); + if (bol) + { + UpdateCache(model.ID); + } + return bol; + } + + /// <summary> + /// 鎵归噺鏇存柊 + /// </summary> + public bool Updates(List<Model.XhsProject> list) + { + if (list == null || list.Count < 1) + { + return false; + } + if (list.Exists(x => x.ID < 1)) + { + return false; + } + var entity_list = Model2Entities(list); + var dal = DALCreateHelper.CreateDAL<HStation.DAL.IXhsProject>(); + var bol = dal.Updates(entity_list); + if (bol) + { + UpdateCache(list.Select(x => x.ID).ToList()); + } + return bol; + } + + /// <summary> + /// 鏇存柊鎷撳睍 + /// </summary> + public bool UpdateEx(Model.XhsProject project, List<Model.XhsProjectSite> siteList) + { + if (project == null) + { + return false; + } + if (project.ID < 1) + { + return false; + } + var dal = DALCreateHelper.CreateDAL<HStation.DAL.IXhsProject>(); + var entityProject = Model2Entity(project); + var entitySiteList = XhsProjectSite.Model2Entities(siteList); + var bol = dal.UpdateEx(entityProject, entitySiteList); + if (bol) + { + UpdateCache(project.ID); + XhsProjectSite.UpdateCacheByProjectID(project.ID); + } + return bol; + } + + /// <summary> + /// 鏇存柊鎺掑簭鐮� + /// </summary> + public bool UpdateSortCode(long ID, int SortCode) + { + if (ID < 1) + { + return false; + } + var dal = DALCreateHelper.CreateDAL<HStation.DAL.IXhsProject>(); + var bol = dal.UpdateSortCode(ID, SortCode); + if (bol) + { + UpdateCache(ID); + } + return bol; + } + + /// <summary> + /// 鏇存柊鎺掑簭 + /// </summary> + public bool UpdateSorter(List<Yw.Model.Sorter> sorters) + { + if (sorters == null || sorters.Count < 1) + { + return false; + } + if (sorters.Exists(x => x.ID < 1)) + { + return false; + } + var dal = DALCreateHelper.CreateDAL<HStation.DAL.IXhsProject>(); + var bol = dal.UpdateSorter(sorters.ToEntityList()); + if (bol) + { + UpdateCache(sorters.Select(x => x.ID).ToList()); + } + return bol; + } + + /// <summary> + /// 鏇存柊鏍戞帓搴忕爜 + /// </summary> + public bool UpdateTreeSortCode(long ID, List<long> ParentIds, int SortCode) + { + if (ID < 1) + { + return false; + } + var dal = DALCreateHelper.CreateDAL<HStation.DAL.IXhsProject>(); + var bol = dal.UpdateTreeSortCode(ID, TreeParentIdsHelper.ToString(ParentIds), SortCode); + if (bol) + { + UpdateCache(ID); + } + return bol; + } + + /// <summary> + /// 鏇存柊鏍戞帓搴� + /// </summary> + public bool UpdateTreeSorter(List<Yw.Model.TreeSorter> sorters) + { + if (sorters == null || sorters.Count < 1) + { + return false; + } + if (sorters.Exists(x => x.ID < 1)) + { + return false; + } + var dal = DALCreateHelper.CreateDAL<HStation.DAL.IXhsProject>(); + var bol = dal.UpdateTreeSorter(sorters.ToEntityList()); + if (bol) + { + UpdateCache(sorters.Select(x => x.ID).ToList()); + } + return bol; + } + + /// <summary> + /// 鏇存柊 Paras + /// </summary> + public bool UpdateParas(long ID, Dictionary<string, string> Paras) + { + if (ID < 1) + { + return false; + } + var dal = DALCreateHelper.CreateDAL<HStation.DAL.IXhsProject>(); + var bol = dal.UpdateParas(ID, ParasHelper.ToString(Paras)); + if (bol) + { + UpdateCache(ID); + } + return bol; + } + + /// <summary> + /// 鏇存柊 Flags + /// </summary> + public bool UpdateFlags(long ID, List<string> Flags) + { + if (ID < 1) + { + return false; + } + var dal = DALCreateHelper.CreateDAL<HStation.DAL.IXhsProject>(); + var bol = dal.UpdateFlags(ID, FlagsHelper.ToString(Flags)); + if (bol) + { + UpdateCache(ID); + } + return bol; + } + + /// <summary> + /// 鏇存柊 TagName + /// </summary> + public bool UpdateTagName(long ID, string TagName) + { + if (ID < 1) + { + return false; + } + var dal = DALCreateHelper.CreateDAL<HStation.DAL.IXhsProject>(); + var bol = dal.UpdateTagName(ID, TagName); + if (bol) + { + UpdateCache(ID); + } + return bol; + } + + + #endregion + + #region Exist + + /// <summary> + /// 鍒ゆ柇 TagName 鏄惁瀛樺湪 + /// </summary> + public bool IsExistTagName(string TagName) + { + if (string.IsNullOrEmpty(TagName)) + { + return false; + } + var all = GetAll(); + return all.Exists(x => x.TagName == TagName); + } + + /// <summary> + /// 鍒ゆ柇 TagName 鏄惁瀛樺湪 ExceptID + /// </summary> + public bool IsExistTagNameExceptID(string TagName, long ExceptID) + { + if (string.IsNullOrEmpty(TagName)) + { + return false; + } + var all = GetAll(); + return all.Exists(x => x.TagName == TagName && x.ID != ExceptID); + } + + #endregion + + #region Delete + + /// <summary> + /// 閫氳繃 ID 鍒犻櫎 + /// </summary> + public bool DeleteByID(long ID, out string Msg) + { + Msg = string.Empty; + var serviceProjectSite = new HStation.Service.XhsProjectSite(); + if (serviceProjectSite.IsExistTable()) + { + if (serviceProjectSite.IsExistByProjectID(ID)) + { + Msg = "瀛樺湪绔欑偣淇℃伅"; + return false; + } + } + var dal = DALCreateHelper.CreateDAL<HStation.DAL.IXhsProject>(); + var bol = dal.DeleteByID(ID); + if (bol) + { + RemoveCache(ID); + } + return bol; + } + + /// <summary> + /// 閫氳繃 ID 鍒犻櫎(鍚屾椂鍒犻櫎 Site) + /// </summary> + public bool DeleteExByID(long ID, out string Msg) + { + Msg = string.Empty; + var dal = DALCreateHelper.CreateDAL<HStation.DAL.IXhsProject>(); + var bol = dal.DeleteExByID(ID); + if (bol) + { + RemoveCache(ID); + XhsProjectSite.RemoveCacheByProjectID(ID); + } + return bol; + } + + #endregion + + + } +} \ No newline at end of file -- Gitblit v1.9.3