feat 增加厂区消费查询

This commit is contained in:
2025-09-22 16:16:54 +08:00
parent 2e58a6116a
commit 6ba81c6481
5 changed files with 57 additions and 6 deletions

View File

@@ -35,7 +35,7 @@ public class BalanceSummaryController : ControllerBase
}
/// <summary>
/// 餐次用餐分析,统计部门金额和消费人数
/// 部门用餐分析,统计部门金额和消费人数
/// </summary>
[HttpGet("department/analysis/amountAndCount")]
public async Task<Pagination<BalanceRecordAnalysisDResponse>> BalanceRecordAnalysisByDepartmentAsync([FromQuery] SummaryCommonDto request)
@@ -44,7 +44,7 @@ public class BalanceSummaryController : ControllerBase
}
/// <summary>
/// 餐次用餐分析,统计成本中心金额和消费人数
/// 成本中心用餐分析,统计成本中心金额和消费人数
/// </summary>
[HttpGet("costId/analysis/amountAndCount")]
public async Task<Pagination<BalanceRecordAnalysisDResponse>> BalanceRecordAnalysisByCostAsync([FromQuery] SummaryCommonDto request)
@@ -71,4 +71,15 @@ public class BalanceSummaryController : ControllerBase
{
return await _balanceSummaryService.BalanceRecordShiftAnalysisAmountAndCountAsync(request);
}
/// <summary>
/// 厂区就餐分析,统计金额和人数
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpGet("factory/analysis/amountAndUserCount")]
public async Task<Pagination<BalanceRecordAnalysisFactoryAmountAndCountResponse>> BalanceRecordAnalysisByFactoryAsync([FromQuery] SummaryCommonDto request)
{
return await _balanceSummaryService.BalanceRecordAnalysisByFactoryAsync(request);
}
}

View File

@@ -0,0 +1,9 @@
namespace Dlhis.Canteen.Order.Response;
public class BalanceRecordAnalysisFactoryAmountAndCountResponse
{
public string Factory { get; set; }
public string FactoryName { get; set; }
public decimal Amount { get; set; }
public int UserCount { get; set; }
}

View File

@@ -10,11 +10,12 @@ public interface IBalanceSummaryService : IScopeDependency
Task<BalanceRecordAnalysisSummaryResponse> BalanceRecordAnalysisAsync(BalanceRecordAnalysisRequest request);
Task<Pagination<BalanceRecordAnalysisDResponse>> BalanceRecordAnalysisByDepartmentAsync(SummaryCommonDto request);
Task<Pagination<BalanceRecordAnalysisDResponse>> BalanceRecordAnalysisByCostAsync(SummaryCommonDto request);
Task<BalanceRecordAnalysisShiftAmountResponse> BalanceRecordShiftAnalysisAmountAsync(BalanceRecordAnalysisByShiftRequest request);
Task<BalanceRecordAnalysisShiftAmountAndCountResponse> BalanceRecordShiftAnalysisAmountAndCountAsync(BalanceRecordAnalysisByShiftRequest request);
Task<Pagination<BalanceRecordAnalysisFactoryAmountAndCountResponse>> BalanceRecordAnalysisByFactoryAsync(SummaryCommonDto request);
}

View File

@@ -6,6 +6,7 @@ using Dlhis.Canteen.Order.Response;
using Dlhis.Entity.Basic.Entity;
using Dlhis.Entity.Canteen.Entities;
using Dlhis.Entity.Canteen.Enums;
using Dlhis.Sys.Api;
using Kurisu.AspNetCore.CustomClass;
using Kurisu.AspNetCore.DataAccess.Dto;
using Kurisu.AspNetCore.DataAccess.Extensions;
@@ -18,10 +19,12 @@ namespace Dlhis.Canteen.Order.Services.Implements;
public class BalanceSummaryService : IBalanceSummaryService
{
private readonly IDbContext _dbContext;
private readonly ITenantApi _tenantApi;
public BalanceSummaryService(IDbContext dbContext)
public BalanceSummaryService(IDbContext dbContext, ITenantApi tenantApi)
{
_dbContext = dbContext;
_tenantApi = tenantApi;
}
public async Task<BalanceRecordAnalysisSummaryResponse> BalanceRecordAnalysisAsync(BalanceRecordAnalysisRequest request)
@@ -146,6 +149,33 @@ public class BalanceSummaryService : IBalanceSummaryService
};
}
public async Task<Pagination<BalanceRecordAnalysisFactoryAmountAndCountResponse>> BalanceRecordAnalysisByFactoryAsync(SummaryCommonDto request)
{
var queryable = GetQueryable(request);
var page = await queryable
.GroupBy(x => new { x.TenantId })
.Select(x => new BalanceRecordAnalysisFactoryAmountAndCountResponse
{
Factory = x.TenantId,
Amount = SqlFunc.AggregateSum(SqlFunc.Abs(x.Amount)),
UserCount = SqlFunc.AggregateDistinctCount(x.UserCode)
})
.ToPageListAsync(request);
try
{
var tenants = await _tenantApi.GetTenantsInternalAsync();
page.Data.ForEach(item => { item.Factory = tenants.FirstOrDefault(x => x.Code == item.Factory)?.Name; });
}
catch (Exception)
{
//ignore
}
return page;
}
//**************************************************************help method***********************************************************************
/// <summary>
@@ -156,8 +186,8 @@ public class BalanceSummaryService : IBalanceSummaryService
private ISugarQueryable<BalanceRecordEntity> GetQueryable(SummaryCommonDto request)
{
return _dbContext.Queryable<BalanceRecordEntity>()
.Where(x => x.Status == BalanceRecordStatusEnumType.Valid && x.Type == BalanceRecordTypeEnumType.Out) //有效,消费数据
.WhereIF(request.SearchDateTimePeriod.HasValue(), x => x.CostDate >= request.SearchDateTimePeriod.Start && x.CostDate <= request.SearchDateTimePeriod.End) //成本日期
.Where(x => x.Status == BalanceRecordStatusEnumType.Valid && x.Type == BalanceRecordTypeEnumType.Out) //有效,消费数据
.WhereIF(request.BusinessPlaceCodes?.Any() == true, x => request.BusinessPlaceCodes.Contains(x.BusinessPlaceCode.Value)); //营业点
}
}