lixiaojun
2024-12-04 85547d93c3d57de82af6a6e16301218ffd1e89f3
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
    }
}