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