diff --git a/Src/Dlhis.Middle/BackgroundServices/BalanceRecordUploadBackgroundService.cs b/Src/Dlhis.Middle/BackgroundServices/BalanceRecordUploadBackgroundService.cs index f0f441a0..9984ac59 100644 --- a/Src/Dlhis.Middle/BackgroundServices/BalanceRecordUploadBackgroundService.cs +++ b/Src/Dlhis.Middle/BackgroundServices/BalanceRecordUploadBackgroundService.cs @@ -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().Where(x => !x.IsSync).AnyAsync()) + try { - await ds.InitAsync(factories); + if (now is { Hour: 4, Minute: 1 } + && !_healthCheckService.GetIsOffline() + && !await db.Queryable().Where(x => !x.IsSync).AnyAsync()) + { + await ds.InitAsync(factories); + } + else if (now is { Hour: 15, Minute: 1 } + && !_healthCheckService.GetIsOffline() + && !await db.Queryable().Where(x => !x.IsSync).AnyAsync()) + { + await ds.InitAsync(factories); + } + else if (now is { Hour: 20, Minute: 1 } + && !_healthCheckService.GetIsOffline() + && !await db.Queryable().Where(x => !x.IsSync).AnyAsync()) + { + await ds.InitAsync(factories); + } } - else if (now is { Hour: 15, Minute: 1 } - && !_healthCheckService.GetIsOffline() - && !await db.Queryable().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().Where(x => !x.IsSync).AnyAsync()) - { - await ds.InitAsync(factories); + _logger.LogError(e, "定时同步离线数据失败"); } } diff --git a/Src/Dlhis.Middle/BackgroundServices/HealthCheckBackgroundService.cs b/Src/Dlhis.Middle/BackgroundServices/HealthCheckBackgroundService.cs index a765b742..44320032 100644 --- a/Src/Dlhis.Middle/BackgroundServices/HealthCheckBackgroundService.cs +++ b/Src/Dlhis.Middle/BackgroundServices/HealthCheckBackgroundService.cs @@ -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().GetFactories(); + var ds = scope.ServiceProvider.GetService(); + await ds.InitAsync(factories); + } + } + + _init = true; } } } \ No newline at end of file diff --git a/Src/Dlhis.Middle/Packs/SqlSugarPack.cs b/Src/Dlhis.Middle/Packs/SqlSugarPack.cs index 89e24c61..b47ad750 100644 --- a/Src/Dlhis.Middle/Packs/SqlSugarPack.cs +++ b/Src/Dlhis.Middle/Packs/SqlSugarPack.cs @@ -1,7 +1,4 @@ -using Dlhis.Entity.Basic.Entity; -using Dlhis.Entity.Canteen.Entities; -using Dlhis.Entity.Device.Entities; -using Dlhis.Middle.Entities; +using Dlhis.Middle.Entities; using Kurisu.AspNetCore.Authentication.Abstractions; using Kurisu.AspNetCore.DataAccess.Entity; using Kurisu.AspNetCore.DataAccess.SqlSugar.Attributes; @@ -141,7 +138,7 @@ public class SqlSugarPack : BaseAppPack { using var scope = app.ApplicationServices.CreateScope(); var db = scope.ServiceProvider.GetService(); - + db.Client.DbMaintenance.CreateDatabase(); db.Client.CodeFirst.InitTables(); db.Client.CodeFirst.InitTables(); diff --git a/Src/Dlhis.Middle/Program.cs b/Src/Dlhis.Middle/Program.cs index 7558c266..f139b0fd 100644 --- a/Src/Dlhis.Middle/Program.cs +++ b/Src/Dlhis.Middle/Program.cs @@ -1,5 +1,4 @@ using Dlhis.Middle.BackgroundServices; -using Dlhis.Middle.Services; using Kurisu.AspNetCore; using Kurisu.AspNetCore.Startup; using Microsoft.IdentityModel.Logging; @@ -31,18 +30,4 @@ public class Startup : DefaultStartup services.AddRemoteCall(App.ActiveTypes); services.AddMemoryCache(); } - - /// - public override void Configure(IApplicationBuilder app, IWebHostEnvironment env) - { - base.Configure(app, env); - - if (Configuration.GetSection("Download").Value == "1") - { - using var scope = app.ApplicationServices.CreateScope(); - var factories = scope.ServiceProvider.GetService().GetFactories(); - var ds = scope.ServiceProvider.GetService(); - ds.InitAsync(factories).Wait(); - } - } } \ No newline at end of file diff --git a/Src/Dlhis.Middle/Services/IHealthCheckService.cs b/Src/Dlhis.Middle/Services/IHealthCheckService.cs index e8c05049..b3f8fd9a 100644 --- a/Src/Dlhis.Middle/Services/IHealthCheckService.cs +++ b/Src/Dlhis.Middle/Services/IHealthCheckService.cs @@ -4,5 +4,5 @@ public interface IHealthCheckService : ISingletonDependency { bool GetIsOffline(); - Task DoHealthCheckAsync(); + Task DoHealthCheckAsync(); } \ No newline at end of file diff --git a/Src/Dlhis.Middle/Services/Implements/HealthcheckService.cs b/Src/Dlhis.Middle/Services/Implements/HealthcheckService.cs index a254668d..3b44aa94 100644 --- a/Src/Dlhis.Middle/Services/Implements/HealthcheckService.cs +++ b/Src/Dlhis.Middle/Services/Implements/HealthcheckService.cs @@ -28,7 +28,7 @@ public class HealthCheckService : IHealthCheckService return _isOffline; } - public async Task DoHealthCheckAsync() + public async Task DoHealthCheckAsync() { try { @@ -50,12 +50,13 @@ public class HealthCheckService : IHealthCheckService _isBegin = true; } + await Task.Delay(_attempted * 1000); + if (_isOffline == false) { _logger.LogInformation("Health"); + return true; } - - await Task.Delay(_attempted * 1000); } else { @@ -69,5 +70,7 @@ public class HealthCheckService : IHealthCheckService _isOffline = true; await Task.Delay(5000); } + + return false; } } \ No newline at end of file diff --git a/Src/Dlhis.Middle/appsettings.Development.json b/Src/Dlhis.Middle/appsettings.Development.json index 1339edac..4a755b60 100644 --- a/Src/Dlhis.Middle/appsettings.Development.json +++ b/Src/Dlhis.Middle/appsettings.Development.json @@ -7,5 +7,5 @@ }, "BaseUrl": "https://yikatong.isawesome.cn", "Factory": "1234", - "Download":1 + "InternalIP":"" } diff --git a/Src/Dlhis.Middle/local.db-journal b/Src/Dlhis.Middle/local.db-journal deleted file mode 100644 index 750c5ab6..00000000 Binary files a/Src/Dlhis.Middle/local.db-journal and /dev/null differ