using DMS.Application.DTOs; using DMS.Core.Models; using System.Collections.Concurrent; using System.Collections.Generic; using System.Threading.Tasks; 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 变量管理 /// /// 异步根据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); /// /// 异步批量导入变量。 /// Task BatchImportVariablesAsync(List variables); /// /// 检测一组变量是否已存在。 /// /// 要检查的变量列表。 /// 返回输入列表中已存在的变量。 Task> FindExistingVariablesAsync(IEnumerable variablesToCheck); /// /// 检测单个变量是否已存在。 /// /// 要检查的变量。 /// 如果变量已存在则返回该变量,否则返回null。 Task FindExistingVariableAsync(VariableDto variableToCheck); /// /// 在内存中添加变量 /// void AddVariableToMemory(VariableDto variableDto); /// /// 在内存中更新变量 /// void UpdateVariableInMemory(VariableDto variableDto); /// /// 在内存中删除变量 /// void RemoveVariableFromMemory(int variableId); /// /// 批量在内存中添加变量 /// void AddVariablesToMemory(List variables); /// /// 批量在内存中更新变量 /// void UpdateVariablesInMemory(List variables); /// /// 批量在内存中删除变量 /// void RemoveVariablesFromMemory(List variableIds); #endregion #region 数据存储访问 /// /// 获取所有设备的安全字典。 /// ConcurrentDictionary Devices { get; } /// /// 获取所有变量表的安全字典。 /// ConcurrentDictionary VariableTables { get; } /// /// 获取所有变量的安全字典。 /// ConcurrentDictionary Variables { get; } #endregion #region 数据加载和初始化 /// /// 异步加载所有设备及其关联数据到内存中。 /// Task LoadAllDataToMemoryAsync(); /// /// 异步加载所有设备及其关联数据。 /// Task> LoadAllDevicesAsync(); /// /// 异步加载所有变量表及其关联数据。 /// Task> LoadAllVariableTablesAsync(); /// /// 异步加载所有变量数据。 /// Task> LoadAllVariablesAsync(); #endregion }