From ed4f9b1a0c20f23ccc5c78b6e1a2ca9b797d707a Mon Sep 17 00:00:00 2001 From: "David P.G" Date: Thu, 18 Sep 2025 11:24:56 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=B7=BB=E5=8A=A0=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E7=95=8C=E9=9D=A2=E4=B8=8D=E6=98=BE=E7=A4=BA=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E5=8F=98=E9=87=8F=E8=A1=A8=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DMS.WPF/Interfaces/IVariableDataService.cs | 3 +- DMS.WPF/Services/DeviceDataService.cs | 101 ++--- DMS.WPF/Services/VariableDataService.cs | 50 +-- DMS.WPF/Views/DevicesView.xaml | 491 +++++++++++---------- DMS.WPF/Views/VariableHistoryView.xaml | 40 +- 5 files changed, 317 insertions(+), 368 deletions(-) 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"> - - + + - - + + - + - + - + - - - + + + - - + + - - + + - - + + - - - + + + - - - + + + - - - - - - - + + + + + + + - - - - + + + + - + - - + + - - + + - + - - + + - - + + - - - - - - diff --git a/DMS.WPF/Views/VariableHistoryView.xaml b/DMS.WPF/Views/VariableHistoryView.xaml index c862f49..808cc4f 100644 --- a/DMS.WPF/Views/VariableHistoryView.xaml +++ b/DMS.WPF/Views/VariableHistoryView.xaml @@ -100,45 +100,7 @@ Margin="10,0,0,0"/> - - - - - - - - - - - - - - - - - - - - - - - - - - - +