1. 创建了 BatchImportVariablesEventArgs 事件参数类

2. 在 IEventService 接口中添加了 OnBatchImportVariables 事件和 RaiseBatchImportVariables 方法
   3. 在 EventService 实现中添加了对新事件的支持
   4. 在 IVariableManagementService 接口中添加了 BatchImportVariablesAsync 方法
   5. 在 VariableManagementService 中实现了该方法,并在批量导入后触发事件
   6. 更新了 VariableTableViewModel 以使用 IVariableManagementService 而不是 IVariableAppService
This commit is contained in:
2025-10-01 20:13:30 +08:00
parent 4e63ebcb94
commit 078d7b3903
7 changed files with 117 additions and 14 deletions

View File

@@ -0,0 +1,37 @@
using DMS.Application.DTOs;
using DMS.Core.Enums;
namespace DMS.Application.Events
{
/// <summary>
/// 批量导入变量事件参数
/// </summary>
public class BatchImportVariablesEventArgs : System.EventArgs
{
/// <summary>
/// 导入的变量列表
/// </summary>
public List<VariableDto> Variables { get; }
/// <summary>
/// 导入的变量数量
/// </summary>
public int Count { get; }
/// <summary>
/// 变更时间
/// </summary>
public DateTime ChangeTime { get; }
/// <summary>
/// 构造函数
/// </summary>
/// <param name="variables">导入的变量列表</param>
public BatchImportVariablesEventArgs(List<VariableDto> variables)
{
Variables = variables ?? new List<VariableDto>();
Count = Variables.Count;
ChangeTime = DateTime.Now;
}
}
}

View File

@@ -97,6 +97,18 @@ public interface IEventService
void RaiseVariableActiveChanged(object sender,VariablesActiveChangedEventArgs e); void RaiseVariableActiveChanged(object sender,VariablesActiveChangedEventArgs e);
/// <summary>
/// 批量导入变量事件
/// </summary>
event EventHandler<BatchImportVariablesEventArgs> OnBatchImportVariables;
/// <summary>
/// 触发批量导入变量事件
/// </summary>
/// <param name="sender">事件发送者</param>
/// <param name="e">批量导入变量事件参数</param>
void RaiseBatchImportVariables(object sender, BatchImportVariablesEventArgs e);
/// <summary> /// <summary>
/// 变量启停改变事件 /// 变量启停改变事件
/// </summary> /// </summary>

View File

@@ -39,4 +39,14 @@ public interface IVariableManagementService
/// 异步批量删除变量。 /// 异步批量删除变量。
/// </summary> /// </summary>
Task<bool> DeleteVariablesAsync(List<int> ids); Task<bool> DeleteVariablesAsync(List<int> ids);
/// <summary>
/// 异步批量导入变量。
/// </summary>
Task<List<VariableDto>> BatchImportVariablesAsync(List<VariableDto> variables);
/// <summary>
/// 查找已存在的变量。
/// </summary>
Task<List<VariableDto>> FindExistingVariablesAsync(IEnumerable<VariableDto> variablesToCheck);
} }

View File

@@ -124,6 +124,21 @@ public class EventService : IEventService
OnVariableActiveChanged?.Invoke(sender, e); OnVariableActiveChanged?.Invoke(sender, e);
} }
/// <summary>
/// 批量导入变量事件
/// </summary>
public event EventHandler<BatchImportVariablesEventArgs> OnBatchImportVariables;
/// <summary>
/// 触发批量导入变量事件
/// </summary>
/// <param name="sender">事件发送者</param>
/// <param name="e">批量导入变量事件参数</param>
public void RaiseBatchImportVariables(object sender, BatchImportVariablesEventArgs e)
{
OnBatchImportVariables?.Invoke(sender, e);
}
/// <summary> /// <summary>
/// 变量值改变事件 /// 变量值改变事件

View File

@@ -153,6 +153,27 @@ public class VariableManagementService : IVariableManagementService
return result; return result;
} }
/// <summary>
/// 异步批量导入变量。
/// </summary>
public async Task<List<VariableDto>> BatchImportVariablesAsync(List<VariableDto> variables)
{
var result = await _variableAppService.BatchImportVariablesAsync(variables);
// 批量导入成功后,触发批量导入事件
if (result != null && result.Any())
{
_eventService.RaiseBatchImportVariables(this, new BatchImportVariablesEventArgs(result));
}
return result;
}
public async Task<List<VariableDto>> FindExistingVariablesAsync(IEnumerable<VariableDto> variablesToCheck)
{
return await _variableAppService.FindExistingVariablesAsync(variablesToCheck);
}
/// <summary> /// <summary>
/// 异步批量删除变量。 /// 异步批量删除变量。
/// </summary> /// </summary>

View File

@@ -6,6 +6,7 @@ using DMS.Core.Models;
using DMS.WPF.Interfaces; using DMS.WPF.Interfaces;
using DMS.WPF.ViewModels.Items; using DMS.WPF.ViewModels.Items;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using DMS.Application.Services.Management;
namespace DMS.WPF.Services; namespace DMS.WPF.Services;
@@ -30,6 +31,12 @@ public class VariableDataService : IVariableDataService
_mapper = mapper; _mapper = mapper;
_dataStorageService = dataStorageService; _dataStorageService = dataStorageService;
_appDataCenterService = appDataCenterService; _appDataCenterService = appDataCenterService;
// 订阅批量导入变量事件
if (_appDataCenterService.VariableManagementService is VariableManagementService variableManagementService)
{
// 如果需要直接订阅事件这将需要EventService实例
}
} }
/// <summary> /// <summary>

View File

@@ -5,6 +5,7 @@ using CommunityToolkit.Mvvm.Input;
using DMS.Application.DTOs; using DMS.Application.DTOs;
using DMS.Application.Interfaces; using DMS.Application.Interfaces;
using DMS.Application.Interfaces.Database; using DMS.Application.Interfaces.Database;
using DMS.Application.Interfaces.Management;
using DMS.Core.Enums; using DMS.Core.Enums;
using DMS.Core.Events; using DMS.Core.Events;
using DMS.Core.Models; using DMS.Core.Models;
@@ -25,7 +26,7 @@ partial class VariableTableViewModel : ViewModelBase, INavigatable
/// </summary> /// </summary>
private readonly IDialogService _dialogService; private readonly IDialogService _dialogService;
private readonly IVariableAppService _variableAppService; private readonly IVariableManagementService _variableManagementService;
private readonly IEventService _eventService; private readonly IEventService _eventService;
private readonly IMqttAliasAppService _mqttAliasAppService; private readonly IMqttAliasAppService _mqttAliasAppService;
private readonly IMqttAppService _mqttAppService; private readonly IMqttAppService _mqttAppService;
@@ -92,7 +93,7 @@ partial class VariableTableViewModel : ViewModelBase, INavigatable
private readonly INotificationService _notificationService; private readonly INotificationService _notificationService;
public VariableTableViewModel(IMapper mapper, IDialogService dialogService, IVariableAppService variableAppService, public VariableTableViewModel(IMapper mapper, IDialogService dialogService, IVariableManagementService variableManagementService,
IEventService eventService, IEventService eventService,
IMqttAliasAppService mqttAliasAppService, IMqttAppService mqttAppService, IMqttAliasAppService mqttAliasAppService, IMqttAppService mqttAppService,
IWPFDataService wpfDataService, IDataStorageService dataStorageService, IWPFDataService wpfDataService, IDataStorageService dataStorageService,
@@ -100,7 +101,7 @@ partial class VariableTableViewModel : ViewModelBase, INavigatable
{ {
_mapper = mapper; _mapper = mapper;
_dialogService = dialogService; _dialogService = dialogService;
_variableAppService = variableAppService; _variableManagementService = variableManagementService;
_eventService = eventService; _eventService = eventService;
_mqttAliasAppService = mqttAliasAppService; _mqttAliasAppService = mqttAliasAppService;
_mqttAppService = mqttAppService; _mqttAppService = mqttAppService;
@@ -207,7 +208,7 @@ partial class VariableTableViewModel : ViewModelBase, INavigatable
editedVariable.UpdatedAt = DateTime.Now; editedVariable.UpdatedAt = DateTime.Now;
// 更新数据库中的变量数据 // 更新数据库中的变量数据
var updateResult = await _variableAppService.UpdateVariableAsync(_mapper.Map<VariableDto>(editedVariable)); var updateResult = await _variableManagementService.UpdateVariableAsync(_mapper.Map<VariableDto>(editedVariable));
if (updateResult > 0) if (updateResult > 0)
@@ -253,7 +254,7 @@ partial class VariableTableViewModel : ViewModelBase, INavigatable
variableDto.VariableTableId = CurrentVariableTable.Id; variableDto.VariableTableId = CurrentVariableTable.Id;
} }
var existList = await _variableAppService.FindExistingVariablesAsync(improtVariableDtos); var existList = await _variableManagementService.FindExistingVariablesAsync(improtVariableDtos);
if (existList.Count > 0) if (existList.Count > 0)
{ {
// // 拼接要删除的变量名称,用于确认提示 // // 拼接要删除的变量名称,用于确认提示
@@ -268,7 +269,7 @@ partial class VariableTableViewModel : ViewModelBase, INavigatable
if (improtVariableDtos.Count != 0) if (improtVariableDtos.Count != 0)
{ {
var addVariableDtos = await _variableAppService.BatchImportVariablesAsync(improtVariableDtos); var addVariableDtos = await _variableManagementService.BatchImportVariablesAsync(improtVariableDtos);
if (addVariableDtos is { Count: > 0 }) if (addVariableDtos is { Count: > 0 })
{ {
List<VariableItemViewModel> variableItemViewModels = _mapper.Map<List<VariableItemViewModel>>(addVariableDtos); List<VariableItemViewModel> variableItemViewModels = _mapper.Map<List<VariableItemViewModel>>(addVariableDtos);
@@ -337,7 +338,7 @@ partial class VariableTableViewModel : ViewModelBase, INavigatable
} }
// 检查是否存在同名变量 // 检查是否存在同名变量
var existList = await _variableAppService.FindExistingVariablesAsync(importedVariableDtos); var existList = await _variableManagementService.FindExistingVariablesAsync(importedVariableDtos);
if (existList.Count > 0) if (existList.Count > 0)
{ {
// 拼接要删除的变量名称,用于确认提示 // 拼接要删除的变量名称,用于确认提示
@@ -353,7 +354,7 @@ partial class VariableTableViewModel : ViewModelBase, INavigatable
// 如果还有变量需要导入,则执行导入操作 // 如果还有变量需要导入,则执行导入操作
if (importedVariableDtos.Count != 0) if (importedVariableDtos.Count != 0)
{ {
var addVariableDtos = await _variableAppService.BatchImportVariablesAsync(importedVariableDtos); var addVariableDtos = await _variableManagementService.BatchImportVariablesAsync(importedVariableDtos);
if (addVariableDtos is { Count: > 0 }) if (addVariableDtos is { Count: > 0 })
{ {
List<VariableItemViewModel> variableItemViewModels = _mapper.Map<List<VariableItemViewModel>>(addVariableDtos); List<VariableItemViewModel> variableItemViewModels = _mapper.Map<List<VariableItemViewModel>>(addVariableDtos);
@@ -415,7 +416,7 @@ partial class VariableTableViewModel : ViewModelBase, INavigatable
// // 添加变量数据到数据库 // // 添加变量数据到数据库
var addVariable var addVariable
= await _variableAppService.CreateVariableAsync(_mapper.Map<VariableDto>(variableItemViewModel)); = await _variableManagementService.CreateVariableAsync(_mapper.Map<VariableDto>(variableItemViewModel));
_mapper.Map(addVariable, variableItemViewModel); _mapper.Map(addVariable, variableItemViewModel);
// // 更新当前页面显示的数据:将新变量添加到集合中 // // 更新当前页面显示的数据:将新变量添加到集合中
_variableItemList.Add(variableItemViewModel); _variableItemList.Add(variableItemViewModel);
@@ -462,7 +463,7 @@ partial class VariableTableViewModel : ViewModelBase, INavigatable
return; // 如果用户取消删除,则返回 return; // 如果用户取消删除,则返回
// 从数据库中删除变量数据 // 从数据库中删除变量数据
var result = await _variableAppService.DeleteVariablesAsync(variablesToDelete.Select(v => v.Id) var result = await _variableManagementService.DeleteVariablesAsync(variablesToDelete.Select(v => v.Id)
.ToList()); .ToList());
if (result) if (result)
{ {
@@ -522,7 +523,7 @@ partial class VariableTableViewModel : ViewModelBase, INavigatable
// 批量更新数据库中的变量数据 // 批量更新数据库中的变量数据
var variableDtos = _mapper.Map<List<VariableDto>>(validVariables); var variableDtos = _mapper.Map<List<VariableDto>>(validVariables);
var result = await _variableAppService.UpdateVariablesAsync(variableDtos); var result = await _variableManagementService.UpdateVariablesAsync(variableDtos);
if (result > 0) if (result > 0)
{ {
@@ -673,7 +674,7 @@ partial class VariableTableViewModel : ViewModelBase, INavigatable
// 批量更新数据库中的变量数据 // 批量更新数据库中的变量数据
var variableDtos = _mapper.Map<List<VariableDto>>(validVariables); var variableDtos = _mapper.Map<List<VariableDto>>(validVariables);
var result = await _variableAppService.UpdateVariablesAsync(variableDtos); var result = await _variableManagementService.UpdateVariablesAsync(variableDtos);
if (result > 0) if (result > 0)
{ {
@@ -737,7 +738,7 @@ partial class VariableTableViewModel : ViewModelBase, INavigatable
// 批量更新数据库中的变量数据 // 批量更新数据库中的变量数据
var variableDtos = _mapper.Map<List<VariableDto>>(validVariables); var variableDtos = _mapper.Map<List<VariableDto>>(validVariables);
var updateResult = await _variableAppService.UpdateVariablesAsync(variableDtos); var updateResult = await _variableManagementService.UpdateVariablesAsync(variableDtos);
if (updateResult > 0) if (updateResult > 0)
@@ -792,7 +793,7 @@ partial class VariableTableViewModel : ViewModelBase, INavigatable
// 批量更新数据库中的变量数据 // 批量更新数据库中的变量数据
var variableDtos = _mapper.Map<List<VariableDto>>(validVariables); var variableDtos = _mapper.Map<List<VariableDto>>(validVariables);
var updateResult = await _variableAppService.UpdateVariablesAsync(variableDtos); var updateResult = await _variableManagementService.UpdateVariablesAsync(variableDtos);
if (updateResult > 0) if (updateResult > 0)
{ {