fix 查询优化

This commit is contained in:
2025-01-10 11:25:10 +08:00
parent c6f3284115
commit d004c60d42
2 changed files with 8 additions and 24 deletions

View File

@@ -19,11 +19,6 @@ public class DeviceUploadLogPageRequest : PageDto
/// </summary>
public bool? Sync { get; set; }
/// <summary>
/// 是否为外包
/// </summary>
public bool? IsOutsource { get; set; }
/// <summary>
/// 日期范围查询
/// </summary>
@@ -33,5 +28,5 @@ public class DeviceUploadLogPageRequest : PageDto
/// 用户类型
/// </summary>
[EnumDataType(typeof(GainfoUserTypeEnumType))]
public GainfoUserTypeEnumType? UserType { get; set; }
public GainfoUserTypeEnumType UserType { get; set; }
}

View File

@@ -65,7 +65,7 @@ public class DeviceUploadLogService : IDeviceUploadLogService
var device = devices.First(x => x.UniqueNo == request.DeviceUniqueNo);
var userType = gainfos.FirstOrDefault(x => x.Code == request.UserUniqueNo)?.Type;
var needUpload = userType == GainfoUserTypeEnumType.Normal && (device.Type == DeviceTypeEnumType.Attendance || (device.Type == DeviceTypeEnumType.Door && device.AsAttendance));
var needUpload = userType is GainfoUserTypeEnumType.Normal or GainfoUserTypeEnumType.SecurityWhite && (device.Type == DeviceTypeEnumType.Attendance || (device.Type == DeviceTypeEnumType.Door && device.AsAttendance));
var dataType = device.Type == DeviceTypeEnumType.Attendance
? DeviceUploadLogTypeEnumType.Attendance
: DeviceUploadLogTypeEnumType.Door;
@@ -224,24 +224,13 @@ public class DeviceUploadLogService : IDeviceUploadLogService
_ => throw new UserFriendlyException("不支持当前设备类型")
};
var userTypes = new List<GainfoUserTypeEnumType?>();
var userType = request.IsOutsource.HasValue && request.IsOutsource.Value
? GainfoUserTypeEnumType.Outsource
: GainfoUserTypeEnumType.Normal;
var userTypes = new List<GainfoUserTypeEnumType?> { request.UserType };
if (request.UserType.HasValue)
if (request.UserType == GainfoUserTypeEnumType.Normal)
{
userType = request.UserType.Value;
if (request.UserType.Value == GainfoUserTypeEnumType.Normal)
{
userTypes.Add(GainfoUserTypeEnumType.SecurityWhite);
}
userTypes.Add(GainfoUserTypeEnumType.SecurityWhite);
}
userTypes.Add(userType);
var r = await _dbContext.Queryable<DeviceUploadLogEntity>()
.LeftJoin<DeviceEntity>((x, device) => x.DeviceUniqueNo == device.UniqueNo)
.LeftJoin<GainfoEntity>((x, device, ga) => x.UserUniqueNo == ga.Code)
@@ -249,15 +238,15 @@ public class DeviceUploadLogService : IDeviceUploadLogService
.LeftJoin<GainfoEntity>((x, device, ga, os, gaSap) => gaSap.Code == os.SapCode)
.WhereIF(request.SearchDateTimePeriod.HasValue(), x => x.RaiseDateTime >= request.SearchDateTimePeriod.Start
&& x.RaiseDateTime <= request.SearchDateTimePeriod.End)
.Where((x, device) => x.Type == type && userTypes.Contains(x.UserType))
.Where((x, device) => x.Type == type && !SqlFunc.IsNullOrEmpty(x.UserType) && userTypes.Contains(x.UserType))
.WhereIF(request.Sync.HasValue, x => x.Sync == request.Sync)
.WhereIF(request.Search.IsPresent() && userType == GainfoUserTypeEnumType.Outsource, (x, device, ga, os) =>
.WhereIF(request.Search.IsPresent() && userTypes.Contains(GainfoUserTypeEnumType.Outsource), (x, device, ga, os) =>
x.UserUniqueNo == request.Search
|| x.DeviceUniqueNo == request.Search
|| os.Supplier == request.Search
|| os.SapCode == request.Search
)
.WhereIF(request.Search.IsPresent() && userType != GainfoUserTypeEnumType.Outsource, (x, device, ga, os) =>
.WhereIF(request.Search.IsPresent() && !userTypes.Contains(GainfoUserTypeEnumType.Outsource), (x, device, ga, os) =>
x.UserUniqueNo == request.Search
|| x.DeviceUniqueNo == request.Search
)