Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
0
        /// <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());
        }