修复变量值不更新的问题
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
using DMS.Application.DTOs;
|
using DMS.Application.DTOs;
|
||||||
using DMS.Application.DTOs.Events;
|
using DMS.Application.DTOs.Events;
|
||||||
|
|
||||||
namespace DMS.Application.Services;
|
namespace DMS.Application.Interfaces;
|
||||||
|
|
||||||
public interface ILogManagementService
|
public interface ILogManagementService
|
||||||
{
|
{
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
using DMS.Application.DTOs;
|
using DMS.Application.DTOs;
|
||||||
|
|
||||||
namespace DMS.Application.Services;
|
namespace DMS.Application.Interfaces;
|
||||||
|
|
||||||
public interface IMenuManagementService
|
public interface IMenuManagementService
|
||||||
{
|
{
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
using DMS.Application.DTOs;
|
using DMS.Application.DTOs;
|
||||||
|
|
||||||
namespace DMS.Application.Services;
|
namespace DMS.Application.Interfaces;
|
||||||
|
|
||||||
public interface IMqttManagementService
|
public interface IMqttManagementService
|
||||||
{
|
{
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
using System.Collections.Concurrent;
|
using System.Collections.Concurrent;
|
||||||
using DMS.Application.DTOs;
|
using DMS.Application.DTOs;
|
||||||
using DMS.Application.DTOs.Events;
|
using DMS.Application.DTOs.Events;
|
||||||
|
using DMS.Core.Models;
|
||||||
|
|
||||||
namespace DMS.Application.Services;
|
namespace DMS.Application.Services;
|
||||||
|
|
||||||
@@ -56,8 +57,15 @@ public interface IVariableManagementService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
void RemoveVariableFromMemory(int variableId, ConcurrentDictionary<int, VariableTableDto> variableTables);
|
void RemoveVariableFromMemory(int variableId, ConcurrentDictionary<int, VariableTableDto> variableTables);
|
||||||
|
|
||||||
|
void VariableValueChanged(VariableValueChangedEventArgs eventArgs);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 当变量数据发生变化时触发
|
/// 当变量数据发生变化时触发
|
||||||
/// </summary>
|
/// </summary>
|
||||||
event EventHandler<VariableChangedEventArgs> OnVariableChanged;
|
event EventHandler<VariableChangedEventArgs> OnVariableChanged;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 当变量数据发生变化时触发
|
||||||
|
/// </summary>
|
||||||
|
event EventHandler<VariableValueChangedEventArgs> OnVariableValueChanged;
|
||||||
}
|
}
|
||||||
@@ -25,7 +25,13 @@ public class VariableManagementService : IVariableManagementService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public event EventHandler<VariableChangedEventArgs> OnVariableChanged;
|
public event EventHandler<VariableChangedEventArgs> OnVariableChanged;
|
||||||
|
|
||||||
public VariableManagementService(IVariableAppService variableAppService,IAppDataStorageService appDataStorageService)
|
/// <summary>
|
||||||
|
/// 当变量数据发生变化时触发
|
||||||
|
/// </summary>
|
||||||
|
public event EventHandler<VariableValueChangedEventArgs> OnVariableValueChanged;
|
||||||
|
|
||||||
|
public VariableManagementService(IVariableAppService variableAppService,
|
||||||
|
IAppDataStorageService appDataStorageService)
|
||||||
{
|
{
|
||||||
_variableAppService = variableAppService;
|
_variableAppService = variableAppService;
|
||||||
_appDataStorageService = appDataStorageService;
|
_appDataStorageService = appDataStorageService;
|
||||||
@@ -102,14 +108,16 @@ public class VariableManagementService : IVariableManagementService
|
|||||||
|
|
||||||
if (_appDataStorageService.Variables.TryAdd(variableDto.Id, variableDto))
|
if (_appDataStorageService.Variables.TryAdd(variableDto.Id, variableDto))
|
||||||
{
|
{
|
||||||
OnVariableChanged?.Invoke(this,new VariableChangedEventArgs(DataChangeType.Added, variableDto, variableTableDto));
|
OnVariableChanged?.Invoke(
|
||||||
|
this, new VariableChangedEventArgs(DataChangeType.Added, variableDto, variableTableDto));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 在内存中更新变量
|
/// 在内存中更新变量
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void UpdateVariableInMemory(VariableDto variableDto, ConcurrentDictionary<int, VariableTableDto> variableTables)
|
public void UpdateVariableInMemory(VariableDto variableDto,
|
||||||
|
ConcurrentDictionary<int, VariableTableDto> variableTables)
|
||||||
{
|
{
|
||||||
VariableTableDto variableTableDto = null;
|
VariableTableDto variableTableDto = null;
|
||||||
if (variableTables.TryGetValue(variableDto.VariableTableId, out var variableTable))
|
if (variableTables.TryGetValue(variableDto.VariableTableId, out var variableTable))
|
||||||
@@ -118,7 +126,8 @@ public class VariableManagementService : IVariableManagementService
|
|||||||
}
|
}
|
||||||
|
|
||||||
_appDataStorageService.Variables.AddOrUpdate(variableDto.Id, variableDto, (key, oldValue) => variableDto);
|
_appDataStorageService.Variables.AddOrUpdate(variableDto.Id, variableDto, (key, oldValue) => variableDto);
|
||||||
OnVariableChanged?.Invoke(this,new VariableChangedEventArgs(DataChangeType.Updated, variableDto, variableTableDto));
|
OnVariableChanged?.Invoke(
|
||||||
|
this, new VariableChangedEventArgs(DataChangeType.Updated, variableDto, variableTableDto));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -135,8 +144,13 @@ public class VariableManagementService : IVariableManagementService
|
|||||||
variableTable.Variables.Remove(variableDto);
|
variableTable.Variables.Remove(variableDto);
|
||||||
}
|
}
|
||||||
|
|
||||||
OnVariableChanged?.Invoke(this,new VariableChangedEventArgs(DataChangeType.Deleted, variableDto, variableTableDto));
|
OnVariableChanged?.Invoke(
|
||||||
|
this, new VariableChangedEventArgs(DataChangeType.Deleted, variableDto, variableTableDto));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void VariableValueChanged(VariableValueChangedEventArgs eventArgs)
|
||||||
|
{
|
||||||
|
OnVariableValueChanged?.Invoke(this, eventArgs);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -300,6 +300,8 @@ namespace DMS.Infrastructure.Services
|
|||||||
variable.DisplayValue = newValue;
|
variable.DisplayValue = newValue;
|
||||||
variable.UpdatedAt = DateTime.Now;
|
variable.UpdatedAt = DateTime.Now;
|
||||||
|
|
||||||
|
_logger.LogDebug($"节点:{variable.OpcUaNodeId}值发生了变化:{newValue}");
|
||||||
|
|
||||||
// 触发变量值变更事件
|
// 触发变量值变更事件
|
||||||
var eventArgs = new VariableValueChangedEventArgs(
|
var eventArgs = new VariableValueChangedEventArgs(
|
||||||
variable.Id,
|
variable.Id,
|
||||||
@@ -308,7 +310,7 @@ namespace DMS.Infrastructure.Services
|
|||||||
newValue,
|
newValue,
|
||||||
variable.UpdatedAt);
|
variable.UpdatedAt);
|
||||||
|
|
||||||
// _appDataCenterService.OnVariableValueChanged( eventArgs);
|
_appDataCenterService.VariableManagementService.VariableValueChanged( eventArgs);
|
||||||
|
|
||||||
// 推送到数据处理队列
|
// 推送到数据处理队列
|
||||||
await _dataProcessingService.EnqueueAsync(variable);
|
await _dataProcessingService.EnqueueAsync(variable);
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ public class DataEventService : IDataEventService
|
|||||||
|
|
||||||
|
|
||||||
// 监听变量值变更事件
|
// 监听变量值变更事件
|
||||||
_appDataCenterService.VariableManagementService.OnVariableChanged += OnVariableValueChanged;
|
_appDataCenterService.VariableManagementService.OnVariableValueChanged += OnVariableValueChanged;
|
||||||
_appDataCenterService.DataLoaderService.OnLoadDataCompleted += OnLoadDataCompleted;
|
_appDataCenterService.DataLoaderService.OnLoadDataCompleted += OnLoadDataCompleted;
|
||||||
// 监听日志变更事件
|
// 监听日志变更事件
|
||||||
// _appDataCenterService.OnLogChanged += _logDataService.OnNlogChanged;
|
// _appDataCenterService.OnLogChanged += _logDataService.OnNlogChanged;
|
||||||
@@ -60,18 +60,18 @@ public class DataEventService : IDataEventService
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 处理变量值变更事件。
|
/// 处理变量值变更事件。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void OnVariableValueChanged(object? sender, VariableChangedEventArgs e)
|
private void OnVariableValueChanged(object? sender, VariableValueChangedEventArgs e)
|
||||||
{
|
{
|
||||||
// 在UI线程上更新变量值
|
// 在UI线程上更新变量值
|
||||||
App.Current.Dispatcher.BeginInvoke(new Action(() =>
|
App.Current.Dispatcher.BeginInvoke(new Action(() =>
|
||||||
{
|
{
|
||||||
// 查找并更新对应的变量
|
// 查找并更新对应的变量
|
||||||
var variableToUpdate = _dataStorageService.Variables.FirstOrDefault(v => v.Id == e.Variable.Id);
|
var variableToUpdate = _dataStorageService.Variables.FirstOrDefault(v => v.Id == e.VariableId);
|
||||||
if (variableToUpdate != null)
|
if (variableToUpdate != null)
|
||||||
{
|
{
|
||||||
variableToUpdate.DataValue = e.Variable.DataValue;
|
variableToUpdate.DataValue = e.NewValue;
|
||||||
variableToUpdate.DisplayValue = e.Variable.DisplayValue;
|
variableToUpdate.DisplayValue = e.NewValue;
|
||||||
variableToUpdate.UpdatedAt = e.Variable.UpdatedAt;
|
variableToUpdate.UpdatedAt = e.UpdateTime;
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,11 +32,14 @@ public class VariableTableDataService : IVariableTableDataService
|
|||||||
|
|
||||||
public void LoadAllVariableTables()
|
public void LoadAllVariableTables()
|
||||||
{
|
{
|
||||||
foreach (var variableTable in _dataStorageService.VariableTables)
|
foreach (var device in _dataStorageService.Devices)
|
||||||
|
{
|
||||||
|
foreach (var variableTable in device.VariableTables)
|
||||||
{
|
{
|
||||||
_dataStorageService.VariableTables.Add(variableTable);
|
_dataStorageService.VariableTables.Add(variableTable);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public async Task<bool> AddVariableTable(VariableTableDto variableTableDto,
|
public async Task<bool> AddVariableTable(VariableTableDto variableTableDto,
|
||||||
MenuBeanDto menuDto = null, bool isAddDb = false)
|
MenuBeanDto menuDto = null, bool isAddDb = false)
|
||||||
|
|||||||
Reference in New Issue
Block a user