修改了参数事件

This commit is contained in:
2025-09-02 21:50:27 +08:00
parent afedf708de
commit 80ffce4fe4
6 changed files with 123 additions and 97 deletions

View File

@@ -9,19 +9,19 @@ namespace DMS.Application.DTOs.Events
public class DataLoadCompletedEventArgs : System.EventArgs public class DataLoadCompletedEventArgs : System.EventArgs
{ {
/// <summary> /// <summary>
/// 加载的设备数量 /// 加载的设备列表
/// </summary> /// </summary>
public int DeviceCount { get; } public List<DeviceDto> Devices { get; }
/// <summary> /// <summary>
/// 加载的变量表数量 /// 加载的变量表列表
/// </summary> /// </summary>
public int VariableTableCount { get; } public List<VariableTableDto> VariableTables { get; }
/// <summary> /// <summary>
/// 加载的变量数量 /// 加载的变量列表
/// </summary> /// </summary>
public int VariableCount { get; } public List<VariableDto> Variables { get; }
/// <summary> /// <summary>
/// 加载是否成功 /// 加载是否成功
@@ -41,16 +41,16 @@ namespace DMS.Application.DTOs.Events
/// <summary> /// <summary>
/// 构造函数 /// 构造函数
/// </summary> /// </summary>
/// <param name="deviceCount">设备数量</param> /// <param name="devices">设备列表</param>
/// <param name="variableTableCount">变量表数量</param> /// <param name="variableTables">变量表列表</param>
/// <param name="variableCount">变量数量</param> /// <param name="variables">变量列表</param>
/// <param name="isSuccess">是否成功</param> /// <param name="isSuccess">是否成功</param>
/// <param name="errorMessage">错误信息</param> /// <param name="errorMessage">错误信息</param>
public DataLoadCompletedEventArgs(int deviceCount, int variableTableCount, int variableCount, bool isSuccess, string errorMessage = null) public DataLoadCompletedEventArgs(List<DeviceDto> devices, List<VariableTableDto> variableTables, List<VariableDto> variables, bool isSuccess, string errorMessage = null)
{ {
DeviceCount = deviceCount; Devices = devices ?? new List<DeviceDto>();
VariableTableCount = variableTableCount; VariableTables = variableTables ?? new List<VariableTableDto>();
VariableCount = variableCount; Variables = variables ?? new List<VariableDto>();
IsSuccess = isSuccess; IsSuccess = isSuccess;
ErrorMessage = errorMessage; ErrorMessage = errorMessage;
LoadTime = DateTime.Now; LoadTime = DateTime.Now;

View File

@@ -13,14 +13,9 @@ namespace DMS.Application.DTOs.Events
public DataChangeType ChangeType { get; } public DataChangeType ChangeType { get; }
/// <summary> /// <summary>
/// 设备ID /// 设备DTO
/// </summary> /// </summary>
public int DeviceId { get; } public DeviceDto Device { get; }
/// <summary>
/// 设备名称
/// </summary>
public string DeviceName { get; }
/// <summary> /// <summary>
/// 变更时间 /// 变更时间
@@ -31,13 +26,11 @@ namespace DMS.Application.DTOs.Events
/// 构造函数 /// 构造函数
/// </summary> /// </summary>
/// <param name="changeType">变更类型</param> /// <param name="changeType">变更类型</param>
/// <param name="deviceId">设备ID</param> /// <param name="device">设备DTO</param>
/// <param name="deviceName">设备名称</param> public DeviceChangedEventArgs(DataChangeType changeType, DeviceDto device)
public DeviceChangedEventArgs(DataChangeType changeType, int deviceId, string deviceName)
{ {
ChangeType = changeType; ChangeType = changeType;
DeviceId = deviceId; Device = device;
DeviceName = deviceName;
ChangeTime = DateTime.Now; ChangeTime = DateTime.Now;
} }
} }

View File

@@ -13,19 +13,14 @@ namespace DMS.Application.DTOs.Events
public DataChangeType ChangeType { get; } public DataChangeType ChangeType { get; }
/// <summary> /// <summary>
/// 变量ID /// 变量DTO
/// </summary> /// </summary>
public int VariableId { get; } public VariableDto Variable { get; }
/// <summary> /// <summary>
/// 变量名称 /// 关联的变量表DTO
/// </summary> /// </summary>
public string VariableName { get; } public VariableTableDto VariableTable { get; }
/// <summary>
/// 关联的变量表ID
/// </summary>
public int VariableTableId { get; }
/// <summary> /// <summary>
/// 变更时间 /// 变更时间
@@ -36,15 +31,13 @@ namespace DMS.Application.DTOs.Events
/// 构造函数 /// 构造函数
/// </summary> /// </summary>
/// <param name="changeType">变更类型</param> /// <param name="changeType">变更类型</param>
/// <param name="variableId">变量ID</param> /// <param name="variable">变量DTO</param>
/// <param name="variableName">变量名称</param> /// <param name="variableTable">关联的变量表DTO</param>
/// <param name="variableTableId">关联的变量表ID</param> public VariableChangedEventArgs(DataChangeType changeType, VariableDto variable, VariableTableDto variableTable)
public VariableChangedEventArgs(DataChangeType changeType, int variableId, string variableName, int variableTableId)
{ {
ChangeType = changeType; ChangeType = changeType;
VariableId = variableId; Variable = variable;
VariableName = variableName; VariableTable = variableTable;
VariableTableId = variableTableId;
ChangeTime = DateTime.Now; ChangeTime = DateTime.Now;
} }
} }

View File

@@ -13,19 +13,14 @@ namespace DMS.Application.DTOs.Events
public DataChangeType ChangeType { get; } public DataChangeType ChangeType { get; }
/// <summary> /// <summary>
/// 变量表ID /// 变量表DTO
/// </summary> /// </summary>
public int VariableTableId { get; } public VariableTableDto VariableTable { get; }
/// <summary> /// <summary>
/// 变量表名称 /// 关联的设备DTO
/// </summary> /// </summary>
public string VariableTableName { get; } public DeviceDto Device { get; }
/// <summary>
/// 关联的设备ID
/// </summary>
public int DeviceId { get; }
/// <summary> /// <summary>
/// 变更时间 /// 变更时间
@@ -36,15 +31,13 @@ namespace DMS.Application.DTOs.Events
/// 构造函数 /// 构造函数
/// </summary> /// </summary>
/// <param name="changeType">变更类型</param> /// <param name="changeType">变更类型</param>
/// <param name="variableTableId">变量表ID</param> /// <param name="variableTable">变量表DTO</param>
/// <param name="variableTableName">变量表名称</param> /// <param name="device">关联的设备DTO</param>
/// <param name="deviceId">关联的设备ID</param> public VariableTableChangedEventArgs(DataChangeType changeType, VariableTableDto variableTable, DeviceDto device)
public VariableTableChangedEventArgs(DataChangeType changeType, int variableTableId, string variableTableName, int deviceId)
{ {
ChangeType = changeType; ChangeType = changeType;
VariableTableId = variableTableId; VariableTable = variableTable;
VariableTableName = variableTableName; Device = device;
DeviceId = deviceId;
ChangeTime = DateTime.Now; ChangeTime = DateTime.Now;
} }
} }

View File

@@ -147,7 +147,7 @@ public class DataCenterService : IDataCenterService
{ {
if (Devices.TryAdd(deviceDto.Id, deviceDto)) if (Devices.TryAdd(deviceDto.Id, deviceDto))
{ {
OnDeviceChanged(new DeviceChangedEventArgs(DataChangeType.Added, deviceDto.Id, deviceDto.Name)); OnDeviceChanged(new DeviceChangedEventArgs(DataChangeType.Added, deviceDto));
} }
} }
@@ -157,7 +157,7 @@ public class DataCenterService : IDataCenterService
public void UpdateDeviceInMemory(DeviceDto deviceDto) public void UpdateDeviceInMemory(DeviceDto deviceDto)
{ {
Devices.AddOrUpdate(deviceDto.Id, deviceDto, (key, oldValue) => deviceDto); Devices.AddOrUpdate(deviceDto.Id, deviceDto, (key, oldValue) => deviceDto);
OnDeviceChanged(new DeviceChangedEventArgs(DataChangeType.Updated, deviceDto.Id, deviceDto.Name)); OnDeviceChanged(new DeviceChangedEventArgs(DataChangeType.Updated, deviceDto));
} }
/// <summary> /// <summary>
@@ -167,7 +167,7 @@ public class DataCenterService : IDataCenterService
{ {
if (Devices.TryRemove(deviceId, out var deviceDto)) if (Devices.TryRemove(deviceId, out var deviceDto))
{ {
OnDeviceChanged(new DeviceChangedEventArgs(DataChangeType.Deleted, deviceId, deviceDto?.Name ?? "")); OnDeviceChanged(new DeviceChangedEventArgs(DataChangeType.Deleted, deviceDto));
} }
} }
@@ -220,13 +220,18 @@ public class DataCenterService : IDataCenterService
/// </summary> /// </summary>
public void AddVariableTableToMemory(VariableTableDto variableTableDto) public void AddVariableTableToMemory(VariableTableDto variableTableDto)
{ {
DeviceDto deviceDto = null;
if (Devices.TryGetValue(variableTableDto.DeviceId, out var device))
{
deviceDto = device;
}
if (VariableTables.TryAdd(variableTableDto.Id, variableTableDto)) if (VariableTables.TryAdd(variableTableDto.Id, variableTableDto))
{ {
OnVariableTableChanged(new VariableTableChangedEventArgs( OnVariableTableChanged(new VariableTableChangedEventArgs(
DataChangeType.Added, DataChangeType.Added,
variableTableDto.Id, variableTableDto,
variableTableDto.Name, deviceDto));
variableTableDto.DeviceId));
} }
} }
@@ -235,12 +240,17 @@ public class DataCenterService : IDataCenterService
/// </summary> /// </summary>
public void UpdateVariableTableInMemory(VariableTableDto variableTableDto) public void UpdateVariableTableInMemory(VariableTableDto variableTableDto)
{ {
DeviceDto deviceDto = null;
if (Devices.TryGetValue(variableTableDto.DeviceId, out var device))
{
deviceDto = device;
}
VariableTables.AddOrUpdate(variableTableDto.Id, variableTableDto, (key, oldValue) => variableTableDto); VariableTables.AddOrUpdate(variableTableDto.Id, variableTableDto, (key, oldValue) => variableTableDto);
OnVariableTableChanged(new VariableTableChangedEventArgs( OnVariableTableChanged(new VariableTableChangedEventArgs(
DataChangeType.Updated, DataChangeType.Updated,
variableTableDto.Id, variableTableDto,
variableTableDto.Name, deviceDto));
variableTableDto.DeviceId));
} }
/// <summary> /// <summary>
@@ -250,11 +260,16 @@ public class DataCenterService : IDataCenterService
{ {
if (VariableTables.TryRemove(variableTableId, out var variableTableDto)) if (VariableTables.TryRemove(variableTableId, out var variableTableDto))
{ {
DeviceDto deviceDto = null;
if (variableTableDto != null && Devices.TryGetValue(variableTableDto.DeviceId, out var device))
{
deviceDto = device;
}
OnVariableTableChanged(new VariableTableChangedEventArgs( OnVariableTableChanged(new VariableTableChangedEventArgs(
DataChangeType.Deleted, DataChangeType.Deleted,
variableTableId, variableTableDto,
variableTableDto?.Name ?? "", deviceDto));
variableTableDto?.DeviceId ?? 0));
} }
} }
@@ -347,13 +362,18 @@ public class DataCenterService : IDataCenterService
/// </summary> /// </summary>
public void AddVariableToMemory(VariableDto variableDto) public void AddVariableToMemory(VariableDto variableDto)
{ {
VariableTableDto variableTableDto = null;
if (VariableTables.TryGetValue(variableDto.VariableTableId, out var variableTable))
{
variableTableDto = variableTable;
}
if (Variables.TryAdd(variableDto.Id, variableDto)) if (Variables.TryAdd(variableDto.Id, variableDto))
{ {
OnVariableChanged(new VariableChangedEventArgs( OnVariableChanged(new VariableChangedEventArgs(
DataChangeType.Added, DataChangeType.Added,
variableDto.Id, variableDto,
variableDto.Name, variableTableDto));
variableDto.VariableTableId));
} }
} }
@@ -362,12 +382,17 @@ public class DataCenterService : IDataCenterService
/// </summary> /// </summary>
public void UpdateVariableInMemory(VariableDto variableDto) public void UpdateVariableInMemory(VariableDto variableDto)
{ {
VariableTableDto variableTableDto = null;
if (VariableTables.TryGetValue(variableDto.VariableTableId, out var variableTable))
{
variableTableDto = variableTable;
}
Variables.AddOrUpdate(variableDto.Id, variableDto, (key, oldValue) => variableDto); Variables.AddOrUpdate(variableDto.Id, variableDto, (key, oldValue) => variableDto);
OnVariableChanged(new VariableChangedEventArgs( OnVariableChanged(new VariableChangedEventArgs(
DataChangeType.Updated, DataChangeType.Updated,
variableDto.Id, variableDto,
variableDto.Name, variableTableDto));
variableDto.VariableTableId));
} }
/// <summary> /// <summary>
@@ -377,11 +402,16 @@ public class DataCenterService : IDataCenterService
{ {
if (Variables.TryRemove(variableId, out var variableDto)) if (Variables.TryRemove(variableId, out var variableDto))
{ {
VariableTableDto variableTableDto = null;
if (variableDto != null && VariableTables.TryGetValue(variableDto.VariableTableId, out var variableTable))
{
variableTableDto = variableTable;
}
OnVariableChanged(new VariableChangedEventArgs( OnVariableChanged(new VariableChangedEventArgs(
DataChangeType.Deleted, DataChangeType.Deleted,
variableId, variableDto,
variableDto?.Name ?? "", variableTableDto));
variableDto?.VariableTableId ?? 0));
} }
} }
@@ -392,13 +422,18 @@ public class DataCenterService : IDataCenterService
{ {
foreach (var variable in variables) foreach (var variable in variables)
{ {
VariableTableDto variableTableDto = null;
if (VariableTables.TryGetValue(variable.VariableTableId, out var variableTable))
{
variableTableDto = variableTable;
}
if (Variables.TryAdd(variable.Id, variable)) if (Variables.TryAdd(variable.Id, variable))
{ {
OnVariableChanged(new VariableChangedEventArgs( OnVariableChanged(new VariableChangedEventArgs(
DataChangeType.Added, DataChangeType.Added,
variable.Id, variable,
variable.Name, variableTableDto));
variable.VariableTableId));
} }
} }
OnDataChanged(new DataChangedEventArgs(DataChangeType.BatchOperation)); OnDataChanged(new DataChangedEventArgs(DataChangeType.BatchOperation));
@@ -411,12 +446,17 @@ public class DataCenterService : IDataCenterService
{ {
foreach (var variable in variables) foreach (var variable in variables)
{ {
VariableTableDto variableTableDto = null;
if (VariableTables.TryGetValue(variable.VariableTableId, out var variableTable))
{
variableTableDto = variableTable;
}
Variables.AddOrUpdate(variable.Id, variable, (key, oldValue) => variable); Variables.AddOrUpdate(variable.Id, variable, (key, oldValue) => variable);
OnVariableChanged(new VariableChangedEventArgs( OnVariableChanged(new VariableChangedEventArgs(
DataChangeType.Updated, DataChangeType.Updated,
variable.Id, variable,
variable.Name, variableTableDto));
variable.VariableTableId));
} }
OnDataChanged(new DataChangedEventArgs(DataChangeType.BatchOperation)); OnDataChanged(new DataChangedEventArgs(DataChangeType.BatchOperation));
} }
@@ -430,11 +470,16 @@ public class DataCenterService : IDataCenterService
{ {
if (Variables.TryRemove(variableId, out var variableDto)) if (Variables.TryRemove(variableId, out var variableDto))
{ {
VariableTableDto variableTableDto = null;
if (variableDto != null && VariableTables.TryGetValue(variableDto.VariableTableId, out var variableTable))
{
variableTableDto = variableTable;
}
OnVariableChanged(new VariableChangedEventArgs( OnVariableChanged(new VariableChangedEventArgs(
DataChangeType.Deleted, DataChangeType.Deleted,
variableId, variableDto,
variableDto?.Name ?? "", variableTableDto));
variableDto?.VariableTableId ?? 0));
} }
} }
OnDataChanged(new DataChangedEventArgs(DataChangeType.BatchOperation)); OnDataChanged(new DataChangedEventArgs(DataChangeType.BatchOperation));
@@ -551,15 +596,20 @@ public class DataCenterService : IDataCenterService
// 触发数据加载完成事件 // 触发数据加载完成事件
OnDataLoadCompleted(new DataLoadCompletedEventArgs( OnDataLoadCompleted(new DataLoadCompletedEventArgs(
deviceDtos.Count, deviceDtos,
variableTableDtos.Count, variableTableDtos,
variableDtos.Count, variableDtos,
true)); true));
} }
catch (Exception ex) catch (Exception ex)
{ {
// 触发数据加载失败事件 // 触发数据加载失败事件
OnDataLoadCompleted(new DataLoadCompletedEventArgs(0, 0, 0, false, ex.Message)); OnDataLoadCompleted(new DataLoadCompletedEventArgs(
new List<DeviceDto>(),
new List<VariableTableDto>(),
new List<VariableDto>(),
false,
ex.Message));
throw new ApplicationException($"加载所有数据到内存时发生错误,错误信息:{ex.Message}", ex); throw new ApplicationException($"加载所有数据到内存时发生错误,错误信息:{ex.Message}", ex);
} }
} }

View File

@@ -17,7 +17,6 @@ namespace DMS.Infrastructure.UnitTests
{ {
// Arrange // Arrange
var mockRepositoryManager = new Mock<IRepositoryManager>(); var mockRepositoryManager = new Mock<IRepositoryManager>();
var mockMapper = new Mock<IMapper>();
var mockDeviceAppService = new Mock<IDeviceAppService>(); var mockDeviceAppService = new Mock<IDeviceAppService>();
var mockVariableTableAppService = new Mock<IVariableTableAppService>(); var mockVariableTableAppService = new Mock<IVariableTableAppService>();
var mockVariableAppService = new Mock<IVariableAppService>(); var mockVariableAppService = new Mock<IVariableAppService>();
@@ -25,7 +24,7 @@ namespace DMS.Infrastructure.UnitTests
// Act // Act
var dataCenterService = new DataCenterService( var dataCenterService = new DataCenterService(
mockRepositoryManager.Object, mockRepositoryManager.Object,
mockMapper.Object, null, // 在测试中不会使用到mapper
mockDeviceAppService.Object, mockDeviceAppService.Object,
mockVariableTableAppService.Object, mockVariableTableAppService.Object,
mockVariableAppService.Object); mockVariableAppService.Object);
@@ -39,7 +38,6 @@ namespace DMS.Infrastructure.UnitTests
{ {
// Arrange // Arrange
var mockRepositoryManager = new Mock<IRepositoryManager>(); var mockRepositoryManager = new Mock<IRepositoryManager>();
var mockMapper = new Mock<IMapper>();
var mockDeviceAppService = new Mock<IDeviceAppService>(); var mockDeviceAppService = new Mock<IDeviceAppService>();
var mockVariableTableAppService = new Mock<IVariableTableAppService>(); var mockVariableTableAppService = new Mock<IVariableTableAppService>();
var mockVariableAppService = new Mock<IVariableAppService>(); var mockVariableAppService = new Mock<IVariableAppService>();
@@ -47,7 +45,7 @@ namespace DMS.Infrastructure.UnitTests
// Act // Act
var dataCenterService = new DataCenterService( var dataCenterService = new DataCenterService(
mockRepositoryManager.Object, mockRepositoryManager.Object,
mockMapper.Object, null, // 在测试中不会使用到mapper
mockDeviceAppService.Object, mockDeviceAppService.Object,
mockVariableTableAppService.Object, mockVariableTableAppService.Object,
mockVariableAppService.Object); mockVariableAppService.Object);
@@ -169,8 +167,7 @@ namespace DMS.Infrastructure.UnitTests
// Assert // Assert
Assert.NotNull(eventArgs); Assert.NotNull(eventArgs);
Assert.Equal(DataChangeType.Added, eventArgs.ChangeType); Assert.Equal(DataChangeType.Added, eventArgs.ChangeType);
Assert.Equal(1, eventArgs.DeviceId); Assert.Equal(deviceDto, eventArgs.Device);
Assert.Equal("Test Device", eventArgs.DeviceName);
} }
} }
} }