feat 查询消费机总数、离线设备数量、营业点数量、可消费人数、人均日消费额
This commit is contained in:
@@ -7,43 +7,36 @@ namespace Dlhis.Basic.Device.Response
|
||||
/// <summary>
|
||||
/// 时间
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "时间")]
|
||||
public string Timestamp { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 级别
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "级别")]
|
||||
public string Level { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 模板
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "模板")]
|
||||
public string Template { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 消息内容
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "消息内容")]
|
||||
public string Message { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 异常内容
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "异常内容")]
|
||||
public string Exception { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 属性
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "属性")]
|
||||
public string Properties { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 时间
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "时间")]
|
||||
public DateTime _ts { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,4 +27,5 @@ public interface IDeviceService : IScopeDependency
|
||||
Task<List<RecentNumberResponse>> GetRecentNumbersAsync();
|
||||
|
||||
Task<Pagination<ApiLogResponse>> GetLogsAsync(ApiLogRequest request);
|
||||
|
||||
}
|
||||
|
||||
@@ -132,4 +132,14 @@ public class BalancesController : ControllerBase
|
||||
{
|
||||
return await _balanceService.BalanceRecordAnalysisAsync(request);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取消费机总数、离线设备数量、营业点数量、可消费人数、人均日消费额
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet("consumenumbers")]
|
||||
public async Task<ConsumeNumberResponse> GetConsumeNumberAsync()
|
||||
{
|
||||
return await _balanceService.GetConsumeNumberAsync();
|
||||
}
|
||||
}
|
||||
|
||||
30
Src/Dlhis.Canteen/Order/Response/ConsumeNumberResponse.cs
Normal file
30
Src/Dlhis.Canteen/Order/Response/ConsumeNumberResponse.cs
Normal file
@@ -0,0 +1,30 @@
|
||||
namespace Dlhis.Canteen.Order.Response
|
||||
{
|
||||
public class ConsumeNumberResponse
|
||||
{
|
||||
/// <summary>
|
||||
/// 消费机总数
|
||||
/// </summary>
|
||||
public int Total { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 消费机离线数
|
||||
/// </summary>
|
||||
public int OffNumber { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 营业点总数
|
||||
/// </summary>
|
||||
public int PlaceNumber { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 可消费人数
|
||||
/// </summary>
|
||||
public int ConsumerableNumber { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 人均日消费额
|
||||
/// </summary>
|
||||
public int DailyNumber { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -23,4 +23,6 @@ public interface IBalanceService : IScopeDependency
|
||||
Task<Pagination<BalanceRecordSummaryRespones>> BalanceRecordSummaryByTidAsync(BalanceRecordSummaryRequest request);
|
||||
|
||||
Task<Pagination<BalanceRecordAnalysisRespones>> BalanceRecordAnalysisAsync(BalanceRecordAnalysisRequest request);
|
||||
|
||||
Task<ConsumeNumberResponse> GetConsumeNumberAsync();
|
||||
}
|
||||
|
||||
@@ -547,6 +547,44 @@ public class BalanceService : IBalanceService
|
||||
}, 5);
|
||||
}
|
||||
|
||||
public async Task<ConsumeNumberResponse> GetConsumeNumberAsync()
|
||||
{
|
||||
var devices = await _dbContext.Queryable<DeviceEntity>()
|
||||
.Where(x => x.Type == DeviceTypeEnumType.Meal)
|
||||
.ToListAsync();
|
||||
|
||||
var offCount = devices.Where(x => x.Enable == false).Count();
|
||||
|
||||
var places = await _dbContext.Queryable<CanteenBusinessPlaceEntity>()
|
||||
.ToListAsync();
|
||||
|
||||
var time = DateTime.Now.ToString("yyyy-MM-dd");
|
||||
//所有消费数据
|
||||
var bs = await _dbContext.Queryable<BalanceRecordEntity>()
|
||||
.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 ******************************************************************
|
||||
|
||||
|
||||
Reference in New Issue
Block a user