• 组织结构树-父子级(递归的使用)


    /// <summary>
     /// 组织部门
     /// </summary>
    
        public class ArchvieOrganizationAppService : RunGoAppServiceBase<Model.Archvie_Organization, DetailArchvieOrganizationDto, string, PagedArchvieOrganizationDto, CreateArchvieOrganizationDto, UpdateArchvieOrganizationDto>, IArchvieOrganizationAppService
        {
            private readonly TenantIdConfig _tenantIdConfig;
            private IRepository<Model.Archvie_Organization, string> _repository;
            public ArchvieOrganizationAppService(TenantIdConfig tenantIdConfig, IRepository<Model.Archvie_Organization, string> repository) : base(repository)
            {
                _tenantIdConfig = tenantIdConfig;
                _repository = repository;
            }
            public List<OrganizeTree> Main = new List<OrganizeTree>();
            #region
            /// <summary>
            /// 获取组织部门结构树
            /// </summary>
            /// <returns></returns>
            public Task<List<OrganizeTree>> GetOrganizationTree() {
                try
                {
                    List<OrganizeTree> children = new List<OrganizeTree>();
                   List<OrganizeTree>allMenu = _repository.GetAllList().Select(e => new OrganizeTree { Id = e.Id, Name = e.Name, SuperiorRowGuid = e.SuperiorRowGuid ,ChildItems=children}).ToList(); //得到数据 
    
                    Main.Add(allMenu.Where(x => x.SuperiorRowGuid ==  null || x.SuperiorRowGuid == "").FirstOrDefault());//根节点
                    //递归
                    AddMenu(allMenu, allMenu.Where(x => x.SuperiorRowGuid == null || x.SuperiorRowGuid == "").FirstOrDefault());
                    //结果树形结构
                    List<OrganizeTree> treeMenu = Main;
                    return Task.FromResult(treeMenu);
                }
                catch (Exception e)
                {
                    throw new UserFriendlyException(e.Message);
                }
            }
            #endregion
            //父子级递归
            public void AddMenu(List<OrganizeTree> all, OrganizeTree curItem)
            {
                List<OrganizeTree> childItems = all.Where(ee => ee.SuperiorRowGuid == curItem.Id).ToList(); //得到子节点
                     curItem.ChildItems = childItems; //将子节点加入
                    //遍历子节点,进行递归,寻找子节点的子节点
                    foreach (var subItem in childItems)
                    {
                        AddMenu(all, subItem);
                    }
                }
             
            }
    
    
    
    
    
    
    public class OrganizeTree
        {
            /// <summary>
            /// 部门唯一标识
            /// </summary>
            public string Id { get; set; }
    
            /// <summary>
            /// 父级部门名称
            /// </summary>
            [StringLength(50)]
            public string Name { get; set; }
         
            /// <summary>
            /// 上级部门唯一标识
            /// </summary>
            [StringLength(50)]
            public string SuperiorRowGuid { get; set; }
            /// <summary>
            /// 子部门
            /// </summary>
            public List<OrganizeTree> ChildItems { get; set; }
    
    
        }
  • 相关阅读:
    Dicom文件转mhd,raw文件格式
    李宏毅机器学习笔记6:Why deep、Semi-supervised
    李宏毅机器学习笔记5:CNN卷积神经网络
    Oracle数据库类型总结
    Oracle数据库连接生成DataX的job-Json
    [JavaWeb基础] 030.dom4j读取xml的4种方法
    [JavaWeb基础] 029.OGNL表达式介绍
    eatwhatApp开发实战(五)
    [Axure教程]0005.系统函数与变量介绍
    eatwhatApp开发实战(四)
  • 原文地址:https://www.cnblogs.com/cyqdeshenluo/p/12166927.html
Copyright © 2020-2023  润新知