/// <summary> /// 对应等级的父级 /// </summary> /// <param name="item"></param> /// <param name="parentLevel">父级等级</param> /// <returns></returns> private Org_Detail[] currentOrgParents(Org_Detail item, int parentLevel = 0) { if (string.IsNullOrEmpty(item?.OrgParentIDALL)) { return(new Org_Detail[0]); } //父级等级为0 if (parentLevel == 0) { var array = GetCurrentOrgAndOrgParentIds(item); return(array); } //当前组织的级别与所要获取级别的等级一致,比如当前组织级别为700,需要获取的级别也为700 if (item.OrgLevelKey == parentLevel) { return(new Org_Detail[1] { item }); } //所在组织级别小于要获取的级别 if (item.OrgLevelKey < parentLevel) { return(new Org_Detail[0]); } //所在组织级别大于要获取的级别,往所要查找的级别获取 var array2 = GetCurrentOrgAndOrgParentIds(item, parentLevel); return(array2); }
/// <summary> /// 取得当前组织与组织对应等级的子集 /// </summary> /// <param name="item">当前组织</param> /// <param name="getLevel">取得等级</param> /// <returns></returns> public List <Org_Detail> GetCurrentOrgAndOrgChilds(Org_Detail item, int getLevel = 0) { var filterList = new List <CommonFilterModel>(); var orderby = new List <CommonOrderModel>() { new CommonOrderModel() { Name = "OrgID", Order = 0 } }; if (getLevel != 0) { //指定级别 filterList.Add(new CommonFilterModel("OrgLevelKey", "=", getLevel.ToString())); } //模糊查询获取所有的子节点 filterList.Add(new CommonFilterModel("OrgParentIDALL", "like", $"%|{item.OrgID}|%")); //TODO:OK.通过wcf获取指定组织的子节点 List <int> list = new List <int>(); var wcfList = _org_ListVistor.GetIdList(1, 100, filterList, orderby); if (wcfList.RetInt > 0) { list = wcfList.Data.Select(m => m).ToList(); } List <Org_Detail> resultList = new List <Org_Detail>(); foreach (var itemChilds in list) { Org_Detail org_Detail = _orgStore.GetModel(itemChilds) ?? new Org_Detail(); resultList.Add(org_Detail); } return(resultList); }
/// <summary> /// 取得当前组织与组织对应等级的子集 /// </summary> /// <param name="orgid"></param> /// <param name="getLevel"></param> /// <returns></returns> public Org_Detail[] GetCurrentOrgAndOrgParentIds(Org_Detail item, int getLevel = 0) { //TODO:OK,获取父级组织的核心方法 if (getLevel == 0) { return(new Org_Detail[1] { item }); } //获取指定等级的组织的父级ID List <int> list = (from e in ExpandHelper.ChangeToIntList(item.OrgParentIDALL.Replace("|", "")).Distinct() where e != 0 select e).ToList(); Org_Detail[] array = new Org_Detail[list.Count]; for (int i = 0; i < list.Count; i++) { //TODO:OK.遍历通过redis获取组织信息,当前组织的父级节点,到根节点3级左右 array[i] = _orgStore.GetModel(list[i]) ?? new Org_Detail(); } //获取大于等于指定级别的组织 return(array.Where(m => m.OrgLevelKey >= getLevel && m.OrgID > 0).OrderByDescending(b => b.OrgLevelKey).ToArray()); }