diff --git a/Src/Dlhis.Basic/Organization/Controllers/DepartmentsController.cs b/Src/Dlhis.Basic/Organization/Controllers/DepartmentsController.cs index 55fa4c2b..678e2e0a 100644 --- a/Src/Dlhis.Basic/Organization/Controllers/DepartmentsController.cs +++ b/Src/Dlhis.Basic/Organization/Controllers/DepartmentsController.cs @@ -1,6 +1,8 @@ -using Dlhis.Basic.Organization.Response; +using Dlhis.Basic.Organization.Request; +using Dlhis.Basic.Organization.Response; using Dlhis.Basic.Organization.Services; using Kurisu.AspNetCore.MVC; +using Kurisu.Core.DataAccess.Dto; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; @@ -31,4 +33,14 @@ public class DepartmentsController : ControllerBase { return await _departmentService.GetTreeAsync(); } + + /// + /// 获取部门树分页 + /// + /// + [HttpGet("treepage")] + public async Task> GetTreePageAsync([FromQuery]DepartmentPageRequest request) + { + return await _departmentService.GetTreePageAsync(request); + } } diff --git a/Src/Dlhis.Basic/Organization/Request/DepartmentPageRequest.cs b/Src/Dlhis.Basic/Organization/Request/DepartmentPageRequest.cs new file mode 100644 index 00000000..cdba378c --- /dev/null +++ b/Src/Dlhis.Basic/Organization/Request/DepartmentPageRequest.cs @@ -0,0 +1,8 @@ +using Kurisu.Core.DataAccess.Dto; + +namespace Dlhis.Basic.Organization.Request +{ + public class DepartmentPageRequest : PageDto + { + } +} diff --git a/Src/Dlhis.Basic/Organization/Services/IDepartmentService.cs b/Src/Dlhis.Basic/Organization/Services/IDepartmentService.cs index 5e3784c1..cfd0b9d2 100644 --- a/Src/Dlhis.Basic/Organization/Services/IDepartmentService.cs +++ b/Src/Dlhis.Basic/Organization/Services/IDepartmentService.cs @@ -1,8 +1,12 @@ -using Dlhis.Basic.Organization.Response; +using Dlhis.Basic.Organization.Request; +using Dlhis.Basic.Organization.Response; +using Kurisu.Core.DataAccess.Dto; namespace Dlhis.Basic.Organization.Services; public interface IDepartmentService : IScopeDependency { Task> GetTreeAsync(); + + Task> GetTreePageAsync(DepartmentPageRequest request); } diff --git a/Src/Dlhis.Basic/Organization/Services/Implements/DepartmentService.cs b/Src/Dlhis.Basic/Organization/Services/Implements/DepartmentService.cs index 3c207dc8..a39166e4 100644 --- a/Src/Dlhis.Basic/Organization/Services/Implements/DepartmentService.cs +++ b/Src/Dlhis.Basic/Organization/Services/Implements/DepartmentService.cs @@ -1,8 +1,11 @@ -using Dlhis.Basic.Organization.Response; +using Dlhis.Basic.Organization.Request; +using Dlhis.Basic.Organization.Response; using Dlhis.Entity.Basic.Entity; using Kurisu.AspNetCore.Utils.Extensions; +using Kurisu.Core.DataAccess.Dto; using Kurisu.SqlSugar.Services; using Mapster; +using System.Collections.Generic; namespace Dlhis.Basic.Organization.Services.Implements; @@ -28,6 +31,34 @@ public class DepartmentService : IDepartmentService return tops; } + public async Task> GetTreePageAsync(DepartmentPageRequest request) + { + var departments = await _dbContext + .Queryable() + .WhereIF(!request.Search.IsEmpty(),x => x.Name.Contains(request.Search)).ToListAsync(); + + var tops = departments.Where(x => x.PNo.IsEmpty()).Adapt>(); + + tops.ForEach(x => + { + RecursionGetNext(x, departments); + }); + + // 分页操作 + var startIndex = (request.PageIndex - 1) * request.PageSize; + var pagedData = tops.Skip(startIndex).Take(request.PageSize).ToList(); + + var pagination = new Pagination + { + PageIndex = request.PageIndex, + PageSize = request.PageSize, + Total = tops.Count, // 使用原始列表的总数进行分页 + Data = pagedData + }; + + return pagination; + + } private void RecursionGetNext(DepartmentTreeResponse current, List departments) {