FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfoQuery.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfosQuery.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
FlexJobApi.Core/Utils/DbUtils/DbUtils.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
FlexJobApi.Core/Utils/DbUtils/PagedListQuery.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfoQuery.cs
@@ -47,7 +47,7 @@ /// <summary> /// 企业全称 /// </summary> [JsonProperty("EnterpriseName")] [JsonProperty("enterpriseName")] public string EnterpriseEnterpriseName { get; set; } /// <summary> FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfosQuery.cs
@@ -11,7 +11,7 @@ /// 查询任务分页列表 /// </summary> [Resource([EnumResourceController.Task], AllowAnonymous = true)] public class GetTaskInfosQuery : PagedListQuery<PagedListQueryResult<GetTaskInfosQueryResultItem>, GetTaskInfosQueryResultItem> public class GetTaskInfosQuery : PagedListQuery<GetTaskInfosQueryResult, GetTaskInfosQueryResultItem> { public GetTaskInfosQuery() { @@ -74,6 +74,37 @@ public EnumTaskRecommendStatus? RecommendStatus { get; set; } } public class GetTaskInfosQueryResult : PagedListQueryResult<GetTaskInfosQueryResultItem> { /// <summary> /// 统计 /// </summary> public GetTaskInfosQueryResultCount Count { get; set; } } public class GetTaskInfosQueryResultCount { /// <summary> /// 待安排数量 /// </summary> public int WaitAssignCount { get; set; } /// <summary> /// 已安排数量 /// </summary> public int CompletedAssignCount { get; set; } /// <summary> /// 发布中数量 /// </summary> public int InProcessReleaseCount { get; set; } /// <summary> /// 已停止数量 /// </summary> public int StoppedReleaseCount { get; set; } } /// <summary> /// 查询任务分页列表-结果-项 /// </summary> FlexJobApi.Core/Utils/DbUtils/DbUtils.cs
@@ -160,6 +160,31 @@ result.Data = pagedList.Items.ToList(); return result; } /// <summary> /// 查询分页列表数据 /// </summary> /// <typeparam name="TResult"></typeparam> /// <typeparam name="TItem"></typeparam> /// <param name="page"></param> /// <param name="q"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public static async Task<TResult> GetPagedListAsync<TResult, TItem>( this PagedListQueryPageModel page, IQueryable<TItem> q, CancellationToken cancellationToken = default) where TItem : class, new() where TResult : PagedListQueryResult<TItem>, new() { q = q.CustomOrderBy(page.OrderInput); var pagedList = await q.ToPagedListAsync(page.Page, page.Rows, cancellationToken); var result = new TResult(); result.PageModel = page.Adapt<PagedListQueryResultPageModel>(); result.PageModel.TotalCount = pagedList.TotalCount; result.PageModel.TotalPage = pagedList.TotalPages; result.Data = pagedList.Items.ToList(); return result; } /// <summary> /// 查询分页列表数据 @@ -169,34 +194,27 @@ /// <param name="q"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public static async Task<PagedListQueryResult<TItem>> GetPagedListAsync<TItem>( public static Task<PagedListQueryResult<TItem>> GetPagedListAsync<TItem>( this PagedListQueryPageModel page, IQueryable<TItem> q, CancellationToken cancellationToken = default) where TItem : class, new() { q = q.CustomOrderBy(page.OrderInput); var pagedList = await q.ToPagedListAsync(page.Page, page.Rows, cancellationToken); var result = new PagedListQueryResult<TItem>(); result.PageModel = page.Adapt<PagedListQueryResultPageModel>(); result.PageModel.TotalCount = pagedList.TotalCount; result.PageModel.TotalPage = pagedList.TotalPages; result.Data = pagedList.Items.ToList(); return result; return GetPagedListAsync<PagedListQueryResult<TItem>, TItem>(page, q, cancellationToken); } public static IOrderedQueryable<T> CustomOrderBy<T>(this IQueryable<T> q, List<PagedListQueryPageModelOrderInput> orders) { ParameterExpression parameter = Expression.Parameter(typeof(T), "p"); PagedListQueryPageModelOrderInput orderInput = orders[0]; IOrderedQueryable<T> orderedQueryable = (orderInput.Order == EnumPagedListOrder.Asc) ? OrderBy(q, orderInput.Property, parameter) IOrderedQueryable<T> orderedQueryable = (orderInput.Order == EnumPagedListOrder.Asc) ? OrderBy(q, orderInput.Property, parameter) : OrderByDescending(q, orderInput.Property, parameter); for (int i = 1; i < orders.Count; i++) { PagedListQueryPageModelOrderInput orderInput2 = orders[i]; orderedQueryable = (orderInput2.Order == EnumPagedListOrder.Asc) ? ThenBy(orderedQueryable, orderInput2.Property, parameter) orderedQueryable = (orderInput2.Order == EnumPagedListOrder.Asc) ? ThenBy(orderedQueryable, orderInput2.Property, parameter) : ThenByDescending(orderedQueryable, orderInput2.Property, parameter); } FlexJobApi.Core/Utils/DbUtils/PagedListQuery.cs
@@ -71,11 +71,18 @@ public EnumPagedListOrder Order { get; set; } } public interface IPagedListQueryResult<TItem> where TItem : class, new() { PagedListQueryResultPageModel PageModel { get; set; } List<TItem> Data { get; set; } } /// <summary> /// 查询分页列表-结果 /// </summary> /// <typeparam name="TItem"></typeparam> public class PagedListQueryResult<TItem> public class PagedListQueryResult<TItem> : IPagedListQueryResult<TItem> where TItem : class, new() { public PagedListQueryResult() FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs
@@ -20,7 +20,7 @@ IRepository<DictionaryData> repDictionaryData ) : IRequestHandler<GetTaskInfoQuery, GetTaskInfoQueryResult>, IRequestHandler<GetTaskInfosQuery, PagedListQueryResult<GetTaskInfosQueryResultItem>> IRequestHandler<GetTaskInfosQuery, GetTaskInfosQueryResult> { private readonly IRepository<TaskInfo> rep = rep; @@ -50,7 +50,7 @@ /// <param name="request"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public Task<PagedListQueryResult<GetTaskInfosQueryResultItem>> Handle(GetTaskInfosQuery request, CancellationToken cancellationToken) public async Task<GetTaskInfosQueryResult> Handle(GetTaskInfosQuery request, CancellationToken cancellationToken) { var q = TaskInfoRepository.GetQueryable(rep); if (request.Keywords.IsNotNull()) @@ -81,6 +81,15 @@ { q = q.Where(it => it.GenderLimit == request.GenderLimit); } var count = new GetTaskInfosQueryResultCount { WaitAssignCount = await q.CountAsync(it => it.Status == EnumTaskStatus.Wait), CompletedAssignCount = await q.CountAsync(it => it.Status == EnumTaskStatus.Complete), InProcessReleaseCount = await q.CountAsync(it => it.ReleaseStatus == EnumTaskReleaseStatus.InProcess), StoppedReleaseCount = await q.CountAsync(it => it.ReleaseStatus == EnumTaskReleaseStatus.Stopped), }; if (request.Status.HasValue) { q = q.Where(it => it.Status == request.Status); @@ -131,7 +140,7 @@ RecommendStatus = t.RecommendStatus, SettlementStatus = t.SettlementStatus }; return request.PageModel.GetPagedListAsync(s, cancellationToken); var result = await request.PageModel.GetPagedListAsync<GetTaskInfosQueryResult, GetTaskInfosQueryResultItem>(s, cancellationToken); } } }