From c3877b2ebec19f473f45e8c2245926f65d2a3948 Mon Sep 17 00:00:00 2001 From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com> Date: 星期三, 10 九月 2025 09:26:23 +0800 Subject: [PATCH] 代码提交 --- 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/AspNetCoreSchedule.cs | 110 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 106 insertions(+), 4 deletions(-) diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/AspNetCoreSchedule.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/AspNetCoreSchedule.cs" index 4b160f3..b45a69f 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/AspNetCoreSchedule.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/AspNetCoreSchedule.cs" @@ -13,10 +13,12 @@ using WIDESEA_StorageSocketServices; using WIDESEA_IStorageSocketServices; using Microsoft.Extensions.Configuration; +using WIDESEA_Repository; +using Microsoft.Extensions.DependencyInjection; namespace WIDESEA_StorageTaskServices { - public class MyBackgroundService : IHostedService, IDisposable + public class MyBackgroundService : BackgroundService, IDisposable { private readonly ILogger<MyBackgroundService> _logger; Connection connection = AppSettings.Configuration.GetSection("Connection").Get<Connection>(); @@ -24,16 +26,75 @@ private Timer _timer; - public MyBackgroundService(ILogger<MyBackgroundService> logger, SocketClientService socketClientService) + private readonly IServiceProvider _serviceProvider; + + public MyBackgroundService(ILogger<MyBackgroundService> logger, SocketClientService socketClientService, IServiceProvider serviceProvider) { _logger = logger; _socket = socketClientService; + _serviceProvider = serviceProvider; + } + + protected override async Task ExecuteAsync(CancellationToken stoppingToken) + { + while (!stoppingToken.IsCancellationRequested) + { + // 涓烘瘡娆′换鍔″垱寤烘柊浣滅敤鍩� + using (var scope = _serviceProvider.CreateScope()) + { + DateTime timeHandLe = DateTime.Now.AddMinutes(-15); + if (!_socket.Socketonline()) + { + if (_socket.Time < timeHandLe) + { + _socket.Time = DateTime.Now; + _socket.AddErrorMessage("2000", "Host", ""); + } + _socket.ConnectServer(connection.IP, connection.Port); + } + + var hostAll = await SqlSugarHelper.DbWMS.Queryable<Dt_HostLog>().Where(x => true).ToListAsync(); + + if (hostAll.Count != 0) + { + DateTime threshold = DateTime.Now.AddSeconds(-30); + DateTime time = DateTime.Now.AddMinutes(-5); + DateTime Y = DateTime.Now.AddMinutes(-3); + + var Reissue = hostAll.Where(x => x.CreateDate < threshold || x.ModifyDate < threshold).ToList(); + + var hostLogtime = hostAll.Where(x => x.CreateDate < time || x.ModifyDate < time).ToList(); + + var Heart = hostAll.Where(x => x.CreateDate < Y || x.ModifyDate < Y && x.CommandID == 910).FirstOrDefault(); + + if (Heart != null) + { + Heart.CreateDate = DateTime.Now; + await SqlSugarHelper.DbWMS.Updateable(Heart).ExecuteCommandAsync(); + + //_socket.AddErrorMessage("2000", "Host", ""); + _socket.HandleDisconnection(); + } + if (hostLogtime.Count > 0) + { + await SqlSugarHelper.DbWMS.Updateable(hostLogtime).ExecuteCommandAsync(); + } + foreach (var item in Reissue) + { + _socket.clientSend(_socket.MakeStringToByteMsg(item.Messgae)); + Thread.Sleep(1000); + } + } + } + + await Task.Delay(TimeSpan.FromMinutes(1), stoppingToken); + } } public Task StartAsync(CancellationToken cancellationToken = default) { //TimeSpan.FromMinutes(5) - _timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromMinutes(5)); + //_timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromMinutes(1)); return Task.CompletedTask; } @@ -41,7 +102,48 @@ private void DoWork(object state) { - _socket.ConnectServer(connection.IP, connection.Port); + DateTime timeHandLe = DateTime.Now.AddMinutes(-15); + if (!_socket.Socketonline()) + { + if (_socket.Time < timeHandLe) + { + _socket.Time = DateTime.Now; + _socket.AddErrorMessage("2000", "Host", ""); + } + _socket.ConnectServer(connection.IP, connection.Port); + } + DateTime threshold = DateTime.Now.AddSeconds(-30); + DateTime time = DateTime.Now.AddMinutes(-2); + DateTime Y = DateTime.Now.AddMinutes(-3); + + + //var hostLog = _hostLogRepository.QueryData(x => x.CreateDate < threshold || x.ModifyDate < threshold).ToList(); + var hostLog = SqlSugarHelper.DbWMS.Queryable<Dt_HostLog>().Where(x => x.CreateDate < threshold || x.ModifyDate < threshold).ToList(); + var hostLogtime = SqlSugarHelper.DbWMS.Queryable<Dt_HostLog>().Where(x => x.CreateDate < time || x.ModifyDate < time).ToList(); + //var hostLogtime = _hostLogRepository.QueryData(x => x.CreateDate < time || x.ModifyDate < time).ToList(); + + var Heart = SqlSugarHelper.DbWMS.Queryable<Dt_HostLog>().Where(x => x.CreateDate < Y || x.ModifyDate < Y && x.CommandID == 910).First(); + + //var Heart = _hostLogRepository.QueryFirst(x => x.CreateDate < Y || x.ModifyDate < Y && x.CommandID == 910); + if (Heart != null) + { + Heart.CreateDate = DateTime.Now; + SqlSugarHelper.DbWMS.Updateable(Heart).ExecuteCommand(); + + _socket.AddErrorMessage("2000", "Host", ""); + _socket.HandleDisconnection(); + return; + } + if (hostLogtime.Count > 0) + { + SqlSugarHelper.DbWMS.Updateable(hostLogtime).ExecuteCommand(); + //_hostLogRepository.DeleteData(hostLogtime); + } + foreach (var item in hostLog) + { + _socket.clientSend(_socket.MakeStringToByteMsg(item.Messgae)); + Thread.Sleep(1000); + } } public Task StopAsync(CancellationToken cancellationToken) -- Gitblit v1.9.3