From 212aa2b65df83f61d3a2dd53273f6bccc0eab0d8 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Thu, 11 Jan 2024 15:06:07 +0800 Subject: [PATCH] =?UTF-8?q?feat=20=E8=AE=BE=E5=A4=87=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E6=B6=88=E8=B4=B9=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Order/Controllers/BalancesController.cs | 11 ++++ ...alanceRecordPageByDeviceUniqueNoRequest.cs | 13 ++++ .../Order/Request/BalanceRecordPageRequest.cs | 2 +- .../Order/Response/BalanceRecordResponse.cs | 2 + .../Order/Services/IBalanceService.cs | 2 + .../Services/Implements/BalanceService.cs | 59 +++++++++++++++++++ 6 files changed, 88 insertions(+), 1 deletion(-) create mode 100644 Src/Dlhis.Canteen/Order/Request/BalanceRecordPageByDeviceUniqueNoRequest.cs diff --git a/Src/Dlhis.Canteen/Order/Controllers/BalancesController.cs b/Src/Dlhis.Canteen/Order/Controllers/BalancesController.cs index 0781b29d..c99c0b3a 100644 --- a/Src/Dlhis.Canteen/Order/Controllers/BalancesController.cs +++ b/Src/Dlhis.Canteen/Order/Controllers/BalancesController.cs @@ -32,4 +32,15 @@ public class BalancesController : ControllerBase { return await _balanceService.GetPageAsync(request); } + + /// + /// 设备消费记录 + /// + /// + /// + [HttpGet("device/page")] + public async Task> GetPageByDeviceUniqueNoAsync([FromQuery] BalanceRecordPageByDeviceUniqueNoRequest request) + { + return await _balanceService.GetPageByDeviceUniqueNoAsync(request); + } } diff --git a/Src/Dlhis.Canteen/Order/Request/BalanceRecordPageByDeviceUniqueNoRequest.cs b/Src/Dlhis.Canteen/Order/Request/BalanceRecordPageByDeviceUniqueNoRequest.cs new file mode 100644 index 00000000..5ce29b4b --- /dev/null +++ b/Src/Dlhis.Canteen/Order/Request/BalanceRecordPageByDeviceUniqueNoRequest.cs @@ -0,0 +1,13 @@ +using System.ComponentModel.DataAnnotations; +using Kurisu.Core.DataAccess.Dto; + +namespace Dlhis.Canteen.Order.Request; + +public class BalanceRecordPageByDeviceUniqueNoRequest : PageDto +{ + /// + /// 设备唯一号 + /// + [Required(ErrorMessage = "设备唯一号不能为空")] + public string DeviceUniqueNo { get; set; } +} diff --git a/Src/Dlhis.Canteen/Order/Request/BalanceRecordPageRequest.cs b/Src/Dlhis.Canteen/Order/Request/BalanceRecordPageRequest.cs index 1d5c294d..34ead05f 100644 --- a/Src/Dlhis.Canteen/Order/Request/BalanceRecordPageRequest.cs +++ b/Src/Dlhis.Canteen/Order/Request/BalanceRecordPageRequest.cs @@ -28,7 +28,7 @@ public class BalanceRecordPageRequest : PageDto, IValidatableObject if (SearchDateTimeDimension == DateTimeSearchEnumType.Day) { - SearchDateTimePeriod.Start = new DateTime(now.Year, now.Month, now.Day, 0, 0, 1); + SearchDateTimePeriod.Start = DateTime.Today; SearchDateTimePeriod.End = new DateTime(now.Year, now.Month, now.Day, 23, 59, 59); } else if (SearchDateTimeDimension == DateTimeSearchEnumType.Week) diff --git a/Src/Dlhis.Canteen/Order/Response/BalanceRecordResponse.cs b/Src/Dlhis.Canteen/Order/Response/BalanceRecordResponse.cs index 8fdba839..bf715693 100644 --- a/Src/Dlhis.Canteen/Order/Response/BalanceRecordResponse.cs +++ b/Src/Dlhis.Canteen/Order/Response/BalanceRecordResponse.cs @@ -5,6 +5,8 @@ namespace Dlhis.Canteen.Order.Response; public class BalanceRecordResponse { + public long Id { get; set; } + /// /// 流水号 /// diff --git a/Src/Dlhis.Canteen/Order/Services/IBalanceService.cs b/Src/Dlhis.Canteen/Order/Services/IBalanceService.cs index 5a10e93c..8e29f233 100644 --- a/Src/Dlhis.Canteen/Order/Services/IBalanceService.cs +++ b/Src/Dlhis.Canteen/Order/Services/IBalanceService.cs @@ -7,4 +7,6 @@ namespace Dlhis.Canteen.Order.Services; public interface IBalanceService : IScopeDependency { Task> GetPageAsync(BalanceRecordPageRequest request); + + Task> GetPageByDeviceUniqueNoAsync(BalanceRecordPageByDeviceUniqueNoRequest request); } diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs index 912179fe..e4a9aba2 100644 --- a/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs +++ b/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs @@ -3,6 +3,7 @@ using Dlhis.Canteen.Order.Response; using Dlhis.Entity.Basic.Entity; using Dlhis.Entity.Canteen.Entities; using Kurisu.Core.DataAccess.Dto; +using Kurisu.SqlSugar.Attributes; using Kurisu.SqlSugar.Extensions; using Kurisu.SqlSugar.Services; @@ -29,6 +30,7 @@ public class BalanceService : IBalanceService .OrderBy(record => record.CreateTime) .Select((record, ga, department, bplace, bshift) => new BalanceRecordResponse { + Id = record.Id, Amount = record.Amount, BusinessPlaceCode = record.BusinessPlaceCode, BusinessShiftCode = record.BusinessShiftCode, @@ -55,4 +57,61 @@ public class BalanceService : IBalanceService return page; } + + [IgnoreTenant] + public async Task> GetPageByDeviceUniqueNoAsync(BalanceRecordPageByDeviceUniqueNoRequest request) + { + var now = DateTime.Now; + var start = DateTime.Today; + var end = new DateTime(now.Year, now.Month, now.Day, 23, 59, 59); + + var device = await _dbContext.Queryable() + .Where(x => x.UniqueNo == request.DeviceUniqueNo || x.Code == Guid.Parse(request.DeviceUniqueNo)) + .FirstAsync(); + if (device == null) + { + return new Pagination() + { + Data = new List() + }; + } + + var page = await _dbContext.Queryable() + .LeftJoin((record, ga) => record.UserNo == ga.No) + .LeftJoin((record, ga, department) => ga.DepartmentNo == department.No) + .LeftJoin((record, ga, department, bplace) => record.BusinessPlaceCode == bplace.Code) + .LeftJoin((record, ga, department, bplace, bshift) => record.BusinessShiftCode == bshift.Code) + .Where(record => record.CreateTime >= start) + .Where(record => record.CreateTime <= end) + .Where(record => record.DeviceInfo == device.Code.ToString() && record.TenantId == device.TenantId) + .OrderBy(record => record.CreateTime) + .Select((record, ga, department, bplace, bshift) => new BalanceRecordResponse + { + Id = record.Id, + Amount = record.Amount, + BusinessPlaceCode = record.BusinessPlaceCode, + BusinessShiftCode = record.BusinessShiftCode, + CostDate = record.CostDate, + CostId = record.CostId, + DepartmentNo = record.DepartmentNo, + DeviceInfo = record.DeviceInfo, + 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, + DepartmentName = department.Name, + BusinessPlaceName = bplace.Name, + BusinessShiftName = bshift.Name, + }) + .ToPageListAsync(request); + + return page; + } }