// using System.Net; // using System.Net.Sockets; // using Dlhis.Entity.Basic.Entity; // using Dlhis.Entity.Device.Entities; // using Dlhis.ScheduledTask.Attributes; // using Kurisu.AspNetCore.CustomClass; // using Newtonsoft.Json; // // namespace Dlhis.ScheduledTask.Jobs; // // /// // /// 设备心跳 // /// // [RecurringJob(nameof(HeartbeatJob), "0/30 * * * * ?", Name = "设备心跳")] // public class HeartbeatJob : BaseJob // { // public HeartbeatJob(IServiceProvider serviceProvider) : base(serviceProvider) // { // } // // protected override async Task RunAsync(IServiceProvider serviceProvider) // { // var devices = await DbContext.Queryable().Where(x => x.Enable).Where(x => x.HeartbeatInterval > 0).ToListAsync(); // // await Parallel.ForEachAsync(devices, async (device, cancellationToken) => // { // try // { // var ipInfo = JsonConvert.DeserializeObject(device.ConnectionInfo); // await new TcpClient().ConnectAsync(IPAddress.Parse(ipInfo.IP), ipInfo.Port, cancellationToken); // // await DbContext.Updateable() // .SetColumns(x => x.LastHeartbeatTime == DateTime.Now) // .Where(x => x.DeviceUniqueNo == device.UniqueNo) // .ExecuteCommandAsync(cancellationToken); // } // catch (Exception) // { // //ignore // } // }); // } // }