fix 订餐分页查询优化
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using Dlhis.Entity.Canteen.Enums;
|
||||
using Kurisu.Core.CustomClass;
|
||||
using Kurisu.Core.DataAccess.Dto;
|
||||
|
||||
namespace Dlhis.Canteen.Order.Request;
|
||||
@@ -11,4 +12,21 @@ public class OrderBookingPageRequest : PageDto
|
||||
/// </summary>
|
||||
[EnumDataType(typeof(CanteenOrderStatusEnumType))]
|
||||
public CanteenOrderStatusEnumType? OrderStatus { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 支付方式
|
||||
/// </summary>
|
||||
[EnumDataType(typeof(CanteenBusinessPlaceSourceEnumType))]
|
||||
public CanteenBusinessPlaceSourceEnumType? Source { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 订餐日期区间
|
||||
/// </summary>
|
||||
public DateTimePeriod BookingPeriod { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 餐次
|
||||
/// </summary>
|
||||
[EnumDataType(typeof(ShiftEnumType))]
|
||||
public ShiftEnumType? ShiftTpe { get; set; }
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@ public class OrderBookingResponse
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 订单时间
|
||||
/// 下单时间
|
||||
/// </summary>
|
||||
public DateTime CreateTime { get; set; }
|
||||
|
||||
@@ -55,4 +55,15 @@ public class OrderBookingResponse
|
||||
public CanteenOrderStatusEnumType Status { get; set; }
|
||||
|
||||
public string StatusDesc => Status.GetDescription();
|
||||
|
||||
/// <summary>
|
||||
/// 订餐日期
|
||||
/// </summary>
|
||||
public DateTime BookingDate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 支付方式
|
||||
/// </summary>
|
||||
public BalanceRecordSourceEnumType Source { get; set; }
|
||||
public string SourceDesc => Source.GetDescription();
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user