diff --git a/Src/Dlhis.Basic/Device/Response/ApiLogResponse.cs b/Src/Dlhis.Basic/Device/Response/ApiLogResponse.cs index f2a3f501..3d51efae 100644 --- a/Src/Dlhis.Basic/Device/Response/ApiLogResponse.cs +++ b/Src/Dlhis.Basic/Device/Response/ApiLogResponse.cs @@ -7,43 +7,36 @@ namespace Dlhis.Basic.Device.Response /// /// 时间 /// - [SugarColumn(ColumnDescription = "时间")] public string Timestamp { get; set; } /// /// 级别 /// - [SugarColumn(ColumnDescription = "级别")] public string Level { get; set; } /// /// 模板 /// - [SugarColumn(ColumnDescription = "模板")] public string Template { get; set; } /// /// 消息内容 /// - [SugarColumn(ColumnDescription = "消息内容")] public string Message { get; set; } /// /// 异常内容 /// - [SugarColumn(ColumnDescription = "异常内容")] public string Exception { get; set; } /// /// 属性 /// - [SugarColumn(ColumnDescription = "属性")] public string Properties { get; set; } /// /// 时间 /// - [SugarColumn(ColumnDescription = "时间")] public DateTime _ts { get; set; } } } diff --git a/Src/Dlhis.Basic/Device/Services/IDeviceService.cs b/Src/Dlhis.Basic/Device/Services/IDeviceService.cs index 889fb755..8af87410 100644 --- a/Src/Dlhis.Basic/Device/Services/IDeviceService.cs +++ b/Src/Dlhis.Basic/Device/Services/IDeviceService.cs @@ -27,4 +27,5 @@ public interface IDeviceService : IScopeDependency Task> GetRecentNumbersAsync(); Task> GetLogsAsync(ApiLogRequest request); + } diff --git a/Src/Dlhis.Canteen/Order/Controllers/BalancesController.cs b/Src/Dlhis.Canteen/Order/Controllers/BalancesController.cs index c2fbc53b..608fbfbc 100644 --- a/Src/Dlhis.Canteen/Order/Controllers/BalancesController.cs +++ b/Src/Dlhis.Canteen/Order/Controllers/BalancesController.cs @@ -132,4 +132,14 @@ public class BalancesController : ControllerBase { return await _balanceService.BalanceRecordAnalysisAsync(request); } + + /// + /// 获取消费机总数、离线设备数量、营业点数量、可消费人数、人均日消费额 + /// + /// + [HttpGet("consumenumbers")] + public async Task GetConsumeNumberAsync() + { + return await _balanceService.GetConsumeNumberAsync(); + } } diff --git a/Src/Dlhis.Canteen/Order/Response/ConsumeNumberResponse.cs b/Src/Dlhis.Canteen/Order/Response/ConsumeNumberResponse.cs new file mode 100644 index 00000000..609b1a68 --- /dev/null +++ b/Src/Dlhis.Canteen/Order/Response/ConsumeNumberResponse.cs @@ -0,0 +1,30 @@ +namespace Dlhis.Canteen.Order.Response +{ + public class ConsumeNumberResponse + { + /// + /// 消费机总数 + /// + public int Total { get; set; } + + /// + /// 消费机离线数 + /// + public int OffNumber { get; set; } + + /// + /// 营业点总数 + /// + public int PlaceNumber { get; set; } + + /// + /// 可消费人数 + /// + public int ConsumerableNumber { get; set; } + + /// + /// 人均日消费额 + /// + public int DailyNumber { get; set; } + } +} diff --git a/Src/Dlhis.Canteen/Order/Services/IBalanceService.cs b/Src/Dlhis.Canteen/Order/Services/IBalanceService.cs index 8a12f2c4..6c78934d 100644 --- a/Src/Dlhis.Canteen/Order/Services/IBalanceService.cs +++ b/Src/Dlhis.Canteen/Order/Services/IBalanceService.cs @@ -23,4 +23,6 @@ public interface IBalanceService : IScopeDependency Task> BalanceRecordSummaryByTidAsync(BalanceRecordSummaryRequest request); Task> BalanceRecordAnalysisAsync(BalanceRecordAnalysisRequest request); + + Task GetConsumeNumberAsync(); } diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs index eb6d36e4..256e9caf 100644 --- a/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs +++ b/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs @@ -547,6 +547,44 @@ public class BalanceService : IBalanceService }, 5); } + public async Task GetConsumeNumberAsync() + { + var devices = await _dbContext.Queryable() + .Where(x => x.Type == DeviceTypeEnumType.Meal) + .ToListAsync(); + + var offCount = devices.Where(x => x.Enable == false).Count(); + + var places = await _dbContext.Queryable() + .ToListAsync(); + + var time = DateTime.Now.ToString("yyyy-MM-dd"); + //所有消费数据 + var bs = await _dbContext.Queryable() + .Where(x => x.Type == BalanceRecordTypeEnumType.Out) + .ToListAsync(); + //可消费人数 + var consumerable = bs.Select(x => x.UserCode).Distinct().Count(); + + //当日消费数据 + var monthbs = bs + .Where(x => x.CostDateTime.ToString("yyyy-MM-dd") == time); + //当日消费额 + var monthlySpending = monthbs.Sum(x => x.Amount); + //当日消费人数 + var monthlyCount = monthbs.Select(x => x.UserCode).Distinct().Count(); + var res = new ConsumeNumberResponse + { + Total = devices.Count(), + OffNumber = offCount, + PlaceNumber = places.Count(), + ConsumerableNumber = consumerable, + DailyNumber = monthlyCount != 0 ? (int)Math.Ceiling(monthlySpending / monthlyCount) : 0 + }; + return res; + + } + //************************************************************** help methods ******************************************************************