fix 查询优化
This commit is contained in:
@@ -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; }
|
||||
}
|
||||
@@ -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,23 +224,12 @@ 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)
|
||||
{
|
||||
userType = request.UserType.Value;
|
||||
|
||||
|
||||
if (request.UserType.Value == GainfoUserTypeEnumType.Normal)
|
||||
if (request.UserType == GainfoUserTypeEnumType.Normal)
|
||||
{
|
||||
userTypes.Add(GainfoUserTypeEnumType.SecurityWhite);
|
||||
}
|
||||
}
|
||||
|
||||
userTypes.Add(userType);
|
||||
|
||||
var r = await _dbContext.Queryable<DeviceUploadLogEntity>()
|
||||
.LeftJoin<DeviceEntity>((x, device) => x.DeviceUniqueNo == device.UniqueNo)
|
||||
@@ -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
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user