Files
ww-jst/wmsjst/JSMachine.WMS.Domain/Entity/PagedResult.cs
T
2026-09-02 16:31:50 +08:00

90 lines
2.9 KiB
C#

using JSMachine.WMS.Domain.IRepository;
using JSMachine.WMS.Domain.Repository;
using System.Collections.Generic;
namespace JSMachine.WMS.Domain.Entity
{
/// <summary>
/// 通用分页查询结果,封装分页统计信息和当前页数据。
/// </summary>
/// <typeparam name="T">页数据的元素类型。</typeparam>
public class PagedResult<T>
{
public static readonly PagedResult<T> EmptyPagedResult = new PagedResult<T>(0, 0, 0, 0, null);
#region Public Properties
/// <summary>
/// 总记录数
/// </summary>
public int TotalRecords { get; set; }
/// <summary>
/// 总页数
/// </summary>
public int TotalPages { get; set; }
/// <summary>
/// 每页的记录数
/// </summary>
public int PageSize { get; set; }
/// <summary>
/// 当前页码
/// </summary>
public int PageNumber { get; set; }
/// <summary>
/// 获取或设置当前页码的记录
/// </summary>
public List<T> PageData { get; set; }
#endregion
/// <summary>
/// 创建空的分页结果,页数据初始化为空集合。
/// </summary>
public PagedResult()
{
this.PageData = new List<T>();
}
/// <summary>
/// 使用完整分页统计信息创建结果。
/// </summary>
/// <param name="totalRecords">符合条件的总记录数。</param>
/// <param name="totalPages">总页数。</param>
/// <param name="pageSize">每页记录数。</param>
/// <param name="pageNumber">当前页码。</param>
/// <param name="data">当前页数据。</param>
public PagedResult(int totalRecords, int totalPages, int pageSize, int pageNumber, List<T> data)
{
this.TotalPages = totalPages;
this.TotalRecords = totalRecords;
this.PageSize = pageSize;
this.PageNumber = pageNumber;
this.PageData = data;
}
/// <summary>
/// 根据总记录数和分页参数计算总页数并创建结果。
/// </summary>
/// <param name="totalRecords">符合条件的总记录数。</param>
/// <param name="pageSize">每页记录数。</param>
/// <param name="pageNumber">当前页码。</param>
/// <param name="data">当前页数据。</param>
public PagedResult(int totalRecords, int pageSize, int pageNumber, List<T> data)
{
if (pageSize > 0)
{
this.TotalPages = totalRecords % pageSize == 0 ? totalRecords / pageSize : totalRecords / pageSize + 1;
}
this.TotalRecords = totalRecords;
this.PageSize = pageSize;
this.PageNumber = pageNumber;
this.PageData = data;
}
}
}