diff --git a/Src/Dlhis.ScheduledTask/TaskAssignment/Response/DeviceTaskAssignmentResponse.cs b/Src/Dlhis.ScheduledTask/TaskAssignment/Response/DeviceTaskAssignmentResponse.cs index d594c37d..911885b3 100644 --- a/Src/Dlhis.ScheduledTask/TaskAssignment/Response/DeviceTaskAssignmentResponse.cs +++ b/Src/Dlhis.ScheduledTask/TaskAssignment/Response/DeviceTaskAssignmentResponse.cs @@ -82,4 +82,17 @@ public class DeviceTaskAssignmentResponse /// 部署点 /// public string DeployPlace { get; set; } -} + + public int HeartbeatInterval { get; set; } + + public DateTime LastHeartbeatTime { get; set; } + + public bool IsOffline + { + get + { + if (HeartbeatInterval == 0) return false; + return LastHeartbeatTime.AddSeconds(HeartbeatInterval) > DateTime.Now; + } + } +} \ No newline at end of file diff --git a/Src/Dlhis.ScheduledTask/TaskAssignment/Services/Implements/DeviceTaskAssignmentService.cs b/Src/Dlhis.ScheduledTask/TaskAssignment/Services/Implements/DeviceTaskAssignmentService.cs index 822b7c04..1c479977 100644 --- a/Src/Dlhis.ScheduledTask/TaskAssignment/Services/Implements/DeviceTaskAssignmentService.cs +++ b/Src/Dlhis.ScheduledTask/TaskAssignment/Services/Implements/DeviceTaskAssignmentService.cs @@ -30,6 +30,7 @@ public class DeviceTaskAssignmentService : IDeviceTaskAssignmentService .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) + .LeftJoin((deviceTask, device, ga, gaLeave, gaEx, deviceRegistry) => deviceRegistry.DeviceUniqueNo == deviceTask.DeviceUniqueNo) .Where(deviceTask => deviceTask.TenantId == request.Factory) .WhereIF(request.Type.HasValue, deviceTask => deviceTask.DeviceType == request.Type) .WhereIF(request.SearchDateTimePeriod?.Start.HasValue == true && request.SearchDateTimePeriod?.End.HasValue == true, @@ -44,7 +45,7 @@ public class DeviceTaskAssignmentService : IDeviceTaskAssignmentService || deviceTask.DeviceUniqueNo == request.Search ) .OrderBy(deviceTask => deviceTask.CreateTime, OrderByType.Desc) - .Select((deviceTask, device, ga, gaLeave, gaEx) => new DeviceTaskAssignmentResponse + .Select((deviceTask, device, ga, gaLeave, gaEx, deviceRegistry) => new DeviceTaskAssignmentResponse { Id = deviceTask.Id, DeviceUniqueNo = deviceTask.DeviceUniqueNo, @@ -52,12 +53,18 @@ public class DeviceTaskAssignmentService : IDeviceTaskAssignmentService RetryCount = deviceTask.Version, Status = deviceTask.Status, UserNo = deviceTask.UserNo, - UserName = SqlFunc.IsNull(SqlFunc.IsNull(ga.Name, gaLeave.Name), gaEx.Name), - UserCode = SqlFunc.IsNull(SqlFunc.IsNull(ga.Code, gaLeave.Code), gaEx.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, TenantId = deviceTask.TenantId, + LastHeartbeatTime = deviceRegistry.LastHeartbeatTime, + HeartbeatInterval = device.HeartbeatInterval, DeployPlace = device.DeployPlace, }) .ToPageListAsync(request);