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