using Dlhis.Basic.Organization.Response; using Dlhis.Entity.Basic.Entity; using Kurisu.AspNetCore.Utils.Extensions; using Kurisu.SqlSugar.Services; using Mapster; namespace Dlhis.Basic.Organization.Services.Implements; public class DepartmentService : IDepartmentService { private readonly IDbContext _dbContext; public DepartmentService(IDbContext dbContext) { _dbContext = dbContext; } public async Task> GetTreeAsync() { var departments = await _dbContext.Queryable().ToListAsync(); var tops = departments.Where(x => x.PCode.IsEmpty()).Adapt>(); tops.ForEach(x => { RecursionGetNext(x, departments); }); return tops; } private void RecursionGetNext(DepartmentTreeResponse current, List departments) { var next = departments.Where(x => x.PCode == current.Code).ToList(); current.Next = next.Adapt>(); foreach (var item in next) { RecursionGetNext(item.Adapt(), departments); } } }