diff --git a/DMS.WPF/Interfaces/IVariableDataService.cs b/DMS.WPF/Interfaces/IVariableDataService.cs
index c6620f5..a7762c3 100644
--- a/DMS.WPF/Interfaces/IVariableDataService.cs
+++ b/DMS.WPF/Interfaces/IVariableDataService.cs
@@ -18,8 +18,7 @@ public interface IVariableDataService
///
/// 添加变量表。
///
- Task AddVariableTable(VariableTableDto variableTableDto,
- MenuBeanDto menuDto = null, bool isAddDb = false);
+ Task AddVariableTableToView(VariableTableDto tableDto);
///
/// 更新变量表。
diff --git a/DMS.WPF/Services/DeviceDataService.cs b/DMS.WPF/Services/DeviceDataService.cs
index 6fbc6fd..98c1c6b 100644
--- a/DMS.WPF/Services/DeviceDataService.cs
+++ b/DMS.WPF/Services/DeviceDataService.cs
@@ -32,7 +32,7 @@ public class DeviceDataService : IDeviceDataService
/// 数据服务中心实例。
public DeviceDataService(IMapper mapper, IAppDataCenterService appDataCenterService,
IAppDataStorageService appDataStorageService, IDataStorageService dataStorageService,
- IEventService eventService,INotificationService notificationService,
+ IEventService eventService, INotificationService notificationService,
IMenuDataService menuDataService, IVariableDataService variableDataService)
{
_mapper = mapper;
@@ -52,10 +52,10 @@ public class DeviceDataService : IDeviceDataService
{
_uiDispatcher.Invoke(() =>
{
-
- if (_dataStorageService.Devices.TryGetValue(e.DeviceId,out DeviceItemViewModel device))
+
+ if (_dataStorageService.Devices.TryGetValue(e.DeviceId, out DeviceItemViewModel device))
{
-
+
device.IsRunning = e.NewStatus;
if (device.IsRunning)
{
@@ -76,7 +76,7 @@ public class DeviceDataService : IDeviceDataService
{
foreach (var deviceDto in _appDataStorageService.Devices.Values)
{
- _dataStorageService.Devices.Add(deviceDto.Id,_mapper.Map(deviceDto));
+ _dataStorageService.Devices.Add(deviceDto.Id, _mapper.Map(deviceDto));
}
}
@@ -86,67 +86,50 @@ public class DeviceDataService : IDeviceDataService
public async Task AddDevice(CreateDeviceWithDetailsDto dto)
{
// 添加null检查
- if (dto == null || _appDataCenterService == null || _appDataCenterService.DeviceManagementService == null)
+ if (dto == null)
return null;
var addDto = await _appDataCenterService.DeviceManagementService.CreateDeviceWithDetailsAsync(dto);
-
- // 添加null检查
- if (_dataStorageService != null && addDto != null && addDto.Device != null)
- {
- //更新当前界面
- _dataStorageService.Devices.Add(addDto.Device.Id,_mapper.Map(addDto.Device));
- }
-
- // 添加null检查
- if (_menuDataService != null && addDto != null && addDto.DeviceMenu != null)
- {
- _menuDataService.AddMenuItem(_mapper.Map(addDto.DeviceMenu));
- }
-
- // 添加null检查
- if (addDto != null && addDto.VariableTable != null)
- {
- await _variableDataService.AddVariableTable(addDto.VariableTable);
- }
-
- // 添加null检查
- if (_menuDataService != null && addDto != null && addDto.VariableTableMenu != null)
- {
- _menuDataService.AddMenuItem(_mapper.Map(addDto.VariableTableMenu));
- }
-
- // 添加null检查
- if (_appDataCenterService.DeviceManagementService != null && addDto != null && addDto.Device != null)
- {
- //更新数据中心
- _appDataCenterService.DeviceManagementService.AddDeviceToMemory(addDto.Device);
- }
-
- // 添加null检查
- if (_appDataCenterService.VariableTableManagementService != null && addDto != null && addDto.VariableTable != null)
- {
- _appDataCenterService.VariableTableManagementService.AddVariableTableToMemory(addDto.VariableTable);
- }
-
- // 添加null检查
- if (_appDataCenterService.MenuManagementService != null && addDto != null && addDto.DeviceMenu != null)
- {
- _appDataCenterService.MenuManagementService.AddMenuToMemory(addDto.DeviceMenu);
- }
-
- // 添加null检查
- if (_appDataCenterService.MenuManagementService != null && addDto != null && addDto.VariableTableMenu != null)
- {
- _appDataCenterService.MenuManagementService.AddMenuToMemory(addDto.VariableTableMenu);
- }
// 添加null检查
- if (_menuDataService != null)
+ if (addDto == null && addDto.Device == null)
{
- _menuDataService.BuildMenuTrees();
+ return null;
}
+ //给界面添加设备
+ _dataStorageService.Devices.Add(addDto.Device.Id, _mapper.Map(addDto.Device));
+ //更新数据中心
+ _appDataCenterService.DeviceManagementService.AddDeviceToMemory(addDto.Device);
+
+ // 给界面添加设备菜单
+ if (addDto.DeviceMenu != null)
+ {
+ _menuDataService.AddMenuItem(_mapper.Map(addDto.DeviceMenu));
+ _appDataCenterService.MenuManagementService.AddMenuToMemory(addDto.DeviceMenu);
+
+ }
+
+
+ // 添加变量表和变量表菜单
+ if (addDto.VariableTable != null)
+ {
+ await _variableDataService.AddVariableTableToView(addDto.VariableTable);
+ _appDataCenterService.VariableTableManagementService.AddVariableTableToMemory(addDto.VariableTable);
+
+ if (addDto.VariableTable != null && addDto.VariableTableMenu != null)
+ {
+ _menuDataService.AddMenuItem(_mapper.Map(addDto.VariableTableMenu));
+ _appDataCenterService.MenuManagementService.AddMenuToMemory(addDto.VariableTableMenu);
+ }
+
+
+ }
+
+
+ // 添加null检查
+ _menuDataService.BuildMenuTrees();
+
return addDto;
}
@@ -163,7 +146,7 @@ public class DeviceDataService : IDeviceDataService
_appDataCenterService.DeviceManagementService.RemoveDeviceFromMemory(device.Id);
// 删除设备
-
+
return _dataStorageService.Devices.Remove(device.Id);
}
diff --git a/DMS.WPF/Services/VariableDataService.cs b/DMS.WPF/Services/VariableDataService.cs
index f50ed51..2b1c0fc 100644
--- a/DMS.WPF/Services/VariableDataService.cs
+++ b/DMS.WPF/Services/VariableDataService.cs
@@ -1,10 +1,11 @@
-using System.Collections.ObjectModel;
using AutoMapper;
using CommunityToolkit.Mvvm.ComponentModel;
using DMS.Application.DTOs;
using DMS.Application.Interfaces;
+using DMS.Core.Models;
using DMS.WPF.Interfaces;
using DMS.WPF.ViewModels.Items;
+using System.Collections.ObjectModel;
namespace DMS.WPF.Services;
@@ -24,7 +25,7 @@ public class VariableDataService : IVariableDataService
///
/// AutoMapper 实例。
/// 数据服务中心实例。
- public VariableDataService(IMapper mapper,IDataStorageService dataStorageService, IAppDataCenterService appDataCenterService)
+ public VariableDataService(IMapper mapper, IDataStorageService dataStorageService, IAppDataCenterService appDataCenterService)
{
_mapper = mapper;
_dataStorageService = dataStorageService;
@@ -40,7 +41,7 @@ public class VariableDataService : IVariableDataService
{
foreach (var variable in variableTable.Value.Variables)
{
- _dataStorageService.Variables.Add(variable.Id,variable);
+ _dataStorageService.Variables.Add(variable.Id, variable);
}
}
}
@@ -48,43 +49,20 @@ public class VariableDataService : IVariableDataService
///
/// 添加变量表。
///
- public async Task AddVariableTable(VariableTableDto variableTableDto,
- MenuBeanDto menuDto = null, bool isAddDb = false)
+ public async Task AddVariableTableToView(VariableTableDto tableDto)
{
// 添加null检查
- if (variableTableDto == null)
+ if (tableDto == null || tableDto.DeviceId==0)
return false;
- // 添加_appDataCenterService和_variableTableManagementService的null检查
- if (_appDataCenterService == null || _appDataCenterService.VariableTableManagementService == null)
- return false;
-
- if (isAddDb && menuDto != null)
+ if (_dataStorageService.Devices.TryGetValue(tableDto.DeviceId, out var device))
{
- // 添加null检查
- if (_appDataCenterService.VariableTableManagementService == null)
- return false;
-
- CreateVariableTableWithMenuDto createDto = new CreateVariableTableWithMenuDto();
- createDto.VariableTable = variableTableDto;
- createDto.DeviceId = variableTableDto.DeviceId;
- createDto.Menu = menuDto;
-
- // 添加null检查
- if (_appDataCenterService.VariableTableManagementService == null)
- return false;
-
- var resDto = await _appDataCenterService.VariableTableManagementService.CreateVariableTableAsync(createDto);
-
- // 添加null检查
- if (resDto != null && resDto.VariableTable != null && variableTableDto != null)
- _mapper.Map(resDto.VariableTable, variableTableDto);
+ var variableTableItem = _mapper.Map(tableDto);
+ device.VariableTables.Add(variableTableItem);
+ _dataStorageService.VariableTables.TryAdd(variableTableItem.Id,variableTableItem);
}
- // 添加null检查
- if (_appDataCenterService.VariableTableManagementService != null && variableTableDto != null)
- _appDataCenterService.VariableTableManagementService.AddVariableTableToMemory(variableTableDto);
-
+
return true;
}
@@ -151,7 +129,7 @@ public class VariableDataService : IVariableDataService
return;
}
- _dataStorageService.Variables.Add(variableItem.Id,variableItem);
+ _dataStorageService.Variables.Add(variableItem.Id, variableItem);
}
///
@@ -159,14 +137,14 @@ public class VariableDataService : IVariableDataService
///
public void DeleteVariable(int id)
{
- if (!_dataStorageService.Variables.TryGetValue(id,out var variableItem))
+ if (!_dataStorageService.Variables.TryGetValue(id, out var variableItem))
{
return;
}
if (_dataStorageService.VariableTables.TryGetValue(variableItem.VariableTableId, out var variableTable))
{
- variableTable.Variables.Remove(variableItem);
+ variableTable.Variables.Remove(variableItem);
}
_dataStorageService.Variables.Remove(variableItem.Id);
diff --git a/DMS.WPF/Views/DevicesView.xaml b/DMS.WPF/Views/DevicesView.xaml
index 5d64e2f..7e89abb 100644
--- a/DMS.WPF/Views/DevicesView.xaml
+++ b/DMS.WPF/Views/DevicesView.xaml
@@ -4,300 +4,327 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:hc="https://handyorg.github.io/handycontrol"
+ xmlns:localConverters="clr-namespace:DMS.WPF.Converters"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:ui="http://schemas.inkore.net/lib/ui/wpf/modern"
xmlns:vm="clr-namespace:DMS.WPF.ViewModels"
- xmlns:localConverters="clr-namespace:DMS.WPF.Converters"
d:DataContext="{d:DesignInstance vm:DevicesViewModel}"
d:DesignHeight="300"
d:DesignWidth="300"
mc:Ignorable="d">
-
-
+
+
-
-
+
+
-
+
-
+
-
+
-
-
-
+
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
-
+
-
-
+
+
-
-
+
+
-
+
-
-
+
+
-
-
+
+
-
-
-
-
+
+
+
+
-
-
-
+
+
+
-
+
-
-
+
+
-
+
-
-
-
+
+
+
-
-
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
+
+
+
-
-
-
-