Files
DMS/DMS.WPF/ViewModels/Items/VariableItemViewModel.cs

195 lines
5.8 KiB
C#
Raw Normal View History

2025-07-26 10:05:43 +08:00
using CommunityToolkit.Mvvm.ComponentModel;
using DMS.Application.DTOs;
using DMS.Core.Enums;
using System;
using System.Collections.Generic;
namespace DMS.WPF.ViewModels.Items;
2025-08-23 16:01:30 +08:00
/// <summary>
/// 表示单个变量项的视图模型。
/// 此类用于UI层的数据绑定封装了变量数据以及与UI相关的状态和逻辑。
/// 它继承自 ObservableObject以便于实现 INotifyPropertyChanged 接口从而支持WPF的双向绑定。
/// </summary>
2025-07-26 10:05:43 +08:00
public partial class VariableItemViewModel : ObservableObject
{
2025-08-23 16:01:30 +08:00
/// <summary>
/// 获取或设置变量的唯一标识符 (ID)。
/// 通常对应数据库中的主键。
/// </summary>
2025-07-30 12:09:00 +08:00
public int Id { get; set; }
2025-07-26 10:05:43 +08:00
2025-08-23 16:01:30 +08:00
/// <summary>
/// 获取或设置变量的名称。
/// 这个名称会显示在UI界面上例如在列表或标签中。
/// [ObservableProperty] 特性会自动生成支持变更通知的属性。
/// </summary>
2025-07-26 10:05:43 +08:00
[ObservableProperty]
private string _name;
2025-08-23 16:01:30 +08:00
/// <summary>
/// 获取或设置变量的S7通信地址。
/// 例如:"DB1.DBD0"。仅在协议为S7时有效。
/// </summary>
2025-07-26 10:05:43 +08:00
[ObservableProperty]
private string? _s7Address;
2025-08-23 16:01:30 +08:00
/// <summary>
/// 获取或设置从设备读取到的原始数据值。
/// 这通常是未经转换的字符串形式的值。
/// </summary>
2025-07-26 10:05:43 +08:00
[ObservableProperty]
private string? _dataValue;
2025-08-23 16:01:30 +08:00
/// <summary>
/// 获取或设置用于在界面上显示的值。
/// 这可能是经过公式转换、格式化或添加了单位后的值。
/// </summary>
2025-07-26 10:05:43 +08:00
[ObservableProperty]
private string? _displayValue;
2025-08-23 16:01:30 +08:00
/// <summary>
/// 获取或设置此变量所属的变量表 (VariableTable) 的数据传输对象 (DTO)。
/// 用于在界面上显示变量表的关联信息。
/// </summary>
2025-07-26 10:05:43 +08:00
[ObservableProperty]
private VariableTableDto? _variableTable;
2025-08-23 16:01:30 +08:00
/// <summary>
/// 获取或设置与此变量关联的MQTT别名列表。
/// 一个变量可以有多个MQTT别名。
/// </summary>
2025-07-26 10:05:43 +08:00
[ObservableProperty]
private List<VariableMqttAliasDto>? _mqttAliases;
2025-08-23 16:01:30 +08:00
/// <summary>
/// 获取或设置变量的信号类型 (如AI, DI, AO, DO)。
/// </summary>
2025-07-26 10:05:43 +08:00
[ObservableProperty]
2025-07-27 21:58:50 +08:00
private SignalType _signalType ;
2025-07-26 10:05:43 +08:00
2025-08-23 16:01:30 +08:00
/// <summary>
/// 获取或设置变量的轮询等级。
/// 用于决定数据采集的频率(如:高、中、低)。
/// </summary>
2025-07-26 10:05:43 +08:00
[ObservableProperty]
private PollLevelType _pollLevel;
2025-08-23 16:01:30 +08:00
/// <summary>
/// 获取或设置一个值,该值指示此变量是否被激活。
/// 未激活的变量将不会被后台服务轮询。
/// </summary>
2025-07-26 10:05:43 +08:00
[ObservableProperty]
private bool _isActive;
2025-08-23 16:01:30 +08:00
/// <summary>
/// 获取或设置变量所属的变量表的ID。
/// </summary>
2025-07-26 10:05:43 +08:00
[ObservableProperty]
private int _variableTableId;
2025-08-23 16:01:30 +08:00
/// <summary>
/// 获取或设置变量的OPC UA节点ID。
/// 例如:"ns=2;s=MyDevice.MyVariable"。仅在协议为OpcUa时有效。
/// </summary>
2025-07-26 10:05:43 +08:00
[ObservableProperty]
private string _opcUaNodeId;
2025-08-23 16:01:30 +08:00
/// <summary>
/// 获取或设置是否为此变量启用历史记录。
/// </summary>
2025-07-26 10:05:43 +08:00
[ObservableProperty]
private bool _isHistoryEnabled;
2025-08-23 16:01:30 +08:00
/// <summary>
/// 获取或设置历史记录的死区值。
/// 当值的变化超过此死区值时,才会记录历史数据,用于减少不必要的数据存储。
/// </summary>
2025-07-26 10:05:43 +08:00
[ObservableProperty]
private double _historyDeadband;
2025-08-23 16:01:30 +08:00
/// <summary>
/// 获取或设置是否为此变量启用报警功能。
/// </summary>
2025-07-26 10:05:43 +08:00
[ObservableProperty]
private bool _isAlarmEnabled;
2025-08-23 16:01:30 +08:00
/// <summary>
/// 获取或设置报警的下限值。
/// </summary>
2025-07-26 10:05:43 +08:00
[ObservableProperty]
private double _alarmMinValue;
2025-08-23 16:01:30 +08:00
/// <summary>
/// 获取或设置报警的上限值。
/// </summary>
2025-07-26 10:05:43 +08:00
[ObservableProperty]
private double _alarmMaxValue;
2025-08-23 16:01:30 +08:00
/// <summary>
/// 获取或设置报警的死区值。
/// 用于防止在临界点附近频繁触发或解除报警。
/// </summary>
2025-07-26 10:05:43 +08:00
[ObservableProperty]
private double _alarmDeadband;
2025-08-23 16:01:30 +08:00
/// <summary>
/// 获取或设置变量使用的通信协议S7, OpcUa, Modbus
/// </summary>
2025-07-26 10:05:43 +08:00
[ObservableProperty]
private ProtocolType _protocol;
2025-08-23 16:01:30 +08:00
/// <summary>
/// 获取或设置变量在C#中对应的数据类型。
/// </summary>
2025-07-26 10:05:43 +08:00
[ObservableProperty]
private CSharpDataType _cSharpDataType;
2025-08-23 16:01:30 +08:00
/// <summary>
/// 获取或设置值的转换公式。
/// 例如:"x * 10" 或 "(x / 100) + 5"。'x' 代表原始值。
/// </summary>
2025-07-26 10:05:43 +08:00
[ObservableProperty]
private string _conversionFormula;
2025-08-23 16:01:30 +08:00
/// <summary>
/// 获取或设置记录的创建时间。
/// </summary>
2025-07-26 10:05:43 +08:00
[ObservableProperty]
private DateTime _createdAt;
2025-08-23 16:01:30 +08:00
/// <summary>
/// 获取或设置记录的最后更新时间。
/// </summary>
2025-07-26 10:05:43 +08:00
[ObservableProperty]
private DateTime _updatedAt;
2025-08-23 16:01:30 +08:00
/// <summary>
/// 获取或设置最后更新此记录的用户或进程。
/// </summary>
2025-07-26 10:05:43 +08:00
[ObservableProperty]
private string _updatedBy;
2025-08-23 16:01:30 +08:00
/// <summary>
/// 获取或设置一个值,该值指示此视图模型中的数据是否已被修改。
/// 用于跟踪UI上的更改以便提示用户保存。
/// </summary>
2025-07-26 10:05:43 +08:00
[ObservableProperty]
private bool _isModified;
2025-08-23 16:01:30 +08:00
/// <summary>
/// 获取或设置变量的描述信息。
/// 提供关于该变量的更多上下文或备注。
/// </summary>
2025-07-26 10:05:43 +08:00
[ObservableProperty]
private string _description;
2025-08-23 16:01:30 +08:00
/// <summary>
/// 获取或设置OPC UA值的更新方式轮询或订阅
/// </summary>
[ObservableProperty]
private OpcUaUpdateType _opcUaUpdateType;
2025-07-28 11:08:56 +08:00
2025-08-23 16:01:30 +08:00
}