feat.修复新添加设备添加变量OpcServer报错问题,修改初始化菜单的内容

This commit is contained in:
2025-10-04 00:42:59 +08:00
parent 24e4259e31
commit 5eae862d5f
6 changed files with 43 additions and 47 deletions

View File

@@ -119,54 +119,54 @@ public class InitializeRepository : IInitializeRepository
new DbMenu
{
Id = 1, Header = "主页", Icon = "\uE80F", ParentId = 0,
MenuType = MenuType.MainMenu, TargetViewKey = "HomeView", DisplayOrder = 1
MenuType = MenuType.MainMenu, TargetViewKey = "HomeViewModel", DisplayOrder = 1
},
new DbMenu
{
Id = 2, Header = "设备", Icon = "\uE975", ParentId = 0,
MenuType = MenuType.MainMenu, TargetViewKey = "DevicesView",
MenuType = MenuType.MainMenu, TargetViewKey = "DevicesViewModel",
DisplayOrder = 2
},
new DbMenu
{
Id = 3, Header = "数据转换", Icon = "\uF1CB", ParentId = 0,
MenuType = MenuType.MainMenu, TargetViewKey = "DataTransformView",
MenuType = MenuType.MainMenu, TargetViewKey = "DataTransformViewModel",
DisplayOrder = 3
},
new DbMenu
{
Id = 4, Header = "Mqtt服务器", Icon = "\uE753", ParentId = 0,
MenuType = MenuType.MainMenu, TargetViewKey = "MqttsView",
MenuType = MenuType.MainMenu, TargetViewKey = "MqttsViewModel",
DisplayOrder = 4
},
new DbMenu
{
Id = 5, Header = "触发器", Icon = "\uE7BA", ParentId = 0,
MenuType = MenuType.MainMenu, TargetViewKey = "TriggersView",
MenuType = MenuType.MainMenu, TargetViewKey = "TriggersViewModel",
DisplayOrder = 5
},
new DbMenu
{
Id = 6, Header = "日志历史", Icon = "\uE7BA", ParentId = 0,
MenuType = MenuType.MainMenu, TargetViewKey = "LogHistoryView",
MenuType = MenuType.MainMenu, TargetViewKey = "LogHistoryViewModel",
DisplayOrder = 6
},
new DbMenu
{
Id = 7, Header = "邮件管理", Icon = "\uE715", ParentId = 0,
MenuType = MenuType.MainMenu, TargetViewKey = "EmailManagementView",
MenuType = MenuType.MainMenu, TargetViewKey = "EmailManagementViewModel",
DisplayOrder = 7
},
new DbMenu
{
Id = 8, Header = "变量历史", Icon = "\uE81C", ParentId = 0,
MenuType = MenuType.MainMenu, TargetViewKey = "VariableHistoryView",
MenuType = MenuType.MainMenu, TargetViewKey = "VariableHistoryViewModel",
DisplayOrder = 8
},
new DbMenu
{
Id = 9, Header = "设置", Icon = "\uE713", ParentId = 0,
MenuType = MenuType.MainMenu, TargetViewKey = "SettingView",
MenuType = MenuType.MainMenu, TargetViewKey = "SettingViewModel",
DisplayOrder = 9
},
new DbMenu

View File

@@ -1,5 +1,6 @@
using System.Collections.Concurrent;
using System.Diagnostics;
using System.Text;
using DMS.Application.DTOs;
using DMS.Application.Events;
using DMS.Application.Interfaces;
@@ -251,38 +252,37 @@ namespace DMS.Infrastructure.Services.OpcUa
{
_logger.LogInformation("处理批量导入变量事件,共 {Count} 个变量", e.Count);
// 更新相关设备的变量表
var deviceIds = e.Variables.Select(v => v.VariableTable.DeviceId)
.Distinct();
foreach (var deviceId in deviceIds)
{
// 获取设备的变量表信息
var variablesForDevice = e.Variables.Where(v => v.VariableTable.DeviceId == deviceId)
.ToList();
if (variablesForDevice.Any())
{
// 更新设备上下文中的变量
if (_deviceContexts.TryGetValue(deviceId, out var context))
{
// 将新导入的变量添加到设备上下文
foreach (var variable in variablesForDevice)
{
if (!context.Variables.ContainsKey(variable.OpcUaNodeId))
{
context.Variables.TryAdd(variable.OpcUaNodeId, variable);
}
}
.Distinct().ToList();
// 如果设备已连接,则设置订阅
if (context.IsConnected)
foreach (var deviceId in deviceIds){
// 获取设备的变量表信息
var variablesForDevice = e.Variables.Where(v => v.VariableTable.DeviceId == deviceId)
.ToList();
if (variablesForDevice.Any())
{
// 更新设备上下文中的变量
if (_deviceContexts.TryGetValue(deviceId, out var context))
{
await SetupSubscriptionsAsync(context, CancellationToken.None);
// 将新导入的变量添加到设备上下文
foreach (var variable in variablesForDevice)
{
if (!context.Variables.ContainsKey(variable.OpcUaNodeId))
{
context.Variables.TryAdd(variable.OpcUaNodeId, variable);
}
}
// 如果设备已连接,则设置订阅
if (context.IsConnected)
{
await SetupSubscriptionsAsync(context, CancellationToken.None);
}
}
}
}
}
_logger.LogInformation("批量导入变量事件处理完成,更新了 {DeviceCount} 个设备的变量信息", deviceIds.Count());
_logger.LogInformation("批量导入变量事件处理完成,更新了 {DeviceCount} 个设备的变量信息", deviceIds.Count());
}
catch (Exception ex)
{