refactor:重构了变量的导入和删除
This commit is contained in:
@@ -174,6 +174,7 @@ public class VariableManagementService : IVariableManagementService
|
|||||||
{
|
{
|
||||||
variable.VariableTable = variableTable;
|
variable.VariableTable = variableTable;
|
||||||
variableTable.Variables.Add(variable);
|
variableTable.Variables.Add(variable);
|
||||||
|
_appDataService.Variables.TryAdd(variable.Id,variable);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_eventService.RaiseBatchImportVariables(this, new BatchImportVariablesEventArgs(result));
|
_eventService.RaiseBatchImportVariables(this, new BatchImportVariablesEventArgs(result));
|
||||||
|
|||||||
@@ -16,29 +16,18 @@ public interface IVariableViewService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
void LoadAllVariables();
|
void LoadAllVariables();
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 添加变量表。
|
|
||||||
/// </summary>
|
|
||||||
Task<bool> AddVariableTableToView(VariableTable tableDto);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 更新变量表。
|
|
||||||
/// </summary>
|
|
||||||
Task<bool> UpdateVariableTable(VariableTableItem variableTable);
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 添加变量。
|
/// 添加变量。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
void AddVariable(VariableItem variableItem);
|
void AddVariable(VariableItem variableItem);
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 删除变量。
|
|
||||||
/// </summary>
|
|
||||||
void DeleteVariable(int id);
|
|
||||||
|
|
||||||
Task<bool> DeleteAsync(List<VariableItem> deleteList);
|
Task<bool> DeleteAsync(List<VariableItem> deleteList);
|
||||||
|
|
||||||
|
|
||||||
List<VariableItem> CheckExistingVariables(List<VariableItem> importedVariables, DeviceItem device);
|
List<VariableItem> CheckExistingVariables(List<VariableItem> importedVariables, DeviceItem device);
|
||||||
Task<bool> AddAsync(List<VariableItem> variableItems,VariableTableItem variableTable);
|
|
||||||
|
Task<List<VariableItem>> AddAsync(List<VariableItem> variableItems,VariableTableItem variableTable);
|
||||||
}
|
}
|
||||||
@@ -99,7 +99,7 @@ public partial class VariableItem : ObservableObject
|
|||||||
/// 用于在界面上显示变量表的关联信息。
|
/// 用于在界面上显示变量表的关联信息。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[ObservableProperty]
|
[ObservableProperty]
|
||||||
private VariableTable _variableTable;
|
private VariableTableItem _variableTable;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取或设置与此变量关联的MQTT别名列表。
|
/// 获取或设置与此变量关联的MQTT别名列表。
|
||||||
|
|||||||
@@ -53,45 +53,6 @@ public class VariableViewService : IVariableViewService
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 添加变量表。
|
|
||||||
/// </summary>
|
|
||||||
public async Task<bool> AddVariableTableToView(VariableTable tableDto)
|
|
||||||
{
|
|
||||||
// 添加null检查
|
|
||||||
if (tableDto == null || tableDto.DeviceId == 0)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
if (_viewDataService.Devices.TryGetValue(tableDto.DeviceId, out var device))
|
|
||||||
{
|
|
||||||
var variableTableItem = _mapper.Map<VariableTableItem>(tableDto);
|
|
||||||
device.VariableTables.Add(variableTableItem);
|
|
||||||
_viewDataService.VariableTables.TryAdd(variableTableItem.Id, variableTableItem);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 更新变量表。
|
|
||||||
/// </summary>
|
|
||||||
public async Task<bool> UpdateVariableTable(VariableTableItem variableTableItem)
|
|
||||||
{
|
|
||||||
if (variableTableItem is null)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
var variableTable = _mapper.Map<VariableTable>(variableTableItem);
|
|
||||||
if (await _appCenterService.VariableTableManagementService.UpdateAsync(variableTable) > 0)
|
|
||||||
{
|
|
||||||
// 更新数据库后会自动更新内存,无需额外操作
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -110,7 +71,7 @@ public class VariableViewService : IVariableViewService
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 添加变量。
|
/// 添加变量。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public async Task<bool> AddAsync(List<VariableItem> variableItems, VariableTableItem variableTable)
|
public async Task<List<VariableItem>> AddAsync(List<VariableItem> variableItems, VariableTableItem variableTable)
|
||||||
{
|
{
|
||||||
|
|
||||||
foreach (var variableDto in variableItems)
|
foreach (var variableDto in variableItems)
|
||||||
@@ -123,35 +84,17 @@ public class VariableViewService : IVariableViewService
|
|||||||
|
|
||||||
var resVariables = await _variableManagementService.AddAsync(_mapper.Map<List<Variable>>(variableItems));
|
var resVariables = await _variableManagementService.AddAsync(_mapper.Map<List<Variable>>(variableItems));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
List<VariableItem> resVariableItems = _mapper.Map<List<VariableItem>>(resVariables);
|
List<VariableItem> resVariableItems = _mapper.Map<List<VariableItem>>(resVariables);
|
||||||
foreach (var variableItem in resVariableItems)
|
foreach (var variableItem in resVariableItems)
|
||||||
{
|
{
|
||||||
_viewDataService.Variables.TryAdd(variableItem.Id, variableItem);
|
_viewDataService.Variables.TryAdd(variableItem.Id, variableItem);
|
||||||
variableTable.Variables.Add(variableItem);
|
variableTable.Variables.Add(variableItem);
|
||||||
|
variableItem.VariableTable = variableTable;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return resVariableItems;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 删除变量。
|
|
||||||
/// </summary>
|
|
||||||
public void DeleteVariable(int id)
|
|
||||||
{
|
|
||||||
if (!_viewDataService.Variables.TryGetValue(id, out var variableItem))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_viewDataService.VariableTables.TryGetValue(variableItem.VariableTableId, out var variableTable))
|
|
||||||
{
|
|
||||||
variableTable.Variables.Remove(variableItem);
|
|
||||||
}
|
|
||||||
|
|
||||||
_viewDataService.Variables.Remove(variableItem.Id);
|
|
||||||
}
|
|
||||||
|
|
||||||
public async Task<bool> DeleteAsync(List<VariableItem> variableItems)
|
public async Task<bool> DeleteAsync(List<VariableItem> variableItems)
|
||||||
{
|
{
|
||||||
@@ -163,8 +106,19 @@ public class VariableViewService : IVariableViewService
|
|||||||
deleteList.Add(mVariable);
|
deleteList.Add(mVariable);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (!deleteList.Any()) return false;
|
||||||
|
|
||||||
return await _variableManagementService.DeleteAsync(deleteList);
|
var res=await _variableManagementService.DeleteAsync(deleteList);
|
||||||
|
if (res)
|
||||||
|
{
|
||||||
|
foreach (var variable in deleteList)
|
||||||
|
{
|
||||||
|
_viewDataService.Variables.Remove(variable.Id);
|
||||||
|
variable.VariableTable.Variables.Remove(variable);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -179,8 +133,21 @@ public class VariableViewService : IVariableViewService
|
|||||||
{
|
{
|
||||||
foreach (var item in importedVariables)
|
foreach (var item in importedVariables)
|
||||||
{
|
{
|
||||||
bool slelect = item.Name == variable.Name || item.S7Address == variable.S7Address || item.OpcUaNodeId == variable.OpcUaNodeId;
|
var isExist = false;
|
||||||
if (slelect)
|
|
||||||
|
if (variable.Protocol == Core.Enums.ProtocolType.S7)
|
||||||
|
{
|
||||||
|
isExist = item.Name == variable.Name || item.S7Address == variable.S7Address;
|
||||||
|
}else if (variable.Protocol == Core.Enums.ProtocolType.OpcUa)
|
||||||
|
{
|
||||||
|
isExist = item.Name == variable.Name || item.OpcUaNodeId == variable.OpcUaNodeId;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
isExist = item.Name == variable.Name;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isExist)
|
||||||
{
|
{
|
||||||
existList.Add(item);
|
existList.Add(item);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -172,14 +172,6 @@ partial class VariableTableViewModel : ViewModelBase, INavigatable
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 当视图加载完成时调用。
|
|
||||||
/// 初始化协议选择状态,加载变量数据,并创建原始数据的深拷贝备份。
|
|
||||||
/// </summary>
|
|
||||||
public override void OnLoaded()
|
|
||||||
{
|
|
||||||
_variableItemList.AddRange(CurrentVariableTable.Variables);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -188,7 +180,7 @@ partial class VariableTableViewModel : ViewModelBase, INavigatable
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="variableTable">当前操作的变量表,用于更新其内部的变量数据。</param>
|
/// <param name="variableTable">当前操作的变量表,用于更新其内部的变量数据。</param>
|
||||||
[RelayCommand]
|
[RelayCommand]
|
||||||
private async void UpdateVariable()
|
private async Task UpdateVariable()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -247,7 +239,7 @@ partial class VariableTableViewModel : ViewModelBase, INavigatable
|
|||||||
/// 此命令通常绑定到UI中的"从TIA导入"按钮。
|
/// 此命令通常绑定到UI中的"从TIA导入"按钮。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[RelayCommand]
|
[RelayCommand]
|
||||||
private async void ImprotFromTiaVarTable()
|
private async Task ImprotFromTiaVarTable()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -258,33 +250,29 @@ partial class VariableTableViewModel : ViewModelBase, INavigatable
|
|||||||
if (improtVariableItems == null || improtVariableItems.Count == 0) return;
|
if (improtVariableItems == null || improtVariableItems.Count == 0) return;
|
||||||
|
|
||||||
|
|
||||||
//bool flowControl = await CheckExist(improtVariableItems);
|
bool flowControl = await CheckExist(improtVariableItems);
|
||||||
//if (!flowControl)
|
if (!flowControl)
|
||||||
//{
|
{
|
||||||
// return;
|
return;
|
||||||
//}
|
}
|
||||||
|
|
||||||
|
// 如果还有变量需要导入,则执行导入操作
|
||||||
|
if (!improtVariableItems.Any())
|
||||||
|
{
|
||||||
|
_notificationService.ShowSuccess("列表中没有要添加的变量了。");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var resList = await _variableViewService.AddAsync(improtVariableItems, CurrentVariableTable);
|
||||||
|
|
||||||
|
if (resList is null || !resList.Any())
|
||||||
|
{
|
||||||
|
_notificationService.ShowError("从OPC UA服务器导入变量失败");
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
_variableItemList.AddRange(resList);
|
||||||
|
_notificationService.ShowSuccess($"从TIA变量表导入变量成功,共导入变量:{improtVariableItems.Count}个");
|
||||||
|
|
||||||
//if (improtVariableDtos.Count != 0)
|
|
||||||
//{
|
|
||||||
// var addVariableDtos = await _variableManagementService.AddAsync(improtVariableDtos);
|
|
||||||
// if (addVariableDtos is { Count: > 0 })
|
|
||||||
// {
|
|
||||||
// List<VariableItem> variableItemViewModels = _mapper.Map<List<VariableItem>>(addVariableDtos);
|
|
||||||
|
|
||||||
// _variableItemList.AddRange(variableItemViewModels);
|
|
||||||
// //更新数据中心
|
|
||||||
// foreach (var variableItemViewModel in variableItemViewModels)
|
|
||||||
// {
|
|
||||||
// CurrentVariableTable.Variables.Add(variableItemViewModel);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// _notificationService.ShowSuccess($"从Excel导入变量成功,共导入变量:{improtVariableDtos.Count}个");
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
//else
|
|
||||||
//{
|
|
||||||
// _notificationService.ShowSuccess($"列表中没有要添加的变量了。 ");
|
|
||||||
//}
|
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
@@ -297,7 +285,7 @@ partial class VariableTableViewModel : ViewModelBase, INavigatable
|
|||||||
/// 此命令通常绑定到UI中的"从OPC UA导入"按钮。
|
/// 此命令通常绑定到UI中的"从OPC UA导入"按钮。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[RelayCommand]
|
[RelayCommand]
|
||||||
private async void ImportFromOpcUaServer()
|
private async Task ImportFromOpcUaServer()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -320,7 +308,7 @@ partial class VariableTableViewModel : ViewModelBase, INavigatable
|
|||||||
= App.Current.Services.GetRequiredService<ImportOpcUaDialogViewModel>();
|
= App.Current.Services.GetRequiredService<ImportOpcUaDialogViewModel>();
|
||||||
importOpcUaDialogViewModel.EndpointUrl = opcUaEndpointUrl; // 设置Endpoint URL
|
importOpcUaDialogViewModel.EndpointUrl = opcUaEndpointUrl; // 设置Endpoint URL
|
||||||
var importedVariableItems = await _dialogService.ShowDialogAsync(importOpcUaDialogViewModel);
|
var importedVariableItems = await _dialogService.ShowDialogAsync(importOpcUaDialogViewModel);
|
||||||
if (importedVariableItems == null || !importedVariableItems.Any()) return; // 用户取消或没有选择任何变量
|
if (importedVariableItems == null || !importedVariableItems.Any()) return; // 用户取消或没有选择任何变量
|
||||||
|
|
||||||
//检查重复变量并询问是否继续
|
//检查重复变量并询问是否继续
|
||||||
bool flowControl = await CheckExist(importedVariableItems);
|
bool flowControl = await CheckExist(importedVariableItems);
|
||||||
@@ -330,23 +318,22 @@ partial class VariableTableViewModel : ViewModelBase, INavigatable
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 如果还有变量需要导入,则执行导入操作
|
// 如果还有变量需要导入,则执行导入操作
|
||||||
if (importedVariableItems.Any())
|
if (!importedVariableItems.Any())
|
||||||
{
|
|
||||||
var res = await _variableViewService.AddAsync(importedVariableItems, CurrentVariableTable);
|
|
||||||
|
|
||||||
if (res)
|
|
||||||
{
|
|
||||||
_notificationService.ShowSuccess($"从OPC UA服务器导入变量成功,共导入变量:{importedVariableItems.Count}个");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_notificationService.ShowError("从OPC UA服务器导入变量失败");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
_notificationService.ShowSuccess("列表中没有要添加的变量了。");
|
_notificationService.ShowSuccess("列表中没有要添加的变量了。");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
var resList = await _variableViewService.AddAsync(importedVariableItems, CurrentVariableTable);
|
||||||
|
|
||||||
|
if (resList is null || !resList.Any())
|
||||||
|
{
|
||||||
|
_notificationService.ShowError("从OPC UA服务器导入变量失败");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
_variableItemList.AddRange(resList);
|
||||||
|
|
||||||
|
_notificationService.ShowSuccess($"从OPC UA服务器导入变量成功,共导入变量:{importedVariableItems.Count}个");
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
@@ -381,7 +368,7 @@ partial class VariableTableViewModel : ViewModelBase, INavigatable
|
|||||||
/// 此命令通常绑定到UI中的"添加"按钮。
|
/// 此命令通常绑定到UI中的"添加"按钮。
|
||||||
/// <param name="variableTable">当前操作的变量表,用于设置新变量的所属ID。</param>
|
/// <param name="variableTable">当前操作的变量表,用于设置新变量的所属ID。</param>
|
||||||
[RelayCommand]
|
[RelayCommand]
|
||||||
private async void AddVariable()
|
private async Task AddVariable()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -394,28 +381,28 @@ partial class VariableTableViewModel : ViewModelBase, INavigatable
|
|||||||
variableDialogViewModel.PrimaryButText = "添加变量";
|
variableDialogViewModel.PrimaryButText = "添加变量";
|
||||||
variableDialogViewModel.Variable = variableItem;
|
variableDialogViewModel.Variable = variableItem;
|
||||||
|
|
||||||
var variableItemViewModel = await _dialogService.ShowDialogAsync(variableDialogViewModel);
|
var conVariableItem = await _dialogService.ShowDialogAsync(variableDialogViewModel);
|
||||||
|
|
||||||
// 如果用户取消或对话框未返回数据,则直接返回
|
// 如果用户取消或对话框未返回数据,则直接返回
|
||||||
if (variableItemViewModel == null)
|
if (conVariableItem == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// // 设置新变量的所属变量表ID
|
|
||||||
variableItemViewModel.VariableTableId = CurrentVariableTable.Id;
|
|
||||||
variableItemViewModel.CreatedAt = DateTime.Now;
|
|
||||||
variableItemViewModel.UpdatedAt = DateTime.Now;
|
|
||||||
|
|
||||||
|
|
||||||
// // 添加变量数据到数据库
|
// // 添加变量数据到数据库
|
||||||
var addVariable
|
var resList
|
||||||
= await _variableManagementService.CreateVariableAsync(_mapper.Map<Variable>(variableItemViewModel));
|
= await _variableViewService.AddAsync(new List<VariableItem>() { conVariableItem }, CurrentVariableTable);
|
||||||
_mapper.Map(addVariable, variableItemViewModel);
|
if (resList is null || !resList.Any())
|
||||||
|
{
|
||||||
|
_notificationService.ShowError("添加变量失败");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// // 更新当前页面显示的数据:将新变量添加到集合中
|
// // 更新当前页面显示的数据:将新变量添加到集合中
|
||||||
_variableItemList.Add(variableItemViewModel);
|
_variableItemList.Add(variableItem);
|
||||||
_viewCenterService.VariableDataService.AddVariable(variableItemViewModel);
|
_viewCenterService.VariableDataService.AddVariable(variableItem);
|
||||||
//
|
//
|
||||||
// // 显示成功通知
|
// // 显示成功通知
|
||||||
_notificationService.ShowSuccess($"添加变量成功:{variableItemViewModel.Name}");
|
_notificationService.ShowSuccess($"添加变量成功:{variableItem.Name}");
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
@@ -447,25 +434,22 @@ partial class VariableTableViewModel : ViewModelBase, INavigatable
|
|||||||
var names = string.Join("、", variablesToDelete.Select(v => v.Name));
|
var names = string.Join("、", variablesToDelete.Select(v => v.Name));
|
||||||
|
|
||||||
// 显示确认删除对话框
|
// 显示确认删除对话框
|
||||||
ConfirmDialogViewModel confirmDialogViewModel
|
string message = $"确认要删除变量:{names},删除后不可恢复,确认要删除吗?";
|
||||||
= new ConfirmDialogViewModel("删除变量", $"确认要删除变量:{names},删除后不可恢复,确认要删除吗?", "删除变量");
|
var viewModel
|
||||||
var isDel = await _dialogService.ShowDialogAsync(confirmDialogViewModel);
|
= new ConfirmDialogViewModel("删除变量", message, "删除变量");
|
||||||
|
// 如果用户取消删除,则返回
|
||||||
|
if (!await _dialogService.ShowDialogAsync(viewModel)) return;
|
||||||
|
|
||||||
|
|
||||||
if (!isDel)
|
|
||||||
return; // 如果用户取消删除,则返回
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 从数据库中删除变量数据
|
// 从数据库中删除变量数据
|
||||||
var result = await _viewCenterService.VariableDataService.DeleteAsync(variablesToDelete);
|
var result = await _variableViewService.DeleteAsync(variablesToDelete);
|
||||||
if (result)
|
if (result)
|
||||||
{
|
{
|
||||||
foreach (var variable in variablesToDelete)
|
foreach (VariableItem item in variablesToDelete)
|
||||||
{
|
{
|
||||||
_variableItemList.Remove(variable);
|
_variableItemList.Remove(item);
|
||||||
_viewCenterService.VariableDataService.DeleteVariable(variable.Id);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 显示成功通知
|
// 显示成功通知
|
||||||
_notificationService.ShowSuccess($"成功删除 {variablesToDelete.Count} 个变量");
|
_notificationService.ShowSuccess($"成功删除 {variablesToDelete.Count} 个变量");
|
||||||
}
|
}
|
||||||
@@ -615,7 +599,7 @@ partial class VariableTableViewModel : ViewModelBase, INavigatable
|
|||||||
// 为每个变量分配MQTT别名
|
// 为每个变量分配MQTT别名
|
||||||
foreach (var editedVariableMqtt in editedVariableMqtts)
|
foreach (var editedVariableMqtt in editedVariableMqtts)
|
||||||
{
|
{
|
||||||
var mqttAliasItem = await _viewCenterService.MqttAliasDataService.AssignAliasAsync(editedVariableMqtt);
|
var mqttAliasItem = await _viewCenterService.MqttAliasDataService.AssignAliasAsync(editedVariableMqtt);
|
||||||
if (mqttAliasItem is not null)
|
if (mqttAliasItem is not null)
|
||||||
{
|
{
|
||||||
totalAffectedCount++;
|
totalAffectedCount++;
|
||||||
@@ -909,21 +893,15 @@ partial class VariableTableViewModel : ViewModelBase, INavigatable
|
|||||||
|
|
||||||
public override async Task OnNavigatedToAsync(NavigationParameter parameter)
|
public override async Task OnNavigatedToAsync(NavigationParameter parameter)
|
||||||
{
|
{
|
||||||
if (_viewDataService.VariableTables.TryGetValue(parameter.TargetId, out var varTable))
|
if (!_viewDataService.VariableTables.TryGetValue(parameter.TargetId, out var varTable))
|
||||||
{
|
return;
|
||||||
CurrentVariableTable = varTable;
|
|
||||||
// 根据变量表的协议类型设置对应的布尔属性
|
|
||||||
|
|
||||||
if (CurrentVariableTable.Protocol == ProtocolType.S7)
|
CurrentVariableTable = varTable;
|
||||||
{
|
// 根据变量表的协议类型设置对应的布尔属性
|
||||||
IsS7ProtocolSelected = true;
|
IsS7ProtocolSelected = CurrentVariableTable.Protocol == ProtocolType.S7 ? true : false;
|
||||||
}
|
IsOpcUaProtocolSelected = CurrentVariableTable.Protocol == ProtocolType.OpcUa ? true : false;
|
||||||
else if (CurrentVariableTable.Protocol == ProtocolType.OpcUa)
|
//添加变量
|
||||||
{
|
_variableItemList.Clear();
|
||||||
IsOpcUaProtocolSelected = true;
|
_variableItemList.AddRange(CurrentVariableTable.Variables);
|
||||||
}
|
|
||||||
|
|
||||||
OnLoaded();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -80,7 +80,7 @@
|
|||||||
<DataGridTextColumn Header="描述"
|
<DataGridTextColumn Header="描述"
|
||||||
Binding="{Binding Description}" />
|
Binding="{Binding Description}" />
|
||||||
<DataGridTextColumn Header="数据类型"
|
<DataGridTextColumn Header="数据类型"
|
||||||
Binding="{Binding CSharpDataType}" />
|
Binding="{Binding DataType}" />
|
||||||
<DataGridTextColumn Header="S7地址"
|
<DataGridTextColumn Header="S7地址"
|
||||||
Binding="{Binding S7Address}" />
|
Binding="{Binding S7Address}" />
|
||||||
</DataGrid.Columns>
|
</DataGrid.Columns>
|
||||||
|
|||||||
@@ -124,7 +124,7 @@
|
|||||||
</DataGrid.Style>
|
</DataGrid.Style>
|
||||||
<DataGrid.Columns>
|
<DataGrid.Columns>
|
||||||
<DataGridTextColumn Binding="{Binding Name}" Header="名称" />
|
<DataGridTextColumn Binding="{Binding Name}" Header="名称" />
|
||||||
<DataGridTextColumn Binding="{Binding CSharpDataType}" Header="数据类型" />
|
<DataGridTextColumn Binding="{Binding DataType}" Header="数据类型" />
|
||||||
<DataGridTextColumn Binding="{Binding OpcUaNodeId}" Header="节点ID" />
|
<DataGridTextColumn Binding="{Binding OpcUaNodeId}" Header="节点ID" />
|
||||||
|
|
||||||
</DataGrid.Columns>
|
</DataGrid.Columns>
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
<valueConverts:EnumToStringConverter x:Key="EnumToStringConverter" />
|
<valueConverts:EnumToStringConverter x:Key="EnumToStringConverter" />
|
||||||
<ex:EnumBindingSource x:Key="ProtocolType" EnumType="{x:Type en:ProtocolType}" />
|
<ex:EnumBindingSource x:Key="ProtocolType" EnumType="{x:Type en:ProtocolType}" />
|
||||||
<ex:EnumBindingSource x:Key="SignalType" EnumType="{x:Type enums:SignalType}" />
|
<ex:EnumBindingSource x:Key="SignalType" EnumType="{x:Type enums:SignalType}" />
|
||||||
<ex:EnumBindingSource x:Key="CSharpDataType" EnumType="{x:Type enums:DataType}" />
|
<ex:EnumBindingSource x:Key="DataType" EnumType="{x:Type enums:DataType}" />
|
||||||
</ui:ContentDialog.Resources>
|
</ui:ContentDialog.Resources>
|
||||||
|
|
||||||
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
||||||
@@ -160,8 +160,8 @@
|
|||||||
Margin="0,15,0,0"
|
Margin="0,15,0,0"
|
||||||
hc:InfoElement.Title="数据类型:"
|
hc:InfoElement.Title="数据类型:"
|
||||||
IsEnabled="{Binding IsAddModel}"
|
IsEnabled="{Binding IsAddModel}"
|
||||||
ItemsSource="{Binding Source={StaticResource CSharpDataType}}"
|
ItemsSource="{Binding Source={StaticResource DataType}}"
|
||||||
SelectedItem="{Binding Variable.CSharpDataType, UpdateSourceTrigger=PropertyChanged}">
|
SelectedItem="{Binding Variable.DataType, UpdateSourceTrigger=PropertyChanged}">
|
||||||
<ComboBox.ItemTemplate>
|
<ComboBox.ItemTemplate>
|
||||||
<DataTemplate>
|
<DataTemplate>
|
||||||
<TextBlock Text="{Binding Converter={StaticResource EnumDescriptionConverter}}" />
|
<TextBlock Text="{Binding Converter={StaticResource EnumDescriptionConverter}}" />
|
||||||
|
|||||||
Reference in New Issue
Block a user