初步完成AppDataCenterService的重构
This commit is contained in:
@@ -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;
|
||||
|
||||
/// <summary>
|
||||
/// 当数据加载完成时触发
|
||||
/// </summary>
|
||||
public event EventHandler<DataLoadCompletedEventArgs> 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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 异步加载所有设备及其关联数据到内存中
|
||||
/// </summary>
|
||||
public async Task LoadAllDataToMemoryAsync(
|
||||
ConcurrentDictionary<int, DeviceDto> devices,
|
||||
ConcurrentDictionary<int, VariableTableDto> variableTables,
|
||||
ConcurrentDictionary<int, VariableDto> variables,
|
||||
ConcurrentDictionary<int, MenuBeanDto> menus,
|
||||
ConcurrentDictionary<int, MenuBeanDto> menuTrees,
|
||||
ConcurrentDictionary<int, MqttServerDto> mqttServers,
|
||||
ConcurrentDictionary<int, NlogDto> 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,"数据加载成功"));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user