diff --git a/Src/Dlhis.ScheduledTask/TaskAssignment/Services/Implements/DeviceTaskAssignmentService.cs b/Src/Dlhis.ScheduledTask/TaskAssignment/Services/Implements/DeviceTaskAssignmentService.cs index afba7364..a48e5ac5 100644 --- a/Src/Dlhis.ScheduledTask/TaskAssignment/Services/Implements/DeviceTaskAssignmentService.cs +++ b/Src/Dlhis.ScheduledTask/TaskAssignment/Services/Implements/DeviceTaskAssignmentService.cs @@ -26,8 +26,10 @@ public class DeviceTaskAssignmentService : IDeviceTaskAssignmentService public async Task> GetPageAsync(DeviceTaskAssignmentRequest request) { var page = await _dbContext.Queryable() - .LeftJoin((deviceTask, ga) => deviceTask.UserNo == ga.No) - .LeftJoin((deviceTask, ga, device) => deviceTask.DeviceUniqueNo == device.UniqueNo) + .LeftJoin((deviceTask, device) => deviceTask.DeviceUniqueNo == device.UniqueNo) + .LeftJoin((deviceTask, device, ga) => deviceTask.UserNo == ga.No) + .LeftJoin((deviceTask, device, ga, gaLeave) => deviceTask.UserNo == gaLeave.No) + .LeftJoin((deviceTask, device, ga, gaLeave, gaEx) => deviceTask.UserNo == gaEx.No) .Where(deviceTask => deviceTask.TenantId == request.Factory) .WhereIF(request.Type.HasValue, (deviceTask, ga, device) => deviceTask.DeviceType == request.Type) .WhereIF(request.SearchDateTimePeriod?.Start.HasValue == true && request.SearchDateTimePeriod?.End.HasValue == true, @@ -36,13 +38,13 @@ public class DeviceTaskAssignmentService : IDeviceTaskAssignmentService .WhereIF(request.TaskTypes.IsPresent(), deviceTask => request.TaskTypes.Contains(deviceTask.Type)) .WhereIF(request.Status.IsPresent(), deviceTask => request.Status.Contains(deviceTask.Status)) .WhereIF(request.UserNo.IsPresent(), deviceTask => deviceTask.UserNo == request.UserNo) - .WhereIF(!request.Search.IsEmpty(), (deviceTask, ga, device) => + .WhereIF(!request.Search.IsEmpty(), (deviceTask, device, ga) => ga.Name == request.Search || ga.Code == request.Search || deviceTask.DeviceUniqueNo == request.Search ) .OrderBy(deviceTask => deviceTask.CreateTime, OrderByType.Desc) - .Select((deviceTask, ga, device) => new DeviceTaskAssignmentResponse + .Select((deviceTask, device, ga, gaLeave, gaEx) => new DeviceTaskAssignmentResponse { Id = deviceTask.Id, DeviceUniqueNo = deviceTask.DeviceUniqueNo, @@ -50,8 +52,8 @@ public class DeviceTaskAssignmentService : IDeviceTaskAssignmentService RetryCount = deviceTask.Version, Status = deviceTask.Status, UserNo = deviceTask.UserNo, - UserName = ga.Name, - UserCode = ga.Code, + UserName = SqlFunc.IsNull(SqlFunc.IsNull(ga.Name, gaLeave.Name), gaEx.Name), + UserCode = SqlFunc.IsNull(SqlFunc.IsNull(ga.Code, gaLeave.Code), gaEx.Code), Type = deviceTask.Type, CreateTime = deviceTask.CreateTime, LastUpdateTime = deviceTask.ModifiedTime,