fix 优化健康检查,数据同步
This commit is contained in:
@@ -1,12 +1,8 @@
|
||||
using System.Net.Http.Headers;
|
||||
using System.Text;
|
||||
using Dlhis.Middle.Apis;
|
||||
using Dlhis.Middle.Entities;
|
||||
using Dlhis.Middle.Response;
|
||||
using Dlhis.Middle.Services;
|
||||
using Kurisu.AspNetCore.DataAccess.SqlSugar.Services;
|
||||
using Kurisu.AspNetCore.UnifyResultAndValidation;
|
||||
using Kurisu.AspNetCore.Utils.Extensions;
|
||||
|
||||
namespace Dlhis.Middle.BackgroundServices;
|
||||
|
||||
@@ -102,23 +98,30 @@ public class BalanceRecordUploadBackgroundService : BackgroundService
|
||||
}
|
||||
|
||||
|
||||
if (now is { Hour: 4, Minute: 1 }
|
||||
&& !_healthCheckService.GetIsOffline()
|
||||
&& !await db.Queryable<LocalBalanceRecordEntity>().Where(x => !x.IsSync).AnyAsync())
|
||||
try
|
||||
{
|
||||
await ds.InitAsync(factories);
|
||||
if (now is { Hour: 4, Minute: 1 }
|
||||
&& !_healthCheckService.GetIsOffline()
|
||||
&& !await db.Queryable<LocalBalanceRecordEntity>().Where(x => !x.IsSync).AnyAsync())
|
||||
{
|
||||
await ds.InitAsync(factories);
|
||||
}
|
||||
else if (now is { Hour: 15, Minute: 1 }
|
||||
&& !_healthCheckService.GetIsOffline()
|
||||
&& !await db.Queryable<LocalBalanceRecordEntity>().Where(x => !x.IsSync).AnyAsync())
|
||||
{
|
||||
await ds.InitAsync(factories);
|
||||
}
|
||||
else if (now is { Hour: 20, Minute: 1 }
|
||||
&& !_healthCheckService.GetIsOffline()
|
||||
&& !await db.Queryable<LocalBalanceRecordEntity>().Where(x => !x.IsSync).AnyAsync())
|
||||
{
|
||||
await ds.InitAsync(factories);
|
||||
}
|
||||
}
|
||||
else if (now is { Hour: 15, Minute: 1 }
|
||||
&& !_healthCheckService.GetIsOffline()
|
||||
&& !await db.Queryable<LocalBalanceRecordEntity>().Where(x => !x.IsSync).AnyAsync())
|
||||
catch (Exception e)
|
||||
{
|
||||
await ds.InitAsync(factories);
|
||||
}
|
||||
else if (now is { Hour: 20, Minute: 1 }
|
||||
&& !_healthCheckService.GetIsOffline()
|
||||
&& !await db.Queryable<LocalBalanceRecordEntity>().Where(x => !x.IsSync).AnyAsync())
|
||||
{
|
||||
await ds.InitAsync(factories);
|
||||
_logger.LogError(e, "定时同步离线数据失败");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -5,17 +5,31 @@ namespace Dlhis.Middle.BackgroundServices;
|
||||
public class HealthCheckBackgroundService : BackgroundService
|
||||
{
|
||||
private readonly IHealthCheckService _healthCheckService;
|
||||
private readonly IServiceProvider _serviceProvider;
|
||||
private bool _init;
|
||||
|
||||
public HealthCheckBackgroundService(IHealthCheckService healthCheckService)
|
||||
public HealthCheckBackgroundService(IHealthCheckService healthCheckService, IServiceProvider serviceProvider)
|
||||
{
|
||||
_healthCheckService = healthCheckService;
|
||||
_serviceProvider = serviceProvider;
|
||||
}
|
||||
|
||||
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
|
||||
{
|
||||
while (!stoppingToken.IsCancellationRequested)
|
||||
{
|
||||
await _healthCheckService.DoHealthCheckAsync();
|
||||
if (await _healthCheckService.DoHealthCheckAsync())
|
||||
{
|
||||
if (!_init)
|
||||
{
|
||||
using var scope = _serviceProvider.CreateScope();
|
||||
var factories = scope.ServiceProvider.GetService<ISettingService>().GetFactories();
|
||||
var ds = scope.ServiceProvider.GetService<IDataDownloadService>();
|
||||
await ds.InitAsync(factories);
|
||||
}
|
||||
}
|
||||
|
||||
_init = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user