feat 门岗申请记录列表

This commit is contained in:
2024-11-21 15:48:04 +08:00
parent 484be10fde
commit 471df07386
6 changed files with 110 additions and 28 deletions

View File

@@ -28,22 +28,17 @@ public class GainfoMealService : IGainfoMealService
public async Task<Pagination<GainfoMealResponse>> GetPageAsync(GainfoMealPageRequest request)
{
var factory = _currentUser.GetStringTenantId();
var factories = await GetWalletFactoriesAsync(factory);
return await _dbContext.Queryable<GainfoEntity>().AS(request.IsLeave ? "GainfoLeave" : "Gainfo")
var page = await _dbContext.Queryable<GainfoEntity>().AS(request.IsLeave ? "GainfoLeave" : "Gainfo")
.LeftJoin<DepartmentEntity>((x, dept) => dept.No == x.DepartmentNo)
.LeftJoin<MealSupplementRecordEntity>((x, dept, ms) => ms.Code == x.Code)
.LeftJoin<BalanceRecordEntity>((x, dept, ms, b) => b.UserCode == x.Code)
.Where(x => x.Factory == factory)
.WhereIF(request.Search.IsPresent(), x => x.Code == request.Search || x.Name == request.Search)
.WhereIF(request.IsLeave && request.SearchDateTimePeriod.HasValue(), x => x.ResignationDate >= request.SearchDateTimePeriod.Start &&
x.ResignationDate <= request.SearchDateTimePeriod.End)
.Where((x, dept, ms) => factories.Contains(ms.Factory))
.WhereIF(request.SearchDateTimePeriod.HasValue(), (x, dept, ms) => ms.Date >= request.SearchDateTimePeriod.Start && ms.Date <= request.SearchDateTimePeriod.End)
.Where((x, dept, ms, b) => factories.Contains(b.TenantId))
.Where((x, dept, ms, b) => b.Status == BalanceRecordStatusEnumType.Valid)
.Where((x, dept, ms, b) => b.Source != BalanceRecordSourceEnumType.EMealVoucher)
.GroupBy((x, dept, ms, b) => new { UserCode = x.Code, UserName = x.Name, UserNo = x.No, DepartmentName = dept.Name })
.Select((x, dept, ms, b) => new GainfoMealResponse
.GroupBy((x, dept, ms) => new { UserCode = x.Code, UserName = x.Name, UserNo = x.No, DepartmentName = dept.Name })
.Select((x, dept, ms) => new GainfoMealResponse
{
UserCode = x.Code,
UserName = x.Name,
@@ -51,9 +46,28 @@ public class GainfoMealService : IGainfoMealService
DepartmentName = dept.Name,
Status = request.IsLeave ? GainfoStatusEnumType.Leave : GainfoStatusEnumType.Working,
CurrentMealSupplementAmount = SqlFunc.AggregateSum(ms.Amount),
CurrentBalance = SqlFunc.AggregateSum(b.Amount)
//CurrentBalance = SqlFunc.AggregateSum(b.Amount)
})
.ToPageListAsync(request);
var userCodes = page.Data.Select(x => x.UserCode).ToList();
var data = await _dbContext.Queryable<BalanceRecordEntity>().Where(x => x.Status == BalanceRecordStatusEnumType.Valid && x.Source != BalanceRecordSourceEnumType.EMealVoucher)
.Where(x => userCodes.Contains(x.UserCode))
.GroupBy(x => x.UserCode)
.Select(x => new { x.UserCode, Balance = SqlFunc.AggregateSum(x.Amount) }).ToListAsync();
foreach (var item in page.Data)
{
var d1 = data.FirstOrDefault(x => x.UserCode == item.UserCode);
if (d1 != null)
{
item.CurrentBalance = d1.Balance;
}
}
return page;
}