fix 优化查询

This commit is contained in:
2024-04-15 16:59:13 +08:00
parent 7982d5d9fd
commit 380c86aae2
3 changed files with 16 additions and 9 deletions

View File

@@ -1,4 +1,5 @@
using System.ComponentModel.DataAnnotations;
using Dlhis.Entity.Canteen.Enums;
using Kurisu.Core.CustomClass;
using Kurisu.Core.DataAccess.Dto;
@@ -16,6 +17,11 @@ public class BalanceRecordPageDetailRequest : PageDto, IValidatableObject
/// </summary>
public List<Guid?> BusinessplaceCodes { get; set; }
/// <summary>
/// 餐次 ShiftEnumType
/// </summary>
[EnumDataType(typeof(ShiftEnumType))]
public ShiftEnumType? ShiftType { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{

View File

@@ -296,9 +296,10 @@ public class BalanceService : IBalanceService
.LeftJoin<BusinessPlaceEntity>((record, department, bplace) => record.BusinessPlaceCode == bplace.Code)
.LeftJoin<GainfoEntity>((record, department, bplace, gainfo) => record.UserNo == gainfo.No)
.Where((record) => myCodes.Contains(record.BusinessPlaceCode))
.Where((record) => record.Type == BalanceRecordTypeEnumType.Out)
.Where((record) => record.Type == BalanceRecordTypeEnumType.Out && record.Status == BalanceRecordStatusEnumType.Valid)
.WhereIF(request.SearchDateTimePeriod?.Start.HasValue == true, record => record.CostDateTime >= request.SearchDateTimePeriod.Start)
.WhereIF(request.SearchDateTimePeriod?.End.HasValue == true, record => record.CostDateTime <= request.SearchDateTimePeriod.End)
.WhereIF(request.ShiftType.HasValue, record => record.ShiftType == request.ShiftType)
.WhereIF(request.Search.IsPresent(), record => record.UserCode == request.Search || record.Name == request.Search)
.WhereIF(request.BusinessplaceCodes.IsPresent(), record => request.BusinessplaceCodes.Contains(record.BusinessPlaceCode))
.OrderBy(record => record.CostDateTime, OrderByType.Desc)
@@ -549,7 +550,7 @@ public class BalanceService : IBalanceService
.LeftJoin<DepartmentEntity>((record, ga, department) => ga.DepartmentNo == department.No)
.LeftJoin<BusinessPlaceEntity>((record, ga, department, bplace) => record.BusinessPlaceCode == bplace.Code)
.Where(record => record.Type == BalanceRecordTypeEnumType.Out)
.Where(record => record.Status == BalanceRecordStatusEnumType.Valid)
.Where(record => record.Status == BalanceRecordStatusEnumType.Valid)
.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)

View File

@@ -23,18 +23,18 @@ public class UserService : IUserService
var page = await _dbContext.Queryable<UserEntity>()
.LeftJoin<UserRoleEntity>((x, ur) => x.Id == ur.UserId)
.LeftJoin<RoleEntity>((x, ur, r) => ur.RoleId == r.Id)
.LeftJoin<UserClaimEntity>((x, ur, r,c) => x.Id == c.UserId && c.ClaimType == "preferred_username")
.WhereIF(request.Search.IsPresent(), x => x.UserName.Contains(request.Search)
|| x.NormalizedUserName.Contains(request.Search)
|| x.Email.Contains(request.Search)
|| x.NormalizedEmail.Contains(request.Search)
|| x.PhoneNumber.Contains(request.Search)
.LeftJoin<UserClaimEntity>((x, ur, r, c) => x.Id == c.UserId && c.ClaimType == "preferred_username")
.WhereIF(request.Search.IsPresent(), (x, ur, r, c) => x.UserName == request.Search
|| x.Email == request.Search
|| x.PhoneNumber == request.Search
|| c.ClaimValue == request.Search
)
.Select((x, ur, r,c) => new UserResponse
.Select((x, ur, r, c) => new UserResponse
{
Id = x.Id,
Role = r.Name,
OperatorName = c.ClaimValue,
}, true)
.ToPageListAsync(request);