fix 订餐分页查询优化

This commit is contained in:
2024-03-24 19:50:39 +08:00
parent 7fafb8844c
commit cfb0f263ae
3 changed files with 51 additions and 2 deletions

View File

@@ -179,6 +179,14 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService
.Where(x => myCodes.Contains(x.BusinessPlaceCode))
.WhereIF(request.OrderStatus.HasValue, x => x.OrderStatus == request.OrderStatus)
.WhereIF(request.Search.IsPresent(), (x, ga) => x.UserCode == request.Search || ga.Name.Contains(request.Search))
.WhereIF(request.BookingPeriod?.Start.HasValue == true && request.BookingPeriod?.End.HasValue == true, x =>
SqlFunc.Subqueryable<CanteenOrderDetailEntity>()
.Where(p => p.OrderNo == x.No)
.Where(p => p.BookingDate >= request.BookingPeriod.Start)
.Where(p => p.BookingDate <= request.BookingPeriod.End)
.Any()
)
.WhereIF(request.ShiftTpe.HasValue, x => x.ShiftType == request.ShiftTpe)
.Select((x, ga) => new OrderBookingResponse
{
No = x.No,
@@ -189,10 +197,22 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService
ShiftType = x.ShiftType,
Status = x.OrderStatus,
UserCode = x.UserCode,
UserName = ga.Name
UserName = ga.Name,
Source = x.Source,
})
.ToPageListAsync(request);
var nos = page.Data.Select(x => x.No).ToList();
var details = await DbContext.Queryable<CanteenOrderDetailEntity>()
.Where(x => nos.Contains(x.OrderNo))
.Select(x => new { x.OrderNo, x.BookingDate }).
ToListAsync();
page.Data.ForEach(x =>
{
x.BookingDate = details.FirstOrDefault(item => item.OrderNo == x.No).BookingDate;
});
return page;
}