diff --git a/Src/Dlhis.Canteen/Order/Request/OrderBookingPageRequest.cs b/Src/Dlhis.Canteen/Order/Request/OrderBookingPageRequest.cs index 24cab90b..02fa01dc 100644 --- a/Src/Dlhis.Canteen/Order/Request/OrderBookingPageRequest.cs +++ b/Src/Dlhis.Canteen/Order/Request/OrderBookingPageRequest.cs @@ -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 /// [EnumDataType(typeof(CanteenOrderStatusEnumType))] public CanteenOrderStatusEnumType? OrderStatus { get; set; } + + /// + /// 支付方式 + /// + [EnumDataType(typeof(CanteenBusinessPlaceSourceEnumType))] + public CanteenBusinessPlaceSourceEnumType? Source { get; set; } + + /// + /// 订餐日期区间 + /// + public DateTimePeriod BookingPeriod { get; set; } + + /// + /// 餐次 + /// + [EnumDataType(typeof(ShiftEnumType))] + public ShiftEnumType? ShiftTpe { get; set; } } diff --git a/Src/Dlhis.Canteen/Order/Response/OrderBookingResponse.cs b/Src/Dlhis.Canteen/Order/Response/OrderBookingResponse.cs index 06385b0d..8da8950f 100644 --- a/Src/Dlhis.Canteen/Order/Response/OrderBookingResponse.cs +++ b/Src/Dlhis.Canteen/Order/Response/OrderBookingResponse.cs @@ -47,7 +47,7 @@ public class OrderBookingResponse /// - /// 订单时间 + /// 下单时间 /// public DateTime CreateTime { get; set; } @@ -55,4 +55,15 @@ public class OrderBookingResponse public CanteenOrderStatusEnumType Status { get; set; } public string StatusDesc => Status.GetDescription(); + + /// + /// 订餐日期 + /// + public DateTime BookingDate { get; set; } + + /// + /// 支付方式 + /// + public BalanceRecordSourceEnumType Source { get; set; } + public string SourceDesc => Source.GetDescription(); } diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs index 70393619..20605286 100644 --- a/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs +++ b/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs @@ -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() + .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() + .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; }