fix 查询优化

This commit is contained in:
2024-04-08 18:25:18 +08:00
parent 3d136b13bf
commit 9ca748a432
9 changed files with 156 additions and 98 deletions

View File

@@ -515,44 +515,48 @@ public class BalanceService : IBalanceService
return page;
}
public async Task<Pagination<BalanceRecordUserResponse>> GetPageByUserAsync(BalanceRecordUserPageRequest request)
public async Task<BalanceRecordUserResultResponse> GetPageByUserAsync(BalanceRecordUserPageRequest request)
{
//当前用户
var subjectId = _currentUser.GetIntSubjectId();
var gainfo = await _dbContext.Queryable<GainfoEntity>().Where(x => x.IdentityUserId == subjectId).FirstAsync();
var jinkoCode = _currentUser.GetUserClaim("jinko-code") ?? string.Empty;
if (jinkoCode.IsPresent())
{
gainfo = await _dbContext.Queryable<GainfoEntity>().Where(x => x.Code == jinkoCode).FirstAsync();
}
var page = await _dbContext.Queryable<BalanceRecordEntity>()
.LeftJoin<GainfoEntity>((record, ga) => record.UserNo == ga.No)
.LeftJoin<DepartmentEntity>((record, ga, department) => ga.DepartmentNo == department.No)
.LeftJoin<BusinessPlaceEntity>((record, ga, department, bplace) => record.BusinessPlaceCode == bplace.Code)
.LeftJoin<BusinessPlaceShiftRelationshipEntity>((record, ga, department, bplace, bshiftR) => bplace.Code == bshiftR.PlaceCode)
.LeftJoin<BusinessShiftEntity>((record, ga, department, bplace, bshiftR, shift) => shift.Code == bshiftR.ShiftCode)
.Where(record => record.Type == BalanceRecordTypeEnumType.Out)
.WhereIF(request.SearchDateTimePeriod?.Start.HasValue == true, record => record.CostDate >= request.SearchDateTimePeriod.Start)
.WhereIF(request.SearchDateTimePeriod?.End.HasValue == true, record => record.CostDate <= request.SearchDateTimePeriod.End)
.WhereIF(request.ApplicationType.HasValue, record => record.ApplicationType == request.ApplicationType)
.Where((record, ga) => ga.Code == gainfo.Code)
.Where((record, ga) => ga.Code == jinkoCode)
.OrderBy(record => record.CreateTime, OrderByType.Desc)
.Select((record, ga, department, bplace, bshiftR, shift) => new BalanceRecordUserResponse
.Select((record, ga, department, bplace) => new BalanceRecordUserPageResponse
{
Id = record.Id,
Amount = record.Amount,
Type = record.Type,
Status = record.Status,
CurrentAmount = record.Amount,
Source = record.Source,
No = record.No,
BusinessPlaceName = bplace.Name,
BusinessShiftName = shift.Name,
ShiftType = record.ShiftType,
CostDateTime = record.CostDateTime,
ApplicationType = record.ApplicationType,
})
.ToPageListAsync(request);
return page;
var now = DateTime.Now;
var monthStart = new DateTime(now.Year, now.Month, 1);
var monthEnd = monthStart.AddMonths(1).AddSeconds(-1);
var monthSum = await _dbContext.Queryable<BalanceRecordEntity>()
.Where(x => x.CostDateTime >= monthStart && x.CostDateTime <= monthEnd)
.Where(x => x.Type == BalanceRecordTypeEnumType.Out)
.Where(x => x.UserCode == jinkoCode)
.SumAsync(x => SqlFunc.Abs(x.Amount));
return new BalanceRecordUserResultResponse
{
CurrentMonthSum = monthSum,
Items = page
};
}
public async Task ObsoluteAsync(BalanceRecordObsoluteRequest request)