From 3d136b13bf5da28895def0db1626772cff8bbe01 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Mon, 8 Apr 2024 18:09:46 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E6=B6=88=E8=B4=B9=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E5=88=86=E9=A1=B5=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Order/Controllers/BalancesController.cs | 22 +++-- .../Request/BalanceRecordPageDetailRequest.cs | 26 ++++++ .../BalanceRecordPageDetailsRequest.cs | 52 ----------- .../Order/Request/BalanceRecordPageRequest.cs | 36 ++++--- .../BalanceRecordDetailPageResponse.cs | 93 +++++++++++++++++++ .../Order/Response/BalanceRecordResponse.cs | 18 ++-- .../Order/Response/OrderResultResponse.cs | 1 + .../Order/Services/IBalanceService.cs | 2 +- .../Services/Implements/BalanceService.cs | 79 ++++++++-------- 9 files changed, 207 insertions(+), 122 deletions(-) create mode 100644 Src/Dlhis.Canteen/Order/Request/BalanceRecordPageDetailRequest.cs delete mode 100644 Src/Dlhis.Canteen/Order/Request/BalanceRecordPageDetailsRequest.cs create mode 100644 Src/Dlhis.Canteen/Order/Response/BalanceRecordDetailPageResponse.cs diff --git a/Src/Dlhis.Canteen/Order/Controllers/BalancesController.cs b/Src/Dlhis.Canteen/Order/Controllers/BalancesController.cs index c9a0ab66..df67ab1d 100644 --- a/Src/Dlhis.Canteen/Order/Controllers/BalancesController.cs +++ b/Src/Dlhis.Canteen/Order/Controllers/BalancesController.cs @@ -37,6 +37,18 @@ public class BalancesController : ControllerBase return await _balanceService.GetPageAsync(request); } + + /// + /// 消费明细 + /// + /// + /// + [HttpGet("recordPageDetails")] + public async Task> RecordPageDetailsAsync([FromQuery] BalanceRecordPageDetailRequest request) + { + return await _balanceService.RecordPageDetailsAsync(request); + } + /// /// 设备消费记录 /// @@ -96,16 +108,6 @@ public class BalancesController : ControllerBase return await _balanceService.RecordByCostIdAsync(request); } - /// - /// 消费明细 - /// - /// - /// - [HttpGet("recordPageDetails")] - public async Task> RecordPageDetailsAsync([FromQuery] BalanceRecordPageDetailsRequest request) - { - return await _balanceService.RecordPageDetailsAsync(request); - } /// /// 消费汇总 根据部门号 diff --git a/Src/Dlhis.Canteen/Order/Request/BalanceRecordPageDetailRequest.cs b/Src/Dlhis.Canteen/Order/Request/BalanceRecordPageDetailRequest.cs new file mode 100644 index 00000000..70790c08 --- /dev/null +++ b/Src/Dlhis.Canteen/Order/Request/BalanceRecordPageDetailRequest.cs @@ -0,0 +1,26 @@ +using System.ComponentModel.DataAnnotations; +using Kurisu.Core.CustomClass; +using Kurisu.Core.DataAccess.Dto; + +namespace Dlhis.Canteen.Order.Request; + +public class BalanceRecordPageDetailRequest : PageDto, IValidatableObject +{ + /// + /// 查询时间范围 + /// + public DateTimePeriod SearchDateTimePeriod { get; set; } + + public IEnumerable Validate(ValidationContext validationContext) + { + if (SearchDateTimePeriod != null) + { + if (SearchDateTimePeriod.End.HasValue) + { + SearchDateTimePeriod.End = SearchDateTimePeriod.End.Value.AddDays(1).AddSeconds(-1); + } + } + + yield break; + } +} diff --git a/Src/Dlhis.Canteen/Order/Request/BalanceRecordPageDetailsRequest.cs b/Src/Dlhis.Canteen/Order/Request/BalanceRecordPageDetailsRequest.cs deleted file mode 100644 index 597babea..00000000 --- a/Src/Dlhis.Canteen/Order/Request/BalanceRecordPageDetailsRequest.cs +++ /dev/null @@ -1,52 +0,0 @@ -using Dlhis.Entity.Canteen.Enums; -using Kurisu.Core.DataAccess.Dto; -using SqlSugar; -using SqlSugar.DbConvert; -using System.ComponentModel.DataAnnotations; - -namespace Dlhis.Canteen.Dishes.Request -{ - public class BalanceRecordPageDetailsRequest : PageDto - { - /// - /// 姓名 - /// - public string Name { get; set; } - - /// - /// 部门号 - /// - public string DepartmentNo { get; set; } - - /// - /// 学工号 - /// - public string UserCode { get; set; } - - /// - /// 收入/支出 - /// - [EnumDataType(typeof(BalanceRecordTypeEnumType))] - public BalanceRecordTypeEnumType? Type { get; set; } - - /// - /// 餐次 - /// - public Guid? BusinessShiftCode { get; set; } - - /// - /// 营业点 - /// - public Guid? BusinessPlaceCode { get; set; } - - /// - /// 开始日期 - /// - public DateTime? StartDatetime { get; set; } - - /// - /// 结束日期 - /// - public DateTime? EndDatetime { get; set; } - } -} diff --git a/Src/Dlhis.Canteen/Order/Request/BalanceRecordPageRequest.cs b/Src/Dlhis.Canteen/Order/Request/BalanceRecordPageRequest.cs index aa6b048c..f60dcb0c 100644 --- a/Src/Dlhis.Canteen/Order/Request/BalanceRecordPageRequest.cs +++ b/Src/Dlhis.Canteen/Order/Request/BalanceRecordPageRequest.cs @@ -18,7 +18,7 @@ public class BalanceRecordPageRequest : PageDto, IValidatableObject public List ShiftTypes { get; set; } /// - /// 充值/消费 + /// 充值/消费 BalanceRecordTypeEnumType /// [EnumDataType(typeof(BalanceRecordTypeEnumType))] public BalanceRecordTypeEnumType? Type { get; set; } @@ -37,7 +37,7 @@ public class BalanceRecordPageRequest : PageDto, IValidatableObject public IEnumerable Validate(ValidationContext validationContext) { - var now = DateTime.Now; + var today = DateTime.Today; if (SearchDateTimeDimension.HasValue) { //重新赋值 @@ -45,37 +45,47 @@ public class BalanceRecordPageRequest : PageDto, IValidatableObject if (SearchDateTimeDimension == DateTimeSearchEnumType.Day) { - SearchDateTimePeriod.Start = DateTime.Today; - SearchDateTimePeriod.End = new DateTime(now.Year, now.Month, now.Day, 23, 59, 59); + SearchDateTimePeriod.Start = today; + SearchDateTimePeriod.End = today.AddDays(1).AddSeconds(-1); } else if (SearchDateTimeDimension == DateTimeSearchEnumType.Week) { - SearchDateTimePeriod.Start = now.AddDays(1 - (int)now.DayOfWeek); + SearchDateTimePeriod.Start = today.AddDays(1 - (int)today.DayOfWeek); SearchDateTimePeriod.End = SearchDateTimePeriod.Start.Value.AddDays(6); } else if (SearchDateTimeDimension == DateTimeSearchEnumType.Month) { - SearchDateTimePeriod.Start = new DateTime(now.Year, now.Month, 1); + SearchDateTimePeriod.Start = new DateTime(today.Year, today.Month, 1); SearchDateTimePeriod.End = SearchDateTimePeriod.Start.Value.AddMonths(1).AddDays(-1); } else if (SearchDateTimeDimension == DateTimeSearchEnumType.Season) { - SearchDateTimePeriod.Start = now.AddMonths(0 - ((now.Month - 1) % 3)); - SearchDateTimePeriod.End = now.AddMonths(3 - ((now.Month - 1) % 3)).AddMonths(1).AddDays(-1); + SearchDateTimePeriod.Start = new DateTime(today.Year, today.Month, 1).AddMonths(2 - ((today.Month - 1) % 3)); + SearchDateTimePeriod.End = SearchDateTimePeriod.Start.Value.AddMonths(2); } else if (SearchDateTimeDimension == DateTimeSearchEnumType.HalfOfYear) { - SearchDateTimePeriod.Start = now.AddDays(-180); - SearchDateTimePeriod.End = now; + SearchDateTimePeriod.Start = today.AddDays(-180); + SearchDateTimePeriod.End = today; } else if (SearchDateTimeDimension == DateTimeSearchEnumType.Year) { - SearchDateTimePeriod.Start = new DateTime(now.Year, 1, 1); + SearchDateTimePeriod.Start = new DateTime(today.Year, 1, 1); SearchDateTimePeriod.End = SearchDateTimePeriod.Start.Value.AddYears(1).AddDays(-1); } - SearchDateTimePeriod.Start = SearchDateTimePeriod.Start.Value.Date; - SearchDateTimePeriod.End = SearchDateTimePeriod.End.Value.Date; + SearchDateTimePeriod.Start = SearchDateTimePeriod.Start.Value; + SearchDateTimePeriod.End = SearchDateTimePeriod.End.Value; + } + else + { + if (SearchDateTimePeriod != null) + { + if (SearchDateTimePeriod.End.HasValue) + { + SearchDateTimePeriod.End = SearchDateTimePeriod.End.Value.AddDays(1).AddSeconds(-1); + } + } } yield break; diff --git a/Src/Dlhis.Canteen/Order/Response/BalanceRecordDetailPageResponse.cs b/Src/Dlhis.Canteen/Order/Response/BalanceRecordDetailPageResponse.cs new file mode 100644 index 00000000..cf665408 --- /dev/null +++ b/Src/Dlhis.Canteen/Order/Response/BalanceRecordDetailPageResponse.cs @@ -0,0 +1,93 @@ +using Dlhis.Entity.Canteen.Enums; +using Kurisu.AspNetCore.Utils.Extensions; +using Newtonsoft.Json; + +namespace Dlhis.Canteen.Order.Response; + +public class BalanceRecordDetailPageResponse +{ + public long Id { get; set; } + + /// + /// 流水号 + /// + public string No { get; set; } + + /// + /// 档案号 + /// + public string UserNo { get; set; } + + /// + /// 工号 + /// + public string UserCode { get; set; } + + /// + /// 名称 + /// + public string UserName { get; set; } + + /// + /// 部门名称 + /// + public string DepartmentName { get; set; } + + /// + /// 成本日期 + /// + public DateTime CostDate { get; set; } + + /// + /// 消费时间 + /// + public DateTime CostDateTime { get; set; } + + /// + /// 备注 + /// + public string Remark { get; set; } + + /// + /// 消费金额 + /// + public string Amount => CurrentAmount.ToString("f2"); + + [JsonIgnore] + public decimal CurrentAmount { get; set; } + + /// + /// 餐次 + /// + public ShiftEnumType? ShiftType { get; set; } + + /// + /// 餐次 + /// + public string ShiftTypeDesc => ShiftType?.GetDescription(); + + /// + /// 营业点 + /// + public string BusinessPlaceName { get; set; } + + /// + /// 扣款方式 + /// + public BalanceRecordSourceEnumType Source { get; set; } + + /// + /// 扣款方式 + /// + public string SourceDesc => Source.GetDescription(); + + /// + /// 厂区 + /// + public string Factory { get; set; } + + /// + /// 人事范围 + /// + public string Werks { get; set; } +} diff --git a/Src/Dlhis.Canteen/Order/Response/BalanceRecordResponse.cs b/Src/Dlhis.Canteen/Order/Response/BalanceRecordResponse.cs index dcb63bab..e1229b24 100644 --- a/Src/Dlhis.Canteen/Order/Response/BalanceRecordResponse.cs +++ b/Src/Dlhis.Canteen/Order/Response/BalanceRecordResponse.cs @@ -32,9 +32,17 @@ public class BalanceRecordResponse /// public string DepartmentNo { get; set; } - + /// + /// 部门 + /// public string DepartmentName { get; set; } + + /// + /// 所属成本日期 + /// + public DateTime CostDate { get; set; } + /// /// 来源 /// @@ -52,7 +60,6 @@ public class BalanceRecordResponse /// public decimal Amount { get; set; } - /// /// 营业点 /// @@ -64,12 +71,7 @@ public class BalanceRecordResponse /// public Guid? BusinessShiftCode { get; set; } public string BusinessShiftName { get; set; } - - /// - /// 所属成本日期 - /// - public DateTime CostDate { get; set; } - + /// /// 消费机器唯一信息 /// diff --git a/Src/Dlhis.Canteen/Order/Response/OrderResultResponse.cs b/Src/Dlhis.Canteen/Order/Response/OrderResultResponse.cs index 98d4b96b..d564e96b 100644 --- a/Src/Dlhis.Canteen/Order/Response/OrderResultResponse.cs +++ b/Src/Dlhis.Canteen/Order/Response/OrderResultResponse.cs @@ -24,6 +24,7 @@ public class OrderResultResponse /// public string DepartmentName { get; set; } + [JsonIgnore] public decimal CurrentBalance { get; set; } diff --git a/Src/Dlhis.Canteen/Order/Services/IBalanceService.cs b/Src/Dlhis.Canteen/Order/Services/IBalanceService.cs index c3290146..8b4b8c07 100644 --- a/Src/Dlhis.Canteen/Order/Services/IBalanceService.cs +++ b/Src/Dlhis.Canteen/Order/Services/IBalanceService.cs @@ -17,7 +17,7 @@ public interface IBalanceService : IScopeDependency Task> RecordByCostIdAsync(BalanceRecordPageByCostIdRequest request); - Task> RecordPageDetailsAsync(BalanceRecordPageDetailsRequest request); + Task> RecordPageDetailsAsync(BalanceRecordPageDetailRequest request); Task> BalanceRecordSummaryByNoAsync(BalanceRecordSummaryRequest request); diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs index 3e31d242..d0213415 100644 --- a/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs +++ b/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs @@ -1,4 +1,5 @@ -using Dlhis.Canteen.Dishes.Request; +using Dlhis.Basic.Api; +using Dlhis.Canteen.Dishes.Request; using Dlhis.Canteen.Order.Request; using Dlhis.Canteen.Order.Response; using Dlhis.Entity.Basic.Entity; @@ -22,15 +23,18 @@ public class BalanceService : IBalanceService { private readonly IDbContext _dbContext; private readonly ICurrentUser _currentUser; - private readonly ILogger _logger; private readonly ITenantApi _tenantApi; + private readonly IBusinessPlacePermissionsApi _businessPlacePermissionsApi; - public BalanceService(IDbContext dbContext, ICurrentUser currentUser, ILogger logger, ITenantApi tenantApi) + public BalanceService(IDbContext dbContext, + ICurrentUser currentUser, + ITenantApi tenantApi, + IBusinessPlacePermissionsApi businessPlacePermissionsApi) { _dbContext = dbContext; _currentUser = currentUser; - _logger = logger; _tenantApi = tenantApi; + _businessPlacePermissionsApi = businessPlacePermissionsApi; } public async Task> GetPageAsync(BalanceRecordPageRequest request) @@ -181,56 +185,55 @@ public class BalanceService : IBalanceService /// /// /// - public async Task> RecordPageDetailsAsync(BalanceRecordPageDetailsRequest request) + public async Task> RecordPageDetailsAsync(BalanceRecordPageDetailRequest request) { - var paeginfo = await _dbContext.Queryable() + var myCodes = (await _businessPlacePermissionsApi.GetMyAsync()).Data.Select(x => (Guid?)x.Code).ToList(); + + var page = await _dbContext.Queryable() .LeftJoin((record, department) => record.DepartmentNo == department.No) .LeftJoin((record, department, bplace) => record.BusinessPlaceCode == bplace.Code) - .LeftJoin((record, department, bplace, bshift) => record.BusinessShiftCode == bshift.Code) - .LeftJoin((record, department, bplace, bshift, type) => record.BusinessShiftCode.ToString() == type.Code) - .WhereIF(!request.Name.IsEmpty(), record => record.Name == request.Name) - .WhereIF(!request.DepartmentNo.IsEmpty(), record => record.DepartmentNo == request.DepartmentNo) - .WhereIF(!request.UserCode.IsEmpty(), record => record.UserCode == request.UserCode) - .WhereIF(request.Type.HasValue, record => record.Type == request.Type) - .WhereIF(request.BusinessShiftCode.HasValue, record => record.BusinessShiftCode == request.BusinessShiftCode) - .WhereIF(request.BusinessPlaceCode.HasValue, record => record.BusinessPlaceCode == request.BusinessPlaceCode) - .WhereIF(request.StartDatetime.HasValue, record => record.CostDateTime >= request.StartDatetime) - .WhereIF(request.EndDatetime.HasValue, record => record.CostDateTime <= request.EndDatetime) - .WhereIF(request.Search.IsPresent(), record => record.UserCode == request.Search || record.Name == request.Name) - .OrderBy(record => record.CreateTime, OrderByType.Desc) - .Select((record, department, bplace, bshift, type) => new BalanceRecordResponse + .LeftJoin((record, department, bplace, gainfo) => record.UserNo == gainfo.No) + .Where((record) => myCodes.Contains(record.BusinessPlaceCode)) + .Where((record) => record.Type == BalanceRecordTypeEnumType.Out) + .WhereIF(request.SearchDateTimePeriod?.Start.HasValue == true, record => record.CostDateTime >= request.SearchDateTimePeriod.Start) + .WhereIF(request.SearchDateTimePeriod?.End.HasValue == true, record => record.CostDateTime <= request.SearchDateTimePeriod.End) + .WhereIF(request.Search.IsPresent(), record => record.UserCode == request.Search || record.Name == request.Search) + .OrderBy(record => record.CostDateTime, OrderByType.Desc) + .Select((record, department, bplace, gainfo) => new BalanceRecordDetailPageResponse { Id = record.Id, - Amount = record.Amount, - BusinessPlaceCode = record.BusinessPlaceCode, - BusinessShiftCode = record.BusinessShiftCode, + No = record.No, + CurrentAmount = record.Amount, CostDate = record.CostDate, - CostId = record.CostId, - DepartmentNo = record.DepartmentNo, - DeviceInfo = record.DeviceUniqueNo, - IP = record.IP, UserNo = record.UserNo, UserCode = record.UserCode, - Type = record.Type, - SubsidiesFromMonth = record.SubsidiesFromMonth, - Status = record.Status, Source = record.Source, - No = record.No, - IsCostCrossTenant = record.IsCostCrossTenant, - OriginTenantId = record.OriginTenantId, - Name = record.Name, + UserName = record.Name, DepartmentName = department.Name, BusinessPlaceName = bplace.Name, - BusinessShiftName = type.Display, - CostDateTime = record.CreateTime // todo + CostDateTime = record.CostDateTime, + ShiftType = record.ShiftType, + Werks = gainfo.Werks, + Factory = record.TenantId, + Remark = record.Remark, }) .ToPageListAsync(request); - foreach (var item in paeginfo.Data) + try { - item.Amount = Math.Abs(item.Amount); + var tenantResult = await _tenantApi.GetTenantsInternalAsync(); + var tenants = tenantResult.Data; + + page.Data.ForEach(item => + { + item.Factory = tenants.FirstOrDefault(x => x.Code == item.Factory)?.Name; + }); } - return paeginfo; + catch (Exception) + { + } + + return page; } /// /// 消费汇总 根据部门号