修改了参数事件

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
{
/// <summary>
/// 加载的设备数量
/// 加载的设备列表
/// </summary>
public int DeviceCount { get; }
public List<DeviceDto> Devices { get; }
/// <summary>
/// 加载的变量表数量
/// 加载的变量表列表
/// </summary>
public int VariableTableCount { get; }
public List<VariableTableDto> VariableTables { get; }
/// <summary>
/// 加载的变量数量
/// 加载的变量列表
/// </summary>
public int VariableCount { get; }
public List<VariableDto> Variables { get; }
/// <summary>
/// 加载是否成功
@@ -41,16 +41,16 @@ namespace DMS.Application.DTOs.Events
/// <summary>
/// 构造函数
/// </summary>
/// <param name="deviceCount">设备数量</param>
/// <param name="variableTableCount">变量表数量</param>
/// <param name="variableCount">变量数量</param>
/// <param name="devices">设备列表</param>
/// <param name="variableTables">变量表列表</param>
/// <param name="variables">变量列表</param>
/// <param name="isSuccess">是否成功</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;
VariableTableCount = variableTableCount;
VariableCount = variableCount;
Devices = devices ?? new List<DeviceDto>();
VariableTables = variableTables ?? new List<VariableTableDto>();
Variables = variables ?? new List<VariableDto>();
IsSuccess = isSuccess;
ErrorMessage = errorMessage;
LoadTime = DateTime.Now;

View File

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

View File

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

View File

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

View File

@@ -147,7 +147,7 @@ public class DataCenterService : IDataCenterService
{
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)
{
Devices.AddOrUpdate(deviceDto.Id, deviceDto, (key, oldValue) => deviceDto);
OnDeviceChanged(new DeviceChangedEventArgs(DataChangeType.Updated, deviceDto.Id, deviceDto.Name));
OnDeviceChanged(new DeviceChangedEventArgs(DataChangeType.Updated, deviceDto));
}
/// <summary>
@@ -167,7 +167,7 @@ public class DataCenterService : IDataCenterService
{
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>
public void AddVariableTableToMemory(VariableTableDto variableTableDto)
{
DeviceDto deviceDto = null;
if (Devices.TryGetValue(variableTableDto.DeviceId, out var device))
{
deviceDto = device;
}
if (VariableTables.TryAdd(variableTableDto.Id, variableTableDto))
{
OnVariableTableChanged(new VariableTableChangedEventArgs(
DataChangeType.Added,
variableTableDto.Id,
variableTableDto.Name,
variableTableDto.DeviceId));
variableTableDto,
deviceDto));
}
}
@@ -235,12 +240,17 @@ public class DataCenterService : IDataCenterService
/// </summary>
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);
OnVariableTableChanged(new VariableTableChangedEventArgs(
DataChangeType.Updated,
variableTableDto.Id,
variableTableDto.Name,
variableTableDto.DeviceId));
variableTableDto,
deviceDto));
}
/// <summary>
@@ -250,11 +260,16 @@ public class DataCenterService : IDataCenterService
{
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(
DataChangeType.Deleted,
variableTableId,
variableTableDto?.Name ?? "",
variableTableDto?.DeviceId ?? 0));
variableTableDto,
deviceDto));
}
}
@@ -347,13 +362,18 @@ public class DataCenterService : IDataCenterService
/// </summary>
public void AddVariableToMemory(VariableDto variableDto)
{
VariableTableDto variableTableDto = null;
if (VariableTables.TryGetValue(variableDto.VariableTableId, out var variableTable))
{
variableTableDto = variableTable;
}
if (Variables.TryAdd(variableDto.Id, variableDto))
{
OnVariableChanged(new VariableChangedEventArgs(
DataChangeType.Added,
variableDto.Id,
variableDto.Name,
variableDto.VariableTableId));
variableDto,
variableTableDto));
}
}
@@ -362,12 +382,17 @@ public class DataCenterService : IDataCenterService
/// </summary>
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);
OnVariableChanged(new VariableChangedEventArgs(
DataChangeType.Updated,
variableDto.Id,
variableDto.Name,
variableDto.VariableTableId));
variableDto,
variableTableDto));
}
/// <summary>
@@ -377,11 +402,16 @@ public class DataCenterService : IDataCenterService
{
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(
DataChangeType.Deleted,
variableId,
variableDto?.Name ?? "",
variableDto?.VariableTableId ?? 0));
variableDto,
variableTableDto));
}
}
@@ -392,13 +422,18 @@ public class DataCenterService : IDataCenterService
{
foreach (var variable in variables)
{
VariableTableDto variableTableDto = null;
if (VariableTables.TryGetValue(variable.VariableTableId, out var variableTable))
{
variableTableDto = variableTable;
}
if (Variables.TryAdd(variable.Id, variable))
{
OnVariableChanged(new VariableChangedEventArgs(
DataChangeType.Added,
variable.Id,
variable.Name,
variable.VariableTableId));
variable,
variableTableDto));
}
}
OnDataChanged(new DataChangedEventArgs(DataChangeType.BatchOperation));
@@ -411,12 +446,17 @@ public class DataCenterService : IDataCenterService
{
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);
OnVariableChanged(new VariableChangedEventArgs(
DataChangeType.Updated,
variable.Id,
variable.Name,
variable.VariableTableId));
variable,
variableTableDto));
}
OnDataChanged(new DataChangedEventArgs(DataChangeType.BatchOperation));
}
@@ -430,11 +470,16 @@ public class DataCenterService : IDataCenterService
{
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(
DataChangeType.Deleted,
variableId,
variableDto?.Name ?? "",
variableDto?.VariableTableId ?? 0));
variableDto,
variableTableDto));
}
}
OnDataChanged(new DataChangedEventArgs(DataChangeType.BatchOperation));
@@ -551,15 +596,20 @@ public class DataCenterService : IDataCenterService
// 触发数据加载完成事件
OnDataLoadCompleted(new DataLoadCompletedEventArgs(
deviceDtos.Count,
variableTableDtos.Count,
variableDtos.Count,
deviceDtos,
variableTableDtos,
variableDtos,
true));
}
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);
}
}

View File

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