wip
This commit is contained in:
@@ -12,11 +12,11 @@ public interface IDeviceAppService
|
||||
/// <summary>
|
||||
/// 异步根据ID获取设备DTO。
|
||||
/// </summary>
|
||||
Task<Device> GetDeviceByIdAsync(int id);
|
||||
Task<Device> GetDeviceByIdAsync(int id);
|
||||
/// <summary>
|
||||
/// 异步获取所有设备DTO列表。
|
||||
/// </summary>
|
||||
Task<List<Device>> GetAllDevicesAsync();
|
||||
Task<List<Device>> GetAllDevicesAsync();
|
||||
/// <summary>
|
||||
/// 异步创建一个新设备及其关联的变量表和菜单(事务性操作)。
|
||||
/// </summary>
|
||||
@@ -27,16 +27,12 @@ public interface IDeviceAppService
|
||||
/// <summary>
|
||||
/// 异步更新一个已存在的设备。
|
||||
/// </summary>
|
||||
Task<int> UpdateDeviceAsync(Device device);
|
||||
/// <summary>
|
||||
/// 异步删除一个设备。
|
||||
/// </summary>
|
||||
Task DeleteDeviceAsync(Device device);
|
||||
Task<int> UpdateDeviceAsync(Device device);
|
||||
|
||||
/// <summary>
|
||||
/// 异步删除一个设备。
|
||||
/// </summary>
|
||||
Task<bool> DeleteDeviceByIdAsync(int deviceId);
|
||||
Task<bool> DeleteAsync(Device device);
|
||||
|
||||
/// <summary>
|
||||
/// 异步切换设备的激活状态。
|
||||
@@ -46,4 +42,5 @@ public interface IDeviceAppService
|
||||
/// <summary>
|
||||
/// 异步获取指定协议类型的设备列表。
|
||||
/// </summary>
|
||||
Task<List<Device>> GetDevicesByProtocolAsync(ProtocolType protocol);}
|
||||
Task<List<Device>> GetDevicesByProtocolAsync(ProtocolType protocol);
|
||||
}
|
||||
@@ -28,7 +28,7 @@ public interface IDeviceManagementService
|
||||
/// <summary>
|
||||
/// 异步删除一个设备。
|
||||
/// </summary>
|
||||
Task<bool> DeleteDeviceByIdAsync(int deviceId);
|
||||
Task<bool> DeleteAsync(Device device);
|
||||
|
||||
/// <summary>
|
||||
/// 异步切换设备的激活状态。
|
||||
|
||||
@@ -68,6 +68,7 @@ public class DeviceAppService : IDeviceAppService
|
||||
// 假设有设备菜单
|
||||
if (dto.DeviceMenu is not null)
|
||||
{
|
||||
dto.DeviceMenu.TargetId = dto.Device.Id;
|
||||
dto.DeviceMenu = await _repoManager.Menus.AddAsync(dto.DeviceMenu);
|
||||
}
|
||||
|
||||
@@ -82,6 +83,7 @@ public class DeviceAppService : IDeviceAppService
|
||||
{
|
||||
throw new InvalidOperationException($"添加设备变量表失败,设备:{dto.Device.Name},变量表:{dto?.VariableTable?.Name}");
|
||||
}
|
||||
dto.VariableTable.Device = dto.Device;
|
||||
|
||||
// 假设有设备菜单
|
||||
if (dto.VariableTableMenu is not null && dto.VariableTableMenu is not null)
|
||||
@@ -136,15 +138,6 @@ public class DeviceAppService : IDeviceAppService
|
||||
return res;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 异步删除一个设备。
|
||||
/// </summary>
|
||||
/// <param name="device">要删除的设备实体。</param>
|
||||
/// <returns>表示异步操作的任务。</returns>
|
||||
public async Task DeleteDeviceAsync(Device device)
|
||||
{
|
||||
await DeleteDeviceByIdAsync(device.Id);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 异步根据ID删除一个设备,包括其关联的变量表和菜单(事务性操作)。
|
||||
@@ -153,19 +146,19 @@ public class DeviceAppService : IDeviceAppService
|
||||
/// <returns>如果删除成功则为 true,否则为 false。</returns>
|
||||
/// <exception cref="InvalidOperationException">如果删除设备失败。</exception>
|
||||
/// <exception cref="ApplicationException">如果删除设备时发生其他错误。</exception>
|
||||
public async Task<bool> DeleteDeviceByIdAsync(int deviceId)
|
||||
public async Task<bool> DeleteAsync(Device device)
|
||||
{
|
||||
try
|
||||
{
|
||||
await _repoManager.BeginTranAsync();
|
||||
var delRes = await _repoManager.Devices.DeleteByIdAsync(deviceId);
|
||||
var delRes = await _repoManager.Devices.DeleteAsync(device);
|
||||
if (delRes == 0)
|
||||
{
|
||||
throw new InvalidOperationException($"删除设备失败:设备ID:{deviceId},请检查设备Id是否存在");
|
||||
throw new InvalidOperationException($"删除设备失败:设备ID:{device.Id},请检查设备Id是否存在");
|
||||
}
|
||||
|
||||
// 删除关联的变量表
|
||||
await _repoManager.VariableTables.DeleteByDeviceIdAsync(deviceId);
|
||||
await _repoManager.VariableTables.DeleteAsync(device.VariableTables);
|
||||
// 删除关联的变量
|
||||
await _repoManager.Variables.DeleteByVariableTableIdAsync(deviceId);
|
||||
|
||||
|
||||
@@ -45,6 +45,9 @@ public class DeviceManagementService : IDeviceManagementService
|
||||
/// </summary>
|
||||
public async Task<CreateDeviceWithDetailsDto> CreateDeviceWithDetailsAsync(CreateDeviceWithDetailsDto dto)
|
||||
{
|
||||
|
||||
|
||||
|
||||
var result = await _deviceAppService.CreateDeviceWithDetailsAsync(dto);
|
||||
|
||||
// 创建成功后,将设备添加到内存中
|
||||
@@ -54,10 +57,25 @@ public class DeviceManagementService : IDeviceManagementService
|
||||
{
|
||||
_eventService.RaiseDeviceChanged(this, new DeviceChangedEventArgs(DataChangeType.Added, result.Device));
|
||||
}
|
||||
if (_appStorageService.VariableTables.TryAdd(result.VariableTable.Id, result.VariableTable))
|
||||
if (result.VariableTable is not null)
|
||||
{
|
||||
_eventService.RaiseVariableTableChanged(this, new VariableTableChangedEventArgs(DataChangeType.Added, result.VariableTable));
|
||||
if (_appStorageService.VariableTables.TryAdd(result.VariableTable.Id, result.VariableTable))
|
||||
{
|
||||
_eventService.RaiseVariableTableChanged(this, new VariableTableChangedEventArgs(DataChangeType.Added, result.VariableTable));
|
||||
}
|
||||
}
|
||||
|
||||
if (result.DeviceMenu is not null)
|
||||
{
|
||||
_appStorageService.Menus.TryAdd(result.DeviceMenu.Id, result.DeviceMenu);
|
||||
}
|
||||
|
||||
if (result.VariableTableMenu is not null)
|
||||
{
|
||||
_appStorageService.Menus.TryAdd(result.VariableTableMenu.Id, result.VariableTableMenu);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
return result;
|
||||
@@ -83,13 +101,12 @@ public class DeviceManagementService : IDeviceManagementService
|
||||
/// <summary>
|
||||
/// 异步删除一个设备。
|
||||
/// </summary>
|
||||
public async Task<bool> DeleteDeviceByIdAsync(int deviceId)
|
||||
public async Task<bool> DeleteAsync(Device device)
|
||||
{
|
||||
var device = await _deviceAppService.GetDeviceByIdAsync(deviceId); // 获取设备信息用于内存删除
|
||||
var result = await _deviceAppService.DeleteDeviceByIdAsync(deviceId);
|
||||
var result = await _deviceAppService.DeleteDeviceByIdAsync(device);
|
||||
|
||||
// 删除成功后,从内存中移除设备
|
||||
if (result && device != null)
|
||||
if (result )
|
||||
{
|
||||
if (_appStorageService.Devices.TryGetValue(deviceId, out var deviceInStorage))
|
||||
{
|
||||
|
||||
@@ -144,9 +144,6 @@ public class MenuRepository : BaseRepository<DbMenu>, IMenuRepository
|
||||
.ToChildListAsync(c => c.ParentId, menu.Id);
|
||||
var delConut = await _dbContext.GetInstance().Deleteable<DbMenu>(childList)
|
||||
.ExecuteCommandAsync();
|
||||
delConut += await _dbContext.GetInstance().Deleteable<DbMenu>()
|
||||
.Where(m => m.Id == menu.Id)
|
||||
.ExecuteCommandAsync();
|
||||
stopwatch.Stop();
|
||||
_logger.LogInformation($"Delete {typeof(DbMenu)},TargetId={targetId},耗时:{stopwatch.ElapsedMilliseconds}ms");
|
||||
return delConut;
|
||||
|
||||
@@ -302,10 +302,10 @@ public partial class App : System.Windows.Application
|
||||
services.AddSingleton<DMS.Application.Interfaces.IEventService, DMS.Application.Services.EventService>();
|
||||
|
||||
// 注册新的数据服务
|
||||
services.AddSingleton<IDeviceDataService, DeviceWpfService>();
|
||||
services.AddSingleton<IDeviceDataService, DeviceViewService>();
|
||||
services.AddSingleton<IVariableDataService, VariableDataService>();
|
||||
services.AddSingleton<IVariableTableDataService, VariableTableDataService>();
|
||||
services.AddSingleton<IMenuWpfService, MenuWpfService>();
|
||||
services.AddSingleton<IMenuViewService, MenuViewService>();
|
||||
services.AddSingleton<IMqttDataService, MqttDataService>();
|
||||
services.AddSingleton<IMqttAliasDataService, MqttAliasDataService>();
|
||||
services.AddSingleton<ILogDataService, LogDataService>();
|
||||
|
||||
@@ -187,4 +187,10 @@
|
||||
</None>
|
||||
</ItemGroup>
|
||||
|
||||
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="Services\ViewService\" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@@ -22,7 +22,7 @@ public interface IDeviceDataService
|
||||
/// <summary>
|
||||
/// 添加设备。
|
||||
/// </summary>
|
||||
Task<CreateDeviceWithDetailsDto> AddDevice(CreateDeviceWithDetailsDto dto);
|
||||
Task<CreateDeviceWithDetailsDto?> AddDeviceAsync(CreateDeviceWithDetailsDto dto);
|
||||
|
||||
/// <summary>
|
||||
/// 删除设备。
|
||||
@@ -33,5 +33,4 @@ public interface IDeviceDataService
|
||||
/// 更新设备。
|
||||
/// </summary>
|
||||
Task<bool> UpdateDevice(DeviceItem device);
|
||||
Task<CreateDeviceWithDetailsDto?> AddDevice(CreateDeviceWithDetailsDto dto);
|
||||
}
|
||||
@@ -6,7 +6,7 @@ namespace DMS.WPF.Interfaces;
|
||||
/// <summary>
|
||||
/// 菜单数据服务接口。
|
||||
/// </summary>
|
||||
public interface IMenuWpfService
|
||||
public interface IMenuViewService
|
||||
{
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ public interface IWPFDataService
|
||||
/// <summary>
|
||||
/// 菜单数据服务。
|
||||
/// </summary>
|
||||
IMenuWpfService MenuDataService { get; }
|
||||
IMenuViewService MenuDataService { get; }
|
||||
|
||||
/// <summary>
|
||||
/// MQTT数据服务。
|
||||
|
||||
@@ -9,13 +9,14 @@ using DMS.Core.Enums;
|
||||
using DMS.Core.Events;
|
||||
using DMS.WPF.Interfaces;
|
||||
using DMS.WPF.ItemViewModel;
|
||||
using DMS.WPF.ViewModels;
|
||||
|
||||
namespace DMS.WPF.Services;
|
||||
|
||||
/// <summary>
|
||||
/// 设备数据服务类,负责管理设备相关的数据和操作。
|
||||
/// </summary>
|
||||
public class DeviceWpfService : IDeviceDataService
|
||||
public class DeviceViewService : IDeviceDataService
|
||||
{
|
||||
private readonly IMapper _mapper;
|
||||
private readonly IAppCenterService _appCenterService;
|
||||
@@ -24,7 +25,7 @@ public class DeviceWpfService : IDeviceDataService
|
||||
private readonly IVariableTableDataService _variableTableDataService;
|
||||
private readonly IEventService _eventService;
|
||||
private readonly INotificationService _notificationService;
|
||||
private readonly IMenuWpfService _menuDataService;
|
||||
private readonly IMenuViewService _menuDataService;
|
||||
private readonly IVariableDataService _variableDataService;
|
||||
private readonly Dispatcher _uiDispatcher;
|
||||
|
||||
@@ -33,12 +34,12 @@ public class DeviceWpfService : IDeviceDataService
|
||||
/// </summary>
|
||||
/// <param name="mapper">AutoMapper 实例。</param>
|
||||
/// <param name="appCenterService">数据服务中心实例。</param>
|
||||
public DeviceWpfService(IMapper mapper, IAppCenterService appCenterService,
|
||||
IAppStorageService appStorageService, IWpfDataService dataStorageService, IVariableTableDataService variableTableDataService,
|
||||
public DeviceViewService(IMapper mapper, IAppCenterService appCenterService,
|
||||
IAppStorageService appStorageService, IWpfDataService dataStorageService,
|
||||
IVariableTableDataService variableTableDataService,
|
||||
IEventService eventService, INotificationService notificationService,
|
||||
IMenuWpfService menuDataService, IVariableDataService variableDataService)
|
||||
IMenuViewService menuDataService, IVariableDataService variableDataService)
|
||||
{
|
||||
|
||||
_mapper = mapper;
|
||||
_appCenterService = appCenterService;
|
||||
_appStorageService = appStorageService;
|
||||
@@ -60,10 +61,8 @@ public class DeviceWpfService : IDeviceDataService
|
||||
{
|
||||
_uiDispatcher.Invoke(() =>
|
||||
{
|
||||
|
||||
if (_dataStorageService.Devices.TryGetValue(e.DeviceId, out DeviceItem device))
|
||||
{
|
||||
|
||||
device.IsRunning = e.StateValue;
|
||||
if (device.IsRunning)
|
||||
{
|
||||
@@ -92,11 +91,28 @@ public class DeviceWpfService : IDeviceDataService
|
||||
/// <summary>
|
||||
/// 添加设备。
|
||||
/// </summary>
|
||||
public async Task<CreateDeviceWithDetailsDto?> AddDevice(CreateDeviceWithDetailsDto dto)
|
||||
public async Task<CreateDeviceWithDetailsDto?> AddDeviceAsync(CreateDeviceWithDetailsDto dto)
|
||||
{
|
||||
// 添加null检查
|
||||
if (dto is null) return null;
|
||||
|
||||
if (dto.VariableTable is not null)
|
||||
{
|
||||
dto.VariableTable.Protocol = dto.Device.Protocol;
|
||||
dto.VariableTableMenu.MenuType = MenuType.VariableTableMenu;
|
||||
}
|
||||
|
||||
|
||||
//查找到设备的根菜单
|
||||
var parentMenu
|
||||
= _appStorageService.Menus.Values.FirstOrDefault(m => m.TargetViewKey == nameof(DevicesViewModel) &&
|
||||
m.TargetId == 0);
|
||||
if (parentMenu is not null)
|
||||
{
|
||||
dto.DeviceMenu.MenuType = MenuType.DeviceMenu;
|
||||
dto.DeviceMenu.ParentId = parentMenu.Id;
|
||||
}
|
||||
|
||||
var addDto = await _appCenterService.DeviceManagementService.CreateDeviceWithDetailsAsync(dto);
|
||||
|
||||
// 添加null检查
|
||||
@@ -109,10 +125,8 @@ public class DeviceWpfService : IDeviceDataService
|
||||
if (addDto.DeviceMenu != null)
|
||||
{
|
||||
_menuDataService.AddMenuToView(_mapper.Map<MenuItem>(addDto.DeviceMenu));
|
||||
|
||||
}
|
||||
|
||||
|
||||
// 添加变量表和变量表菜单
|
||||
if (addDto.VariableTable != null)
|
||||
{
|
||||
@@ -123,41 +137,47 @@ public class DeviceWpfService : IDeviceDataService
|
||||
{
|
||||
_menuDataService.AddMenuToView(_mapper.Map<MenuItem>(addDto.VariableTableMenu));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
return addDto;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 删除设备。
|
||||
/// </summary>
|
||||
public async Task<bool> DeleteDevice(DeviceItem device)
|
||||
public async Task<bool> DeleteDevice(DeviceItem deviceItem)
|
||||
{
|
||||
|
||||
if (!_appStorageService.Devices.TryGetValue(deviceItem.Id,out var device))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
//从数据库和内存中删除设备相关数据
|
||||
if (!await _appCenterService.DeviceManagementService.DeleteDeviceByIdAsync(device.Id))
|
||||
bool res = await _appCenterService.DeviceManagementService.DeleteAsync(device);
|
||||
if (!res)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
// 从界面删除设备相关数据集
|
||||
var variableTablesCopy = device.VariableTables.ToList();
|
||||
var variableTablesCopy = deviceItem.VariableTables.ToList();
|
||||
foreach (var variableTable in variableTablesCopy)
|
||||
{
|
||||
await _variableTableDataService.DeleteVariableTable(variableTable);
|
||||
}
|
||||
|
||||
var deviceMenu = _dataStorageService.Menus.FirstOrDefault(m => m.MenuType == MenuType.DeviceMenu && m.TargetId == device.Id);
|
||||
var deviceMenu
|
||||
= _dataStorageService.Menus.FirstOrDefault(m => m.MenuType == MenuType.DeviceMenu &&
|
||||
m.TargetId == deviceItem.Id);
|
||||
if (deviceMenu != null)
|
||||
{
|
||||
await _menuDataService.DeleteMenuItem(deviceMenu);
|
||||
}
|
||||
_dataStorageService.Devices.Remove(device.Id);
|
||||
|
||||
_dataStorageService.Devices.Remove(deviceItem.Id);
|
||||
|
||||
|
||||
return true;
|
||||
@@ -13,7 +13,7 @@ namespace DMS.WPF.Services;
|
||||
/// <summary>
|
||||
/// 菜单数据服务类,负责管理菜单相关的数据和操作。
|
||||
/// </summary>
|
||||
public class MenuWpfService : IMenuWpfService
|
||||
public class MenuViewService : IMenuViewService
|
||||
{
|
||||
private readonly IMapper _mapper;
|
||||
private readonly IWpfDataService _wpfDataService;
|
||||
@@ -27,7 +27,7 @@ public class MenuWpfService : IMenuWpfService
|
||||
/// </summary>
|
||||
/// <param name="mapper">AutoMapper 实例。</param>
|
||||
/// <param name="appStorageService">数据服务中心实例。</param>
|
||||
public MenuWpfService(IMapper mapper, IWpfDataService dataStorageService, IAppStorageService appStorageService, IMenuManagementService menuManagementService)
|
||||
public MenuViewService(IMapper mapper, IWpfDataService dataStorageService, IAppStorageService appStorageService, IMenuManagementService menuManagementService)
|
||||
{
|
||||
_mapper = mapper;
|
||||
_wpfDataService = dataStorageService;
|
||||
@@ -46,7 +46,16 @@ public class MenuWpfService : IMenuWpfService
|
||||
/// </summary>
|
||||
public void BuildMenuTrees()
|
||||
{
|
||||
_wpfDataService.MenuTrees.Clear();
|
||||
// 创建一个新的临时列表来存储根菜单
|
||||
var newRootMenus = new List<MenuItem>();
|
||||
|
||||
// 首先,确保所有菜单项的Children集合是干净的
|
||||
foreach (var menu in _wpfDataService.Menus)
|
||||
{
|
||||
// 避免循环引用,清空Children集合
|
||||
menu.Children.Clear();
|
||||
}
|
||||
|
||||
// 遍历所有菜单项,构建树形结构
|
||||
foreach (var menu in _wpfDataService.Menus)
|
||||
{
|
||||
@@ -63,9 +72,16 @@ public class MenuWpfService : IMenuWpfService
|
||||
else
|
||||
{
|
||||
// 如果没有父ID,则这是一个根菜单
|
||||
_wpfDataService.MenuTrees.Add(menu);
|
||||
newRootMenus.Add(menu);
|
||||
}
|
||||
}
|
||||
|
||||
// 在UI线程安全地更新MenuTrees集合
|
||||
_wpfDataService.MenuTrees.Clear();
|
||||
foreach (var rootMenu in newRootMenus)
|
||||
{
|
||||
_wpfDataService.MenuTrees.Add(rootMenu);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -75,14 +91,17 @@ public class MenuWpfService : IMenuWpfService
|
||||
{
|
||||
if (MenuItem is null) return;
|
||||
|
||||
var deviceMenu = _wpfDataService.Menus.FirstOrDefault(m => m.Id == MenuItem.ParentId);
|
||||
if (deviceMenu is not null)
|
||||
var parentMenu = _wpfDataService.Menus.FirstOrDefault(m => m.Id == MenuItem.ParentId);
|
||||
if (parentMenu is not null)
|
||||
{
|
||||
|
||||
deviceMenu.Children.Add(MenuItem);
|
||||
// 首先添加到菜单列表
|
||||
_wpfDataService.Menus.Add(MenuItem);
|
||||
BuildMenuTrees();
|
||||
|
||||
// 然后将当前菜单添加到父菜单的Children列表中
|
||||
if (!parentMenu.Children.Contains(MenuItem))
|
||||
{
|
||||
parentMenu.Children.Add(MenuItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -119,7 +138,7 @@ public class MenuWpfService : IMenuWpfService
|
||||
// 从扁平菜单列表中移除
|
||||
_wpfDataService.Menus.Remove(MenuItem);
|
||||
|
||||
//// 从树形结构中移除
|
||||
// 从树形结构中移除
|
||||
if (MenuItem.ParentId.HasValue && MenuItem.ParentId.Value != 0)
|
||||
{
|
||||
// 如果有父菜单,从父菜单的Children中移除
|
||||
@@ -132,6 +151,7 @@ public class MenuWpfService : IMenuWpfService
|
||||
_wpfDataService.MenuTrees.Remove(MenuItem);
|
||||
}
|
||||
|
||||
//BuildMenuTrees();
|
||||
// 重新构建整个菜单树以确保一致性
|
||||
BuildMenuTrees();
|
||||
}
|
||||
}
|
||||
@@ -19,7 +19,7 @@ public class MqttDataService : IMqttDataService
|
||||
private readonly IMapper _mapper;
|
||||
private readonly IAppStorageService _appStorageService;
|
||||
private readonly IMqttManagementService _mqttManagementService;
|
||||
private readonly IMenuWpfService _menuDataService;
|
||||
private readonly IMenuViewService _menuDataService;
|
||||
private readonly IMenuManagementService _menuManagementServiceImpl;
|
||||
private readonly IWpfDataService _dataStorageService;
|
||||
|
||||
@@ -29,7 +29,7 @@ public class MqttDataService : IMqttDataService
|
||||
/// </summary>
|
||||
/// <param name="mapper">AutoMapper 实例。</param>
|
||||
/// <param name="mqttAppService">MQTT应用服务实例。</param>
|
||||
public MqttDataService(IMapper mapper, IAppStorageService appStorageService, IMqttManagementService mqttManagementService, IMenuWpfService menuDataService, IMenuManagementService menuManagementServiceImpl, IWpfDataService dataStorageService)
|
||||
public MqttDataService(IMapper mapper, IAppStorageService appStorageService, IMqttManagementService mqttManagementService, IMenuViewService menuDataService, IMenuManagementService menuManagementServiceImpl, IWpfDataService dataStorageService)
|
||||
{
|
||||
_mapper = mapper;
|
||||
_appStorageService = appStorageService;
|
||||
@@ -87,7 +87,7 @@ public class MqttDataService : IMqttDataService
|
||||
MenuType = MenuType.MqttServerMenu,
|
||||
TargetViewKey = nameof(MqttServerDetailViewModel),
|
||||
};
|
||||
await _menuDataService.AddMenuToView(_mapper.Map<MenuItem>(mqttServerMenu));
|
||||
_menuDataService.AddMenuToView(_mapper.Map<MenuItem>(mqttServerMenu));
|
||||
}
|
||||
|
||||
return mqttServerItem;
|
||||
|
||||
@@ -24,7 +24,7 @@ public class TriggerDataService : ITriggerDataService
|
||||
{
|
||||
private readonly IMapper _mapper;
|
||||
private readonly IAppCenterService _appCenterService;
|
||||
private readonly IMenuWpfService _menuDataService;
|
||||
private readonly IMenuViewService _menuDataService;
|
||||
private readonly IAppStorageService _appStorageService;
|
||||
private readonly IWpfDataService _dataStorageService;
|
||||
private readonly IEventService _eventService;
|
||||
@@ -41,7 +41,7 @@ public class TriggerDataService : ITriggerDataService
|
||||
/// <param name="eventService">事件服务实例。</param>
|
||||
/// <param name="notificationService">通知服务实例。</param>
|
||||
public TriggerDataService(IMapper mapper, IAppCenterService appCenterService,
|
||||
IMenuWpfService menuDataService,
|
||||
IMenuViewService menuDataService,
|
||||
IAppStorageService appStorageService, IWpfDataService dataStorageService,
|
||||
IEventService eventService, INotificationService notificationService)
|
||||
{
|
||||
@@ -111,7 +111,7 @@ public class TriggerDataService : ITriggerDataService
|
||||
Icon = "\uE945", // 使用触发器图标
|
||||
TargetViewKey = nameof(TriggerDetailViewModel),
|
||||
};
|
||||
await _menuDataService.AddMenuToView(menuItem);
|
||||
_menuDataService.AddMenuToView(menuItem);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -14,12 +14,12 @@ public class VariableTableDataService : IVariableTableDataService
|
||||
private readonly IMapper _mapper;
|
||||
private readonly IWpfDataService _dataStorageService;
|
||||
private readonly IAppCenterService _appCenterService;
|
||||
private readonly IMenuWpfService _menuDataService;
|
||||
private readonly IMenuViewService _menuDataService;
|
||||
|
||||
|
||||
|
||||
public VariableTableDataService(IMapper mapper, IWpfDataService dataStorageService, IAppCenterService appCenterService,
|
||||
IMenuWpfService menuDataService)
|
||||
IMenuViewService menuDataService)
|
||||
{
|
||||
_mapper = mapper;
|
||||
_dataStorageService = dataStorageService;
|
||||
@@ -53,7 +53,7 @@ public class VariableTableDataService : IVariableTableDataService
|
||||
createDto.Menu = menuDto;
|
||||
var resDto = await _appCenterService.VariableTableManagementService.CreateVariableTableAsync(createDto);
|
||||
|
||||
await _menuDataService.AddMenuToView(_mapper.Map<MenuItem>(resDto.Menu));
|
||||
_menuDataService.AddMenuToView(_mapper.Map<MenuItem>(resDto.Menu));
|
||||
return resDto.VariableTable.Id;
|
||||
}
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ public class WPFDataService : IWPFDataService
|
||||
/// <summary>
|
||||
/// 菜单数据服务。
|
||||
/// </summary>
|
||||
public IMenuWpfService MenuDataService { get; }
|
||||
public IMenuViewService MenuDataService { get; }
|
||||
|
||||
/// <summary>
|
||||
/// MQTT数据服务。
|
||||
@@ -62,7 +62,7 @@ public class WPFDataService : IWPFDataService
|
||||
IAppCenterService appCenterService,
|
||||
IDeviceDataService deviceDataService,
|
||||
IVariableDataService variableDataService,
|
||||
IMenuWpfService menuDataService,
|
||||
IMenuViewService menuDataService,
|
||||
IMqttDataService mqttDataService,
|
||||
ILogDataService logDataService,
|
||||
IVariableTableDataService variableTableDataService,
|
||||
|
||||
@@ -132,7 +132,7 @@ public partial class DevicesViewModel : ViewModelBase, INavigatable
|
||||
// 添加null检查
|
||||
if (_wpfDataService != null && _wpfDataService.DeviceDataService != null)
|
||||
{
|
||||
var addDto = await _wpfDataService.DeviceDataService.AddDevice(dto);
|
||||
var addDto = await _wpfDataService.DeviceDataService.AddDeviceAsync(dto);
|
||||
|
||||
// 添加null检查
|
||||
if (addDto != null && addDto.Device != null && _notificationService != null)
|
||||
|
||||
Reference in New Issue
Block a user