diff --git a/Src/Dlhis.Canteen/Order/Controllers/BalancesController.cs b/Src/Dlhis.Canteen/Order/Controllers/BalancesController.cs
index 0e28e4db..1f26795a 100644
--- a/Src/Dlhis.Canteen/Order/Controllers/BalancesController.cs
+++ b/Src/Dlhis.Canteen/Order/Controllers/BalancesController.cs
@@ -111,6 +111,18 @@ public class BalancesController : ControllerBase
return await _balanceService.GetPageByUserAsync(request);
}
+ ///
+ /// 用户集团消费记录
+ ///
+ ///
+ ///
+ [HttpGet("user/group/page")]
+ [IgnoreTenant]
+ public async Task> GetUserBalanceGroupAsync(BalanceRecordUserGroupPageRequest request)
+ {
+ return await _balanceService.GetUserBalanceGroupAsync(request);
+ }
+
///
/// 获取消费机总数、离线设备数量、营业点数量、可消费人数、人均日消费额
///
diff --git a/Src/Dlhis.Canteen/Order/Request/BalanceRecordUserGroupPageRequest.cs b/Src/Dlhis.Canteen/Order/Request/BalanceRecordUserGroupPageRequest.cs
new file mode 100644
index 00000000..30f332cb
--- /dev/null
+++ b/Src/Dlhis.Canteen/Order/Request/BalanceRecordUserGroupPageRequest.cs
@@ -0,0 +1,30 @@
+using System.ComponentModel.DataAnnotations;
+using Kurisu.AspNetCore.CustomClass;
+using Kurisu.AspNetCore.DataAccess.Dto;
+
+namespace Dlhis.Canteen.Order.Request;
+
+public class BalanceRecordUserGroupPageRequest : PageDto, IValidatableObject
+{
+ ///
+ /// 日期范围查询
+ ///
+ public DateTimePeriod SearchDateTimePeriod { get; set; }
+
+ ///
+ /// 工号
+ ///
+ [Required(ErrorMessage = "工号不可为空")]
+ public string UserCode { get; set; }
+
+
+ public IEnumerable Validate(ValidationContext validationContext)
+ {
+ if (SearchDateTimePeriod is { End: not null })
+ {
+ SearchDateTimePeriod.End = SearchDateTimePeriod.End.Value.AddDays(1).AddSeconds(-1);
+ }
+
+ yield break;
+ }
+}
\ No newline at end of file
diff --git a/Src/Dlhis.Canteen/Order/Services/IBalanceService.cs b/Src/Dlhis.Canteen/Order/Services/IBalanceService.cs
index 32dea145..b40fb39f 100644
--- a/Src/Dlhis.Canteen/Order/Services/IBalanceService.cs
+++ b/Src/Dlhis.Canteen/Order/Services/IBalanceService.cs
@@ -12,6 +12,10 @@ public interface IBalanceService : IScopeDependency
Task GetPageByUserAsync(BalanceRecordUserPageRequest request);
+
+ Task> GetUserBalanceGroupAsync(BalanceRecordUserGroupPageRequest request);
+
+
Task SupplementBalanceAsync(BalanceSupplementRequest request);
///
diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs
index 57b8d488..8c6fedcc 100644
--- a/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs
+++ b/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs
@@ -382,6 +382,31 @@ public class BalanceService : IBalanceService
};
}
+ public async Task> GetUserBalanceGroupAsync(BalanceRecordUserGroupPageRequest request)
+ {
+ return 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)
+ .Where((record, ga) => record.UserCode == request.UserCode)
+ .Where(record => record.Status == BalanceRecordStatusEnumType.Valid && record.Type == BalanceRecordTypeEnumType.Out)
+ .Where(record => record.Source != BalanceRecordSourceEnumType.EMealVoucher) //不展示电子餐券信息
+ .WhereIF(request.SearchDateTimePeriod.HasValue(), record => record.CostDate >= request.SearchDateTimePeriod.Start && record.CostDate <= request.SearchDateTimePeriod.End)
+ .OrderBy(record => record.CostDateTime)
+ .Select((record, ga, department, bPlace) => new BalanceRecordUserPageResponse
+ {
+ Id = record.Id,
+ CurrentAmount = SqlFunc.Abs(record.Amount),
+ Source = record.Source,
+ No = record.No,
+ BusinessPlaceName = bPlace.Name,
+ ShiftType = record.ShiftType,
+ CostDateTime = record.CostDateTime,
+ ApplicationType = record.ApplicationType,
+ })
+ .ToPageListAsync(request);
+ }
+
public async Task GetConsumeNumberAsync()
{