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;
}