fix 增加where条件优化查询性能

This commit is contained in:
2025-06-09 14:09:27 +08:00
parent 685789d5e6
commit aca027e9e6

View File

@@ -105,13 +105,14 @@ public class DeviceTaskAssignmentService : IDeviceTaskAssignmentService
public async Task<Pagination<DeviceTaskAssignmentResponse>> GetPageWarningAsync(DeviceTaskAssignmentRequest request)
{
var rows = await _dbContext.Queryable<DeviceTaskEntity>()
var page = await _dbContext.Queryable<DeviceTaskEntity>()
.LeftJoin<DeviceEntity>((deviceTask, device) => deviceTask.DeviceUniqueNo == device.UniqueNo)
.LeftJoin<GainfoEntity>((deviceTask, device, ga) => deviceTask.UserNo == ga.No)
.LeftJoin<GainfoLeaveEntity>((deviceTask, device, ga, gaLeave) => deviceTask.UserNo == gaLeave.No)
.LeftJoin<DeviceRegistryEntity>((deviceTask, device, ga, gaLeave, deviceRegistry) => deviceRegistry.DeviceUniqueNo == deviceTask.DeviceUniqueNo)
.Where(deviceTask => deviceTask.TenantId == request.Factory)
.WhereIF(request.Type.HasValue, deviceTask => deviceTask.DeviceType == request.Type)
.Where(deviceTask => deviceTask.DeviceType == request.Type)
.Where(deviceTask => deviceTask.Status == DeviceTaskStatusEnumType.Process)
.WhereIF(!request.Search.IsEmpty(), (deviceTask, device, ga) =>
ga.Name == request.Search
|| ga.Code == request.Search
@@ -139,12 +140,14 @@ public class DeviceTaskAssignmentService : IDeviceTaskAssignmentService
CreateBy = deviceTask.CreatedBy,
Source = deviceTask.Source
})
.ToPageListAsync(request.PageIndex, request.PageSize);
.ToPageListAsync(request);
//.ToPageListAsync(request.PageIndex, request.PageSize);
try
{
var tenants = await _tenantApi.GetTenantsInternalAsync();
rows.ForEach(item => { item.TenantName = tenants.FirstOrDefault(x => x.Code == item.TenantId)?.Name; });
//rows.ForEach(item => { item.TenantName = tenants.FirstOrDefault(x => x.Code == item.TenantId)?.Name; });
page.Data.ForEach(item => { item.TenantName = tenants.FirstOrDefault(x => x.Code == item.TenantId)?.Name; });
}
catch (Exception)
{
@@ -153,22 +156,25 @@ public class DeviceTaskAssignmentService : IDeviceTaskAssignmentService
try
{
var userIds = rows.Select(x => x.CreateBy).Distinct().ToList();
//var userIds = rows.Select(x => x.CreateBy).Distinct().ToList();
var userIds = page.Data.Select(x => x.CreateBy).Distinct().ToList();
var userInfos = await _userApi.GetUserByIdsAsync(new IdsRequest { Ids = userIds });
rows.ForEach(item => item.Creator = userInfos.FirstOrDefault(x => x.Id == item.CreateBy)?.OperatorName);
page.Data.ForEach(item => item.Creator = userInfos.FirstOrDefault(x => x.Id == item.CreateBy)?.OperatorName);
}
catch (Exception e)
{
_logger.LogError("获取人员数据失败:{error}", e.Message);
}
return new Pagination<DeviceTaskAssignmentResponse>
{
PageIndex = request.PageIndex,
PageSize = request.PageSize,
Total = 0,
Data = rows
};
// return new Pagination<DeviceTaskAssignmentResponse>
// {
// PageIndex = request.PageIndex,
// PageSize = request.PageSize,
// Total = 0,
// Data = rows
// };
return page;
}