From 85547d93c3d57de82af6a6e16301218ffd1e89f3 Mon Sep 17 00:00:00 2001
From: lixiaojun <1287241240@qq.com>
Date: 星期三, 04 十二月 2024 17:40:57 +0800
Subject: [PATCH] Merge branch 'master' of http://47.103.154.90:83/r/HStation/XHS.V1.0

---
 Service/HStation.Service.Xhs.Core/05-service/01-project/XhsProject.cs |  296 +++++++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 215 insertions(+), 81 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
index 4976f43..cc9042b 100644
--- a/Service/HStation.Service.Xhs.Core/05-service/01-project/XhsProject.cs
+++ b/Service/HStation.Service.Xhs.Core/05-service/01-project/XhsProject.cs
@@ -78,7 +78,7 @@
             XhsProjectCacheHelper.Publish(key);
         }
 
-        #endregion Cache
+        #endregion 
 
         #region Query
 
@@ -88,7 +88,7 @@
         public List<Model.XhsProject> GetAll()
         {
             var all = GetCache();
-            return all.OrderBy(x => x.SortCode).ToList();
+            return all.OrderBy(x => x.ParentIds.Count).ThenBy(x => x.SortCode).ToList();
         }
 
         /// <summary>
@@ -110,23 +110,110 @@
                 return default;
             }
             var all = GetAll();
-            return all.Where(x => Ids.Contains(x.ID)).OrderBy(x => x.SortCode).ToList();
+            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()
+        public int GetMaxSortCode(long ParentID)
         {
-            var all = GetAll();
-            if (all == null || all.Count < 1)
+            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 all.Max(x => x.SortCode);
+            return list.Max(x => x.SortCode);
         }
 
-        #endregion Query
+        /// <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
 
@@ -138,6 +225,10 @@
             if (model == null)
             {
                 return default;
+            }
+            if (string.IsNullOrEmpty(model.NO))
+            {
+                model.NO = CreateNO();
             }
             var dal = DALCreateHelper.CreateDAL<HStation.DAL.IXhsProject>();
             var entity = Model2Entity(model);
@@ -158,6 +249,13 @@
             {
                 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);
@@ -170,71 +268,32 @@
         }
 
         /// <summary>
-        /// 鎻掑叆椤圭洰鎷撳睍
+        /// 鎻掑叆鎷撳睍
         /// </summary>
-        public long InsertsEx(Model.XhsProject project, Model.XhsProjectItem Item, Model.XhsProjectItemModel Model, Model.XhsProjectItemModelMap Map)
+        public long InsertEx(Model.XhsProject project, List<Model.XhsProjectSite> siteList)
         {
-            if (project == null || Item == null || Model == null || Map == null)
+            if (project == null)
             {
                 return default;
             }
+            if (string.IsNullOrEmpty(project.NO))
+            {
+                project.NO = CreateNO();
+            }
             var dal = DALCreateHelper.CreateDAL<HStation.DAL.IXhsProject>();
-            var projectentity = Model2Entity(project);
-            var itementity = XhsProjectItem.Model2Entity(Item);
-            var modelentity = XhsProjectItemModel.Model2Entity(Model);
-            var mapenetity = XhsProjectItemModelMap.Model2Entity(Map);
-            var id = dal.InsertEx(projectentity, itementity, modelentity, mapenetity);
+            var entityProject = Model2Entity(project);
+            var entitySiteList = XhsProjectSite.Model2Entities(siteList);
+
+            var id = dal.InsertEx(entityProject, entitySiteList);
             if (id > 0)
             {
                 UpdateCache(id);
-                XhsProjectItem.UpdateCacheByPrjID(id);
-                XhsProjectItemModel.UpdateCacheByPrjID(id);
-                return id;
+                XhsProjectSite.UpdateCacheByProjectID(id);
             }
-            return default;
+            return id;
         }
 
-        /// <summary>
-        /// 缂栬緫椤圭洰鎷撳睍
-        /// </summary>
-        public bool UpdateEx(Model.XhsProject project, Model.XhsProjectItem Item)
-        {
-            if (project == null || Item == null)
-            {
-                return default;
-            }
-            var dal = DALCreateHelper.CreateDAL<HStation.DAL.IXhsProject>();
-            var projectentity = Model2Entity(project);
-            var itementity = XhsProjectItem.Model2Entity(Item);
-            var result = dal.UpdateEx(projectentity, itementity);
-            if (result)
-            {
-                UpdateCache(project.ID);
-                return true;
-            }
-            return false;
-        }
-
-        /// <summary>
-        /// 鍒犻櫎椤圭洰鎷撳睍
-        /// </summary>
-        public bool DeleteEx(long ID)
-        {
-            if (ID < 0)
-            {
-                return default;
-            }
-            var dal = DALCreateHelper.CreateDAL<HStation.DAL.IXhsProject>();
-            var result = dal.DeleteEx(ID);
-            if (result)
-            {
-                RemoveCache(ID);
-                return true;
-            }
-            return default;
-        }
-
-        #endregion Insert
+        #endregion 
 
         #region Update
 
@@ -281,6 +340,31 @@
         }
 
         /// <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)
@@ -313,6 +397,46 @@
             }
             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());
@@ -374,25 +498,8 @@
             return bol;
         }
 
-        /// <summary>
-        /// 鏇存柊 UseStatus
-        /// </summary>
-        public bool UpdateUseStatus(long ID, Yw.Model.eUseStatus UseStatus)
-        {
-            if (ID < 1)
-            {
-                return false;
-            }
-            var dal = DALCreateHelper.CreateDAL<HStation.DAL.IXhsProject>();
-            var bol = dal.UpdateUseStatus(ID, (int)UseStatus);
-            if (bol)
-            {
-                UpdateCache(ID);
-            }
-            return bol;
-        }
 
-        #endregion Update
+        #endregion 
 
         #region Exist
 
@@ -422,7 +529,7 @@
             return all.Exists(x => x.TagName == TagName && x.ID != ExceptID);
         }
 
-        #endregion Exist
+        #endregion 
 
         #region Delete
 
@@ -432,6 +539,15 @@
         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)
@@ -441,6 +557,24 @@
             return bol;
         }
 
-        #endregion Delete
+        /// <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