feat 查询消费机总数、离线设备数量、营业点数量、可消费人数、人均日消费额

This commit is contained in:
cheche
2024-02-22 14:04:01 +08:00
parent 8e43cf36e8
commit b5d6ec8366
6 changed files with 81 additions and 7 deletions

View File

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

View File

@@ -27,4 +27,5 @@ public interface IDeviceService : IScopeDependency
Task<List<RecentNumberResponse>> GetRecentNumbersAsync();
Task<Pagination<ApiLogResponse>> GetLogsAsync(ApiLogRequest request);
}

View File

@@ -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();
}
}

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

View File

@@ -23,4 +23,6 @@ public interface IBalanceService : IScopeDependency
Task<Pagination<BalanceRecordSummaryRespones>> BalanceRecordSummaryByTidAsync(BalanceRecordSummaryRequest request);
Task<Pagination<BalanceRecordAnalysisRespones>> BalanceRecordAnalysisAsync(BalanceRecordAnalysisRequest request);
Task<ConsumeNumberResponse> GetConsumeNumberAsync();
}

View File

@@ -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 ******************************************************************