From 9b139ce92aa09f466c01111dd66af9347a34d865 Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com>
Date: 星期三, 02 七月 2025 17:23:51 +0800
Subject: [PATCH] 1
---
项目代码/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 c534fc1..5d2e8af 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(30));
+ //_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