1. 创建了 BatchImportVariablesEventArgs 事件参数类
2. 在 IEventService 接口中添加了 OnBatchImportVariables 事件和 RaiseBatchImportVariables 方法 3. 在 EventService 实现中添加了对新事件的支持 4. 在 IVariableManagementService 接口中添加了 BatchImportVariablesAsync 方法 5. 在 VariableManagementService 中实现了该方法,并在批量导入后触发事件 6. 更新了 VariableTableViewModel 以使用 IVariableManagementService 而不是 IVariableAppService
This commit is contained in:
37
DMS.Application/Events/BatchImportVariablesEventArgs.cs
Normal file
37
DMS.Application/Events/BatchImportVariablesEventArgs.cs
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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>
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
@@ -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>
|
||||||
/// 变量值改变事件
|
/// 变量值改变事件
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user