Files
DMS/DMS.WPF/ViewModels/SplashViewModel.cs
David P.G ec1f94a898 1 refactor(config): 将AppSettings移至Application层并更新配置结构
2
    3 - 将AppSettings从DMS.Infrastructure移至DMS.Application
    4 - 将DatabaseSettings重命名为AppSettings.Database并更新所有引用
    5 - 将配置文件从appSettings.json更改为dms_config.json
    6 - 更新所有项目引用以使用新的AppSettings命名空间
    7 - 移除DI容器中的SqlSugarDbContext直接实例化
    8 - 添加Material Design Icons字体并更新设置视图UI
    9 - 通过移除不必要的变量映射更新来优化S7服务
   10 - 将数据库连接字符串属性名从Database更新为DbName
2025-10-04 18:42:12 +08:00

94 lines
3.2 KiB
C#

// 文件: DMS.WPF/ViewModels/SplashViewModel.cs
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using DMS.Application.Interfaces;
using DMS.WPF.Services;
using System;
using System.Data;
using System.Threading.Tasks;
using DMS.Application.Configurations;
using DMS.Application.Services;
using DMS.WPF.Helper;
using DMS.WPF.Interfaces;
using DMS.WPF.Views;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
namespace DMS.WPF.ViewModels;
/// <summary>
/// 启动加载窗口的ViewModel。
/// </summary>
public partial class SplashViewModel : ObservableObject
{
private readonly ILogger<SplashViewModel> _logger;
private readonly IServiceProvider _serviceProvider;
private readonly IInitializeService _initializeService;
private readonly IDataEventService _dataEventService;
private readonly IAppDataCenterService _appDataCenterService;
private readonly AppSettings _appSettings;
[ObservableProperty]
private string _loadingMessage = "正在加载...";
public SplashViewModel(ILogger<SplashViewModel> logger, IServiceProvider serviceProvider,
IInitializeService initializeService, IDataEventService dataEventService,
IAppDataCenterService appDataCenterService, AppSettings appSettings)
{
_logger = logger;
_serviceProvider = serviceProvider;
_initializeService = initializeService;
_dataEventService = dataEventService;
this._appDataCenterService = appDataCenterService;
_appSettings = appSettings;
}
/// <summary>
/// 开始执行初始化任务。
/// </summary>
public async Task<bool> InitializeAsync()
{
try
{
LoadingMessage = "正在加载系统配置...";
if (_appSettings.Load() == null)
{
//程序第一次启动
}
_logger.LogInformation("正在初始化数据库...");
LoadingMessage = "正在初始化数据库...";
_initializeService.InitializeTables();
_initializeService.InitializeMenus();
await _appDataCenterService.DataLoaderService.LoadAllDataToMemoryAsync();
// 可以在这里添加加载配置的逻辑
await Task.Delay(500); // 模拟耗时
LoadingMessage = "正在连接后台服务...";
// 可以在这里添加连接服务的逻辑
await Task.Delay(500); // 模拟耗时
LoadingMessage = "加载完成,正在启动主界面...";
await Task.Delay(500);
// 初始化完成,显示主窗口
var mainView = App.Current.Services.GetRequiredService<MainView>();
// 将 MainView 设置为新的主窗口
App.Current.MainWindow = mainView;
mainView.Show();
return true;
}
catch (Exception ex)
{
// 处理初始化过程中的异常
LoadingMessage = $"初始化失败: {ex.Message}";
_logger.LogError(ex, $"初始化失败: {ex}");
// 在此可以记录日志或显示错误对话框
return false;
}
}
}