diff --git a/src/Shentun.Peis.Application/CustomerOrgs/CustomerOrgAppService.cs b/src/Shentun.Peis.Application/CustomerOrgs/CustomerOrgAppService.cs index 00541b4..0106e5e 100644 --- a/src/Shentun.Peis.Application/CustomerOrgs/CustomerOrgAppService.cs +++ b/src/Shentun.Peis.Application/CustomerOrgs/CustomerOrgAppService.cs @@ -311,7 +311,9 @@ namespace Shentun.Peis.CustomerOrgs } } - var items = from p in dataList.Where(m => m.Id != GuidFlag.PersonCustomerOrgId).OrderByDescending(o => o.DisplayOrder) + var customerOrgList = dataList.ToList(); + + var items = from p in customerOrgList.Where(m => m.Id != GuidFlag.PersonCustomerOrgId).OrderByDescending(o => o.DisplayOrder).AsParallel() select new CustomerOrgTreeChildDto() { Id = p.Id, @@ -320,28 +322,55 @@ namespace Shentun.Peis.CustomerOrgs DisplayName = p.DisplayName, SimpleCode = p.SimpleCode, ShortName = p.ShortName, - CustomerOrgCode = p.CustomerOrgCode + CustomerOrgCode = p.CustomerOrgCode, + TreeChildren = new List() }; - var customerOrgTreeChildList = GetTree(items.ToList(), 0, ""); + var customerOrgTreeChildList = GetTree(items.ToList(), null); + + + //var tree1 = items.Where(m => m.ParentId == null).ToList(); + + //foreach (var item1 in tree1) + //{ + // item1.TreeChildren = items.Where(m => m.ParentId == item1.Id).ToList(); + + // foreach (var item2 in item1.TreeChildren) + // { + // item2.TreeChildren = items.Where(m => m.ParentId == item2.Id).ToList(); + + // foreach (var item3 in item2.TreeChildren) + // { + // item3.TreeChildren = items.Where(m => m.ParentId == item3.Id).ToList(); + + // foreach (var item4 in item3.TreeChildren) + // { + // item4.TreeChildren = items.Where(m => m.ParentId == item4.Id).ToList(); + // } + // } + // } + //} + + + result.AddRange(customerOrgTreeChildList); + return result; } /// - /// 使用Code进行递归 + /// 使用parentId进行递归 /// /// - /// - /// + /// /// - private List GetTree(List items, int deep, string prefix) + private List GetTree(List items, Guid? parentId) { - return (from p in items - where p.Code.StartsWith(prefix) && p.Code.Count(a => a == '.') == deep - let subs = GetTree(items, deep + 1, p.Code) + return (from p in items.AsParallel() + where p.ParentId == parentId + let subs = GetTree(items, p.Id) select new CustomerOrgTreeChildDto() { Id = p.Id, @@ -357,6 +386,33 @@ namespace Shentun.Peis.CustomerOrgs } + ///// + ///// 使用Code进行递归 + ///// + ///// + ///// + ///// + ///// + //private List GetTree(List items, int deep, string prefix) + //{ + // return (from p in items + // where p.Code.StartsWith(prefix) && p.Code.Count(a => a == '.') == deep + // let subs = GetTree(items, deep + 1, p.Code) + // select new CustomerOrgTreeChildDto() + // { + // Id = p.Id, + // ParentId = p.ParentId, + // Code = p.Code, + // DisplayName = p.DisplayName, + // SimpleCode = p.SimpleCode, + // ShortName = p.ShortName, + // CustomerOrgCode = p.CustomerOrgCode, + // TreeChildren = subs.ToList() + // } + // ).ToList(); + //} + + /// /// 获取顶级目录ID ///