From 1503784f505e19a21c311b7ebb46701e2fe5767d Mon Sep 17 00:00:00 2001 From: liguoyang Date: Tue, 12 Nov 2024 13:49:41 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E6=9F=A5=E8=AF=A2=E5=92=8Clist=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Request/EMealVoucherPageRequest.cs | 16 ++++- .../Response/EMealVoucherPageResponse.cs | 70 +++++++++++++++++-- .../Implements/EMealVoucherService.cs | 9 ++- 3 files changed, 86 insertions(+), 9 deletions(-) diff --git a/Src/Dlhis.Canteen/EMealVoucher/Request/EMealVoucherPageRequest.cs b/Src/Dlhis.Canteen/EMealVoucher/Request/EMealVoucherPageRequest.cs index d23ddad0..6dbcde84 100644 --- a/Src/Dlhis.Canteen/EMealVoucher/Request/EMealVoucherPageRequest.cs +++ b/Src/Dlhis.Canteen/EMealVoucher/Request/EMealVoucherPageRequest.cs @@ -1,7 +1,21 @@ +using System.ComponentModel.DataAnnotations; +using Kurisu.AspNetCore.CustomClass; using Kurisu.AspNetCore.DataAccess.Dto; namespace Dlhis.Canteen.EMealVoucher.Request; -public class EMealVoucherPageRequest : PageDto +public class EMealVoucherPageRequest : PageDto, IValidatableObject { + public DateTimePeriod SearchDateTimePeriod { get; set; } + + /// + public IEnumerable Validate(ValidationContext validationContext) + { + if (SearchDateTimePeriod.HasValue()) + { + SearchDateTimePeriod.End = SearchDateTimePeriod.Start!.Value.AddDays(1).AddSeconds(-1); + } + + yield break; + } } \ No newline at end of file diff --git a/Src/Dlhis.Canteen/EMealVoucher/Response/EMealVoucherPageResponse.cs b/Src/Dlhis.Canteen/EMealVoucher/Response/EMealVoucherPageResponse.cs index 5fa5290d..0cd8428d 100644 --- a/Src/Dlhis.Canteen/EMealVoucher/Response/EMealVoucherPageResponse.cs +++ b/Src/Dlhis.Canteen/EMealVoucher/Response/EMealVoucherPageResponse.cs @@ -1,19 +1,77 @@ using Dlhis.Entity.Canteen.Enums; +using Kurisu.AspNetCore.Utils.Extensions; +using Mapster.Utils; +using Newtonsoft.Json; namespace Dlhis.Canteen.EMealVoucher.Response; public class EMealVoucherPageResponse { + /// + /// OA流程号 + /// public string No { get; set; } + + /// + /// 标题 + /// public string Title { get; set; } + + /// + /// 申请人工号 + /// public string Code { get; set; } + + /// + /// 申请人手机号 + /// public string Phone { get; set; } - public List Factories { get; set; } - public DateTime Date { get; set; } - public string CostId { get; set; } - public string Source { get; set; } - public string Reason { get; set; } - public List Shifts { get; set; } + [JsonIgnore] + public string CurrentFactories { get; set; } + + /// + /// 可使用的厂区编码 + /// + public List Factories => CurrentFactories.ToObject>(); + + /// + /// 申请时间 + /// + public DateTime Date { get; set; } + + /// + /// 成本日期 + /// + public string CostId { get; set; } + + /// + /// 来源 + /// + public string Source { get; set; } + + /// + /// 申请事由 + /// + public string Reason { get; set; } + + [JsonIgnore] + public string CurrentShifts { get; set; } + + /// + /// 使用餐次 + /// + public List Shifts + { + get + { + var a = CurrentShifts.ToObject>().Select(x => ((ShiftEnumType)(x * 10))).ToList(); + return a.Select(x=>x.GetDescription()).ToList(); + } + } + + /// + /// 消费券明细 + /// public List Details { get; set; } } \ No newline at end of file diff --git a/Src/Dlhis.Canteen/EMealVoucher/Services/Implements/EMealVoucherService.cs b/Src/Dlhis.Canteen/EMealVoucher/Services/Implements/EMealVoucherService.cs index a429dfd1..466e2e5d 100644 --- a/Src/Dlhis.Canteen/EMealVoucher/Services/Implements/EMealVoucherService.cs +++ b/Src/Dlhis.Canteen/EMealVoucher/Services/Implements/EMealVoucherService.cs @@ -32,6 +32,10 @@ public class EMealVoucherService : IEMealVoucherService public async Task> GetPageAsync(EMealVoucherPageRequest request) { return await _dbContext.Queryable() + .WhereIF(request.Search.IsPresent(), x => x.No == request.Search || + x.Code == request.Search || + x.Title.Contains(request.Search)) + .WhereIF(request.SearchDateTimePeriod.HasValue(), x => x.Date >= request.SearchDateTimePeriod.Start && x.Date <= request.SearchDateTimePeriod.End) .OrderBy(x => x.Date, OrderByType.Desc) .Select(x => new EMealVoucherPageResponse { @@ -39,12 +43,12 @@ public class EMealVoucherService : IEMealVoucherService Title = x.Title, Code = x.Code, Phone = x.Phone, - Factories = x.Factories, + CurrentFactories = x.Factories.ToString(), Date = x.Date, CostId = x.CostId, Source = x.Source, Reason = x.Reason, - Shifts = x.Shifts, + CurrentShifts = x.Shifts.ToString(), Details = SqlFunc.Subqueryable().Where(p => p.No == x.No).ToList(p => new EMealVoucherDetailResponse { Id = p.Id, @@ -62,6 +66,7 @@ public class EMealVoucherService : IEMealVoucherService public async Task> GetMyEMealVoucherPageAsync(EMealVoucherPageRequest request) { var code = _currentUser.GetUserClaim("jinko-code"); + return await _dbContext.Queryable() .Where(x => x.Code == code) .OrderBy(x => x.Id, OrderByType.Desc)