diff --git a/DMS.Application/Interfaces/Management/IDeviceManagementService.cs b/DMS.Application/Interfaces/Management/IDeviceManagementService.cs index 466db7c..54db4a5 100644 --- a/DMS.Application/Interfaces/Management/IDeviceManagementService.cs +++ b/DMS.Application/Interfaces/Management/IDeviceManagementService.cs @@ -37,23 +37,7 @@ public interface IDeviceManagementService /// Task ToggleDeviceActiveStateAsync(int id); - /// - /// 在内存中添加设备 - /// 注意:此方法通常由其他操作(如CreateDeviceWithDetailsAsync)自动调用,一般不需要直接调用 - /// - void AddDeviceToMemory(DeviceDto deviceDto); - - /// - /// 在内存中更新设备 - /// 注意:此方法通常由其他操作(如UpdateDeviceAsync)自动调用,一般不需要直接调用 - /// - void UpdateDeviceInMemory(DeviceDto deviceDto); - - /// - /// 在内存中删除设备 - /// 注意:此方法通常由其他操作(如DeleteDeviceByIdAsync)自动调用,一般不需要直接调用 - /// - void RemoveDeviceFromMemory(int deviceId); + } \ No newline at end of file diff --git a/DMS.Application/Services/Management/DeviceManagementService.cs b/DMS.Application/Services/Management/DeviceManagementService.cs index 9388a7e..9b8a962 100644 --- a/DMS.Application/Services/Management/DeviceManagementService.cs +++ b/DMS.Application/Services/Management/DeviceManagementService.cs @@ -49,7 +49,10 @@ public class DeviceManagementService : IDeviceManagementService // 创建成功后,将设备添加到内存中 if (result?.Device != null) { - AddDeviceToMemory(result.Device); + if (_appDataStorageService.Devices.TryAdd(result.Device.Id, result.Device)) + { + _eventService.RaiseDeviceChanged(this, new DeviceChangedEventArgs(DataChangeType.Added, result.Device)); + } } return result; @@ -65,7 +68,8 @@ public class DeviceManagementService : IDeviceManagementService // 更新成功后,更新内存中的设备 if (result > 0 && deviceDto != null) { - UpdateDeviceInMemory(deviceDto); + _appDataStorageService.Devices.AddOrUpdate(deviceDto.Id, deviceDto, (key, oldValue) => deviceDto); + _eventService.RaiseDeviceChanged(this, new DeviceChangedEventArgs(DataChangeType.Updated, deviceDto)); } return result; @@ -82,7 +86,22 @@ public class DeviceManagementService : IDeviceManagementService // 删除成功后,从内存中移除设备 if (result && device != null) { - RemoveDeviceFromMemory(deviceId); + if (_appDataStorageService.Devices.TryGetValue(deviceId, out var deviceDto)) + { + foreach (var variableTable in deviceDto.VariableTables) + { + foreach (var variable in variableTable.Variables) + { + _appDataStorageService.Variables.TryRemove(variable.Id, out _); + } + + _appDataStorageService.VariableTables.TryRemove(variableTable.Id, out _); + } + + _appDataStorageService.Devices.TryRemove(deviceId, out _); + + _eventService.RaiseDeviceChanged(this, new DeviceChangedEventArgs(DataChangeType.Deleted, deviceDto)); + } } return result; @@ -99,52 +118,12 @@ public class DeviceManagementService : IDeviceManagementService var device = await _deviceAppService.GetDeviceByIdAsync(id); if (device != null) { - UpdateDeviceInMemory(device); + _appDataStorageService.Devices.AddOrUpdate(device.Id, device, (key, oldValue) => device); + _eventService.RaiseDeviceChanged(this, new DeviceChangedEventArgs(DataChangeType.Updated, device)); } } - /// - /// 在内存中添加设备 - /// - public void AddDeviceToMemory(DeviceDto deviceDto) - { - if (_appDataStorageService.Devices.TryAdd(deviceDto.Id, deviceDto)) - { - _eventService.RaiseDeviceChanged(this, new DeviceChangedEventArgs(DataChangeType.Added, deviceDto)); - } - } - - /// - /// 在内存中更新设备 - /// - public void UpdateDeviceInMemory(DeviceDto deviceDto) - { - _appDataStorageService.Devices.AddOrUpdate(deviceDto.Id, deviceDto, (key, oldValue) => deviceDto); - _eventService.RaiseDeviceChanged(this, new DeviceChangedEventArgs(DataChangeType.Updated, deviceDto)); - } - - /// - /// 在内存中删除设备 - /// - public void RemoveDeviceFromMemory(int deviceId) - { - if (_appDataStorageService.Devices.TryGetValue(deviceId, out var deviceDto)) - { - foreach (var variableTable in deviceDto.VariableTables) - { - foreach (var variable in variableTable.Variables) - { - _appDataStorageService.Variables.TryRemove(variable.Id, out _); - } - - _appDataStorageService.VariableTables.TryRemove(variableTable.Id, out _); - } - - _appDataStorageService.Devices.TryRemove(deviceId, out _); - - _eventService.RaiseDeviceChanged(this, new DeviceChangedEventArgs(DataChangeType.Deleted, deviceDto)); - } - } + } \ No newline at end of file