diff --git a/DMS.Application/Interfaces/IAppDataCenterService.cs b/DMS.Application/Interfaces/IAppDataCenterService.cs
index 8d5fb88..737504b 100644
--- a/DMS.Application/Interfaces/IAppDataCenterService.cs
+++ b/DMS.Application/Interfaces/IAppDataCenterService.cs
@@ -1,6 +1,7 @@
using System.Collections.Concurrent;
using DMS.Application.DTOs;
using DMS.Application.DTOs.Events;
+using DMS.Application.Services;
using DMS.Core.Models;
namespace DMS.Application.Interfaces;
@@ -10,417 +11,11 @@ namespace DMS.Application.Interfaces;
///
public interface IAppDataCenterService
{
- #region 设备管理
-
- ///
- /// 异步根据ID获取设备DTO。
- ///
- Task GetDeviceByIdAsync(int id);
-
- ///
- /// 异步获取所有设备DTO列表。
- ///
- Task> GetAllDevicesAsync();
-
- ///
- /// 异步创建一个新设备及其关联的变量表和菜单(事务性操作)。
- ///
- /// 包含设备、变量表和菜单信息的DTO。
- /// 新创建设备的DTO。
- Task CreateDeviceWithDetailsAsync(CreateDeviceWithDetailsDto dto);
-
- ///
- /// 异步更新一个已存在的设备。
- ///
- Task UpdateDeviceAsync(DeviceDto deviceDto);
-
- ///
- /// 异步删除一个设备。
- ///
- Task DeleteDeviceByIdAsync(int deviceId);
-
- ///
- /// 异步切换设备的激活状态。
- ///
- Task ToggleDeviceActiveStateAsync(int id);
-
- ///
- /// 在内存中添加设备
- ///
- void AddDeviceToMemory(DeviceDto deviceDto);
-
- ///
- /// 在内存中更新设备
- ///
- void UpdateDeviceInMemory(DeviceDto deviceDto);
-
- ///
- /// 在内存中删除设备
- ///
- void RemoveDeviceFromMemory(int deviceId);
-
- #endregion
-
- #region 变量表管理
-
- ///
- /// 异步根据ID获取变量表DTO。
- ///
- Task GetVariableTableByIdAsync(int id);
-
- ///
- /// 异步获取所有变量表DTO列表。
- ///
- Task> GetAllVariableTablesAsync();
-
- ///
- /// 异步创建一个新变量表及其关联菜单(事务性操作)。
- ///
- /// 包含变量表和菜单信息的DTO。
- /// 新创建变量表的DTO。
- Task CreateVariableTableAsync(CreateVariableTableWithMenuDto dto);
-
- ///
- /// 异步更新一个已存在的变量表。
- ///
- Task UpdateVariableTableAsync(VariableTableDto variableTableDto);
-
- ///
- /// 异步删除一个变量表。
- ///
- Task DeleteVariableTableAsync(int id);
-
- ///
- /// 在内存中添加变量表
- ///
- void AddVariableTableToMemory(VariableTableDto variableTableDto);
-
- ///
- /// 在内存中更新变量表
- ///
- void UpdateVariableTableInMemory(VariableTableDto variableTableDto);
-
- ///
- /// 在内存中删除变量表
- ///
- void RemoveVariableTableFromMemory(int variableTableId);
-
- #endregion
-
- #region 菜单管理
-
- ///
- /// 异步获取所有菜单DTO列表。
- ///
- Task> GetAllMenusAsync();
-
- ///
- /// 异步根据ID获取菜单DTO。
- ///
- Task GetMenuByIdAsync(int id);
-
- ///
- /// 异步创建一个新菜单。
- ///
- Task CreateMenuAsync(MenuBeanDto menuDto);
-
- ///
- /// 异步更新一个已存在的菜单。
- ///
- Task UpdateMenuAsync(MenuBeanDto menuDto);
-
- ///
- /// 异步删除一个菜单。
- ///
- Task DeleteMenuAsync(int id);
-
- ///
- /// 在内存中添加菜单
- ///
- void AddMenuToMemory(MenuBeanDto menuDto);
-
- ///
- /// 在内存中更新菜单
- ///
- void UpdateMenuInMemory(MenuBeanDto menuDto);
-
- ///
- /// 在内存中删除菜单
- ///
- void RemoveMenuFromMemory(int menuId);
-
- ///
- /// 获取根菜单列表
- ///
- List GetRootMenus();
-
- ///
- /// 根据父级ID获取子菜单列表
- ///
- /// 父级菜单ID
- /// 子菜单列表
- List GetChildMenus(int parentId);
-
- #endregion
-
- #region 变量管理
-
- ///
- /// 异步根据ID获取变量DTO。
- ///
- Task GetVariableByIdAsync(int id);
-
- ///
- /// 异步获取所有变量DTO列表。
- ///
- Task> GetAllVariablesAsync();
-
- ///
- /// 异步创建一个新变量。
- ///
- Task CreateVariableAsync(VariableDto variableDto);
-
- ///
- /// 异步更新一个已存在的变量。
- ///
- Task UpdateVariableAsync(VariableDto variableDto);
-
- ///
- /// 异步批量更新变量。
- ///
- Task UpdateVariablesAsync(List variableDtos);
-
- ///
- /// 异步删除一个变量。
- ///
- Task DeleteVariableAsync(int id);
-
- ///
- /// 异步批量删除变量。
- ///
- Task DeleteVariablesAsync(List ids);
-
- ///
- /// 在内存中添加变量
- ///
- void AddVariableToMemory(VariableDto variableDto);
-
- ///
- /// 在内存中更新变量
- ///
- void UpdateVariableInMemory(VariableDto variableDto);
-
- ///
- /// 在内存中删除变量
- ///
- void RemoveVariableFromMemory(int variableId);
-
- #endregion
-
- #region MQTT服务器管理
-
- ///
- /// 异步根据ID获取MQTT服务器DTO。
- ///
- Task GetMqttServerByIdAsync(int id);
-
- ///
- /// 异步获取所有MQTT服务器DTO列表。
- ///
- Task> GetAllMqttServersAsync();
-
- ///
- /// 异步创建一个新的MQTT服务器。
- ///
- Task CreateMqttServerAsync(MqttServerDto mqttServerDto);
-
- ///
- /// 异步更新一个已存在的MQTT服务器。
- ///
- Task UpdateMqttServerAsync(MqttServerDto mqttServerDto);
-
- ///
- /// 异步删除一个MQTT服务器。
- ///
- Task DeleteMqttServerAsync(int id);
-
- ///
- /// 在内存中添加MQTT服务器
- ///
- void AddMqttServerToMemory(MqttServerDto mqttServerDto);
-
- ///
- /// 在内存中更新MQTT服务器
- ///
- void UpdateMqttServerInMemory(MqttServerDto mqttServerDto);
-
- ///
- /// 在内存中删除MQTT服务器
- ///
- void RemoveMqttServerFromMemory(int mqttServerId);
-
- #endregion
-
- #region 日志管理
-
- ///
- /// 异步根据ID获取日志DTO。
- ///
- Task GetNlogByIdAsync(int id);
-
- ///
- /// 异步获取所有日志DTO列表。
- ///
- Task> GetAllNlogsAsync();
-
- ///
- /// 异步获取指定数量的最新日志DTO列表。
- ///
- Task> GetLatestNlogsAsync(int count);
-
- ///
- /// 异步清空所有日志。
- ///
- Task ClearAllNlogsAsync();
-
- ///
- /// 在内存中添加日志
- ///
- void AddNlogToMemory(NlogDto nlogDto);
-
- ///
- /// 在内存中更新日志
- ///
- void UpdateNlogInMemory(NlogDto nlogDto);
-
- ///
- /// 在内存中删除日志
- ///
- void RemoveNlogFromMemory(int nlogId);
-
- #endregion
-
- #region 数据存储访问
-
- ///
- /// 获取所有设备的安全字典。
- ///
- ConcurrentDictionary Devices { get; }
-
- ///
- /// 获取所有变量表的安全字典。
- ///
- ConcurrentDictionary VariableTables { get; }
-
- ///
- /// 获取所有变量的安全字典。
- ///
- ConcurrentDictionary Variables { get; }
-
- ///
- /// 获取所有菜单的安全字典。
- ///
- ConcurrentDictionary Menus { get; }
- ///
- /// 获取所有菜单树的安全字典。
- ///
- ConcurrentDictionary MenuTrees { get; }
-
- ///
- /// 获取所有MQTT服务器的安全字典。
- ///
- ConcurrentDictionary MqttServers { get; }
-
- ///
- /// 获取所有日志的安全字典。
- ///
- ConcurrentDictionary Nlogs { get; }
-
- #endregion
-
- #region 数据加载和初始化
-
- ///
- /// 异步加载所有设备及其关联数据到内存中。
- ///
- Task LoadAllDataToMemoryAsync();
-
- ///
- /// 异步加载所有设备及其关联数据。
- ///
- Task> LoadAllDevicesAsync();
-
- ///
- /// 异步加载所有变量表及其关联数据。
- ///
- Task> LoadAllVariableTablesAsync();
-
- ///
- /// 异步加载所有变量数据。
- ///
- Task> LoadAllVariablesAsync();
-
- ///
- /// 异步加载所有菜单数据。
- ///
- Task> LoadAllMenusAsync();
-
- ///
- /// 异步加载所有MQTT服务器数据。
- ///
- Task> LoadAllMqttServersAsync();
-
- ///
- /// 异步加载所有日志数据。
- ///
- Task> LoadAllNlogsAsync();
-
- #endregion
-
- #region 事件定义
-
- ///
- /// 当数据加载完成时触发
- ///
- event EventHandler OnLoadDataCompleted;
-
- ///
- /// 当设备数据发生变化时触发
- ///
- event EventHandler DeviceChanged;
-
- ///
- /// 当变量表数据发生变化时触发
- ///
- event EventHandler VariableTableChanged;
-
- ///
- /// 当变量数据发生变化时触发
- ///
- event EventHandler VariableChanged;
-
- ///
- /// 当菜单数据发生变化时触发
- ///
- event EventHandler MenuChanged;
-
- ///
- /// 当MQTT服务器数据发生变化时触发
- ///
- event EventHandler MqttServerChanged;
-
- ///
- /// 当日志数据发生变化时触发
- ///
- event EventHandler NlogChanged;
-
- ///
- /// 当变量值发生变化时触发
- ///
- event EventHandler VariableValueChanged;
-
- void OnVariableValueChanged(VariableValueChangedEventArgs e);
-
-
- #endregion
+ ILogManagementService LogManagementService { get; set; }
+ IMqttManagementService MqttManagementService { get; set; }
+ IMenuManagementService MenuManagementService { get; set; }
+ IVariableManagementService VariableManagementService { get; set; }
+ IVariableTableManagementService VariableTableManagementService { get; set; }
+ IDeviceManagementService DeviceManagementService { get; set; }
+ IDataLoaderService DataLoaderService { get; set; }
}
\ No newline at end of file
diff --git a/DMS.Application/Interfaces/IAppDataStorageService.cs b/DMS.Application/Interfaces/IAppDataStorageService.cs
new file mode 100644
index 0000000..9ba9e0f
--- /dev/null
+++ b/DMS.Application/Interfaces/IAppDataStorageService.cs
@@ -0,0 +1,42 @@
+using System.Collections.Concurrent;
+using DMS.Application.DTOs;
+
+namespace DMS.Application.Interfaces;
+
+public interface IAppDataStorageService
+{
+ ///
+ /// 安全字典,用于存储所有设备数据
+ ///
+ ConcurrentDictionary Devices { get; }
+
+ ///
+ /// 安全字典,用于存储所有变量表数据
+ ///
+ ConcurrentDictionary VariableTables { get; }
+
+ ///
+ /// 安全字典,用于存储所有变量数据
+ ///
+ ConcurrentDictionary Variables { get; }
+
+ ///
+ /// 安全字典,用于存储所有菜单数据
+ ///
+ ConcurrentDictionary Menus { get; }
+
+ ///
+ /// 安全字典,用于存储所有菜单数据
+ ///
+ ConcurrentDictionary MenuTrees { get; }
+
+ ///
+ /// 安全字典,用于存储所有MQTT服务器数据
+ ///
+ ConcurrentDictionary MqttServers { get; }
+
+ ///
+ /// 安全字典,用于存储所有日志数据
+ ///
+ ConcurrentDictionary Nlogs { get; }
+}
\ No newline at end of file
diff --git a/DMS.Application/Interfaces/IDataLoaderService.cs b/DMS.Application/Interfaces/IDataLoaderService.cs
index 6f210b4..db8b6cd 100644
--- a/DMS.Application/Interfaces/IDataLoaderService.cs
+++ b/DMS.Application/Interfaces/IDataLoaderService.cs
@@ -1,5 +1,6 @@
using System.Collections.Concurrent;
using DMS.Application.DTOs;
+using DMS.Application.DTOs.Events;
namespace DMS.Application.Interfaces;
@@ -11,14 +12,7 @@ public interface IDataLoaderService
///
/// 异步加载所有设备及其关联数据到内存中
///
- Task LoadAllDataToMemoryAsync(
- ConcurrentDictionary devices,
- ConcurrentDictionary variableTables,
- ConcurrentDictionary variables,
- ConcurrentDictionary menus,
- ConcurrentDictionary menuTrees,
- ConcurrentDictionary mqttServers,
- ConcurrentDictionary nlogs);
+ Task LoadAllDataToMemoryAsync();
///
/// 异步加载所有设备数据
@@ -49,4 +43,9 @@ public interface IDataLoaderService
/// 异步加载所有日志数据
///
Task> LoadAllNlogsAsync();
+
+ ///
+ /// 当数据加载完成时触发
+ ///
+ event EventHandler OnLoadDataCompleted;
}
\ No newline at end of file
diff --git a/DMS.Application/Interfaces/IDeviceManagementService.cs b/DMS.Application/Interfaces/IDeviceManagementService.cs
new file mode 100644
index 0000000..6dbbd50
--- /dev/null
+++ b/DMS.Application/Interfaces/IDeviceManagementService.cs
@@ -0,0 +1,60 @@
+using System.Collections.Concurrent;
+using DMS.Application.DTOs;
+using DMS.Application.DTOs.Events;
+
+namespace DMS.Application.Services;
+
+public interface IDeviceManagementService
+{
+ ///
+ /// 当设备数据发生变化时触发
+ ///
+ event EventHandler OnDeviceChanged;
+
+ ///
+ /// 异步根据ID获取设备DTO。
+ ///
+ Task GetDeviceByIdAsync(int id);
+
+ ///
+ /// 异步获取所有设备DTO列表。
+ ///
+ Task> GetAllDevicesAsync();
+
+ ///
+ /// 异步创建一个新设备及其关联的变量表和菜单(事务性操作)。
+ ///
+ Task CreateDeviceWithDetailsAsync(CreateDeviceWithDetailsDto dto);
+
+ ///
+ /// 异步更新一个已存在的设备。
+ ///
+ Task UpdateDeviceAsync(DeviceDto deviceDto);
+
+ ///
+ /// 异步删除一个设备。
+ ///
+ Task DeleteDeviceByIdAsync(int deviceId);
+
+ ///
+ /// 异步切换设备的激活状态。
+ ///
+ Task ToggleDeviceActiveStateAsync(int id);
+
+ ///
+ /// 在内存中添加设备
+ ///
+ void AddDeviceToMemory(DeviceDto deviceDto);
+
+ ///
+ /// 在内存中更新设备
+ ///
+ void UpdateDeviceInMemory(DeviceDto deviceDto);
+
+ ///
+ /// 在内存中删除设备
+ ///
+ void RemoveDeviceFromMemory(int deviceId);
+
+
+}
\ No newline at end of file
diff --git a/DMS.Application/Interfaces/IVariableTableManagementService.cs b/DMS.Application/Interfaces/IVariableTableManagementService.cs
new file mode 100644
index 0000000..025bd85
--- /dev/null
+++ b/DMS.Application/Interfaces/IVariableTableManagementService.cs
@@ -0,0 +1,53 @@
+using System.Collections.Concurrent;
+using DMS.Application.DTOs;
+using DMS.Application.DTOs.Events;
+
+namespace DMS.Application.Services;
+
+public interface IVariableTableManagementService
+{
+ ///
+ /// 当变量表数据发生变化时触发
+ ///
+ event EventHandler OnVariableTableChanged;
+
+ ///
+ /// 异步根据ID获取变量表DTO。
+ ///
+ Task GetVariableTableByIdAsync(int id);
+
+ ///
+ /// 异步获取所有变量表DTO列表。
+ ///
+ Task> GetAllVariableTablesAsync();
+
+ ///
+ /// 异步创建一个新变量表及其关联菜单(事务性操作)。
+ ///
+ Task CreateVariableTableAsync(CreateVariableTableWithMenuDto dto);
+
+ ///
+ /// 异步更新一个已存在的变量表。
+ ///
+ Task UpdateVariableTableAsync(VariableTableDto variableTableDto);
+
+ ///
+ /// 异步删除一个变量表。
+ ///
+ Task DeleteVariableTableAsync(int id);
+
+ ///
+ /// 在内存中添加变量表
+ ///
+ void AddVariableTableToMemory(VariableTableDto variableTableDto);
+
+ ///
+ /// 在内存中更新变量表
+ ///
+ void UpdateVariableTableInMemory(VariableTableDto variableTableDto);
+
+ ///
+ /// 在内存中删除变量表
+ ///
+ void RemoveVariableTableFromMemory(int variableTableId);
+}
\ No newline at end of file
diff --git a/DMS.Application/Services/AppDataCenterService.cs b/DMS.Application/Services/AppDataCenterService.cs
index 6e6a397..5fcc80f 100644
--- a/DMS.Application/Services/AppDataCenterService.cs
+++ b/DMS.Application/Services/AppDataCenterService.cs
@@ -20,59 +20,13 @@ namespace DMS.Application.Services;
///
public class AppDataCenterService : IAppDataCenterService
{
- private readonly IRepositoryManager _repositoryManager;
private readonly IMapper _mapper;
- private readonly IDataLoaderService _dataLoaderService;
-
- // 管理服务
- private readonly DeviceManagementService _deviceManagementService;
- private readonly VariableTableManagementService _variableTableManagementService;
- private readonly VariableManagementService _variableManagementService;
- private readonly MenuManagementService _menuManagementService;
- private readonly MqttManagementService _mqttManagementService;
- private readonly LogManagementService _logManagementService;
+ private readonly IRepositoryManager _repositoryManager;
- ///
- /// 安全字典,用于存储所有设备数据
- ///
- public ConcurrentDictionary Devices { get; } = new();
-
- ///
- /// 安全字典,用于存储所有变量表数据
- ///
- public ConcurrentDictionary VariableTables { get; } = new();
-
- ///
- /// 安全字典,用于存储所有变量数据
- ///
- public ConcurrentDictionary Variables { get; } = new();
-
- ///
- /// 安全字典,用于存储所有菜单数据
- ///
- public ConcurrentDictionary Menus { get; } = new();
-
- ///
- /// 安全字典,用于存储所有菜单数据
- ///
- public ConcurrentDictionary MenuTrees { get; } = new();
-
- ///
- /// 安全字典,用于存储所有MQTT服务器数据
- ///
- public ConcurrentDictionary MqttServers { get; } = new();
-
- ///
- /// 安全字典,用于存储所有日志数据
- ///
- public ConcurrentDictionary Nlogs { get; } = new();
#region 事件定义
- ///
- /// 当数据加载完成时触发
- ///
- public event EventHandler OnLoadDataCompleted;
+
///
/// 当设备数据发生变化时触发
@@ -111,632 +65,43 @@ public class AppDataCenterService : IAppDataCenterService
#endregion
- ///
- /// 构造函数,通过依赖注入获取仓储管理器和相关服务实例。
- ///
- /// 仓储管理器实例。
- /// AutoMapper 实例。
- /// 设备应用服务实例。
- /// 变量表应用服务实例。
- /// 变量应用服务实例。
- /// 菜单服务实例。
- /// MQTT应用服务实例。
- /// Nlog应用服务实例。
- /// 数据加载服务实例。
+
public AppDataCenterService(
IRepositoryManager repositoryManager,
IMapper mapper,
- IDeviceAppService deviceAppService,
- IVariableTableAppService variableTableAppService,
- IVariableAppService variableAppService,
- IMenuService menuService,
- IMqttAppService mqttAppService,
- INlogAppService nlogAppService,
- IDataLoaderService dataLoaderService)
+ IDataLoaderService dataLoaderService,
+ IDeviceManagementService deviceManagementService,
+ IVariableTableManagementService variableTableManagementService,
+ IVariableManagementService variableManagementService,
+ IMenuManagementService menuManagementService,
+ IMqttManagementService mqttManagementService,
+ ILogManagementService logManagementService
+ )
{
_repositoryManager = repositoryManager;
_mapper = mapper;
- _dataLoaderService = dataLoaderService;
+ DataLoaderService = dataLoaderService;
// 初始化管理服务
- _deviceManagementService = new DeviceManagementService(deviceAppService, Devices);
- _variableTableManagementService = new VariableTableManagementService(variableTableAppService, VariableTables);
- _variableManagementService = new VariableManagementService(variableAppService, Variables);
- _menuManagementService = new MenuManagementService(menuService, Menus, MenuTrees);
- _mqttManagementService = new MqttManagementService(mqttAppService, MqttServers);
- _logManagementService = new LogManagementService(nlogAppService, Nlogs);
+ DeviceManagementService = deviceManagementService;
+ VariableTableManagementService = variableTableManagementService;
+ VariableManagementService = variableManagementService;
+ MenuManagementService = menuManagementService;
+ MqttManagementService = mqttManagementService;
+ LogManagementService = logManagementService;
}
- #region 设备管理
+ public ILogManagementService LogManagementService { get; set; }
- ///
- /// 异步根据ID获取设备DTO。
- ///
- public async Task GetDeviceByIdAsync(int id)
- {
- return await _deviceManagementService.GetDeviceByIdAsync(id);
- }
-
- ///
- /// 异步获取所有设备DTO列表。
- ///
- public async Task> GetAllDevicesAsync()
- {
- return await _deviceManagementService.GetAllDevicesAsync();
- }
-
- ///
- /// 异步创建一个新设备及其关联的变量表和菜单(事务性操作)。
- ///
- public async Task CreateDeviceWithDetailsAsync(CreateDeviceWithDetailsDto dto)
- {
- return await _deviceManagementService.CreateDeviceWithDetailsAsync(dto);
- }
-
- ///
- /// 异步更新一个已存在的设备。
- ///
- public async Task UpdateDeviceAsync(DeviceDto deviceDto)
- {
- return await _deviceManagementService.UpdateDeviceAsync(deviceDto);
- }
-
- ///
- /// 异步删除一个设备。
- ///
- public async Task DeleteDeviceByIdAsync(int deviceId)
- {
- return await _deviceManagementService.DeleteDeviceByIdAsync(deviceId);
- }
-
- ///
- /// 异步切换设备的激活状态。
- ///
- public async Task ToggleDeviceActiveStateAsync(int id)
- {
- await _deviceManagementService.ToggleDeviceActiveStateAsync(id);
- }
-
- ///
- /// 在内存中添加设备
- ///
- public void AddDeviceToMemory(DeviceDto deviceDto)
- {
- _deviceManagementService.AddDeviceToMemory(deviceDto, VariableTables, Variables);
- }
-
- ///
- /// 在内存中更新设备
- ///
- public void UpdateDeviceInMemory(DeviceDto deviceDto)
- {
- _deviceManagementService.UpdateDeviceInMemory(deviceDto);
- }
-
- ///
- /// 在内存中删除设备
- ///
- public void RemoveDeviceFromMemory(int deviceId)
- {
- _deviceManagementService.RemoveDeviceFromMemory(deviceId, VariableTables, Variables);
- }
-
- #endregion
-
- #region 变量表管理
-
- ///
- /// 异步根据ID获取变量表DTO。
- ///
- public async Task GetVariableTableByIdAsync(int id)
- {
- return await _variableTableManagementService.GetVariableTableByIdAsync(id);
- }
-
- ///
- /// 异步获取所有变量表DTO列表。
- ///
- public async Task> GetAllVariableTablesAsync()
- {
- return await _variableTableManagementService.GetAllVariableTablesAsync();
- }
-
- ///
- /// 异步创建一个新变量表及其关联菜单(事务性操作)。
- ///
- public async Task CreateVariableTableAsync(CreateVariableTableWithMenuDto dto)
- {
- return await _variableTableManagementService.CreateVariableTableAsync(dto);
- }
-
- ///
- /// 异步更新一个已存在的变量表。
- ///
- public async Task UpdateVariableTableAsync(VariableTableDto variableTableDto)
- {
- return await _variableTableManagementService.UpdateVariableTableAsync(variableTableDto);
- }
-
- ///
- /// 异步删除一个变量表。
- ///
- public async Task DeleteVariableTableAsync(int id)
- {
- return await _variableTableManagementService.DeleteVariableTableAsync(id);
- }
-
- ///
- /// 在内存中添加变量表
- ///
- public void AddVariableTableToMemory(VariableTableDto variableTableDto)
- {
- _variableTableManagementService.AddVariableTableToMemory(variableTableDto, Devices);
- }
-
- ///
- /// 在内存中更新变量表
- ///
- public void UpdateVariableTableInMemory(VariableTableDto variableTableDto)
- {
- _variableTableManagementService.UpdateVariableTableInMemory(variableTableDto, Devices);
- }
-
- ///
- /// 在内存中删除变量表
- ///
- public void RemoveVariableTableFromMemory(int variableTableId)
- {
- _variableTableManagementService.RemoveVariableTableFromMemory(variableTableId, Devices);
- }
-
- #endregion
-
- #region 菜单管理
-
- ///
- /// 异步获取所有菜单DTO列表。
- ///
- public async Task> GetAllMenusAsync()
- {
- return await _menuManagementService.GetAllMenusAsync();
- }
-
- ///
- /// 异步根据ID获取菜单DTO。
- ///
- public async Task GetMenuByIdAsync(int id)
- {
- return await _menuManagementService.GetMenuByIdAsync(id);
- }
-
- ///
- /// 异步创建一个新菜单。
- ///
- public async Task CreateMenuAsync(MenuBeanDto menuDto)
- {
- return await _menuManagementService.CreateMenuAsync(menuDto);
- }
-
- ///
- /// 异步更新一个已存在的菜单。
- ///
- public async Task UpdateMenuAsync(MenuBeanDto menuDto)
- {
- await _menuManagementService.UpdateMenuAsync(menuDto);
- }
-
- ///
- /// 异步删除一个菜单。
- ///
- public async Task DeleteMenuAsync(int id)
- {
- await _menuManagementService.DeleteMenuAsync(id);
- }
-
- ///
- /// 在内存中添加菜单
- ///
- public void AddMenuToMemory(MenuBeanDto menuDto)
- {
- _menuManagementService.AddMenuToMemory(menuDto);
- }
-
- ///
- /// 在内存中更新菜单
- ///
- public void UpdateMenuInMemory(MenuBeanDto menuDto)
- {
- _menuManagementService.UpdateMenuInMemory(menuDto);
- }
-
- ///
- /// 在内存中删除菜单
- ///
- public void RemoveMenuFromMemory(int menuId)
- {
- _menuManagementService.RemoveMenuFromMemory(menuId);
- }
-
- ///
- /// 获取根菜单列表
- ///
- public List GetRootMenus()
- {
- return _menuManagementService.GetRootMenus();
- }
-
- ///
- /// 根据父级ID获取子菜单列表
- ///
- /// 父级菜单ID
- /// 子菜单列表
- public List GetChildMenus(int parentId)
- {
- return _menuManagementService.GetChildMenus(parentId);
- }
-
- #endregion
-
- #region 变量管理
-
- ///
- /// 异步根据ID获取变量DTO。
- ///
- public async Task GetVariableByIdAsync(int id)
- {
- return await _variableManagementService.GetVariableByIdAsync(id);
- }
-
- ///
- /// 异步获取所有变量DTO列表。
- ///
- public async Task> GetAllVariablesAsync()
- {
- return await _variableManagementService.GetAllVariablesAsync();
- }
-
- ///
- /// 异步创建一个新变量。
- ///
- public async Task CreateVariableAsync(VariableDto variableDto)
- {
- return await _variableManagementService.CreateVariableAsync(variableDto);
- }
-
- ///
- /// 异步更新一个已存在的变量。
- ///
- public async Task UpdateVariableAsync(VariableDto variableDto)
- {
- return await _variableManagementService.UpdateVariableAsync(variableDto);
- }
-
- ///
- /// 异步批量更新变量。
- ///
- public async Task UpdateVariablesAsync(List variableDtos)
- {
- return await _variableManagementService.UpdateVariablesAsync(variableDtos);
- }
-
- ///
- /// 异步删除一个变量。
- ///
- public async Task DeleteVariableAsync(int id)
- {
- return await _variableManagementService.DeleteVariableAsync(id);
- }
-
- ///
- /// 异步批量删除变量。
- ///
- public async Task DeleteVariablesAsync(List ids)
- {
- return await _variableManagementService.DeleteVariablesAsync(ids);
- }
-
- ///
- /// 在内存中添加变量
- ///
- public void AddVariableToMemory(VariableDto variableDto)
- {
- _variableManagementService.AddVariableToMemory(variableDto, VariableTables);
- }
-
- ///
- /// 在内存中更新变量
- ///
- public void UpdateVariableInMemory(VariableDto variableDto)
- {
- _variableManagementService.UpdateVariableInMemory(variableDto, VariableTables);
- }
-
- ///
- /// 在内存中删除变量
- ///
- public void RemoveVariableFromMemory(int variableId)
- {
- _variableManagementService.RemoveVariableFromMemory(variableId, VariableTables);
- }
-
- #endregion
-
- #region MQTT服务器管理
-
- ///
- /// 异步根据ID获取MQTT服务器DTO。
- ///
- public async Task GetMqttServerByIdAsync(int id)
- {
- return await _mqttManagementService.GetMqttServerByIdAsync(id);
- }
-
- ///
- /// 异步获取所有MQTT服务器DTO列表。
- ///
- public async Task> GetAllMqttServersAsync()
- {
- return await _mqttManagementService.GetAllMqttServersAsync();
- }
-
- ///
- /// 异步创建一个新的MQTT服务器。
- ///
- public async Task CreateMqttServerAsync(MqttServerDto mqttServerDto)
- {
- return await _mqttManagementService.CreateMqttServerAsync(mqttServerDto);
- }
-
- ///
- /// 异步更新一个已存在的MQTT服务器。
- ///
- public async Task UpdateMqttServerAsync(MqttServerDto mqttServerDto)
- {
- await _mqttManagementService.UpdateMqttServerAsync(mqttServerDto);
- }
-
- ///
- /// 异步删除一个MQTT服务器。
- ///
- public async Task DeleteMqttServerAsync(int id)
- {
- await _mqttManagementService.DeleteMqttServerAsync(id);
- }
-
- ///
- /// 在内存中添加MQTT服务器
- ///
- public void AddMqttServerToMemory(MqttServerDto mqttServerDto)
- {
- _mqttManagementService.AddMqttServerToMemory(mqttServerDto);
- }
-
- ///
- /// 在内存中更新MQTT服务器
- ///
- public void UpdateMqttServerInMemory(MqttServerDto mqttServerDto)
- {
- _mqttManagementService.UpdateMqttServerInMemory(mqttServerDto);
- }
-
- ///
- /// 在内存中删除MQTT服务器
- ///
- public void RemoveMqttServerFromMemory(int mqttServerId)
- {
- _mqttManagementService.RemoveMqttServerFromMemory(mqttServerId);
- }
-
- #endregion
-
- #region 数据加载和初始化
-
- ///
- /// 异步加载所有设备及其关联数据到内存中。
- ///
- public async Task LoadAllDataToMemoryAsync()
- {
- try
- {
- // 委托给数据加载服务加载所有数据
- await _dataLoaderService.LoadAllDataToMemoryAsync(
- Devices,
- VariableTables,
- Variables,
- Menus,
- MenuTrees,
- MqttServers,
- Nlogs);
-
- // 构建菜单树
- _menuManagementService.BuildMenuTree();
-
- // 触发数据加载完成事件
- OnDataLoadCompleted(new DataLoadCompletedEventArgs(true, "数据加载完成"));
- }
- catch (Exception ex)
- {
- OnDataLoadCompleted(new DataLoadCompletedEventArgs(false, $"数据加载失败: {ex.Message}"));
- throw;
- }
- }
-
- ///
- /// 异步加载所有设备及其关联数据。
- ///
- public async Task> LoadAllDevicesAsync()
- {
- return await _dataLoaderService.LoadAllDevicesAsync();
- }
-
- ///
- /// 异步加载所有变量表及其关联数据。
- ///
- public async Task> LoadAllVariableTablesAsync()
- {
- return await _dataLoaderService.LoadAllVariableTablesAsync();
- }
-
- ///
- /// 异步加载所有变量数据。
- ///
- public async Task> LoadAllVariablesAsync()
- {
- return await _dataLoaderService.LoadAllVariablesAsync();
- }
-
- ///
- /// 异步加载所有菜单数据。
- ///
- public async Task> LoadAllMenusAsync()
- {
- return await _dataLoaderService.LoadAllMenusAsync();
- }
-
- ///
- /// 异步加载所有MQTT服务器数据。
- ///
- public async Task> LoadAllMqttServersAsync()
- {
- return await _dataLoaderService.LoadAllMqttServersAsync();
- }
-
- ///
- /// 异步加载所有日志数据。
- ///
- public async Task> LoadAllNlogsAsync()
- {
- return await _dataLoaderService.LoadAllNlogsAsync();
- }
-
- #endregion
-
- #region 事件触发方法
-
- ///
- /// 触发数据加载完成事件
- ///
- protected virtual void OnDataLoadCompleted(DataLoadCompletedEventArgs e)
- {
- OnLoadDataCompleted?.Invoke(this, e);
- }
-
- ///
- /// 触发设备变更事件
- ///
- protected virtual void OnDeviceChanged(DeviceChangedEventArgs e)
- {
- DeviceChanged?.Invoke(this, e);
- }
-
- ///
- /// 触发变量表变更事件
- ///
- protected virtual void OnVariableTableChanged(VariableTableChangedEventArgs e)
- {
- VariableTableChanged?.Invoke(this, e);
- }
-
- ///
- /// 触发变量变更事件
- ///
- protected virtual void OnVariableChanged(VariableChangedEventArgs e)
- {
- VariableChanged?.Invoke(this, e);
- }
-
- ///
- /// 触发菜单变更事件
- ///
- protected virtual void OnMenuChanged(MenuChangedEventArgs e)
- {
- MenuChanged?.Invoke(this, e);
- }
+ public IMqttManagementService MqttManagementService { get; set; }
- ///
- /// 触发MQTT服务器变更事件
- ///
- protected virtual void OnMqttServerChanged(MqttServerChangedEventArgs e)
- {
- MqttServerChanged?.Invoke(this, e);
- }
-
- ///
- /// 触发日志变更事件
- ///
- protected virtual void OnNlogChanged(NlogChangedEventArgs e)
- {
- NlogChanged?.Invoke(this, e);
- }
-
-
- ///
- /// 触发变量值变更事件
- ///
- public void OnVariableValueChanged(VariableValueChangedEventArgs e)
- {
- VariableValueChanged?.Invoke(this, e);
- }
-
- #endregion
-
- #region 日志管理
-
- ///
- /// 异步根据ID获取日志DTO。
- ///
- public async Task GetNlogByIdAsync(int id)
- {
- return await _logManagementService.GetNlogByIdAsync(id);
- }
+ public IMenuManagementService MenuManagementService { get; set; }
- ///
- /// 异步获取所有日志DTO列表。
- ///
- public async Task> GetAllNlogsAsync()
- {
- return await _logManagementService.GetAllNlogsAsync();
- }
+ public IVariableManagementService VariableManagementService { get; set; }
- ///
- /// 异步获取指定数量的最新日志DTO列表。
- ///
- public async Task> GetLatestNlogsAsync(int count)
- {
- return await _logManagementService.GetLatestNlogsAsync(count);
- }
+ public IVariableTableManagementService VariableTableManagementService { get; set; }
- ///
- /// 异步清空所有日志。
- ///
- public async Task ClearAllNlogsAsync()
- {
- await _logManagementService.ClearAllNlogsAsync();
- }
-
- ///
- /// 在内存中添加日志
- ///
- public void AddNlogToMemory(NlogDto nlogDto)
- {
- _logManagementService.AddNlogToMemory(nlogDto);
- }
-
- ///
- /// 在内存中更新日志
- ///
- public void UpdateNlogInMemory(NlogDto nlogDto)
- {
- _logManagementService.UpdateNlogInMemory(nlogDto);
- }
-
- ///
- /// 在内存中删除日志
- ///
- public void RemoveNlogFromMemory(int nlogId)
- {
- _logManagementService.RemoveNlogFromMemory(nlogId);
- }
+ public IDeviceManagementService DeviceManagementService { get; set; }
- #endregion
+ public IDataLoaderService DataLoaderService { get; set; }
}
\ No newline at end of file
diff --git a/DMS.Application/Services/AppDataStorageService.cs b/DMS.Application/Services/AppDataStorageService.cs
new file mode 100644
index 0000000..57fabc9
--- /dev/null
+++ b/DMS.Application/Services/AppDataStorageService.cs
@@ -0,0 +1,43 @@
+using System.Collections.Concurrent;
+using DMS.Application.DTOs;
+using DMS.Application.Interfaces;
+
+namespace DMS.Application.Services;
+
+public class AppDataStorageService : IAppDataStorageService
+{
+ ///
+ /// 安全字典,用于存储所有设备数据
+ ///
+ public ConcurrentDictionary Devices { get; } = new();
+
+ ///
+ /// 安全字典,用于存储所有变量表数据
+ ///
+ public ConcurrentDictionary VariableTables { get; } = new();
+
+ ///
+ /// 安全字典,用于存储所有变量数据
+ ///
+ public ConcurrentDictionary Variables { get; } = new();
+
+ ///
+ /// 安全字典,用于存储所有菜单数据
+ ///
+ public ConcurrentDictionary Menus { get; } = new();
+
+ ///
+ /// 安全字典,用于存储所有菜单数据
+ ///
+ public ConcurrentDictionary MenuTrees { get; } = new();
+
+ ///
+ /// 安全字典,用于存储所有MQTT服务器数据
+ ///
+ public ConcurrentDictionary MqttServers { get; } = new();
+
+ ///
+ /// 安全字典,用于存储所有日志数据
+ ///
+ public ConcurrentDictionary Nlogs { get; } = new();
+}
\ No newline at end of file
diff --git a/DMS.Application/Services/DataLoaderService.cs b/DMS.Application/Services/DataLoaderService.cs
index d960a2a..1531c0e 100644
--- a/DMS.Application/Services/DataLoaderService.cs
+++ b/DMS.Application/Services/DataLoaderService.cs
@@ -3,6 +3,7 @@ using DMS.Application.DTOs;
using DMS.Application.Interfaces;
using DMS.Core.Interfaces;
using System.Collections.Concurrent;
+using DMS.Application.DTOs.Events;
namespace DMS.Application.Services;
@@ -13,16 +14,23 @@ public class DataLoaderService : IDataLoaderService
{
private readonly IRepositoryManager _repositoryManager;
private readonly IMapper _mapper;
+ private readonly IAppDataStorageService _appDataStorageService;
private readonly IDeviceAppService _deviceAppService;
private readonly IVariableTableAppService _variableTableAppService;
private readonly IVariableAppService _variableAppService;
private readonly IMenuService _menuService;
private readonly IMqttAppService _mqttAppService;
private readonly INlogAppService _nlogAppService;
+
+ ///
+ /// 当数据加载完成时触发
+ ///
+ public event EventHandler OnLoadDataCompleted;
public DataLoaderService(
IRepositoryManager repositoryManager,
IMapper mapper,
+ IAppDataStorageService appDataStorageService,
IDeviceAppService deviceAppService,
IVariableTableAppService variableTableAppService,
IVariableAppService variableAppService,
@@ -32,6 +40,7 @@ public class DataLoaderService : IDataLoaderService
{
_repositoryManager = repositoryManager;
_mapper = mapper;
+ _appDataStorageService = appDataStorageService;
_deviceAppService = deviceAppService;
_variableTableAppService = variableTableAppService;
_variableAppService = variableAppService;
@@ -40,26 +49,21 @@ public class DataLoaderService : IDataLoaderService
_nlogAppService = nlogAppService;
}
+
+
///
/// 异步加载所有设备及其关联数据到内存中
///
- public async Task LoadAllDataToMemoryAsync(
- ConcurrentDictionary devices,
- ConcurrentDictionary variableTables,
- ConcurrentDictionary variables,
- ConcurrentDictionary menus,
- ConcurrentDictionary menuTrees,
- ConcurrentDictionary mqttServers,
- ConcurrentDictionary nlogs)
+ public async Task LoadAllDataToMemoryAsync()
{
// 清空现有数据
- devices.Clear();
- variableTables.Clear();
- variables.Clear();
- menus.Clear();
- menuTrees.Clear();
- mqttServers.Clear();
- nlogs.Clear();
+ _appDataStorageService.Devices.Clear();
+ _appDataStorageService.VariableTables.Clear();
+ _appDataStorageService.Variables.Clear();
+ _appDataStorageService.Menus.Clear();
+ _appDataStorageService.MenuTrees.Clear();
+ _appDataStorageService.MqttServers.Clear();
+ _appDataStorageService.Nlogs.Clear();
// 加载所有设备
var deviceDtos = await LoadAllDevicesAsync();
@@ -90,7 +94,7 @@ public class DataLoaderService : IDataLoaderService
.ToList();
// 将设备添加到安全字典
- devices.TryAdd(deviceDto.Id, deviceDto);
+ _appDataStorageService.Devices.TryAdd(deviceDto.Id, deviceDto);
}
// 建立变量表与变量的关联
@@ -99,43 +103,45 @@ public class DataLoaderService : IDataLoaderService
variableTableDto.Variables = variableDtos
.Where(v => v.VariableTableId == variableTableDto.Id)
.ToList();
- if (devices.TryGetValue(variableTableDto.DeviceId, out var deviceDto))
+ if (_appDataStorageService.Devices.TryGetValue(variableTableDto.DeviceId, out var deviceDto))
{
variableTableDto.Device = deviceDto;
}
// 将变量表添加到安全字典
- variableTables.TryAdd(variableTableDto.Id, variableTableDto);
+ _appDataStorageService.VariableTables.TryAdd(variableTableDto.Id, variableTableDto);
}
// 加载MQTT服务器数据到内存
foreach (var mqttServerDto in mqttServerDtos)
{
- mqttServers.TryAdd(mqttServerDto.Id, mqttServerDto);
+ _appDataStorageService.MqttServers.TryAdd(mqttServerDto.Id, mqttServerDto);
}
// 加载日志数据到内存
foreach (var nlogDto in nlogDtos)
{
- nlogs.TryAdd(nlogDto.Id, nlogDto);
+ _appDataStorageService.Nlogs.TryAdd(nlogDto.Id, nlogDto);
}
// 将变量添加到安全字典
foreach (var variableDto in variableDtos)
{
- if (variableTables.TryGetValue(variableDto.VariableTableId, out var variableTableDto))
+ if (_appDataStorageService.VariableTables.TryGetValue(variableDto.VariableTableId, out var variableTableDto))
{
variableDto.VariableTable = variableTableDto;
}
- variables.TryAdd(variableDto.Id, variableDto);
+ _appDataStorageService.Variables.TryAdd(variableDto.Id, variableDto);
}
// 将菜单添加到安全字典
foreach (var menuDto in menuDtos)
{
- menus.TryAdd(menuDto.Id, menuDto);
+ _appDataStorageService.Menus.TryAdd(menuDto.Id, menuDto);
}
+
+ OnLoadDataCompleted?.Invoke(this,new DataLoadCompletedEventArgs(true,"数据加载成功"));
}
///
diff --git a/DMS.Application/Services/DeviceManagementService.cs b/DMS.Application/Services/DeviceManagementService.cs
index c55a6b4..39686b5 100644
--- a/DMS.Application/Services/DeviceManagementService.cs
+++ b/DMS.Application/Services/DeviceManagementService.cs
@@ -1,34 +1,26 @@
-using AutoMapper;
using DMS.Application.DTOs;
using DMS.Application.DTOs.Events;
-using DMS.Core.Models;
using DMS.Application.Interfaces;
-using DMS.Core.Interfaces;
-using DMS.Core.Enums;
-using System.Collections.Concurrent;
-using System.Collections.Generic;
-using System.Threading.Tasks;
-using System;
namespace DMS.Application.Services;
///
/// 设备管理服务,负责设备相关的业务逻辑。
///
-public class DeviceManagementService
+public class DeviceManagementService : IDeviceManagementService
{
private readonly IDeviceAppService _deviceAppService;
- private readonly ConcurrentDictionary _devices;
+ private readonly IAppDataStorageService _appDataStorageService;
///
/// 当设备数据发生变化时触发
///
- public event EventHandler DeviceChanged;
+ public event EventHandler OnDeviceChanged;
- public DeviceManagementService(IDeviceAppService deviceAppService, ConcurrentDictionary devices)
+ public DeviceManagementService(IDeviceAppService deviceAppService,IAppDataStorageService appDataStorageService)
{
_deviceAppService = deviceAppService;
- _devices = devices;
+ _appDataStorageService = appDataStorageService;
}
///
@@ -82,12 +74,11 @@ public class DeviceManagementService
///
/// 在内存中添加设备
///
- public void AddDeviceToMemory(DeviceDto deviceDto, ConcurrentDictionary variableTables,
- ConcurrentDictionary variables)
+ public void AddDeviceToMemory(DeviceDto deviceDto)
{
- if (_devices.TryAdd(deviceDto.Id, deviceDto))
+ if (_appDataStorageService.Devices.TryAdd(deviceDto.Id, deviceDto))
{
- OnDeviceChanged(new DeviceChangedEventArgs(DataChangeType.Added, deviceDto));
+ OnDeviceChanged?.Invoke(this,new DeviceChangedEventArgs(DataChangeType.Added, deviceDto));
}
}
@@ -96,39 +87,32 @@ public class DeviceManagementService
///
public void UpdateDeviceInMemory(DeviceDto deviceDto)
{
- _devices.AddOrUpdate(deviceDto.Id, deviceDto, (key, oldValue) => deviceDto);
- OnDeviceChanged(new DeviceChangedEventArgs(DataChangeType.Updated, deviceDto));
+ _appDataStorageService.Devices.AddOrUpdate(deviceDto.Id, deviceDto, (key, oldValue) => deviceDto);
+ OnDeviceChanged?.Invoke(this,new DeviceChangedEventArgs(DataChangeType.Updated, deviceDto));
}
///
/// 在内存中删除设备
///
- public void RemoveDeviceFromMemory(int deviceId, ConcurrentDictionary variableTables,
- ConcurrentDictionary variables)
+ public void RemoveDeviceFromMemory(int deviceId)
{
- if (_devices.TryGetValue(deviceId, out var deviceDto))
+ if (_appDataStorageService.Devices.TryGetValue(deviceId, out var deviceDto))
{
foreach (var variableTable in deviceDto.VariableTables)
{
foreach (var variable in variableTable.Variables)
{
- variables.TryRemove(variable.Id, out _);
+ _appDataStorageService.Variables.TryRemove(variable.Id, out _);
}
- variableTables.TryRemove(variableTable.Id, out _);
+ _appDataStorageService.VariableTables.TryRemove(variableTable.Id, out _);
}
- _devices.TryRemove(deviceId, out _);
+ _appDataStorageService.Devices.TryRemove(deviceId, out _);
- OnDeviceChanged(new DeviceChangedEventArgs(DataChangeType.Deleted, deviceDto));
+ OnDeviceChanged?.Invoke(this,new DeviceChangedEventArgs(DataChangeType.Deleted, deviceDto));
}
}
- ///
- /// 触发设备变更事件
- ///
- protected virtual void OnDeviceChanged(DeviceChangedEventArgs e)
- {
- DeviceChanged?.Invoke(this, e);
- }
+
}
\ No newline at end of file
diff --git a/DMS.Application/Services/ILogManagementService.cs b/DMS.Application/Services/ILogManagementService.cs
new file mode 100644
index 0000000..eaa36c6
--- /dev/null
+++ b/DMS.Application/Services/ILogManagementService.cs
@@ -0,0 +1,47 @@
+using DMS.Application.DTOs;
+using DMS.Application.DTOs.Events;
+
+namespace DMS.Application.Services;
+
+public interface ILogManagementService
+{
+ ///
+ /// 异步根据ID获取日志DTO。
+ ///
+ Task GetNlogByIdAsync(int id);
+
+ ///
+ /// 异步获取所有日志DTO列表。
+ ///
+ Task> GetAllNlogsAsync();
+
+ ///
+ /// 异步获取指定数量的最新日志DTO列表。
+ ///
+ Task> GetLatestNlogsAsync(int count);
+
+ ///
+ /// 异步清空所有日志。
+ ///
+ Task ClearAllNlogsAsync();
+
+ ///
+ /// 在内存中添加日志
+ ///
+ void AddNlogToMemory(NlogDto nlogDto);
+
+ ///
+ /// 在内存中更新日志
+ ///
+ void UpdateNlogInMemory(NlogDto nlogDto);
+
+ ///
+ /// 在内存中删除日志
+ ///
+ void RemoveNlogFromMemory(int nlogId);
+
+ ///
+ /// 当日志数据发生变化时触发
+ ///
+ event EventHandler OnLogChanged;
+}
\ No newline at end of file
diff --git a/DMS.Application/Services/IMenuManagementService.cs b/DMS.Application/Services/IMenuManagementService.cs
new file mode 100644
index 0000000..4217f0c
--- /dev/null
+++ b/DMS.Application/Services/IMenuManagementService.cs
@@ -0,0 +1,63 @@
+using DMS.Application.DTOs;
+
+namespace DMS.Application.Services;
+
+public interface IMenuManagementService
+{
+ ///
+ /// 异步获取所有菜单DTO列表。
+ ///
+ Task> GetAllMenusAsync();
+
+ ///
+ /// 异步根据ID获取菜单DTO。
+ ///
+ Task GetMenuByIdAsync(int id);
+
+ ///
+ /// 异步创建一个新菜单。
+ ///
+ Task CreateMenuAsync(MenuBeanDto menuDto);
+
+ ///
+ /// 异步更新一个已存在的菜单。
+ ///
+ Task UpdateMenuAsync(MenuBeanDto menuDto);
+
+ ///
+ /// 异步删除一个菜单。
+ ///
+ Task DeleteMenuAsync(int id);
+
+ ///
+ /// 在内存中添加菜单
+ ///
+ void AddMenuToMemory(MenuBeanDto menuDto);
+
+ ///
+ /// 在内存中更新菜单
+ ///
+ void UpdateMenuInMemory(MenuBeanDto menuDto);
+
+ ///
+ /// 在内存中删除菜单
+ ///
+ void RemoveMenuFromMemory(int menuId);
+
+ ///
+ /// 获取根菜单列表
+ ///
+ List GetRootMenus();
+
+ ///
+ /// 根据父级ID获取子菜单列表
+ ///
+ /// 父级菜单ID
+ /// 子菜单列表
+ List GetChildMenus(int parentId);
+
+ ///
+ /// 构建菜单树结构
+ ///
+ void BuildMenuTree();
+}
\ No newline at end of file
diff --git a/DMS.Application/Services/IMqttManagementService.cs b/DMS.Application/Services/IMqttManagementService.cs
new file mode 100644
index 0000000..11a0af9
--- /dev/null
+++ b/DMS.Application/Services/IMqttManagementService.cs
@@ -0,0 +1,46 @@
+using DMS.Application.DTOs;
+
+namespace DMS.Application.Services;
+
+public interface IMqttManagementService
+{
+ ///
+ /// 异步根据ID获取MQTT服务器DTO。
+ ///
+ Task GetMqttServerByIdAsync(int id);
+
+ ///
+ /// 异步获取所有MQTT服务器DTO列表。
+ ///
+ Task> GetAllMqttServersAsync();
+
+ ///
+ /// 异步创建一个新的MQTT服务器。
+ ///
+ Task CreateMqttServerAsync(MqttServerDto mqttServerDto);
+
+ ///
+ /// 异步更新一个已存在的MQTT服务器。
+ ///
+ Task UpdateMqttServerAsync(MqttServerDto mqttServerDto);
+
+ ///
+ /// 异步删除一个MQTT服务器。
+ ///
+ Task DeleteMqttServerAsync(int id);
+
+ ///
+ /// 在内存中添加MQTT服务器
+ ///
+ void AddMqttServerToMemory(MqttServerDto mqttServerDto);
+
+ ///
+ /// 在内存中更新MQTT服务器
+ ///
+ void UpdateMqttServerInMemory(MqttServerDto mqttServerDto);
+
+ ///
+ /// 在内存中删除MQTT服务器
+ ///
+ void RemoveMqttServerFromMemory(int mqttServerId);
+}
\ No newline at end of file
diff --git a/DMS.Application/Services/IVariableManagementService.cs b/DMS.Application/Services/IVariableManagementService.cs
new file mode 100644
index 0000000..8a1267a
--- /dev/null
+++ b/DMS.Application/Services/IVariableManagementService.cs
@@ -0,0 +1,63 @@
+using System.Collections.Concurrent;
+using DMS.Application.DTOs;
+using DMS.Application.DTOs.Events;
+
+namespace DMS.Application.Services;
+
+public interface IVariableManagementService
+{
+ ///
+ /// 异步根据ID获取变量DTO。
+ ///
+ Task GetVariableByIdAsync(int id);
+
+ ///
+ /// 异步获取所有变量DTO列表。
+ ///
+ Task> GetAllVariablesAsync();
+
+ ///
+ /// 异步创建一个新变量。
+ ///
+ Task CreateVariableAsync(VariableDto variableDto);
+
+ ///
+ /// 异步更新一个已存在的变量。
+ ///
+ Task UpdateVariableAsync(VariableDto variableDto);
+
+ ///
+ /// 异步批量更新变量。
+ ///
+ Task UpdateVariablesAsync(List variableDtos);
+
+ ///
+ /// 异步删除一个变量。
+ ///
+ Task DeleteVariableAsync(int id);
+
+ ///
+ /// 异步批量删除变量。
+ ///
+ Task DeleteVariablesAsync(List ids);
+
+ ///
+ /// 在内存中添加变量
+ ///
+ void AddVariableToMemory(VariableDto variableDto, ConcurrentDictionary variableTables);
+
+ ///
+ /// 在内存中更新变量
+ ///
+ void UpdateVariableInMemory(VariableDto variableDto, ConcurrentDictionary variableTables);
+
+ ///
+ /// 在内存中删除变量
+ ///
+ void RemoveVariableFromMemory(int variableId, ConcurrentDictionary variableTables);
+
+ ///
+ /// 当变量数据发生变化时触发
+ ///
+ event EventHandler OnVariableChanged;
+}
\ No newline at end of file
diff --git a/DMS.Application/Services/LogManagementService.cs b/DMS.Application/Services/LogManagementService.cs
index 0cec476..4360f55 100644
--- a/DMS.Application/Services/LogManagementService.cs
+++ b/DMS.Application/Services/LogManagementService.cs
@@ -1,35 +1,27 @@
-using AutoMapper;
+using System.Collections.Concurrent;
using DMS.Application.DTOs;
using DMS.Application.DTOs.Events;
-using DMS.Core.Models;
using DMS.Application.Interfaces;
-using DMS.Core.Interfaces;
-using DMS.Core.Enums;
-using System.Collections.Concurrent;
-using System.Collections.Generic;
-using System.Threading.Tasks;
-using System;
namespace DMS.Application.Services;
///
/// 日志管理服务,负责日志相关的业务逻辑。
///
-public class LogManagementService
+public class LogManagementService : ILogManagementService
{
private readonly INlogAppService _nlogAppService;
- private readonly ConcurrentDictionary _nlogs;
+ private readonly IAppDataStorageService _appDataStorageService;
///
/// 当日志数据发生变化时触发
///
- public event EventHandler NlogChanged;
+ public event EventHandler OnLogChanged;
- public LogManagementService(INlogAppService nlogAppService,
- ConcurrentDictionary nlogs)
+ public LogManagementService(INlogAppService nlogAppService,IAppDataStorageService appDataStorageService)
{
_nlogAppService = nlogAppService;
- _nlogs = nlogs;
+ _appDataStorageService = appDataStorageService;
}
///
@@ -69,9 +61,9 @@ public class LogManagementService
///
public void AddNlogToMemory(NlogDto nlogDto)
{
- if (_nlogs.TryAdd(nlogDto.Id, nlogDto))
+ if (_appDataStorageService.Nlogs.TryAdd(nlogDto.Id, nlogDto))
{
- OnNlogChanged(new NlogChangedEventArgs(DataChangeType.Added, nlogDto));
+ OnLogChanged?.Invoke(this,new NlogChangedEventArgs(DataChangeType.Added, nlogDto));
}
}
@@ -80,8 +72,8 @@ public class LogManagementService
///
public void UpdateNlogInMemory(NlogDto nlogDto)
{
- _nlogs.AddOrUpdate(nlogDto.Id, nlogDto, (key, oldValue) => nlogDto);
- OnNlogChanged(new NlogChangedEventArgs(DataChangeType.Updated, nlogDto));
+ _appDataStorageService.Nlogs.AddOrUpdate(nlogDto.Id, nlogDto, (key, oldValue) => nlogDto);
+ OnLogChanged?.Invoke(this,new NlogChangedEventArgs(DataChangeType.Updated, nlogDto));
}
///
@@ -89,17 +81,11 @@ public class LogManagementService
///
public void RemoveNlogFromMemory(int nlogId)
{
- if (_nlogs.TryRemove(nlogId, out var nlogDto))
+ if (_appDataStorageService.Nlogs.TryRemove(nlogId, out var nlogDto))
{
- OnNlogChanged(new NlogChangedEventArgs(DataChangeType.Deleted, nlogDto));
+ OnLogChanged?.Invoke(this,new NlogChangedEventArgs(DataChangeType.Deleted, nlogDto));
}
}
- ///
- /// 触发日志变更事件
- ///
- protected virtual void OnNlogChanged(NlogChangedEventArgs e)
- {
- NlogChanged?.Invoke(this, e);
- }
+
}
\ No newline at end of file
diff --git a/DMS.Application/Services/MenuManagementService.cs b/DMS.Application/Services/MenuManagementService.cs
index 1ff4e9a..355fbb6 100644
--- a/DMS.Application/Services/MenuManagementService.cs
+++ b/DMS.Application/Services/MenuManagementService.cs
@@ -15,24 +15,20 @@ namespace DMS.Application.Services;
///
/// 菜单管理服务,负责菜单相关的业务逻辑。
///
-public class MenuManagementService
+public class MenuManagementService : IMenuManagementService
{
private readonly IMenuService _menuService;
- private readonly ConcurrentDictionary _menus;
- private readonly ConcurrentDictionary _menuTrees;
+ private readonly IAppDataStorageService _appDataStorageService;
///
/// 当菜单数据发生变化时触发
///
public event EventHandler MenuChanged;
- public MenuManagementService(IMenuService menuService,
- ConcurrentDictionary menus,
- ConcurrentDictionary menuTrees)
+ public MenuManagementService(IMenuService menuService,IAppDataStorageService appDataStorageService)
{
_menuService = menuService;
- _menus = menus;
- _menuTrees = menuTrees;
+ _appDataStorageService = appDataStorageService;
}
///
@@ -80,10 +76,10 @@ public class MenuManagementService
///
public void AddMenuToMemory(MenuBeanDto menuDto)
{
- if (_menus.TryAdd(menuDto.Id, menuDto))
+ if (_appDataStorageService.Menus.TryAdd(menuDto.Id, menuDto))
{
MenuBeanDto parentMenu = null;
- if (menuDto.ParentId > 0 && _menus.TryGetValue(menuDto.ParentId, out var parent))
+ if (menuDto.ParentId > 0 && _appDataStorageService.Menus.TryGetValue(menuDto.ParentId, out var parent))
{
parentMenu = parent;
parent.Children.Add(menuDto);
@@ -98,10 +94,10 @@ public class MenuManagementService
///
public void UpdateMenuInMemory(MenuBeanDto menuDto)
{
- _menus.AddOrUpdate(menuDto.Id, menuDto, (key, oldValue) => menuDto);
+ _appDataStorageService.Menus.AddOrUpdate(menuDto.Id, menuDto, (key, oldValue) => menuDto);
MenuBeanDto parentMenu = null;
- if (menuDto.ParentId > 0 && _menus.TryGetValue(menuDto.ParentId, out var parent))
+ if (menuDto.ParentId > 0 && _appDataStorageService.Menus.TryGetValue(menuDto.ParentId, out var parent))
{
parentMenu = parent;
}
@@ -114,10 +110,10 @@ public class MenuManagementService
///
public void RemoveMenuFromMemory(int menuId)
{
- if (_menus.TryRemove(menuId, out var menuDto))
+ if (_appDataStorageService.Menus.TryRemove(menuId, out var menuDto))
{
MenuBeanDto parentMenu = null;
- if (menuDto.ParentId > 0 && _menus.TryGetValue(menuDto.ParentId, out var parent))
+ if (menuDto.ParentId > 0 && _appDataStorageService.Menus.TryGetValue(menuDto.ParentId, out var parent))
{
parentMenu = parent;
}
@@ -131,7 +127,7 @@ public class MenuManagementService
///
public List GetRootMenus()
{
- return _menus.Values.Where(m => m.ParentId == 0)
+ return _appDataStorageService.Menus.Values.Where(m => m.ParentId == 0)
.ToList();
}
@@ -142,7 +138,7 @@ public class MenuManagementService
/// 子菜单列表
public List GetChildMenus(int parentId)
{
- return _menus.Values.Where(m => m.ParentId == parentId)
+ return _appDataStorageService.Menus.Values.Where(m => m.ParentId == parentId)
.ToList();
}
@@ -152,7 +148,7 @@ public class MenuManagementService
public void BuildMenuTree()
{
// 清空现有菜单树
- _menuTrees.Clear();
+ _appDataStorageService.MenuTrees.Clear();
// 获取所有根菜单
var rootMenus = GetRootMenus();
@@ -160,7 +156,7 @@ public class MenuManagementService
// 将根菜单添加到菜单树中
foreach (var rootMenu in rootMenus)
{
- _menuTrees.TryAdd(rootMenu.Id, rootMenu);
+ _appDataStorageService.MenuTrees.TryAdd(rootMenu.Id, rootMenu);
}
}
diff --git a/DMS.Application/Services/MqttManagementService.cs b/DMS.Application/Services/MqttManagementService.cs
index 702ee46..003aa73 100644
--- a/DMS.Application/Services/MqttManagementService.cs
+++ b/DMS.Application/Services/MqttManagementService.cs
@@ -15,21 +15,20 @@ namespace DMS.Application.Services;
///
/// MQTT管理服务,负责MQTT相关的业务逻辑。
///
-public class MqttManagementService
+public class MqttManagementService : IMqttManagementService
{
private readonly IMqttAppService _mqttAppService;
- private readonly ConcurrentDictionary _mqttServers;
+ private readonly IAppDataStorageService _appDataStorageService;
///
/// 当MQTT服务器数据发生变化时触发
///
public event EventHandler MqttServerChanged;
- public MqttManagementService(IMqttAppService mqttAppService,
- ConcurrentDictionary mqttServers)
+ public MqttManagementService(IMqttAppService mqttAppService,IAppDataStorageService appDataStorageService)
{
_mqttAppService = mqttAppService;
- _mqttServers = mqttServers;
+ _appDataStorageService = appDataStorageService;
}
///
@@ -77,7 +76,7 @@ public class MqttManagementService
///
public void AddMqttServerToMemory(MqttServerDto mqttServerDto)
{
- if (_mqttServers.TryAdd(mqttServerDto.Id, mqttServerDto))
+ if (_appDataStorageService.MqttServers.TryAdd(mqttServerDto.Id, mqttServerDto))
{
OnMqttServerChanged(new MqttServerChangedEventArgs(DataChangeType.Added, mqttServerDto));
}
@@ -88,7 +87,7 @@ public class MqttManagementService
///
public void UpdateMqttServerInMemory(MqttServerDto mqttServerDto)
{
- _mqttServers.AddOrUpdate(mqttServerDto.Id, mqttServerDto, (key, oldValue) => mqttServerDto);
+ _appDataStorageService.MqttServers.AddOrUpdate(mqttServerDto.Id, mqttServerDto, (key, oldValue) => mqttServerDto);
OnMqttServerChanged(new MqttServerChangedEventArgs(DataChangeType.Updated, mqttServerDto));
}
@@ -97,7 +96,7 @@ public class MqttManagementService
///
public void RemoveMqttServerFromMemory(int mqttServerId)
{
- if (_mqttServers.TryRemove(mqttServerId, out var mqttServerDto))
+ if (_appDataStorageService.MqttServers.TryRemove(mqttServerId, out var mqttServerDto))
{
OnMqttServerChanged(new MqttServerChangedEventArgs(DataChangeType.Deleted, mqttServerDto));
}
diff --git a/DMS.Application/Services/VariableManagementService.cs b/DMS.Application/Services/VariableManagementService.cs
index 15d99cf..1397e79 100644
--- a/DMS.Application/Services/VariableManagementService.cs
+++ b/DMS.Application/Services/VariableManagementService.cs
@@ -15,20 +15,20 @@ namespace DMS.Application.Services;
///
/// 变量管理服务,负责变量相关的业务逻辑。
///
-public class VariableManagementService
+public class VariableManagementService : IVariableManagementService
{
private readonly IVariableAppService _variableAppService;
- private readonly ConcurrentDictionary _variables;
+ private readonly IAppDataStorageService _appDataStorageService;
///
/// 当变量数据发生变化时触发
///
- public event EventHandler VariableChanged;
+ public event EventHandler OnVariableChanged;
- public VariableManagementService(IVariableAppService variableAppService, ConcurrentDictionary variables)
+ public VariableManagementService(IVariableAppService variableAppService,IAppDataStorageService appDataStorageService)
{
_variableAppService = variableAppService;
- _variables = variables;
+ _appDataStorageService = appDataStorageService;
}
///
@@ -100,9 +100,9 @@ public class VariableManagementService
variableTable.Variables.Add(variableDto);
}
- if (_variables.TryAdd(variableDto.Id, variableDto))
+ if (_appDataStorageService.Variables.TryAdd(variableDto.Id, variableDto))
{
- OnVariableChanged(new VariableChangedEventArgs(DataChangeType.Added, variableDto, variableTableDto));
+ OnVariableChanged?.Invoke(this,new VariableChangedEventArgs(DataChangeType.Added, variableDto, variableTableDto));
}
}
@@ -117,8 +117,8 @@ public class VariableManagementService
variableTableDto = variableTable;
}
- _variables.AddOrUpdate(variableDto.Id, variableDto, (key, oldValue) => variableDto);
- OnVariableChanged(new VariableChangedEventArgs(DataChangeType.Updated, variableDto, variableTableDto));
+ _appDataStorageService.Variables.AddOrUpdate(variableDto.Id, variableDto, (key, oldValue) => variableDto);
+ OnVariableChanged?.Invoke(this,new VariableChangedEventArgs(DataChangeType.Updated, variableDto, variableTableDto));
}
///
@@ -126,7 +126,7 @@ public class VariableManagementService
///
public void RemoveVariableFromMemory(int variableId, ConcurrentDictionary variableTables)
{
- if (_variables.TryRemove(variableId, out var variableDto))
+ if (_appDataStorageService.Variables.TryRemove(variableId, out var variableDto))
{
VariableTableDto variableTableDto = null;
if (variableDto != null && variableTables.TryGetValue(variableDto.VariableTableId, out var variableTable))
@@ -135,15 +135,8 @@ public class VariableManagementService
variableTable.Variables.Remove(variableDto);
}
- OnVariableChanged(new VariableChangedEventArgs(DataChangeType.Deleted, variableDto, variableTableDto));
+ OnVariableChanged?.Invoke(this,new VariableChangedEventArgs(DataChangeType.Deleted, variableDto, variableTableDto));
}
}
- ///
- /// 触发变量变更事件
- ///
- protected virtual void OnVariableChanged(VariableChangedEventArgs e)
- {
- VariableChanged?.Invoke(this, e);
- }
}
\ No newline at end of file
diff --git a/DMS.Application/Services/VariableTableManagementService.cs b/DMS.Application/Services/VariableTableManagementService.cs
index 382f498..358569e 100644
--- a/DMS.Application/Services/VariableTableManagementService.cs
+++ b/DMS.Application/Services/VariableTableManagementService.cs
@@ -15,21 +15,22 @@ namespace DMS.Application.Services;
///
/// 变量表管理服务,负责变量表相关的业务逻辑。
///
-public class VariableTableManagementService
+public class VariableTableManagementService : IVariableTableManagementService
{
private readonly IVariableTableAppService _variableTableAppService;
+ private readonly IAppDataStorageService _appDataStorageService;
private readonly ConcurrentDictionary _variableTables;
///
/// 当变量表数据发生变化时触发
///
- public event EventHandler VariableTableChanged;
+ public event EventHandler OnVariableTableChanged;
- public VariableTableManagementService(IVariableTableAppService variableTableAppService,
- ConcurrentDictionary variableTables)
+ public VariableTableManagementService(IVariableTableAppService variableTableAppService,IAppDataStorageService appDataStorageService
+ )
{
_variableTableAppService = variableTableAppService;
- _variableTables = variableTables;
+ _appDataStorageService = appDataStorageService;
}
///
@@ -75,10 +76,10 @@ public class VariableTableManagementService
///
/// 在内存中添加变量表
///
- public void AddVariableTableToMemory(VariableTableDto variableTableDto, ConcurrentDictionary devices)
+ public void AddVariableTableToMemory(VariableTableDto variableTableDto)
{
DeviceDto deviceDto = null;
- if (devices.TryGetValue(variableTableDto.DeviceId, out var device))
+ if (_appDataStorageService.Devices.TryGetValue(variableTableDto.DeviceId, out var device))
{
deviceDto = device;
device.VariableTables.Add(variableTableDto);
@@ -87,7 +88,7 @@ public class VariableTableManagementService
if (_variableTables.TryAdd(variableTableDto.Id, variableTableDto))
{
- OnVariableTableChanged(new VariableTableChangedEventArgs(
+ OnVariableTableChanged?.Invoke(this,new VariableTableChangedEventArgs(
DataChangeType.Added,
variableTableDto,
deviceDto));
@@ -97,47 +98,41 @@ public class VariableTableManagementService
///
/// 在内存中更新变量表
///
- public void UpdateVariableTableInMemory(VariableTableDto variableTableDto, ConcurrentDictionary devices)
+ public void UpdateVariableTableInMemory(VariableTableDto variableTableDto)
{
DeviceDto deviceDto = null;
- if (devices.TryGetValue(variableTableDto.DeviceId, out var device))
+ if (_appDataStorageService.Devices.TryGetValue(variableTableDto.DeviceId, out var device))
{
deviceDto = device;
}
_variableTables.AddOrUpdate(variableTableDto.Id, variableTableDto, (key, oldValue) => variableTableDto);
- OnVariableTableChanged(new VariableTableChangedEventArgs(
- DataChangeType.Updated,
- variableTableDto,
- deviceDto));
+ OnVariableTableChanged?.Invoke(this,new VariableTableChangedEventArgs(
+ DataChangeType.Updated,
+ variableTableDto,
+ deviceDto));
}
///
/// 在内存中删除变量表
///
- public void RemoveVariableTableFromMemory(int variableTableId, ConcurrentDictionary devices)
+ public void RemoveVariableTableFromMemory(int variableTableId)
{
if (_variableTables.TryRemove(variableTableId, out var variableTableDto))
{
DeviceDto deviceDto = null;
- if (variableTableDto != null && devices.TryGetValue(variableTableDto.DeviceId, out var device))
+ if (variableTableDto != null && _appDataStorageService.Devices.TryGetValue(variableTableDto.DeviceId, out var device))
{
deviceDto = device;
device.VariableTables.Remove(variableTableDto);
}
- OnVariableTableChanged(new VariableTableChangedEventArgs(
- DataChangeType.Deleted,
- variableTableDto,
- deviceDto));
+ OnVariableTableChanged?.Invoke(this,new VariableTableChangedEventArgs(
+ DataChangeType.Deleted,
+ variableTableDto,
+ deviceDto));
}
}
- ///
- /// 触发变量表变更事件
- ///
- protected virtual void OnVariableTableChanged(VariableTableChangedEventArgs e)
- {
- VariableTableChanged?.Invoke(this, e);
- }
+
}
\ No newline at end of file
diff --git a/DMS.Infrastructure/Services/MqttBackgroundService.cs b/DMS.Infrastructure/Services/MqttBackgroundService.cs
index 6e3d656..6e15e2d 100644
--- a/DMS.Infrastructure/Services/MqttBackgroundService.cs
+++ b/DMS.Infrastructure/Services/MqttBackgroundService.cs
@@ -21,6 +21,7 @@ namespace DMS.Infrastructure.Services
{
private readonly ILogger _logger;
private readonly IMqttServiceManager _mqttServiceManager;
+ private readonly IAppDataStorageService _appDataStorageService;
private readonly IAppDataCenterService _appDataCenterService;
private readonly ConcurrentDictionary _mqttServers;
private readonly SemaphoreSlim _reloadSemaphore = new(0);
@@ -28,14 +29,16 @@ namespace DMS.Infrastructure.Services
public MqttBackgroundService(
ILogger logger,
IMqttServiceManager mqttServiceManager,
+ IAppDataStorageService appDataStorageService,
IAppDataCenterService appDataCenterService)
{
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
_mqttServiceManager = mqttServiceManager ?? throw new ArgumentNullException(nameof(mqttServiceManager));
+ _appDataStorageService = appDataStorageService;
_appDataCenterService = appDataCenterService ?? throw new ArgumentNullException(nameof(appDataCenterService));
_mqttServers = new ConcurrentDictionary();
- _appDataCenterService.OnLoadDataCompleted += OnLoadDataCompleted;
+ _appDataCenterService.DataLoaderService.OnLoadDataCompleted += OnLoadDataCompleted;
}
private void OnLoadDataCompleted(object? sender, DataLoadCompletedEventArgs e)
@@ -185,9 +188,9 @@ namespace DMS.Infrastructure.Services
_mqttServers.Clear();
// 从数据服务中心获取所有激活的MQTT服务器
- var mqttServerDtos = _appDataCenterService.MqttServers.Values
- .Where(m => m.IsActive)
- .ToList();
+ var mqttServerDtos = _appDataStorageService.MqttServers.Values
+ .Where(m => m.IsActive)
+ .ToList();
foreach (var mqttServerDto in mqttServerDtos)
{
@@ -252,7 +255,7 @@ namespace DMS.Infrastructure.Services
{
_logger.LogInformation("正在释放MQTT后台服务资源...");
- _appDataCenterService.OnLoadDataCompleted -= OnLoadDataCompleted;
+ _appDataCenterService.DataLoaderService.OnLoadDataCompleted -= OnLoadDataCompleted;
_reloadSemaphore?.Dispose();
base.Dispose();
diff --git a/DMS.Infrastructure/Services/OpcUaBackgroundService.cs b/DMS.Infrastructure/Services/OpcUaBackgroundService.cs
index 7db95d5..5e184e2 100644
--- a/DMS.Infrastructure/Services/OpcUaBackgroundService.cs
+++ b/DMS.Infrastructure/Services/OpcUaBackgroundService.cs
@@ -18,6 +18,7 @@ public class OpcUaBackgroundService : BackgroundService
{
private readonly IAppDataCenterService _appDataCenterService;
private readonly IDataProcessingService _dataProcessingService;
+ private readonly IAppDataStorageService _appDataStorageService;
// private readonly IDataProcessingService _dataProcessingService;
private readonly ILogger _logger;
@@ -70,10 +71,11 @@ public class OpcUaBackgroundService : BackgroundService
{ 1800000, TimeSpan.FromMilliseconds(1800000) } // ThirtyMinutes
};
- public OpcUaBackgroundService(IAppDataCenterService appDataCenterService,IDataProcessingService dataProcessingService, ILogger logger)
+ public OpcUaBackgroundService(IAppDataCenterService appDataCenterService,IDataProcessingService dataProcessingService,IAppDataStorageService appDataStorageService, ILogger logger)
{
_appDataCenterService = appDataCenterService;
_dataProcessingService = dataProcessingService;
+ _appDataStorageService = appDataStorageService;
_logger = logger;
_opcUaServices = new ConcurrentDictionary();
_opcUaSubscriptions = new ConcurrentDictionary();
@@ -81,7 +83,7 @@ public class OpcUaBackgroundService : BackgroundService
_opcUaPollVariablesByDeviceId = new ConcurrentDictionary>();
_opcUaVariablesByDeviceId = new ConcurrentDictionary>();
- _appDataCenterService.OnLoadDataCompleted += OnLoadDataCompleted;
+ _appDataCenterService.DataLoaderService.OnLoadDataCompleted += OnLoadDataCompleted;
}
private void OnLoadDataCompleted(object? sender, DataLoadCompletedEventArgs e)
@@ -103,7 +105,7 @@ public class OpcUaBackgroundService : BackgroundService
break;
}
- if (_appDataCenterService.Devices.IsEmpty)
+ if (_appDataStorageService.Devices.IsEmpty)
{
_logger.LogInformation("没有可用的OPC UA设备,等待设备列表更新...");
continue;
@@ -150,7 +152,7 @@ public class OpcUaBackgroundService : BackgroundService
_opcUaVariables.Clear();
_logger.LogInformation("开始加载OPC UA变量....");
- var opcUaDevices = _appDataCenterService
+ var opcUaDevices = _appDataStorageService
.Devices.Values.Where(d => d.Protocol == ProtocolType.OpcUa && d.IsActive == true)
.ToList();
int totalVariableCount = 0;
diff --git a/DMS.Infrastructure/Services/OpcUaServiceManager.cs b/DMS.Infrastructure/Services/OpcUaServiceManager.cs
index bff1938..dc45f31 100644
--- a/DMS.Infrastructure/Services/OpcUaServiceManager.cs
+++ b/DMS.Infrastructure/Services/OpcUaServiceManager.cs
@@ -308,7 +308,7 @@ namespace DMS.Infrastructure.Services
newValue,
variable.UpdatedAt);
- _appDataCenterService.OnVariableValueChanged( eventArgs);
+ // _appDataCenterService.OnVariableValueChanged( eventArgs);
// 推送到数据处理队列
await _dataProcessingService.EnqueueAsync(variable);
diff --git a/DMS.Infrastructure/Services/OptimizedOpcUaBackgroundService.cs b/DMS.Infrastructure/Services/OptimizedOpcUaBackgroundService.cs
index 750c184..d075370 100644
--- a/DMS.Infrastructure/Services/OptimizedOpcUaBackgroundService.cs
+++ b/DMS.Infrastructure/Services/OptimizedOpcUaBackgroundService.cs
@@ -19,20 +19,23 @@ namespace DMS.Infrastructure.Services
public class OptimizedOpcUaBackgroundService : BackgroundService
{
private readonly IAppDataCenterService _appDataCenterService;
+ private readonly IAppDataStorageService _appDataStorageService;
private readonly IOpcUaServiceManager _opcUaServiceManager;
private readonly ILogger _logger;
private readonly SemaphoreSlim _reloadSemaphore = new SemaphoreSlim(0);
public OptimizedOpcUaBackgroundService(
IAppDataCenterService appDataCenterService,
+ IAppDataStorageService appDataStorageService,
IOpcUaServiceManager opcUaServiceManager,
ILogger logger)
{
_appDataCenterService = appDataCenterService ?? throw new ArgumentNullException(nameof(appDataCenterService));
+ _appDataStorageService = appDataStorageService;
_opcUaServiceManager = opcUaServiceManager ?? throw new ArgumentNullException(nameof(opcUaServiceManager));
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
- _appDataCenterService.OnLoadDataCompleted += OnLoadDataCompleted;
+ _appDataCenterService.DataLoaderService.OnLoadDataCompleted += OnLoadDataCompleted;
}
private void OnLoadDataCompleted(object sender, DataLoadCompletedEventArgs e)
@@ -57,7 +60,7 @@ namespace DMS.Infrastructure.Services
if (stoppingToken.IsCancellationRequested)
break;
- if (_appDataCenterService.Devices.IsEmpty)
+ if (_appDataStorageService.Devices.IsEmpty)
{
_logger.LogInformation("没有可用的OPC UA设备,等待设备列表更新...");
continue;
@@ -93,9 +96,9 @@ namespace DMS.Infrastructure.Services
try
{
// 获取所有活动的OPC UA设备
- var opcUaDevices = _appDataCenterService.Devices.Values
- .Where(d => d.Protocol == ProtocolType.OpcUa && d.IsActive)
- .ToList();
+ var opcUaDevices = _appDataStorageService.Devices.Values
+ .Where(d => d.Protocol == ProtocolType.OpcUa && d.IsActive)
+ .ToList();
_logger.LogInformation("找到 {DeviceCount} 个活动的OPC UA设备", opcUaDevices.Count);
@@ -145,7 +148,7 @@ namespace DMS.Infrastructure.Services
{
_logger.LogInformation("正在释放OPC UA后台服务资源...");
- _appDataCenterService.OnLoadDataCompleted -= OnLoadDataCompleted;
+ _appDataCenterService.DataLoaderService.OnLoadDataCompleted -= OnLoadDataCompleted;
_reloadSemaphore?.Dispose();
base.Dispose();
diff --git a/DMS.Infrastructure/Services/OptimizedS7BackgroundService.cs b/DMS.Infrastructure/Services/OptimizedS7BackgroundService.cs
index c141eeb..3695902 100644
--- a/DMS.Infrastructure/Services/OptimizedS7BackgroundService.cs
+++ b/DMS.Infrastructure/Services/OptimizedS7BackgroundService.cs
@@ -21,6 +21,7 @@ namespace DMS.Infrastructure.Services;
public class OptimizedS7BackgroundService : BackgroundService
{
private readonly IAppDataCenterService _appDataCenterService;
+ private readonly IAppDataStorageService _appDataStorageService;
private readonly IDataProcessingService _dataProcessingService;
private readonly IS7ServiceManager _s7ServiceManager;
private readonly ILogger _logger;
@@ -55,16 +56,18 @@ public class OptimizedS7BackgroundService : BackgroundService
///
public OptimizedS7BackgroundService(
IAppDataCenterService appDataCenterService,
+ IAppDataStorageService appDataStorageService,
IDataProcessingService dataProcessingService,
IS7ServiceManager s7ServiceManager,
ILogger logger)
{
_appDataCenterService = appDataCenterService;
+ _appDataStorageService = appDataStorageService;
_dataProcessingService = dataProcessingService;
_s7ServiceManager = s7ServiceManager;
_logger = logger;
- _appDataCenterService.OnLoadDataCompleted += OnLoadDataCompleted;
+ _appDataCenterService.DataLoaderService.OnLoadDataCompleted += OnLoadDataCompleted;
}
private void OnLoadDataCompleted(object? sender, DataLoadCompletedEventArgs e)
@@ -86,7 +89,7 @@ public class OptimizedS7BackgroundService : BackgroundService
break;
}
- if (_appDataCenterService.Devices.IsEmpty)
+ if (_appDataStorageService.Devices.IsEmpty)
{
_logger.LogInformation("没有可用的S7设备,等待设备列表更新...");
continue;
@@ -134,9 +137,9 @@ public class OptimizedS7BackgroundService : BackgroundService
_variablesByPollingInterval.Clear();
_logger.LogInformation("开始加载S7变量....");
- var s7Devices = _appDataCenterService
- .Devices.Values.Where(d => d.Protocol == ProtocolType.S7 && d.IsActive == true)
- .ToList();
+ var s7Devices = _appDataStorageService
+ .Devices.Values.Where(d => d.Protocol == ProtocolType.S7 && d.IsActive == true)
+ .ToList();
foreach (var s7Device in s7Devices)
{
@@ -173,9 +176,9 @@ public class OptimizedS7BackgroundService : BackgroundService
private async Task ConnectS7ServiceAsync(CancellationToken stoppingToken)
{
- var s7Devices = _appDataCenterService
- .Devices.Values.Where(d => d.Protocol == ProtocolType.S7 && d.IsActive == true)
- .ToList();
+ var s7Devices = _appDataStorageService
+ .Devices.Values.Where(d => d.Protocol == ProtocolType.S7 && d.IsActive == true)
+ .ToList();
var deviceIds = s7Devices.Select(d => d.Id).ToList();
await _s7ServiceManager.ConnectDevicesAsync(deviceIds, stoppingToken);
@@ -237,7 +240,7 @@ public class OptimizedS7BackgroundService : BackgroundService
///
private async Task PollVariablesForDeviceAsync(int deviceId, List variables, CancellationToken stoppingToken)
{
- if (!_appDataCenterService.Devices.TryGetValue(deviceId, out var device))
+ if (!_appDataStorageService.Devices.TryGetValue(deviceId, out var device))
{
_logger.LogWarning($"轮询时没有找到设备ID:{deviceId}");
return;
diff --git a/DMS.Infrastructure/Services/S7BackgroundService.cs b/DMS.Infrastructure/Services/S7BackgroundService.cs
index c432c98..99eddf7 100644
--- a/DMS.Infrastructure/Services/S7BackgroundService.cs
+++ b/DMS.Infrastructure/Services/S7BackgroundService.cs
@@ -23,6 +23,7 @@ namespace DMS.Infrastructure.Services;
public class S7BackgroundService : BackgroundService
{
private readonly IAppDataCenterService _appDataCenterService;
+ private readonly IAppDataStorageService _appDataStorageService;
private readonly IDataProcessingService _dataProcessingService;
private readonly IChannelBus _channelBus;
private readonly IMessenger _messenger;
@@ -40,18 +41,20 @@ public class S7BackgroundService : BackgroundService
///
public S7BackgroundService(
IAppDataCenterService appDataCenterService,
+ IAppDataStorageService appDataStorageService,
IDataProcessingService dataProcessingService,
IChannelBus channelBus,
IMessenger messenger,
ILogger logger)
{
_appDataCenterService = appDataCenterService;
+ _appDataStorageService = appDataStorageService;
_dataProcessingService = dataProcessingService;
_channelBus = channelBus;
_messenger = messenger;
_logger = logger;
- _appDataCenterService.OnLoadDataCompleted += OnLoadDataCompleted;
+ _appDataCenterService.DataLoaderService.OnLoadDataCompleted += OnLoadDataCompleted;
}
private void OnLoadDataCompleted(object? sender, DataLoadCompletedEventArgs e)
@@ -73,7 +76,7 @@ public class S7BackgroundService : BackgroundService
break;
}
- if (_appDataCenterService.Devices.IsEmpty)
+ if (_appDataStorageService.Devices.IsEmpty)
{
_logger.LogInformation("没有可用的S7设备,等待设备列表更新...");
continue;
@@ -114,9 +117,9 @@ public class S7BackgroundService : BackgroundService
_logger.LogInformation("开始加载S7设备....");
// 获取所有激活的S7设备
- var s7Devices = _appDataCenterService
- .Devices.Values.Where(d => d.Protocol == ProtocolType.S7 && d.IsActive == true)
- .ToList();
+ var s7Devices = _appDataStorageService
+ .Devices.Values.Where(d => d.Protocol == ProtocolType.S7 && d.IsActive == true)
+ .ToList();
// 清理已不存在的设备代理
var existingDeviceIds = s7Devices.Select(d => d.Id).ToHashSet();
@@ -134,7 +137,7 @@ public class S7BackgroundService : BackgroundService
// 为每个设备创建或更新代理
foreach (var deviceDto in s7Devices)
{
- if (!_appDataCenterService.Devices.TryGetValue(deviceDto.Id, out var device))
+ if (!_appDataStorageService.Devices.TryGetValue(deviceDto.Id, out var device))
continue;
// 创建或更新设备代理
diff --git a/DMS.WPF/App.xaml.cs b/DMS.WPF/App.xaml.cs
index 0b9ec12..927fb2e 100644
--- a/DMS.WPF/App.xaml.cs
+++ b/DMS.WPF/App.xaml.cs
@@ -212,15 +212,23 @@ public partial class App : System.Windows.Application
services.AddTransient();
services.AddTransient();
- // 注册App服务
+ // 注册App服务\r\n
services.AddSingleton();
services.AddSingleton();
services.AddSingleton();
services.AddSingleton();
- services.AddSingleton();
+ services.AddSingleton();
services.AddSingleton();
services.AddSingleton();
services.AddSingleton();
+ services.AddSingleton();
+ services.AddSingleton();
+ services.AddSingleton();
+ services.AddSingleton();
+ services.AddSingleton();
+ services.AddSingleton();
+ services.AddSingleton();
+
services.AddSingleton();
services.AddSingleton();
@@ -304,34 +312,34 @@ public partial class App : System.Windows.Application
loggingBuilder.SetMinimumLevel(LogLevel.Trace);
// loggingBuilder.addn; // 添加NLog作为日志提供者
- // 捕获未处理的异常并记录
- AppDomain.CurrentDomain.UnhandledException += (sender, args) =>
- {
- var ex = args.ExceptionObject as Exception;
- if (ex != null)
- {
- // 可以使用一个专用的 Logger 来记录未处理异常
- LogManager.GetLogger("UnhandledExceptionLogger")
- .Fatal($"应用程序发生未处理的异常:{ex}");
- }
- };
-
- // 捕获 Dispatcher 线程上的未处理异常 (UI 线程)
- this.DispatcherUnhandledException += (sender, args) =>
- {
- LogManager.GetLogger("DispatcherExceptionLogger")
- .Fatal($"UI 线程发生未处理的异常:{args.Exception}");
- // 标记为已处理,防止应用程序崩溃 (生产环境慎用,可能掩盖问题)
- // args.Handled = true;
- };
-
- // 如果您使用 Task (异步方法) 并且没有正确 await,可能会导致异常丢失,
- // 可以通过以下方式捕获 Task 中的异常。
- TaskScheduler.UnobservedTaskException += (sender, args) =>
- {
- LogManager.GetLogger("UnobservedTaskExceptionLogger")
- .Fatal($"异步任务发生未观察到的异常:{args.Exception}");
- // args.SetObserved(); // 标记为已观察,防止进程终止
- };
+ // // 捕获未处理的异常并记录
+ // AppDomain.CurrentDomain.UnhandledException += (sender, args) =>
+ // {
+ // var ex = args.ExceptionObject as Exception;
+ // if (ex != null)
+ // {
+ // // 可以使用一个专用的 Logger 来记录未处理异常
+ // LogManager.GetLogger("UnhandledExceptionLogger")
+ // .Fatal($"应用程序发生未处理的异常:{ex}");
+ // }
+ // };
+ //
+ // // 捕获 Dispatcher 线程上的未处理异常 (UI 线程)
+ // this.DispatcherUnhandledException += (sender, args) =>
+ // {
+ // LogManager.GetLogger("DispatcherExceptionLogger")
+ // .Fatal($"UI 线程发生未处理的异常:{args.Exception}");
+ // // 标记为已处理,防止应用程序崩溃 (生产环境慎用,可能掩盖问题)
+ // // args.Handled = true;
+ // };
+ //
+ // // 如果您使用 Task (异步方法) 并且没有正确 await,可能会导致异常丢失,
+ // // 可以通过以下方式捕获 Task 中的异常。
+ // TaskScheduler.UnobservedTaskException += (sender, args) =>
+ // {
+ // LogManager.GetLogger("UnobservedTaskExceptionLogger")
+ // .Fatal($"异步任务发生未观察到的异常:{args.Exception}");
+ // // args.SetObserved(); // 标记为已观察,防止进程终止
+ // };
}
}
\ No newline at end of file
diff --git a/DMS.WPF/Services/DataEventService.cs b/DMS.WPF/Services/DataEventService.cs
index 1f65691..1aefca9 100644
--- a/DMS.WPF/Services/DataEventService.cs
+++ b/DMS.WPF/Services/DataEventService.cs
@@ -37,10 +37,10 @@ public class DataEventService : IDataEventService
// 监听变量值变更事件
- _appDataCenterService.VariableValueChanged += OnVariableValueChanged;
- _appDataCenterService.OnLoadDataCompleted += OnLoadDataCompleted;
+ _appDataCenterService.VariableManagementService.OnVariableChanged += OnVariableValueChanged;
+ _appDataCenterService.DataLoaderService.OnLoadDataCompleted += OnLoadDataCompleted;
// 监听日志变更事件
- // _appDataCenterService.NlogChanged += _logDataService.OnNlogChanged;
+ // _appDataCenterService.OnLogChanged += _logDataService.OnNlogChanged;
}
private void OnLoadDataCompleted(object? sender, DataLoadCompletedEventArgs e)
@@ -60,18 +60,18 @@ public class DataEventService : IDataEventService
///
/// 处理变量值变更事件。
///
- private void OnVariableValueChanged(object sender, VariableValueChangedEventArgs e)
+ private void OnVariableValueChanged(object? sender, VariableChangedEventArgs e)
{
// 在UI线程上更新变量值
App.Current.Dispatcher.BeginInvoke(new Action(() =>
{
// 查找并更新对应的变量
- var variableToUpdate = _dataStorageService.Variables.FirstOrDefault(v => v.Id == e.VariableId);
+ var variableToUpdate = _dataStorageService.Variables.FirstOrDefault(v => v.Id == e.Variable.Id);
if (variableToUpdate != null)
{
- variableToUpdate.DataValue = e.NewValue;
- variableToUpdate.DisplayValue = e.NewValue;
- variableToUpdate.UpdatedAt = e.UpdateTime;
+ variableToUpdate.DataValue = e.Variable.DataValue;
+ variableToUpdate.DisplayValue = e.Variable.DisplayValue;
+ variableToUpdate.UpdatedAt = e.Variable.UpdatedAt;
}
}));
}
diff --git a/DMS.WPF/Services/DataServices.cs b/DMS.WPF/Services/DataServices.cs
deleted file mode 100644
index 79a890c..0000000
--- a/DMS.WPF/Services/DataServices.cs
+++ /dev/null
@@ -1,544 +0,0 @@
-using System.Collections.ObjectModel;
-using System.Windows;
-using AutoMapper;
-using CommunityToolkit.Mvvm.ComponentModel;
-using CommunityToolkit.Mvvm.Messaging;
-using DMS.Application.DTOs;
-using DMS.Application.DTOs.Events;
-using DMS.Core.Models;
-using DMS.Application.Interfaces;
-using DMS.Core.Enums;
-using DMS.Core.Models;
-using DMS.Message;
-using DMS.WPF.ViewModels.Items;
-using Microsoft.IdentityModel.Protocols.OpenIdConnect;
-using ObservableCollections;
-
-namespace DMS.WPF.Services;
-
-///
-/// 数据服务类,负责从数据库加载和管理各种数据,并提供数据变更通知。
-/// 继承自ObservableRecipient,可以接收消息;实现IRecipient,处理加载消息。
-///
-public partial class DataServices : ObservableObject, IRecipient, IDisposable
-{
- private readonly IMapper _mapper;
- private readonly IAppDataCenterService _appDataCenterService;
- private readonly IMqttAppService _mqttAppService;
-
-
- // 设备列表,使用ObservableProperty特性,当值改变时会自动触发属性变更通知。
- [ObservableProperty]
- private ObservableCollection _devices;
-
- // 变量表列表。
- [ObservableProperty]
- private ObservableCollection _variableTables;
-
- // 变量数据列表。
- [ObservableProperty]
- private ObservableCollection _variables;
-
- // 菜单树列表。
- [ObservableProperty]
- private ObservableCollection _menus;
-
- // 菜单树列表。
- [ObservableProperty]
- private ObservableCollection _menuTrees;
-
- // MQTT配置列表。
- [ObservableProperty]
- private ObservableCollection _mqttServers;
-
- // 日志列表。
- [ObservableProperty]
- private ObservableCollection _nlogs;
-
-
- // 设备列表变更事件,当设备列表数据更新时触发。
- public event Action> OnDeviceListChanged;
-
- // 菜单树列表变更事件,当菜单树数据更新时触发。
- public event Action> OnMenuTreeListChanged;
-
- // MQTT列表变更事件,当MQTT配置数据更新时触发。
- public event Action> OnMqttListChanged;
-
- ///
- /// 处理变量值变更事件
- ///
- private void OnVariableValueChanged(object sender, VariableValueChangedEventArgs e)
- {
- // 在UI线程上更新变量值
- App.Current.Dispatcher.BeginInvoke(new Action(() =>
- {
- // 查找并更新对应的变量
- var variableToUpdate = Variables.FirstOrDefault(v => v.Id == e.VariableId);
- if (variableToUpdate != null)
- {
- variableToUpdate.DataValue = e.NewValue;
- variableToUpdate.DisplayValue = e.NewValue;
- variableToUpdate.UpdatedAt = e.UpdateTime;
- }
- }));
- }
-
- ///
- /// 处理日志变更事件
- ///
- private void OnNlogChanged(object sender, NlogChangedEventArgs e)
- {
- // 在UI线程上更新日志
- App.Current.Dispatcher.BeginInvoke(new Action(() =>
- {
- switch (e.ChangeType)
- {
- case DataChangeType.Added:
- Nlogs.Add(_mapper.Map(e.Nlog));
- break;
- case DataChangeType.Updated:
- var existingLog = Nlogs.FirstOrDefault(l => l.Id == e.Nlog.Id);
- if (existingLog != null)
- {
- _mapper.Map(e.Nlog, existingLog);
- }
- break;
- case DataChangeType.Deleted:
- var logToRemove = Nlogs.FirstOrDefault(l => l.Id == e.Nlog.Id);
- if (logToRemove != null)
- {
- Nlogs.Remove(logToRemove);
- }
- break;
- }
- }));
- }
-
-
- ///
- /// DataServices类的构造函数。
- /// 初始化各个数据仓库。
- ///
- /// AutoMapper 实例。
- /// 数据服务中心实例。
- /// MQTT应用服务实例。
- public DataServices(IMapper mapper, IAppDataCenterService appDataCenterService, IMqttAppService mqttAppService)
- {
- _mapper = mapper;
- _appDataCenterService = appDataCenterService;
- _mqttAppService = mqttAppService;
- Devices = new ObservableCollection();
- VariableTables = new ObservableCollection();
- Variables = new ObservableCollection();
- Menus = new ObservableCollection();
- MenuTrees = new ObservableCollection();
- MqttServers = new ObservableCollection();
- Nlogs = new ObservableCollection();
-
- // 监听变量值变更事件
- _appDataCenterService.VariableValueChanged += OnVariableValueChanged;
- _appDataCenterService.OnLoadDataCompleted += OnLoadDataCompleted;
- // 监听日志变更事件
- _appDataCenterService.NlogChanged += OnNlogChanged;
-
- // 注册消息接收
- // WeakReferenceMessenger.Register(this, (r, m) => r.Receive(m));
- }
-
- private void OnLoadDataCompleted(object? sender, DataLoadCompletedEventArgs e)
- {
- if (e.IsSuccess)
- {
- LoadAllDatas();
- }
-
- }
-
-
- ///
- /// 异步加载设备数据,并以高效的方式更新UI集合。
- /// 此方法会比较新旧数据,只对有变化的设备进行更新、添加或删除,避免不必要的UI刷新。
- ///
- private void LoadAllDatas()
- {
-
- foreach (var deviceDto in _appDataCenterService.Devices.Values)
- {
- Devices.Add(_mapper.Map(deviceDto));
- }
- foreach (var device in Devices)
- {
- foreach (var variableTable in device.VariableTables)
- {
- VariableTables.Add(variableTable);
- foreach (var variable in variableTable.Variables)
- {
- Variables.Add(variable);
- }
- }
- }
-
- Menus = _mapper.Map>(_appDataCenterService.Menus.Values);
-
- // 加载MQTT服务器数据
- MqttServers = _mapper.Map>(_appDataCenterService.MqttServers.Values);
-
- // 加载日志数据
- Nlogs = _mapper.Map>(_appDataCenterService.Nlogs.Values);
-
- BuildMenuTrees();
- }
-
- public async Task AddDevice(CreateDeviceWithDetailsDto dto)
- {
- var addDto = await _appDataCenterService.CreateDeviceWithDetailsAsync(dto);
- //更新当前界面
- Devices.Add(_mapper.Map(addDto.Device));
- AddMenuItem(_mapper.Map(addDto.DeviceMenu));
- await AddVariableTable(addDto.VariableTable);
- AddMenuItem(_mapper.Map(addDto.VariableTableMenu));
- //更新数据中心
- _appDataCenterService.AddDeviceToMemory(addDto.Device);
- _appDataCenterService.AddVariableTableToMemory(addDto.VariableTable);
- _appDataCenterService.AddMenuToMemory(addDto.DeviceMenu);
- _appDataCenterService.AddMenuToMemory(addDto.VariableTableMenu);
-
- BuildMenuTrees();
-
-
- return addDto;
- }
-
-
- public async Task DeleteDevice(DeviceItemViewModel device)
- {
- if (!await _appDataCenterService.DeleteDeviceByIdAsync(device.Id))
- {
- return false;
- }
-
- _appDataCenterService.RemoveDeviceFromMemory(device.Id);
-
-
- // 1. 删除与设备关联的所有变量表及其变量
- foreach (var variableTable in device.VariableTables)
- {
- // 删除与当前变量表关联的所有变量
- DeleteVariableTable(variableTable);
- }
-
- // 2. 删除设备
- Devices.Remove(device);
-
- // 3. 删除与设备关联的菜单项
- var deviceMenu = Menus.FirstOrDefault(m => m.MenuType == MenuType.DeviceMenu && m.TargetId == device.Id);
- DeleteMenuItem(deviceMenu);
-
-
- return true;
- }
-
-
- public async Task UpdateDevice(DeviceItemViewModel device)
- {
- if (!_appDataCenterService.Devices.TryGetValue(device.Id, out var deviceDto))
- {
- return false;
- }
-
- _mapper.Map(device, deviceDto);
- if (await _appDataCenterService.UpdateDeviceAsync(deviceDto) > 0)
- {
- var menu = Menus.FirstOrDefault(m =>
- m.MenuType == MenuType.DeviceMenu &&
- m.TargetId == device.Id);
- if (menu != null)
- {
- menu.Header = device.Name;
- }
- }
-
- return true;
- }
-
-
- public async Task AddVariableTable(VariableTableDto variableTableDto,
- MenuBeanDto menuDto = null, bool isAddDb = false)
- {
- if (variableTableDto == null)
- return false;
-
- if (isAddDb && menuDto != null)
- {
- CreateVariableTableWithMenuDto createDto = new CreateVariableTableWithMenuDto();
- createDto.VariableTable = variableTableDto;
- createDto.DeviceId = variableTableDto.DeviceId;
- createDto.Menu = menuDto;
- var resDto = await _appDataCenterService.CreateVariableTableAsync(createDto);
- _mapper.Map(resDto.VariableTable, variableTableDto);
- AddMenuItem(_mapper.Map(resDto.Menu));
- }
-
- _appDataCenterService.AddVariableTableToMemory(variableTableDto);
-
- var device = Devices.FirstOrDefault(d => d.Id == variableTableDto.DeviceId);
- if (device != null)
- {
- var variableTableItemViewModel = _mapper.Map(variableTableDto);
- variableTableItemViewModel.Device = device;
- device.VariableTables.Add(variableTableItemViewModel);
- VariableTables.Add(variableTableItemViewModel);
- }
-
- return true;
- }
-
- public async Task UpdateVariableTable(VariableTableItemViewModel variableTable)
- {
- if (variableTable==null)
- {
- return false;
- }
-
- var variableTableDto = _mapper.Map(variableTable);
- if (await _appDataCenterService.UpdateVariableTableAsync(variableTableDto) > 0)
- {
-
- _appDataCenterService.UpdateVariableTableInMemory(variableTableDto);
-
- var menu = Menus.FirstOrDefault(m =>
- m.MenuType == MenuType.VariableTableMenu &&
- m.TargetId == variableTable.Id);
- if (menu != null)
- {
- menu.Header = variableTable.Name;
- }
-
- return true;
- }
-
- return false;
-
- }
- public async Task DeleteVariableTable(VariableTableItemViewModel variableTable, bool isDeleteDb = false)
- {
- if (variableTable == null)
- {
- return false;
- }
-
- if (isDeleteDb)
- {
- if (!await _appDataCenterService.DeleteVariableTableAsync(variableTable.Id))
- {
- return false;
- }
- }
-
- // 删除与当前变量表关联的所有变量
- foreach (var variable in variableTable.Variables)
- {
- Variables.Remove(variable);
- }
-
- _appDataCenterService.RemoveVariableTableFromMemory(variableTable.Id);
-
- var variableTableMenu
- = Menus.FirstOrDefault(m => m.MenuType == MenuType.VariableTableMenu && m.TargetId == variableTable.Id);
- DeleteMenuItem(variableTableMenu);
- // 删除变量表
- VariableTables.Remove(variableTable);
- variableTable.Device.VariableTables.Remove(variableTable);
- return true;
- }
-
-
- private void BuildMenuTrees()
- {
- MenuTrees.Clear();
- // 遍历所有菜单项,构建树形结构
- foreach (var menu in Menus)
- {
- var parentMenu = Menus.FirstOrDefault(m => m.Id == menu.ParentId);
- // 检查是否有父ID,并且父ID不为0(通常0或null表示根节点)
- if (parentMenu != null && menu.ParentId != 0)
- {
- // 将当前菜单添加到父菜单的Children列表中
- if (!parentMenu.Children.Contains(menu))
- {
- parentMenu.Children.Add(menu);
- }
- }
- else
- {
- // 如果没有父ID,则这是一个根菜单
- MenuTrees.Add(menu);
- }
- }
- }
-
-
- public void AddMenuItem(MenuItemViewModel menuItemViewModel)
- {
- if (menuItemViewModel == null)
- {
- return;
- }
-
- var deviceMenu = Menus.FirstOrDefault(m => m.Id == menuItemViewModel.ParentId);
- if (deviceMenu != null)
- {
- deviceMenu.Children.Add(menuItemViewModel);
- Menus.Add(menuItemViewModel);
- }
- }
-
- public void AddVariable(VariableItemViewModel variableItem)
- {
- if (variableItem == null)
- {
- return;
- }
-
- var variableTable = VariableTables.FirstOrDefault(d => d.Id == variableItem.VariableTableId);
- if (variableTable != null)
- {
- variableTable.Variables.Add(variableItem);
- Variables.Add(variableItem);
- }
- }
-
- private void DeleteMenuItem(MenuItemViewModel? menuItemViewModel)
- {
- if (menuItemViewModel == null)
- {
- return;
- }
-
- // 从扁平菜单列表中移除
- Menus.Remove(menuItemViewModel);
-
- // 从树形结构中移除
- if (menuItemViewModel.ParentId.HasValue && menuItemViewModel.ParentId.Value != 0)
- {
- // 如果有父菜单,从父菜单的Children中移除
- var parentMenu = Menus.FirstOrDefault(m => m.Id == menuItemViewModel.ParentId.Value);
- parentMenu?.Children.Remove(menuItemViewModel);
- }
- else
- {
- // 如果是根菜单,从MenuTrees中移除
- MenuTrees.Remove(menuItemViewModel);
- }
- }
-
-
- public void DeleteVariable(int id)
- {
- var variableItem = Variables.FirstOrDefault(v => v.Id == id);
- if (variableItem == null)
- {
- return;
- }
-
- var variableTable = VariableTables.FirstOrDefault(vt => vt.Id == variableItem.VariableTableId);
-
- variableTable.Variables.Remove(variableItem);
-
- Variables.Remove(variableItem);
- }
-
- ///
- /// 异步加载所有MQTT服务器数据
- ///
- public async Task LoadMqttServers(IMqttAppService mqttAppService)
- {
- try
- {
- var mqttServerDtos = await mqttAppService.GetAllMqttServersAsync();
- MqttServers = _mapper.Map>(mqttServerDtos);
- OnMqttListChanged?.Invoke(mqttServerDtos);
- }
- catch (Exception ex)
- {
- // 记录异常或处理错误
- Console.WriteLine($"加载MQTT服务器数据时发生错误: {ex.Message}");
- }
- }
-
- ///
- /// 添加MQTT服务器
- ///
- public async Task AddMqttServer(IMqttAppService mqttAppService, MqttServerItemViewModel mqttServer)
- {
- var dto = _mapper.Map(mqttServer);
- var id = await mqttAppService.CreateMqttServerAsync(dto);
- dto.Id = id;
-
- var mqttServerItem = _mapper.Map(dto);
- MqttServers.Add(mqttServerItem);
-
- return mqttServerItem;
- }
-
- ///
- /// 更新MQTT服务器
- ///
- public async Task UpdateMqttServer(IMqttAppService mqttAppService, MqttServerItemViewModel mqttServer)
- {
- var dto = _mapper.Map(mqttServer);
- await mqttAppService.UpdateMqttServerAsync(dto);
- return true;
- }
-
- ///
- /// 删除MQTT服务器
- ///
- public async Task DeleteMqttServer(IMqttAppService mqttAppService, MqttServerItemViewModel mqttServer)
- {
- await mqttAppService.DeleteMqttServerAsync(mqttServer.Id);
- MqttServers.Remove(mqttServer);
- return true;
- }
-
- ///
- /// 处理LoadMessage消息
- ///
- /// 加载消息
- public void Receive(LoadMessage message)
- {
- switch (message.LoadType)
- {
- case LoadTypes.Devices:
- // 设备数据已在IDataCenterService中处理
- break;
- case LoadTypes.Menu:
- // 菜单数据已在IDataCenterService中处理
- break;
- case LoadTypes.Mqtts:
- _ = Task.Run(async () => await LoadMqttServers(_mqttAppService));
- break;
- case LoadTypes.Logs:
- // 日志数据已在IDataCenterService中处理
- break;
- case LoadTypes.All:
- // 加载所有数据
- LoadAllDatas();
- _ = Task.Run(async () => await LoadMqttServers(_mqttAppService));
- break;
- }
- }
-
- ///
- /// 释放资源
- ///
- public void Dispose()
- {
- // 取消事件订阅
- if (_appDataCenterService != null)
- {
- _appDataCenterService.VariableValueChanged -= OnVariableValueChanged;
- }
- }
-}
\ No newline at end of file
diff --git a/DMS.WPF/Services/DeviceDataService.cs b/DMS.WPF/Services/DeviceDataService.cs
index c03680c..07d3f53 100644
--- a/DMS.WPF/Services/DeviceDataService.cs
+++ b/DMS.WPF/Services/DeviceDataService.cs
@@ -15,6 +15,7 @@ public class DeviceDataService : IDeviceDataService
{
private readonly IMapper _mapper;
private readonly IAppDataCenterService _appDataCenterService;
+ private readonly IAppDataStorageService _appDataStorageService;
private readonly IDataStorageService _dataStorageService;
private readonly IMenuDataService _menuDataService;
private readonly IVariableDataService _variableDataService;
@@ -24,10 +25,11 @@ public class DeviceDataService : IDeviceDataService
///
/// AutoMapper 实例。
/// 数据服务中心实例。
- public DeviceDataService(IMapper mapper, IAppDataCenterService appDataCenterService,IDataStorageService dataStorageService,IMenuDataService menuDataService,IVariableDataService variableDataService)
+ public DeviceDataService(IMapper mapper, IAppDataCenterService appDataCenterService,IAppDataStorageService appDataStorageService, IDataStorageService dataStorageService,IMenuDataService menuDataService,IVariableDataService variableDataService)
{
_mapper = mapper;
_appDataCenterService = appDataCenterService;
+ _appDataStorageService = appDataStorageService;
_dataStorageService = dataStorageService;
_menuDataService = menuDataService;
_variableDataService = variableDataService;
@@ -38,7 +40,7 @@ public class DeviceDataService : IDeviceDataService
///
public void LoadAllDevices()
{
- foreach (var deviceDto in _appDataCenterService.Devices.Values)
+ foreach (var deviceDto in _appDataStorageService.Devices.Values)
{
_dataStorageService.Devices.Add(_mapper.Map(deviceDto));
}
@@ -50,17 +52,17 @@ public class DeviceDataService : IDeviceDataService
///
public async Task AddDevice(CreateDeviceWithDetailsDto dto)
{
- var addDto = await _appDataCenterService.CreateDeviceWithDetailsAsync(dto);
+ var addDto = await _appDataCenterService.DeviceManagementService.CreateDeviceWithDetailsAsync(dto);
//更新当前界面
_dataStorageService.Devices.Add(_mapper.Map(addDto.Device));
_menuDataService.AddMenuItem(_mapper.Map(addDto.DeviceMenu));
await _variableDataService.AddVariableTable(addDto.VariableTable);
_menuDataService.AddMenuItem(_mapper.Map(addDto.VariableTableMenu));
//更新数据中心
- _appDataCenterService.AddDeviceToMemory(addDto.Device);
- _appDataCenterService.AddVariableTableToMemory(addDto.VariableTable);
- _appDataCenterService.AddMenuToMemory(addDto.DeviceMenu);
- _appDataCenterService.AddMenuToMemory(addDto.VariableTableMenu);
+ _appDataCenterService.DeviceManagementService.AddDeviceToMemory(addDto.Device);
+ _appDataCenterService.VariableTableManagementService.AddVariableTableToMemory(addDto.VariableTable);
+ _appDataCenterService.MenuManagementService.AddMenuToMemory(addDto.DeviceMenu);
+ _appDataCenterService.MenuManagementService.AddMenuToMemory(addDto.VariableTableMenu);
_menuDataService.BuildMenuTrees();
@@ -73,12 +75,12 @@ public class DeviceDataService : IDeviceDataService
///
public async Task DeleteDevice(DeviceItemViewModel device)
{
- if (!await _appDataCenterService.DeleteDeviceByIdAsync(device.Id))
+ if (!await _appDataCenterService.DeviceManagementService.DeleteDeviceByIdAsync(device.Id))
{
return false;
}
- _appDataCenterService.RemoveDeviceFromMemory(device.Id);
+ _appDataCenterService.DeviceManagementService.RemoveDeviceFromMemory(device.Id);
// 删除设备
_dataStorageService.Devices.Remove(device);
@@ -91,13 +93,13 @@ public class DeviceDataService : IDeviceDataService
///
public async Task UpdateDevice(DeviceItemViewModel device)
{
- if (!_appDataCenterService.Devices.TryGetValue(device.Id, out var deviceDto))
+ if (!_appDataStorageService.Devices.TryGetValue(device.Id, out var deviceDto))
{
return false;
}
_mapper.Map(device, deviceDto);
- if (await _appDataCenterService.UpdateDeviceAsync(deviceDto) > 0)
+ if (await _appDataCenterService.DeviceManagementService.UpdateDeviceAsync(deviceDto) > 0)
{
return true;
}
diff --git a/DMS.WPF/Services/LogDataService.cs b/DMS.WPF/Services/LogDataService.cs
index ae8b1cd..e3ea201 100644
--- a/DMS.WPF/Services/LogDataService.cs
+++ b/DMS.WPF/Services/LogDataService.cs
@@ -16,7 +16,7 @@ public class LogDataService : ILogDataService
{
private readonly IMapper _mapper;
private readonly IDataStorageService _dataStorageService;
- private readonly IAppDataCenterService _appDataCenterService;
+ private readonly IAppDataStorageService _appDataStorageService;
@@ -24,18 +24,18 @@ public class LogDataService : ILogDataService
/// LogDataService类的构造函数。
///
/// AutoMapper 实例。
- /// 数据服务中心实例。
- public LogDataService(IMapper mapper,IDataStorageService dataStorageService, IAppDataCenterService appDataCenterService)
+ /// 数据服务中心实例。
+ public LogDataService(IMapper mapper,IDataStorageService dataStorageService, IAppDataStorageService appDataStorageService)
{
_mapper = mapper;
_dataStorageService = dataStorageService;
- _appDataCenterService = appDataCenterService;
+ _appDataStorageService = appDataStorageService;
}
public void LoadAllLog()
{
// 加载日志数据
- _dataStorageService.Nlogs = _mapper.Map>(_appDataCenterService.Nlogs.Values);
+ _dataStorageService.Nlogs = _mapper.Map>(_appDataStorageService.Nlogs.Values);
}
///
diff --git a/DMS.WPF/Services/MenuDataService.cs b/DMS.WPF/Services/MenuDataService.cs
index 2260136..e72dfb1 100644
--- a/DMS.WPF/Services/MenuDataService.cs
+++ b/DMS.WPF/Services/MenuDataService.cs
@@ -1,7 +1,5 @@
using System.Collections.ObjectModel;
using AutoMapper;
-using CommunityToolkit.Mvvm.ComponentModel;
-using DMS.Application.DTOs;
using DMS.Application.Interfaces;
using DMS.WPF.Interfaces;
using DMS.WPF.ViewModels.Items;
@@ -15,7 +13,7 @@ public class MenuDataService : IMenuDataService
{
private readonly IMapper _mapper;
private readonly IDataStorageService _dataStorageService;
- private readonly IAppDataCenterService _appDataCenterService;
+ private readonly IAppDataStorageService _appDataStorageService;
@@ -23,17 +21,17 @@ public class MenuDataService : IMenuDataService
/// MenuDataService类的构造函数。
///
/// AutoMapper 实例。
- /// 数据服务中心实例。
- public MenuDataService(IMapper mapper,IDataStorageService dataStorageService, IAppDataCenterService appDataCenterService)
+ /// 数据服务中心实例。
+ public MenuDataService(IMapper mapper,IDataStorageService dataStorageService, IAppDataStorageService appDataStorageService)
{
_mapper = mapper;
_dataStorageService = dataStorageService;
- _appDataCenterService = appDataCenterService;
+ _appDataStorageService = appDataStorageService;
}
public void LoadAllMenus()
{
- _dataStorageService.Menus = _mapper.Map>(_appDataCenterService.Menus.Values);
+ _dataStorageService.Menus = _mapper.Map>(_appDataStorageService.Menus.Values);
BuildMenuTrees();
}
diff --git a/DMS.WPF/Services/MqttDataService.cs b/DMS.WPF/Services/MqttDataService.cs
index 8701fb0..fcf6b5f 100644
--- a/DMS.WPF/Services/MqttDataService.cs
+++ b/DMS.WPF/Services/MqttDataService.cs
@@ -14,7 +14,7 @@ namespace DMS.WPF.Services;
public class MqttDataService : IMqttDataService
{
private readonly IMapper _mapper;
- private readonly IAppDataCenterService _appDataCenterService;
+ private readonly IAppDataStorageService _appDataStorageService;
private readonly IDataStorageService _dataStorageService;
private readonly IMqttAppService _mqttAppService;
@@ -24,10 +24,10 @@ public class MqttDataService : IMqttDataService
///
/// AutoMapper 实例。
/// MQTT应用服务实例。
- public MqttDataService(IMapper mapper,IAppDataCenterService appDataCenterService,IDataStorageService dataStorageService, IMqttAppService mqttAppService)
+ public MqttDataService(IMapper mapper, IAppDataStorageService appDataStorageService, IDataStorageService dataStorageService, IMqttAppService mqttAppService)
{
_mapper = mapper;
- _appDataCenterService = appDataCenterService;
+ _appDataStorageService = appDataStorageService;
_dataStorageService = dataStorageService;
_mqttAppService = mqttAppService;
}
@@ -40,7 +40,7 @@ public class MqttDataService : IMqttDataService
try
{
// 加载MQTT服务器数据
- _dataStorageService.MqttServers = _mapper.Map>(_appDataCenterService.MqttServers.Values);
+ _dataStorageService.MqttServers = _mapper.Map>(_appDataStorageService.MqttServers.Values);
}
catch (Exception ex)
{
diff --git a/DMS.WPF/Services/VariableDataService.cs b/DMS.WPF/Services/VariableDataService.cs
index 0433ef7..d8e0b13 100644
--- a/DMS.WPF/Services/VariableDataService.cs
+++ b/DMS.WPF/Services/VariableDataService.cs
@@ -60,11 +60,11 @@ public class VariableDataService : IVariableDataService
createDto.VariableTable = variableTableDto;
createDto.DeviceId = variableTableDto.DeviceId;
createDto.Menu = menuDto;
- var resDto = await _appDataCenterService.CreateVariableTableAsync(createDto);
+ var resDto = await _appDataCenterService.VariableTableManagementService.CreateVariableTableAsync(createDto);
_mapper.Map(resDto.VariableTable, variableTableDto);
}
- _appDataCenterService.AddVariableTableToMemory(variableTableDto);
+ _appDataCenterService.VariableTableManagementService.AddVariableTableToMemory(variableTableDto);
return true;
}
@@ -80,9 +80,9 @@ public class VariableDataService : IVariableDataService
}
var variableTableDto = _mapper.Map(variableTable);
- if (await _appDataCenterService.UpdateVariableTableAsync(variableTableDto) > 0)
+ if (await _appDataCenterService.VariableTableManagementService.UpdateVariableTableAsync(variableTableDto) > 0)
{
- _appDataCenterService.UpdateVariableTableInMemory(variableTableDto);
+ _appDataCenterService.VariableTableManagementService.UpdateVariableTableInMemory(variableTableDto);
return true;
}
@@ -102,7 +102,7 @@ public class VariableDataService : IVariableDataService
if (isDeleteDb)
{
- if (!await _appDataCenterService.DeleteVariableTableAsync(variableTable.Id))
+ if (!await _appDataCenterService.VariableTableManagementService.DeleteVariableTableAsync(variableTable.Id))
{
return false;
}
@@ -114,7 +114,7 @@ public class VariableDataService : IVariableDataService
_dataStorageService.Variables.Remove(variable);
}
- _appDataCenterService.RemoveVariableTableFromMemory(variableTable.Id);
+ _appDataCenterService.VariableTableManagementService.RemoveVariableTableFromMemory(variableTable.Id);
// 删除变量表
_dataStorageService.VariableTables.Remove(variableTable);
diff --git a/DMS.WPF/Services/VariableTableDataService.cs b/DMS.WPF/Services/VariableTableDataService.cs
index cd76bb8..6b71d8f 100644
--- a/DMS.WPF/Services/VariableTableDataService.cs
+++ b/DMS.WPF/Services/VariableTableDataService.cs
@@ -50,12 +50,12 @@ public class VariableTableDataService : IVariableTableDataService
createDto.VariableTable = variableTableDto;
createDto.DeviceId = variableTableDto.DeviceId;
createDto.Menu = menuDto;
- var resDto = await _appDataCenterService.CreateVariableTableAsync(createDto);
+ var resDto = await _appDataCenterService.VariableTableManagementService.CreateVariableTableAsync(createDto);
_mapper.Map(resDto.VariableTable, variableTableDto);
_menuDataService.AddMenuItem(_mapper.Map(resDto.Menu));
}
- _appDataCenterService.AddVariableTableToMemory(variableTableDto);
+ _appDataCenterService.VariableTableManagementService.AddVariableTableToMemory(variableTableDto);
// var device = _deviceDataService.Devices.FirstOrDefault(d => d.Id == variableTableDto.DeviceId);
// if (device != null)
@@ -78,9 +78,9 @@ public class VariableTableDataService : IVariableTableDataService
}
var variableTableDto = _mapper.Map(variableTable);
- if (await _appDataCenterService.UpdateVariableTableAsync(variableTableDto) > 0)
+ if (await _appDataCenterService.VariableTableManagementService.UpdateVariableTableAsync(variableTableDto) > 0)
{
- _appDataCenterService.UpdateVariableTableInMemory(variableTableDto);
+ _appDataCenterService.VariableTableManagementService.UpdateVariableTableInMemory(variableTableDto);
var menu = _dataStorageService.Menus.FirstOrDefault(m =>
m.MenuType == MenuType.VariableTableMenu &&
@@ -105,7 +105,7 @@ public class VariableTableDataService : IVariableTableDataService
if (isDeleteDb)
{
- if (!await _appDataCenterService.DeleteVariableTableAsync(variableTable.Id))
+ if (!await _appDataCenterService.VariableTableManagementService.DeleteVariableTableAsync(variableTable.Id))
{
return false;
}
@@ -117,7 +117,7 @@ public class VariableTableDataService : IVariableTableDataService
_dataStorageService.Variables.Remove(variable);
}
- _appDataCenterService.RemoveVariableTableFromMemory(variableTable.Id);
+ _appDataCenterService.VariableTableManagementService.RemoveVariableTableFromMemory(variableTable.Id);
var variableTableMenu
=_dataStorageService.Menus.FirstOrDefault(m => m.MenuType == MenuType.VariableTableMenu && m.TargetId == variableTable.Id);
diff --git a/DMS.WPF/ViewModels/LogHistoryViewModel.cs b/DMS.WPF/ViewModels/LogHistoryViewModel.cs
index a41d897..d1487e1 100644
--- a/DMS.WPF/ViewModels/LogHistoryViewModel.cs
+++ b/DMS.WPF/ViewModels/LogHistoryViewModel.cs
@@ -65,7 +65,7 @@ partial class LogHistoryViewModel : ViewModelBase,IDisposable
LogItemListView = _synchronizedView.ToNotifyCollectionChanged();
// 订阅日志变更事件
- _appDataCenterService.NlogChanged += _wpfDataService.LogDataService.OnNlogChanged;
+ _appDataCenterService.LogManagementService.OnLogChanged += _wpfDataService.LogDataService.OnNlogChanged;
}
///
@@ -244,7 +244,7 @@ partial class LogHistoryViewModel : ViewModelBase,IDisposable
public void Dispose()
{
// 取消订阅事件
- _appDataCenterService.NlogChanged -= OnNlogChanged;
+ _appDataCenterService.LogManagementService.OnLogChanged -= OnNlogChanged;
}
}
\ No newline at end of file
diff --git a/DMS.WPF/ViewModels/SplashViewModel.cs b/DMS.WPF/ViewModels/SplashViewModel.cs
index c8eb91f..42481d8 100644
--- a/DMS.WPF/ViewModels/SplashViewModel.cs
+++ b/DMS.WPF/ViewModels/SplashViewModel.cs
@@ -52,7 +52,7 @@ public partial class SplashViewModel : ObservableObject
_initializeService.InitializeTables();
_initializeService.InitializeMenus();
LoadingMessage = "正在加载系统配置...";
- await _appDataCenterService.LoadAllDataToMemoryAsync();
+ await _appDataCenterService.DataLoaderService.LoadAllDataToMemoryAsync();
// 可以在这里添加加载配置的逻辑
await Task.Delay(500); // 模拟耗时