using System.Collections.Concurrent; using DMS.Application.DTOs; using DMS.Application.DTOs.Events; using DMS.Core.Models; namespace DMS.Application.Interfaces; /// /// 定义数据管理相关的应用服务操作,负责管理所有的数据,包括设备、变量表和变量。 /// public interface IDataCenterService { #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 数据存储访问 /// /// 获取所有设备的安全字典。 /// ConcurrentDictionary Devices { get; } /// /// 获取所有变量表的安全字典。 /// ConcurrentDictionary VariableTables { get; } /// /// 获取所有变量的安全字典。 /// ConcurrentDictionary Variables { get; } /// /// 获取所有菜单的安全字典。 /// ConcurrentDictionary Menus { get; } /// /// 获取所有菜单树的安全字典。 /// ConcurrentDictionary MenuTrees { get; } /// /// 获取所有MQTT服务器的安全字典。 /// ConcurrentDictionary MqttServers { get; } #endregion #region 数据加载和初始化 /// /// 异步加载所有设备及其关联数据到内存中。 /// Task LoadAllDataToMemoryAsync(); /// /// 异步加载所有设备及其关联数据。 /// Task> LoadAllDevicesAsync(); /// /// 异步加载所有变量表及其关联数据。 /// Task> LoadAllVariableTablesAsync(); /// /// 异步加载所有变量数据。 /// Task> LoadAllVariablesAsync(); /// /// 异步加载所有菜单数据。 /// Task> LoadAllMenusAsync(); /// /// 异步加载所有MQTT服务器数据。 /// Task> LoadAllMqttServersAsync(); #endregion #region 事件定义 /// /// 当数据加载完成时触发 /// event EventHandler DataLoadCompleted; /// /// 当设备数据发生变化时触发 /// event EventHandler DeviceChanged; /// /// 当变量表数据发生变化时触发 /// event EventHandler VariableTableChanged; /// /// 当变量数据发生变化时触发 /// event EventHandler VariableChanged; /// /// 当菜单数据发生变化时触发 /// event EventHandler MenuChanged; /// /// 当MQTT服务器数据发生变化时触发 /// event EventHandler MqttServerChanged; /// /// 当变量值发生变化时触发 /// event EventHandler VariableValueChanged; void OnVariableValueChanged(VariableValueChangedEventArgs e); #endregion }