feat: 功能优化和增加餐饮分析

This commit is contained in:
2025-10-14 12:32:02 +08:00
parent 5d468fe23c
commit 62e3fbe37b
8 changed files with 190 additions and 47 deletions

View File

@@ -31,19 +31,7 @@ public class MealSupplementRecordService : IMealSupplementRecordService
public async Task<MealSupplementRecordSummaryResponse> GetPageAsync(MealSupplementRecordRequest request)
{
var queryable = _dbContext.Queryable<MealSupplementRecordEntity>()
.LeftJoin<GainfoEntity>((x, ga) => x.Code == ga.Code)
.LeftJoin<GainfoLeaveEntity>((x, ga, gaLeave) => gaLeave.Code == x.Code)
.WhereIF(request.Status.HasValue, x => x.Status == request.Status)
.WhereIF(request.Sync.HasValue, x => x.Sync == request.Sync)
.WhereIF(request.Workplace.IsPresent(), x => x.Workplace == request.Workplace)
.WhereIF(request.Factory.IsPresent(), x => x.Factory == request.Factory)
.WhereIF(request.DepartmentNo.IsPresent(), (x, ga, gaLeave) => ga.DepartmentNo == request.DepartmentNo || gaLeave.DepartmentNo == request.DepartmentNo)
.WhereIF(request.Werks.IsPresent(), (x, ga) => ga.Werks == request.Werks)
.WhereIF(request.DateTimePeriod.HasValue(), x => x.Date >= request.DateTimePeriod.Start && x.Date <= request.DateTimePeriod.End)
.WhereIF(request.Search.IsPresent(), (x, ga) => x.Code == request.Search || ga.Name == request.Search);
var page = await queryable
var page = await GetBaseQueryable()
.Select((x, ga, gaLeave) => new MealSupplementRecordResponse
{
Amount = x.Amount,
@@ -87,9 +75,25 @@ public class MealSupplementRecordService : IMealSupplementRecordService
return new MealSupplementRecordSummaryResponse
{
Amount = await queryable.SumAsync(x => x.Amount),
Amount = await GetBaseQueryable().SumAsync(x => x.Amount),
Pagination = page
};
ISugarQueryable<MealSupplementRecordEntity, GainfoEntity, GainfoLeaveEntity> GetBaseQueryable()
{
return _dbContext.Queryable<MealSupplementRecordEntity>()
.LeftJoin<GainfoEntity>((x, ga) => x.Code == ga.Code)
.LeftJoin<GainfoLeaveEntity>((x, ga, gaLeave) => gaLeave.Code == x.Code)
.WhereIF(request.Status.HasValue, x => x.Status == request.Status)
.WhereIF(request.Sync.HasValue, x => x.Sync == request.Sync)
.WhereIF(request.Workplace.IsPresent(), x => x.Workplace == request.Workplace)
.WhereIF(request.Factory.IsPresent(), x => x.Factory == request.Factory)
.WhereIF(request.DepartmentNo.IsPresent(), (x, ga, gaLeave) => ga.DepartmentNo == request.DepartmentNo || gaLeave.DepartmentNo == request.DepartmentNo)
.WhereIF(request.Werks.IsPresent(), (x, ga) => ga.Werks == request.Werks)
.WhereIF(request.DateTimePeriod.HasValue(), x => x.Date >= request.DateTimePeriod.Start && x.Date <= request.DateTimePeriod.End)
.WhereIF(request.Search.IsPresent(), (x, ga) => x.Code == request.Search || ga.Name == request.Search);
}
}
public async Task<MealSupplementRecordMyResponse> GetMyMealSupplementRecords(MealSupplementRecordMyRequest request)