diff --git a/DMS.Application/Interfaces/Management/IDeviceManagementService.cs b/DMS.Application/Interfaces/Management/IDeviceManagementService.cs index 60ae52f..3354ceb 100644 --- a/DMS.Application/Interfaces/Management/IDeviceManagementService.cs +++ b/DMS.Application/Interfaces/Management/IDeviceManagementService.cs @@ -42,16 +42,19 @@ public interface IDeviceManagementService /// /// 在内存中添加设备 + /// 注意:此方法通常由其他操作(如CreateDeviceWithDetailsAsync)自动调用,一般不需要直接调用 /// void AddDeviceToMemory(DeviceDto deviceDto); /// /// 在内存中更新设备 + /// 注意:此方法通常由其他操作(如UpdateDeviceAsync)自动调用,一般不需要直接调用 /// void UpdateDeviceInMemory(DeviceDto deviceDto); /// /// 在内存中删除设备 + /// 注意:此方法通常由其他操作(如DeleteDeviceByIdAsync)自动调用,一般不需要直接调用 /// void RemoveDeviceFromMemory(int deviceId); diff --git a/DMS.Application/Services/Management/DeviceManagementService.cs b/DMS.Application/Services/Management/DeviceManagementService.cs index c444cf7..6a97871 100644 --- a/DMS.Application/Services/Management/DeviceManagementService.cs +++ b/DMS.Application/Services/Management/DeviceManagementService.cs @@ -47,7 +47,15 @@ public class DeviceManagementService : IDeviceManagementService /// public async Task CreateDeviceWithDetailsAsync(CreateDeviceWithDetailsDto dto) { - return await _deviceAppService.CreateDeviceWithDetailsAsync(dto); + var result = await _deviceAppService.CreateDeviceWithDetailsAsync(dto); + + // 创建成功后,将设备添加到内存中 + if (result?.Device != null) + { + AddDeviceToMemory(result.Device); + } + + return result; } /// @@ -55,7 +63,15 @@ public class DeviceManagementService : IDeviceManagementService /// public async Task UpdateDeviceAsync(DeviceDto deviceDto) { - return await _deviceAppService.UpdateDeviceAsync(deviceDto); + var result = await _deviceAppService.UpdateDeviceAsync(deviceDto); + + // 更新成功后,更新内存中的设备 + if (result > 0 && deviceDto != null) + { + UpdateDeviceInMemory(deviceDto); + } + + return result; } /// @@ -63,7 +79,16 @@ public class DeviceManagementService : IDeviceManagementService /// public async Task DeleteDeviceByIdAsync(int deviceId) { - return await _deviceAppService.DeleteDeviceByIdAsync(deviceId); + var device = await _deviceAppService.GetDeviceByIdAsync(deviceId); // 获取设备信息用于内存删除 + var result = await _deviceAppService.DeleteDeviceByIdAsync(deviceId); + + // 删除成功后,从内存中移除设备 + if (result && device != null) + { + RemoveDeviceFromMemory(deviceId); + } + + return result; } /// @@ -72,6 +97,13 @@ public class DeviceManagementService : IDeviceManagementService public async Task ToggleDeviceActiveStateAsync(int id) { await _deviceAppService.ToggleDeviceActiveStateAsync(id); + + // 更新内存中的设备状态 + var device = await _deviceAppService.GetDeviceByIdAsync(id); + if (device != null) + { + UpdateDeviceInMemory(device); + } } /// diff --git a/DMS.Application/Services/Monitoring/DeviceMonitoringService.cs b/DMS.Application/Services/Monitoring/DeviceMonitoringService.cs index 2f48abd..7dd8884 100644 --- a/DMS.Application/Services/Monitoring/DeviceMonitoringService.cs +++ b/DMS.Application/Services/Monitoring/DeviceMonitoringService.cs @@ -40,7 +40,11 @@ public class DeviceMonitoringService : IDeviceMonitoringService, IDisposable { if (_appDataStorageService.Devices.TryGetValue(e.DeviceId, out var device)) { - _appDataCenterService.DeviceManagementService.UpdateDeviceAsync(device); + // 更新设备激活状态 - 同时更新数据库和内存 + _ = Task.Run(async () => + { + await _appDataCenterService.DeviceManagementService.UpdateDeviceAsync(device); + }); } } diff --git a/DMS.WPF/Services/DeviceDataService.cs b/DMS.WPF/Services/DeviceDataService.cs index 269b929..480ed2a 100644 --- a/DMS.WPF/Services/DeviceDataService.cs +++ b/DMS.WPF/Services/DeviceDataService.cs @@ -103,8 +103,6 @@ public class DeviceDataService : IDeviceDataService //给界面添加设备 _dataStorageService.Devices.Add(addDto.Device.Id, _mapper.Map(addDto.Device)); - //更新数据中心 - _appDataCenterService.DeviceManagementService.AddDeviceToMemory(addDto.Device); // 给界面添加设备菜单 if (addDto.DeviceMenu != null) @@ -144,13 +142,11 @@ public class DeviceDataService : IDeviceDataService public async Task DeleteDevice(DeviceItemViewModel device) { - //从数据库删除设备相关数据 + //从数据库和内存中删除设备相关数据 if (!await _appDataCenterService.DeviceManagementService.DeleteDeviceByIdAsync(device.Id)) { return false; } - //从Application项目删除设备相关数据 - _appDataCenterService.DeviceManagementService.RemoveDeviceFromMemory(device.Id); // 从界面删除设备相关数据集 @@ -184,6 +180,7 @@ public class DeviceDataService : IDeviceDataService _mapper.Map(device, deviceDto); if (await _appDataCenterService.DeviceManagementService.UpdateDeviceAsync(deviceDto) > 0) { + // 更新数据库后会自动更新内存,无需额外操作 return true; }