diff --git a/.cursor/rules/navisworks-plugin-rule.mdc b/.cursor/rules/navisworks-plugin-rule.mdc deleted file mode 100644 index d3e2ce3..0000000 --- a/.cursor/rules/navisworks-plugin-rule.mdc +++ /dev/null @@ -1,17 +0,0 @@ ---- -description: -globs: -alwaysApply: true ---- -本项目中设计方案和开发任何代码,都要先参考Navisworks2017的API文档; -每次完成一个开发任务,更新 [VERSION.md](mdc:NavisworksTransport/NavisworksTransport/NavisworksTransport/NavisworksTransport/VERSION.md) 和 [change_log.md](mdc:NavisworksTransport/NavisworksTransport/NavisworksTransport/NavisworksTransport/change_log.md); -生成的任务清单文件和其他临时文件,放在 doc/working目录下; -每次分析错误,要看日志文件[NavisworksTransport_Debug.log](mdc:NavisworksTransport/NavisworksTransport/NavisworksTransport/Desktop/NavisworksTransport_Debug.log); -每次增加新的代码文件,要把文件增加到 [NavisworksTransportPlugin.csproj](mdc:NavisworksTransport/NavisworksTransport/NavisworksTransport/NavisworksTransport/NavisworksTransportPlugin.csproj)中; -这个项目的开发环境是windows,生成命令时要注意; -在对代码进行修改时,不能随意删掉代码中原有的和此次修改无关的代码 - -编译使用命令: -```sh -.\compile.bat -``` \ No newline at end of file diff --git a/NavisworksTransportPlugin.csproj b/NavisworksTransportPlugin.csproj index a418403..97445c9 100644 --- a/NavisworksTransportPlugin.csproj +++ b/NavisworksTransportPlugin.csproj @@ -102,7 +102,6 @@ - @@ -128,7 +127,6 @@ - @@ -162,9 +160,6 @@ Form - - Form - UserControl diff --git a/SystemManagementViewModel_Design.cs b/SystemManagementViewModel_Design.cs deleted file mode 100644 index 82d7ddf..0000000 --- a/SystemManagementViewModel_Design.cs +++ /dev/null @@ -1,897 +0,0 @@ -using System; -using System.Collections.ObjectModel; -using System.ComponentModel; -using System.Diagnostics; -using System.IO; -using System.Threading.Tasks; -using System.Windows.Input; -using System.Windows.Threading; - -namespace NavisworksTransport.UI.WPF.ViewModels -{ - /// - /// 系统管理ViewModel - 参照PathEditingViewModel的设计模式 - /// 专门负责系统管理相关功能,包括:日志管理、设置管理、性能监控、版本控制、配置管理等 - /// - public class SystemManagementViewModel : ViewModelBase - { - #region 私有字段 - - // 依赖注入的核心服务 - private readonly UIStateManager _uiStateManager; - - // 系统管理相关的管理器实例(通过依赖注入) - private ISystemLogManager _logManager; - private ISystemConfigManager _configManager; - private IPerformanceMonitor _performanceMonitor; - private IModelSplitterManager _modelSplitterManager; - - // 日志管理相关字段 - private ObservableCollection _logLevels; - private string _selectedLogLevel = "Info"; - private string _logStatus = "日志系统正常"; - private int _logEntryCount = 0; - private string _logFilePath = "未设置"; - - // 系统设置相关字段 - private bool _isAutoSaveEnabled = true; - private bool _isDebugModeEnabled = false; - private string _settingsStatus = "设置已加载"; - private int _autoSaveInterval = 300; // 秒 - private string _workingDirectory = ""; - - // 版本和系统信息相关字段 - private string _pluginVersion = "v1.0"; - private string _navisworksVersion = "2026"; - private string _systemStatus = "正常"; - private string _systemStatusColor = "Green"; - private string _lastUpdateCheck = "未检查"; - - // 性能监控相关字段 - private string _memoryUsage = "0 MB"; - private string _runningTime = "00:00:00"; - private string _performanceInfo = "性能监控就绪"; - private double _cpuUsage = 0.0; - private int _threadsCount = 0; - private DispatcherTimer _performanceTimer; - - // 模型分割器相关字段 - private string _modelSplitterStatus = "就绪"; - private bool _canRunModelSplitter = true; - private string _lastSplitResult = "未执行"; - - // 配置管理相关字段 - private string _currentConfigProfile = "默认配置"; - private ObservableCollection _availableProfiles; - private bool _hasUnsavedChanges = false; - - #endregion - - #region 公共属性 - - #region 日志管理属性 - - /// - /// 可用日志级别集合 - /// - public ObservableCollection LogLevels - { - get => _logLevels; - set => SetProperty(ref _logLevels, value); - } - - /// - /// 选中的日志级别 - /// - public string SelectedLogLevel - { - get => _selectedLogLevel; - set - { - if (SetProperty(ref _selectedLogLevel, value)) - { - OnLogLevelChanged(); - } - } - } - - /// - /// 日志系统状态 - /// - public string LogStatus - { - get => _logStatus; - set => SetProperty(ref _logStatus, value); - } - - /// - /// 日志条目数量 - /// - public int LogEntryCount - { - get => _logEntryCount; - set => SetProperty(ref _logEntryCount, value); - } - - /// - /// 日志文件路径 - /// - public string LogFilePath - { - get => _logFilePath; - set => SetProperty(ref _logFilePath, value); - } - - #endregion - - #region 系统设置属性 - - /// - /// 是否启用自动保存 - /// - public bool IsAutoSaveEnabled - { - get => _isAutoSaveEnabled; - set - { - if (SetProperty(ref _isAutoSaveEnabled, value)) - { - OnAutoSaveSettingChanged(); - } - } - } - - /// - /// 是否启用调试模式 - /// - public bool IsDebugModeEnabled - { - get => _isDebugModeEnabled; - set - { - if (SetProperty(ref _isDebugModeEnabled, value)) - { - OnDebugModeChanged(); - } - } - } - - /// - /// 设置状态 - /// - public string SettingsStatus - { - get => _settingsStatus; - set => SetProperty(ref _settingsStatus, value); - } - - /// - /// 自动保存间隔(秒) - /// - public int AutoSaveInterval - { - get => _autoSaveInterval; - set - { - if (SetProperty(ref _autoSaveInterval, value)) - { - OnAutoSaveIntervalChanged(); - } - } - } - - /// - /// 工作目录 - /// - public string WorkingDirectory - { - get => _workingDirectory; - set => SetProperty(ref _workingDirectory, value); - } - - #endregion - - #region 版本和系统信息属性 - - /// - /// 插件版本 - /// - public string PluginVersion - { - get => _pluginVersion; - set => SetProperty(ref _pluginVersion, value); - } - - /// - /// Navisworks版本 - /// - public string NavisworksVersion - { - get => _navisworksVersion; - set => SetProperty(ref _navisworksVersion, value); - } - - /// - /// 系统状态 - /// - public string SystemStatus - { - get => _systemStatus; - set => SetProperty(ref _systemStatus, value); - } - - /// - /// 系统状态颜色 - /// - public string SystemStatusColor - { - get => _systemStatusColor; - set => SetProperty(ref _systemStatusColor, value); - } - - /// - /// 最后更新检查时间 - /// - public string LastUpdateCheck - { - get => _lastUpdateCheck; - set => SetProperty(ref _lastUpdateCheck, value); - } - - #endregion - - #region 性能监控属性 - - /// - /// 内存使用情况 - /// - public string MemoryUsage - { - get => _memoryUsage; - set => SetProperty(ref _memoryUsage, value); - } - - /// - /// 运行时间 - /// - public string RunningTime - { - get => _runningTime; - set => SetProperty(ref _runningTime, value); - } - - /// - /// 性能信息 - /// - public string PerformanceInfo - { - get => _performanceInfo; - set => SetProperty(ref _performanceInfo, value); - } - - /// - /// CPU使用率 - /// - public double CpuUsage - { - get => _cpuUsage; - set => SetProperty(ref _cpuUsage, value); - } - - /// - /// 线程数量 - /// - public int ThreadsCount - { - get => _threadsCount; - set => SetProperty(ref _threadsCount, value); - } - - #endregion - - #region 模型分割器属性 - - /// - /// 模型分层拆分状态 - /// - public string ModelSplitterStatus - { - get => _modelSplitterStatus; - set => SetProperty(ref _modelSplitterStatus, value); - } - - /// - /// 是否可以运行模型分割器 - /// - public bool CanRunModelSplitter - { - get => _canRunModelSplitter; - set => SetProperty(ref _canRunModelSplitter, value); - } - - /// - /// 最后分割结果 - /// - public string LastSplitResult - { - get => _lastSplitResult; - set => SetProperty(ref _lastSplitResult, value); - } - - #endregion - - #region 配置管理属性 - - /// - /// 当前配置档案 - /// - public string CurrentConfigProfile - { - get => _currentConfigProfile; - set => SetProperty(ref _currentConfigProfile, value); - } - - /// - /// 可用配置档案 - /// - public ObservableCollection AvailableProfiles - { - get => _availableProfiles; - set => SetProperty(ref _availableProfiles, value); - } - - /// - /// 是否有未保存的更改 - /// - public bool HasUnsavedChanges - { - get => _hasUnsavedChanges; - set => SetProperty(ref _hasUnsavedChanges, value); - } - - #endregion - - #endregion - - #region 命令定义 - - // 日志管理命令 - public ICommand ViewLogCommand { get; private set; } - public ICommand ClearLogCommand { get; private set; } - public ICommand ExportLogCommand { get; private set; } - public ICommand RefreshLogStatusCommand { get; private set; } - - // 设置管理命令 - public ICommand OpenSettingsCommand { get; private set; } - public ICommand ResetSettingsCommand { get; private set; } - public ICommand SaveSettingsCommand { get; private set; } - public ICommand LoadSettingsCommand { get; private set; } - - // 配置管理命令 - public ICommand ImportConfigCommand { get; private set; } - public ICommand ExportConfigCommand { get; private set; } - public ICommand CreateProfileCommand { get; private set; } - public ICommand DeleteProfileCommand { get; private set; } - public ICommand SwitchProfileCommand { get; private set; } - - // 系统管理命令 - public ICommand CheckUpdateCommand { get; private set; } - public ICommand RestartSystemCommand { get; private set; } - public ICommand SystemDiagnosticsCommand { get; private set; } - - // 性能管理命令 - public ICommand GeneratePerformanceReportCommand { get; private set; } - public ICommand StartPerformanceMonitoringCommand { get; private set; } - public ICommand StopPerformanceMonitoringCommand { get; private set; } - public ICommand ClearPerformanceDataCommand { get; private set; } - - // 模型分割器命令 - public ICommand RunModelSplitterCommand { get; private set; } - public ICommand ConfigureModelSplitterCommand { get; private set; } - - #endregion - - #region 构造函数 - - /// - /// 构造函数 - 参照PathEditingViewModel的设计模式 - /// - /// 日志管理器(可选,用于依赖注入) - /// 配置管理器(可选,用于依赖注入) - /// 性能监控器(可选,用于依赖注入) - /// 模型分割器管理器(可选,用于依赖注入) - public SystemManagementViewModel( - ISystemLogManager logManager = null, - ISystemConfigManager configManager = null, - IPerformanceMonitor performanceMonitor = null, - IModelSplitterManager modelSplitterManager = null) : base() - { - try - { - // 获取UI状态管理器 - _uiStateManager = UIStateManager.Instance; - if (_uiStateManager == null) - { - throw new InvalidOperationException("UIStateManager初始化失败"); - } - - // 设置依赖(如果为null则使用默认实现) - _logManager = logManager ?? CreateDefaultLogManager(); - _configManager = configManager ?? CreateDefaultConfigManager(); - _performanceMonitor = performanceMonitor ?? CreateDefaultPerformanceMonitor(); - _modelSplitterManager = modelSplitterManager ?? CreateDefaultModelSplitterManager(); - - // 初始化集合 - LogLevels = new ThreadSafeObservableCollection(); - AvailableProfiles = new ThreadSafeObservableCollection(); - - // 初始化命令 - InitializeCommands(); - - // 初始化系统管理设置(异步) - InitializeSystemManagementAsync(); - - LogManager.Info("SystemManagementViewModel构造函数执行完成"); - } - catch (Exception ex) - { - LogManager.Error($"SystemManagementViewModel构造函数异常: {ex.Message}", ex); - SystemStatus = "初始化失败,请检查日志"; - SystemStatusColor = "Red"; - throw; - } - } - - #endregion - - #region 初始化方法 - - /// - /// 初始化命令 - /// - private void InitializeCommands() - { - // 日志管理命令 - ViewLogCommand = new RelayCommand(async () => await ExecuteViewLogAsync()); - ClearLogCommand = new RelayCommand(async () => await ExecuteClearLogAsync()); - ExportLogCommand = new RelayCommand(async () => await ExecuteExportLogAsync()); - RefreshLogStatusCommand = new RelayCommand(async () => await ExecuteRefreshLogStatusAsync()); - - // 设置管理命令 - OpenSettingsCommand = new RelayCommand(async () => await ExecuteOpenSettingsAsync()); - ResetSettingsCommand = new RelayCommand(async () => await ExecuteResetSettingsAsync()); - SaveSettingsCommand = new RelayCommand(async () => await ExecuteSaveSettingsAsync()); - LoadSettingsCommand = new RelayCommand(async () => await ExecuteLoadSettingsAsync()); - - // 配置管理命令 - ImportConfigCommand = new RelayCommand(async () => await ExecuteImportConfigAsync()); - ExportConfigCommand = new RelayCommand(async () => await ExecuteExportConfigAsync()); - CreateProfileCommand = new RelayCommand(async () => await ExecuteCreateProfileAsync()); - DeleteProfileCommand = new RelayCommand(async () => await ExecuteDeleteProfileAsync()); - SwitchProfileCommand = new RelayCommand(async (profile) => await ExecuteSwitchProfileAsync(profile)); - - // 系统管理命令 - CheckUpdateCommand = new RelayCommand(async () => await ExecuteCheckUpdateAsync()); - RestartSystemCommand = new RelayCommand(async () => await ExecuteRestartSystemAsync()); - SystemDiagnosticsCommand = new RelayCommand(async () => await ExecuteSystemDiagnosticsAsync()); - - // 性能管理命令 - GeneratePerformanceReportCommand = new RelayCommand(async () => await ExecuteGeneratePerformanceReportAsync()); - StartPerformanceMonitoringCommand = new RelayCommand(async () => await ExecuteStartPerformanceMonitoringAsync()); - StopPerformanceMonitoringCommand = new RelayCommand(async () => await ExecuteStopPerformanceMonitoringAsync()); - ClearPerformanceDataCommand = new RelayCommand(async () => await ExecuteClearPerformanceDataAsync()); - - // 模型分割器命令 - RunModelSplitterCommand = new RelayCommand(async () => await ExecuteRunModelSplitterAsync(), () => CanRunModelSplitter); - ConfigureModelSplitterCommand = new RelayCommand(async () => await ExecuteConfigureModelSplitterAsync()); - } - - /// - /// 异步初始化系统管理设置 - /// - private async void InitializeSystemManagementAsync() - { - await SafeExecuteAsync(async () => - { - await _uiStateManager.ExecuteUIUpdateAsync(() => - { - // 初始化日志级别 - LogLevels.Clear(); - var logLevels = new[] { "Debug", "Info", "Warning", "Error" }; - foreach (var level in logLevels) - { - LogLevels.Add(level); - } - SelectedLogLevel = "Info"; - - // 初始化配置档案 - AvailableProfiles.Clear(); - var profiles = new[] { "默认配置", "开发配置", "生产配置", "测试配置" }; - foreach (var profile in profiles) - { - AvailableProfiles.Add(profile); - } - CurrentConfigProfile = "默认配置"; - - // 初始化系统信息 - PluginVersion = GetPluginVersion(); - NavisworksVersion = GetNavisworksVersion(); - SystemStatus = "正常"; - SystemStatusColor = "Green"; - WorkingDirectory = GetWorkingDirectory(); - LogFilePath = GetLogFilePath(); - }); - - // 启动性能监控 - await StartPerformanceMonitoring(); - - LogManager.Info("系统管理设置初始化完成"); - }, "初始化系统管理设置"); - } - - #endregion - - #region 命令实现 - - // 这里只展示架构框架,具体实现方法将在后续详细说明 - - #region 日志管理命令实现 - - private async Task ExecuteViewLogAsync() - { - await SafeExecuteAsync(async () => - { - // TODO: 实现日志查看功能 - await _logManager.OpenLogViewerAsync(); - LogStatus = "日志查看器已打开"; - }, "查看日志"); - } - - private async Task ExecuteClearLogAsync() - { - await SafeExecuteAsync(async () => - { - // TODO: 实现日志清空功能 - await _logManager.ClearLogsAsync(); - LogEntryCount = 0; - LogStatus = "日志已清空"; - }, "清空日志"); - } - - private async Task ExecuteExportLogAsync() - { - await SafeExecuteAsync(async () => - { - // TODO: 实现日志导出功能 - var exportPath = await _logManager.ExportLogsAsync(); - LogStatus = $"日志已导出到: {exportPath}"; - }, "导出日志"); - } - - private async Task ExecuteRefreshLogStatusAsync() - { - await SafeExecuteAsync(async () => - { - // TODO: 实现日志状态刷新功能 - var status = await _logManager.GetLogStatusAsync(); - LogStatus = status.Message; - LogEntryCount = status.EntryCount; - LogFilePath = status.FilePath; - }, "刷新日志状态"); - } - - #endregion - - // 其他命令实现方法... - // (这里省略具体实现,在实际代码中会完整实现) - - #endregion - - #region 事件处理 - - /// - /// 处理日志级别改变事件 - /// - private void OnLogLevelChanged() - { - SafeExecute(() => - { - _logManager?.SetLogLevel(SelectedLogLevel); - LogStatus = $"日志级别已设置为: {SelectedLogLevel}"; - }, "设置日志级别"); - } - - /// - /// 处理自动保存设置改变事件 - /// - private void OnAutoSaveSettingChanged() - { - SafeExecute(() => - { - _configManager?.SetAutoSaveEnabled(IsAutoSaveEnabled); - SettingsStatus = $"自动保存: {(IsAutoSaveEnabled ? "已启用" : "已禁用")}"; - HasUnsavedChanges = true; - }, "设置自动保存"); - } - - /// - /// 处理调试模式改变事件 - /// - private void OnDebugModeChanged() - { - SafeExecute(() => - { - _configManager?.SetDebugMode(IsDebugModeEnabled); - SettingsStatus = $"调试模式: {(IsDebugModeEnabled ? "已启用" : "已禁用")}"; - HasUnsavedChanges = true; - }, "设置调试模式"); - } - - /// - /// 处理自动保存间隔改变事件 - /// - private void OnAutoSaveIntervalChanged() - { - SafeExecute(() => - { - _configManager?.SetAutoSaveInterval(AutoSaveInterval); - SettingsStatus = $"自动保存间隔: {AutoSaveInterval}秒"; - HasUnsavedChanges = true; - }, "设置自动保存间隔"); - } - - #endregion - - #region 辅助方法 - - /// - /// 安全执行异步操作 - /// - private async Task SafeExecuteAsync(Func action, string operationName = "未知操作") - { - try - { - await action(); - } - catch (Exception ex) - { - LogManager.Error($"{operationName}发生异常: {ex.Message}", ex); - SystemStatus = $"{operationName}失败: {ex.Message}"; - SystemStatusColor = "Red"; - } - } - - /// - /// 安全执行同步操作 - /// - private void SafeExecute(Action action, string operationName = "未知操作") - { - try - { - action(); - } - catch (Exception ex) - { - LogManager.Error($"{operationName}发生异常: {ex.Message}", ex); - SystemStatus = $"{operationName}失败: {ex.Message}"; - SystemStatusColor = "Red"; - } - } - - #endregion - - #region 性能监控 - - /// - /// 启动性能监控 - /// - private async Task StartPerformanceMonitoring() - { - await SafeExecuteAsync(async () => - { - var startTime = DateTime.Now; - - // 使用定时器更新性能信息 - _performanceTimer = new DispatcherTimer(); - _performanceTimer.Interval = TimeSpan.FromSeconds(5); - _performanceTimer.Tick += async (s, e) => - { - try - { - await UpdatePerformanceInfo(startTime); - } - catch (Exception ex) - { - LogManager.Error($"性能监控更新失败: {ex.Message}"); - } - }; - _performanceTimer.Start(); - - PerformanceInfo = "性能监控已启动"; - }, "启动性能监控"); - } - - /// - /// 更新性能信息 - /// - private async Task UpdatePerformanceInfo(DateTime startTime) - { - await _uiStateManager.ExecuteUIUpdateAsync(() => - { - // 更新内存使用 - var process = Process.GetCurrentProcess(); - var memoryMB = process.WorkingSet64 / (1024 * 1024); - MemoryUsage = $"{memoryMB} MB"; - - // 更新运行时间 - var runTime = DateTime.Now - startTime; - RunningTime = $"{runTime.Hours:D2}:{runTime.Minutes:D2}:{runTime.Seconds:D2}"; - - // 更新线程数 - ThreadsCount = process.Threads.Count; - - // 更新性能信息 - PerformanceInfo = $"CPU: 正常, 内存: {memoryMB}MB, 线程: {ThreadsCount}, 运行时间: {RunningTime}"; - }); - } - - #endregion - - #region 默认实现创建方法 - - private ISystemLogManager CreateDefaultLogManager() - { - // TODO: 创建默认日志管理器实现 - return new DefaultSystemLogManager(); - } - - private ISystemConfigManager CreateDefaultConfigManager() - { - // TODO: 创建默认配置管理器实现 - return new DefaultSystemConfigManager(); - } - - private IPerformanceMonitor CreateDefaultPerformanceMonitor() - { - // TODO: 创建默认性能监控器实现 - return new DefaultPerformanceMonitor(); - } - - private IModelSplitterManager CreateDefaultModelSplitterManager() - { - // TODO: 创建默认模型分割器管理器实现 - return new DefaultModelSplitterManager(); - } - - #endregion - - #region 系统信息获取方法 - - private string GetPluginVersion() - { - // TODO: 从程序集获取插件版本 - return "v1.0"; - } - - private string GetNavisworksVersion() - { - // TODO: 从Navisworks API获取版本信息 - return "2026"; - } - - private string GetWorkingDirectory() - { - // TODO: 获取当前工作目录 - return Environment.CurrentDirectory; - } - - private string GetLogFilePath() - { - // TODO: 获取日志文件路径 - return Path.Combine(GetWorkingDirectory(), "Logs", "NavisworksTransport.log"); - } - - #endregion - - #region 资源清理 - - /// - /// 清理资源 - /// - public void Cleanup() - { - try - { - LogManager.Info("开始清理SystemManagementViewModel资源"); - - // 停止性能监控定时器 - if (_performanceTimer != null) - { - _performanceTimer.Stop(); - _performanceTimer = null; - } - - // 清理管理器资源 - _logManager?.Dispose(); - _configManager?.Dispose(); - _performanceMonitor?.Dispose(); - _modelSplitterManager?.Dispose(); - - LogManager.Info("SystemManagementViewModel资源清理完成"); - } - catch (Exception ex) - { - LogManager.Error($"SystemManagementViewModel清理失败: {ex.Message}"); - } - } - - #endregion - } -} - -// 接口定义(这些接口将在单独的文件中定义) - -/// -/// 系统日志管理器接口 -/// -public interface ISystemLogManager : IDisposable -{ - Task OpenLogViewerAsync(); - Task ClearLogsAsync(); - Task ExportLogsAsync(); - Task GetLogStatusAsync(); - void SetLogLevel(string level); -} - -/// -/// 系统配置管理器接口 -/// -public interface ISystemConfigManager : IDisposable -{ - void SetAutoSaveEnabled(bool enabled); - void SetDebugMode(bool enabled); - void SetAutoSaveInterval(int seconds); - Task SaveConfigAsync(); - Task LoadConfigAsync(); -} - -/// -/// 性能监控器接口 -/// -public interface IPerformanceMonitor : IDisposable -{ - Task GetCurrentPerformanceAsync(); - Task StartMonitoringAsync(); - Task StopMonitoringAsync(); -} - -/// -/// 模型分割器管理器接口 -/// -public interface IModelSplitterManager : IDisposable -{ - Task RunModelSplitterAsync(); - Task ConfigureAsync(); - bool CanRun { get; } -} - -/// -/// 日志状态数据结构 -/// -public class LogStatus -{ - public string Message { get; set; } - public int EntryCount { get; set; } - public string FilePath { get; set; } -} - -/// -/// 性能数据结构 -/// -public class PerformanceData -{ - public double CpuUsage { get; set; } - public long MemoryUsage { get; set; } - public int ThreadCount { get; set; } - public TimeSpan RunningTime { get; set; } -} \ No newline at end of file diff --git a/SystemManagement_Integration_Plan.md b/SystemManagement_Integration_Plan.md deleted file mode 100644 index d19a630..0000000 --- a/SystemManagement_Integration_Plan.md +++ /dev/null @@ -1,457 +0,0 @@ -# SystemManagementViewModel 集成方案 - -## 1. 与LogisticsControlViewModel的解耦策略 - -### 1.1 依赖关系处理 - -**原始依赖关系问题:** -- LogisticsControlViewModel 直接包含所有系统管理代码 -- UI更新、状态管理、业务逻辑混合在一起 -- 违反单一职责原则 - -**解耦方案:** - -```csharp -// 在LogisticsControlViewModel中 -public class LogisticsControlViewModel : ViewModelBase -{ - // 移除所有系统管理相关的字段和属性 - // private string _modelSplitterStatus; // 删除 - // private ObservableCollection _logLevels; // 删除 - // ... 其他系统管理相关代码 - - // 添加SystemManagementViewModel的引用 - private SystemManagementViewModel _systemManagementViewModel; - - public SystemManagementViewModel SystemManagement - { - get => _systemManagementViewModel; - private set => SetProperty(ref _systemManagementViewModel, value); - } - - public LogisticsControlViewModel() : base() - { - try - { - // 原有初始化代码... - - // 初始化系统管理ViewModel - SystemManagement = new SystemManagementViewModel(); - - // 订阅系统管理事件(如果需要) - SubscribeToSystemManagementEvents(); - } - catch (Exception ex) - { - // 错误处理 - } - } - - // 移除所有系统管理相关的方法 - // private async Task InitializeSystemManagementSettingsAsync() // 删除 - // private void ExecuteClearLog() // 删除 - // private void ExecuteExportLog() // 删除 - // ... 其他系统管理方法 -} -``` - -### 1.2 事件通信机制 - -```csharp -// 定义系统管理事件接口 -public interface ISystemManagementEvents -{ - event EventHandler SystemStatusChanged; - event EventHandler PerformanceAlert; - event EventHandler ConfigurationChanged; -} - -// 在SystemManagementViewModel中实现事件发布 -public class SystemManagementViewModel : ViewModelBase, ISystemManagementEvents -{ - public event EventHandler SystemStatusChanged; - public event EventHandler PerformanceAlert; - public event EventHandler ConfigurationChanged; - - // 触发系统状态变更事件 - private void OnSystemStatusChanged(string newStatus, string color) - { - SystemStatusChanged?.Invoke(this, new SystemStatusChangedEventArgs - { - Status = newStatus, - StatusColor = color, - Timestamp = DateTime.Now - }); - } - - // 触发性能警告事件 - private void OnPerformanceAlert(PerformanceAlertType alertType, string message) - { - PerformanceAlert?.Invoke(this, new PerformanceAlertEventArgs - { - AlertType = alertType, - Message = message, - Timestamp = DateTime.Now - }); - } -} - -// 在LogisticsControlViewModel中订阅事件 -private void SubscribeToSystemManagementEvents() -{ - if (SystemManagement != null) - { - SystemManagement.SystemStatusChanged += OnSystemStatusChanged; - SystemManagement.PerformanceAlert += OnPerformanceAlert; - SystemManagement.ConfigurationChanged += OnConfigurationChanged; - } -} - -private void OnSystemStatusChanged(object sender, SystemStatusChangedEventArgs e) -{ - // 处理系统状态变更(如果主ViewModel需要知道) - // 例如:更新主界面的状态指示器 - StatusText = $"系统状态: {e.Status}"; -} -``` - -## 2. UI集成策略 - -### 2.1 XAML绑定方案 - -```xml - - - - - - - - - - - - - -