From 06690c907e45c9144469245287f3bd8e06adf473 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=A6=20=E8=B5=B5?= <89237069@qq.com> Date: Wed, 4 Jun 2025 16:53:59 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CheryRecurringJobInputPageController.cs | 105 ++++++++++--- .../CheryRecurringJobOutPageController.cs | 94 +++++------ .../Controllers/NormalBaseController.cs | 148 ++++++++++++------ API/Wood.Util/EntityHelper.cs | 112 ++++++------- 4 files changed, 281 insertions(+), 178 deletions(-) diff --git a/API/Wood.Service/Controllers/CheryRecurringJobInputPageController.cs b/API/Wood.Service/Controllers/CheryRecurringJobInputPageController.cs index f3a74de..3accf55 100644 --- a/API/Wood.Service/Controllers/CheryRecurringJobInputPageController.cs +++ b/API/Wood.Service/Controllers/CheryRecurringJobInputPageController.cs @@ -19,6 +19,7 @@ using TaskManager.Contracts.Dtos; using TaskManager.Entity; using TaskManager.EntityFramework; using TaskManager.EntityFramework.Repository; +using Wood.Util.Filters; using static Dapper.SqlMapper; namespace TaskManager.Controllers @@ -254,54 +255,106 @@ namespace TaskManager.Controllers await _repository.DeleteAsync(id); return new JsonResult(new { Code = 200, Message = "删除成功!" }); ; } - [HttpGet] - public async Task GetPaged( - [FromQuery] int pageNumber = 1, - [FromQuery] int pageSize = 10, - [FromQuery] string sortBy = "", - [FromQuery] bool isAscending = true, - [FromQuery] Dictionary filters = null) + //[HttpGet] + //public async Task GetPaged( + //[FromQuery] int pageNumber = 1, + //[FromQuery] int pageSize = 10, + //[FromQuery] string sortBy = "", + //[FromQuery] bool isAscending = true, + //[FromQuery] Dictionary filters = null) + //{ + // var pagingParams = new PagingParams + // { + // PageNumber = pageNumber, + // PageSize = pageSize, + // SortBy = sortBy, + // IsAscending = isAscending, + // Filters = filters + // }; + + // // 可以在这里构建表达式树过滤条件 + // Expression> filter = null; + + // var pagedResult = await _repository.GetPagedAsync(filter, pagingParams); + // return Ok(pagedResult); + //} + + /// + /// 分页New + /// + /// + /// + [HttpPost] + public async Task>> GetDataPaged(RequestInputBase input) { var pagingParams = new PagingParams { - PageNumber = pageNumber, - PageSize = pageSize, - SortBy = sortBy, - IsAscending = isAscending, - Filters = filters + PageNumber = input.pageNumber, + PageSize = input.pageSize, + SortBy = input.sortBy, + IsAscending = input.isAscending, }; // 可以在这里构建表达式树过滤条件 Expression> filter = null; - var pagedResult = await _repository.GetPagedAsync(filter, pagingParams); + var pagedResult = await _repository.GetDataPagedAsync(filter, pagingParams, input.Condition); return Ok(pagedResult); } - [HttpGet] - public async Task Export([FromQuery] int pageNumber = 1, - [FromQuery] int pageSize = 10, - [FromQuery] string sortBy = "", - [FromQuery] bool isAscending = true, - [FromQuery] Dictionary filters = null) + /// + /// 导出New + /// + /// + /// + [HttpPost] + public async Task ExportData(RequestInputBase input) { var pagingParams = new PagingParams { - PageNumber = pageNumber, - PageSize = pageSize, - SortBy = sortBy, - IsAscending = isAscending, - Filters = filters + PageNumber = input.pageNumber, + PageSize = input.pageSize, + SortBy = input.sortBy, + IsAscending = input.isAscending, + }; // 可以在这里构建表达式树过滤条件 //Expression> filter = null; - var pagedResult = await _repository.GetPagedAsync(null, pagingParams); + var pagedResult = await _repository.GetDataPagedAsync(null, pagingParams, input.Condition); return await ExportFile(pagedResult.Data, Guid.NewGuid().ToString() + ".xlsx"); + } - } + + + + + // [HttpGet] + // public async Task Export([FromQuery] int pageNumber = 1, + //[FromQuery] int pageSize = 10, + //[FromQuery] string sortBy = "", + //[FromQuery] bool isAscending = true, + //[FromQuery] Dictionary filters = null) + // { + // var pagingParams = new PagingParams + // { + // PageNumber = pageNumber, + // PageSize = pageSize, + // SortBy = sortBy, + // IsAscending = isAscending, + // Filters = filters + // }; + + // // 可以在这里构建表达式树过滤条件 + // //Expression> filter = null; + + // var pagedResult = await _repository.GetPagedAsync(null, pagingParams); + // return await ExportFile(pagedResult.Data, Guid.NewGuid().ToString() + ".xlsx"); + + + // } protected async Task ExportFile(ICollection dtos, string fileName) { var excelExporter = HttpContext.RequestServices.GetRequiredService(); diff --git a/API/Wood.Service/Controllers/CheryRecurringJobOutPageController.cs b/API/Wood.Service/Controllers/CheryRecurringJobOutPageController.cs index e5dabbd..bdedc2d 100644 --- a/API/Wood.Service/Controllers/CheryRecurringJobOutPageController.cs +++ b/API/Wood.Service/Controllers/CheryRecurringJobOutPageController.cs @@ -426,29 +426,29 @@ namespace TaskManager.Controllers /// 正序还是倒序 /// 过滤条件 /// - [HttpGet] - public async Task GetPaged( - [FromQuery] int pageNumber = 1, - [FromQuery] int pageSize = 10, - [FromQuery] string sortBy = "", - [FromQuery] bool isAscending = true, - [FromQuery] Dictionary filters = null) - { - var pagingParams = new PagingParams - { - PageNumber = pageNumber, - PageSize = pageSize, - SortBy = sortBy, - IsAscending = isAscending, - Filters = filters - }; - - // 可以在这里构建表达式树过滤条件 - Expression> filter = null; - - var pagedResult = await _repository.GetPagedAsync(filter, pagingParams); - return Ok(pagedResult); - } + //[HttpGet] + //public async Task GetPaged( + //[FromQuery] int pageNumber = 1, + //[FromQuery] int pageSize = 10, + //[FromQuery] string sortBy = "", + //[FromQuery] bool isAscending = true, + //[FromQuery] Dictionary filters = null) + //{ + // var pagingParams = new PagingParams + // { + // PageNumber = pageNumber, + // PageSize = pageSize, + // SortBy = sortBy, + // IsAscending = isAscending, + // Filters = filters + // }; + + // // 可以在这里构建表达式树过滤条件 + // Expression> filter = null; + + // var pagedResult = await _repository.GetPagedAsync(filter, pagingParams); + // return Ok(pagedResult); + //} /// /// 分页New @@ -484,30 +484,30 @@ namespace TaskManager.Controllers /// 过滤条件 /// - [HttpGet] - public async Task Export([FromQuery] int pageNumber = 1, - [FromQuery] int pageSize = 10, - [FromQuery] string sortBy = "", - [FromQuery] bool isAscending = true, - [FromQuery] Dictionary filters = null) - { - var pagingParams = new PagingParams - { - PageNumber = pageNumber, - PageSize = pageSize, - SortBy = sortBy, - IsAscending = isAscending, - Filters = filters - }; - - // 可以在这里构建表达式树过滤条件 - //Expression> filter = null; - - var pagedResult = await _repository.GetPagedAsync(null, pagingParams); - return await ExportFile(pagedResult.Data, Guid.NewGuid().ToString() + ".xlsx"); - - - } + // [HttpGet] + // public async Task Export([FromQuery] int pageNumber = 1, + //[FromQuery] int pageSize = 10, + //[FromQuery] string sortBy = "", + //[FromQuery] bool isAscending = true, + //[FromQuery] Dictionary filters = null) + // { + // var pagingParams = new PagingParams + // { + // PageNumber = pageNumber, + // PageSize = pageSize, + // SortBy = sortBy, + // IsAscending = isAscending, + // Filters = filters + // }; + + // // 可以在这里构建表达式树过滤条件 + // //Expression> filter = null; + + // var pagedResult = await _repository.GetPagedAsync(null, pagingParams); + // return await ExportFile(pagedResult.Data, Guid.NewGuid().ToString() + ".xlsx"); + + + // } /// diff --git a/API/Wood.Service/Controllers/NormalBaseController.cs b/API/Wood.Service/Controllers/NormalBaseController.cs index 6d434d9..dad06d5 100644 --- a/API/Wood.Service/Controllers/NormalBaseController.cs +++ b/API/Wood.Service/Controllers/NormalBaseController.cs @@ -1,12 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Data; -using System.Linq; -using System.Linq.Expressions; -using System.Reflection; -using System.Text; -using System.Threading.Tasks; -using Magicodes.ExporterAndImporter.Core; +using Magicodes.ExporterAndImporter.Core; using Magicodes.ExporterAndImporter.Core.Extension; using Magicodes.ExporterAndImporter.Excel; using Microsoft.AspNetCore.Authorization; @@ -14,11 +6,20 @@ using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Linq.Expressions; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; using TaskManager.Entity; using TaskManager.EntityFramework; using TaskManager.EntityFramework.Repository; using Wood.Entity; using Wood.Util; +using Wood.Util.Filters; namespace Wood.Service.Controllers @@ -97,77 +98,126 @@ namespace Wood.Service.Controllers await _repository.DeleteAsync(id); return new JsonResult(new { Code = 200, Message = "删除成功!" }); ; } - + + ///// + ///// 分页 + ///// + ///// + ///// + ///// + ///// + ///// + ///// + //[HttpGet] + //public async Task GetPaged( + //[FromQuery] int pageNumber = 1, + //[FromQuery] int pageSize = 10, + //[FromQuery] string sortBy = "", + //[FromQuery] bool isAscending = true, + //[FromQuery] Dictionary filters = null) + //{ + // var pagingParams = new PagingParams + // { + // PageNumber = pageNumber, + // PageSize = pageSize, + // SortBy = sortBy, + // IsAscending = isAscending, + // Filters = filters + // }; + + // // 可以在这里构建表达式树过滤条件 + // Expression> filter = null; + + // var pagedResult = await _repository.GetPagedAsync(filter, pagingParams); + // return Ok(pagedResult); + //} /// - /// 分页 + /// 分页New /// - /// - /// - /// - /// - /// + /// /// - [HttpGet] - public async Task GetPaged( - [FromQuery] int pageNumber = 1, - [FromQuery] int pageSize = 10, - [FromQuery] string sortBy = "", - [FromQuery] bool isAscending = true, - [FromQuery] Dictionary filters = null) + [HttpPost] + public async Task>> GetDataPaged(RequestInputBase input) { var pagingParams = new PagingParams { - PageNumber = pageNumber, - PageSize = pageSize, - SortBy = sortBy, - IsAscending = isAscending, - Filters = filters + PageNumber = input.pageNumber, + PageSize = input.pageSize, + SortBy = input.sortBy, + IsAscending = input.isAscending, }; // 可以在这里构建表达式树过滤条件 Expression> filter = null; - var pagedResult = await _repository.GetPagedAsync(filter, pagingParams); + var pagedResult = await _repository.GetDataPagedAsync(filter, pagingParams, input.Condition); return Ok(pagedResult); } + /// - /// 导出 + /// 导出New /// - /// - /// - /// - /// - /// + /// /// - - [HttpGet] - public async Task Export([FromQuery] int pageNumber = 1, - [FromQuery] int pageSize = 10, - [FromQuery] string sortBy = "", - [FromQuery] bool isAscending = true, - [FromQuery] Dictionary filters = null) + [HttpPost] + public async Task ExportData(RequestInputBase input) { var pagingParams = new PagingParams { - PageNumber = pageNumber, - PageSize = pageSize, - SortBy = sortBy, - IsAscending = isAscending, - Filters = filters + PageNumber = input.pageNumber, + PageSize = input.pageSize, + SortBy = input.sortBy, + IsAscending = input.isAscending, + }; // 可以在这里构建表达式树过滤条件 //Expression> filter = null; - var pagedResult = await _repository.GetPagedAsync(null, pagingParams); + var pagedResult = await _repository.GetDataPagedAsync(null, pagingParams, input.Condition); return await ExportFile(pagedResult.Data, Guid.NewGuid().ToString() + ".xlsx"); + } - } + + // /// + // /// 导出 + // /// + // /// + // /// + // /// + // /// + // /// + // /// + + // [HttpGet] + // public async Task Export([FromQuery] int pageNumber = 1, + //[FromQuery] int pageSize = 10, + //[FromQuery] string sortBy = "", + //[FromQuery] bool isAscending = true, + //[FromQuery] Dictionary filters = null) + // { + // var pagingParams = new PagingParams + // { + // PageNumber = pageNumber, + // PageSize = pageSize, + // SortBy = sortBy, + // IsAscending = isAscending, + // Filters = filters + // }; + + // // 可以在这里构建表达式树过滤条件 + // //Expression> filter = null; + + // var pagedResult = await _repository.GetPagedAsync(null, pagingParams); + // return await ExportFile(pagedResult.Data, Guid.NewGuid().ToString() + ".xlsx"); + + + // } protected async Task ExportFile(ICollection dtos, string fileName) { var excelExporter = HttpContext.RequestServices.GetRequiredService(); diff --git a/API/Wood.Util/EntityHelper.cs b/API/Wood.Util/EntityHelper.cs index d0ddf9e..f5d26fa 100644 --- a/API/Wood.Util/EntityHelper.cs +++ b/API/Wood.Util/EntityHelper.cs @@ -13,62 +13,62 @@ using System.Text.RegularExpressions; namespace Wood.Util { - public class PagedResult - { - public List Items { get; set; } - public int TotalItems { get; set; } - public int PageNumber { get; set; } - public int PageSize { get; set; } - public int TotalPages => (int)Math.Ceiling(TotalItems / (double)PageSize); - public bool HasPreviousPage => PageNumber > 1; - public bool HasNextPage => PageNumber < TotalPages; - - public PagedResult() - { - Items = new List(); - } - } - - - public static class QueryableExtensions - { - public static PagedResult ToPagedResult(this IQueryable query, int pageNumber, int pageSize) - { - var result = new PagedResult - { - PageNumber = pageNumber, - PageSize = pageSize, - TotalItems = query.Count() - }; - - result.Items = query - .Skip((pageNumber - 1) * pageSize) - .Take(pageSize) - .ToList(); - - return result; - } - - public static IQueryable ApplySorting(this IQueryable query, string sortField, string sortDirection) - { - if (string.IsNullOrEmpty(sortField)) - return query; - - var parameter = Expression.Parameter(typeof(T), "x"); - var property = Expression.Property(parameter, sortField); - var lambda = Expression.Lambda(property, parameter); - - string methodName = sortDirection?.ToLower() == "desc" ? "OrderByDescending" : "OrderBy"; - var resultExpression = Expression.Call( - typeof(Queryable), - methodName, - new[] { typeof(T), property.Type }, - query.Expression, - Expression.Quote(lambda)); - - return query.Provider.CreateQuery(resultExpression); - } - } + //public class PagedResult + //{ + // public List Items { get; set; } + // public int TotalItems { get; set; } + // public int PageNumber { get; set; } + // public int PageSize { get; set; } + // public int TotalPages => (int)Math.Ceiling(TotalItems / (double)PageSize); + // public bool HasPreviousPage => PageNumber > 1; + // public bool HasNextPage => PageNumber < TotalPages; + + // public PagedResult() + // { + // Items = new List(); + // } + //} + + + //public static class QueryableExtensions + //{ + // public static PagedResult ToPagedResult(this IQueryable query, int pageNumber, int pageSize) + // { + // var result = new PagedResult + // { + // PageNumber = pageNumber, + // PageSize = pageSize, + // TotalItems = query.Count() + // }; + + // result.Items = query + // .Skip((pageNumber - 1) * pageSize) + // .Take(pageSize) + // .ToList(); + + // return result; + // } + + // public static IQueryable ApplySorting(this IQueryable query, string sortField, string sortDirection) + // { + // if (string.IsNullOrEmpty(sortField)) + // return query; + + // var parameter = Expression.Parameter(typeof(T), "x"); + // var property = Expression.Property(parameter, sortField); + // var lambda = Expression.Lambda(property, parameter); + + // string methodName = sortDirection?.ToLower() == "desc" ? "OrderByDescending" : "OrderBy"; + // var resultExpression = Expression.Call( + // typeof(Queryable), + // methodName, + // new[] { typeof(T), property.Type }, + // query.Expression, + // Expression.Quote(lambda)); + + // return query.Provider.CreateQuery(resultExpression); + // } + //} //public static class DataTableHelper