diff --git a/Data/Entities/DbDevice.cs b/Data/Entities/DbDevice.cs index b0cff74..03e5865 100644 --- a/Data/Entities/DbDevice.cs +++ b/Data/Entities/DbDevice.cs @@ -5,28 +5,60 @@ using ProtocolType = PMSWPF.Enums.ProtocolType; namespace PMSWPF.Data.Entities; +/// +/// 表示数据库中的设备实体。 +/// [SugarTable("Device")] public class DbDevice { - [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] //数据库是自增才配自增 - public int Id { get; set; } - - public string Name { get; set; } - + /// + /// 设备的描述信息。 + /// [SugarColumn(IsNullable = true)] public string? Description { get; set; } - public string Ip { get; set; } - public bool IsActive { get; set; } - public bool IsRuning { get; set; } - + /// + /// 设备的类型。 + /// [SugarColumn(ColumnDataType = "varchar(20)", SqlParameterDbType = typeof(EnumToStringConvert))] public DeviceType DeviceType { get; set; } + /// + /// 设备的唯一标识符。 + /// + [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] //数据库是自增才配自增 + public int Id { get; set; } + + /// + /// 设备的IP地址。 + /// + public string Ip { get; set; } + + /// + /// 表示设备是否处于活动状态。 + /// + public bool IsActive { get; set; } + + /// + /// 表示设备是否正在运行。 + /// + public bool IsRuning { get; set; } + + /// + /// 设备的名称。 + /// + public string Name { get; set; } + + /// + /// 设备的通信协议类型。 + /// + [SugarColumn(ColumnDataType = "varchar(20)", SqlParameterDbType = typeof(EnumToStringConvert))] + public ProtocolType ProtocolType { get; set; } + + /// + /// 设备关联的变量表列表。 + /// [Navigate(NavigateType.OneToMany, nameof(DbVariableTable.DeviceId))] [SugarColumn(IsNullable = true)] public List? VariableTables { get; set; } - - [SugarColumn(ColumnDataType = "varchar(20)", SqlParameterDbType = typeof(EnumToStringConvert))] - public ProtocolType ProtocolType { get; set; } } \ No newline at end of file diff --git a/Data/Entities/DbMenu.cs b/Data/Entities/DbMenu.cs index 3091cd7..1567e29 100644 --- a/Data/Entities/DbMenu.cs +++ b/Data/Entities/DbMenu.cs @@ -4,22 +4,53 @@ using SqlSugar.DbConvert; namespace PMSWPF.Data.Entities; +/// +/// 表示数据库中的菜单实体。 +/// [SugarTable("Menu")] public class DbMenu { - [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] - public int Id { get; set; } - public string Icon { get; set; } - public string Name { get; set; } - public int ParentId { get; set; } - [SugarColumn(ColumnDataType = "varchar(20)", SqlParameterDbType = typeof(EnumToStringConvert))] - public MenuType Type { get; set; } - - public int DataId { get; set; } + /// + /// 菜单项关联的数据。 + /// [SugarColumn(IsIgnore = true)] - public Object? Data { get; set; } - + public object? Data { get; set; } + + /// + /// 菜单项关联的数据ID。 + /// + public int DataId { get; set; } + + /// + /// 菜单项的图标。 + /// + public string Icon { get; set; } + + /// + /// 菜单项的唯一标识符。 + /// + [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] + public int Id { get; set; } + + /// + /// 子菜单项列表。 + /// [SugarColumn(IsIgnore = true)] public List Items { get; set; } + /// + /// 菜单项的名称。 + /// + public string Name { get; set; } + + /// + /// 父菜单项的ID。 + /// + public int ParentId { get; set; } + + /// + /// 菜单项的类型。 + /// + [SugarColumn(ColumnDataType = "varchar(20)", SqlParameterDbType = typeof(EnumToStringConvert))] + public MenuType Type { get; set; } } \ No newline at end of file diff --git a/Data/Entities/DbMqtt.cs b/Data/Entities/DbMqtt.cs index f115a6e..7a6aefe 100644 --- a/Data/Entities/DbMqtt.cs +++ b/Data/Entities/DbMqtt.cs @@ -4,76 +4,81 @@ using SqlSugar.DbConvert; namespace PMSWPF.Data.Entities; +/// +/// 表示数据库中的MQTT配置实体。 +/// [SugarTable("Mqtt")] public class DbMqtt { - [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] //数据库是自增才配自增 - public int Id { get; set; } + /// + /// MQTT客户端ID。 + /// + public string ClientID { get; set; } = String.Empty; /// - /// MQTT主机 + /// 创建时间。 + /// + public DateTime CreateTime { get; set; } = DateTime.Now; + + /// + /// MQTT主机。 /// public string Host { get; set; } /// - /// MQTT主机端口 + /// MQTT配置的唯一标识符。 /// - public int Port { get; set; } + [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] //数据库是自增才配自增 + public int Id { get; set; } /// - /// 是否启用 + /// 是否启用此MQTT配置。 /// public bool IsActive { get; set; } /// - /// Mqtt平台 - /// - [SugarColumn(ColumnDataType = "varchar(20)", SqlParameterDbType = typeof(EnumToStringConvert))] - public MqttPlatform Platform { get; set; } - - - /// - /// MQTT客户端名字 - /// - public string Name { get; set; } - - /// - /// MQTT客户端登录用户名 - /// - public string UserName { get; set; } = String.Empty; - - /// - /// MQTT客户端登录密码 - /// - public string PassWord { get; set; } = String.Empty; - - /// - /// MQTT客户端ID - /// - public string ClientID { get; set; }= String.Empty; - - /// - /// MQTT发布主题 - /// - public string PublishTopic { get; set; } = String.Empty; - - /// - /// MQTT订阅主题 - /// - public string SubTopics { get; set; }= String.Empty; - - /// - /// 是否设置为默认MQTT客户端 + /// 是否设置为默认MQTT客户端。 /// public int IsDefault { get; set; } /// - /// 创建时间 + /// MQTT客户端名字。 /// - public DateTime CreateTime { get; set; }= DateTime.Now; + public string Name { get; set; } /// - /// MQTT备注 + /// MQTT客户端登录密码。 + /// + public string PassWord { get; set; } = String.Empty; + + /// + /// Mqtt平台类型。 + /// + [SugarColumn(ColumnDataType = "varchar(20)", SqlParameterDbType = typeof(EnumToStringConvert))] + public MqttPlatform Platform { get; set; } + + /// + /// MQTT主机端口。 + /// + public int Port { get; set; } + + /// + /// MQTT发布主题。 + /// + public string PublishTopic { get; set; } = String.Empty; + + /// + /// MQTT备注。 /// public string Remark { get; set; } = String.Empty; + + /// + /// MQTT订阅主题。 + /// + public string SubTopics { get; set; } = String.Empty; + + /// + /// MQTT客户端登录用户名。 + /// + public string UserName { get; set; } = String.Empty; } \ No newline at end of file diff --git a/Data/Entities/DbNlog.cs b/Data/Entities/DbNlog.cs index 9771f03..e296a74 100644 --- a/Data/Entities/DbNlog.cs +++ b/Data/Entities/DbNlog.cs @@ -2,30 +2,62 @@ using SqlSugar; namespace PMSWPF.Data.Entities; +/// +/// 表示数据库中的NLog日志实体。 +/// [SugarTable("nlog")] public class DbNlog { - // INSERT INTO [dbo].[NLog] ( - // [Application], [Logged], [Level], [ThreadID],[Message], - // [Logger], [Callsite], [Exception], [Url], [Action], [User] - // ) VALUES ( - // @Application, @Logged, @Level,@ThreadID, @Message, - // @Logger, @Callsite, @Exception, @Url, @Action, @User - // ) + /// + /// 日志调用位置。 + /// + public string Callsite { get; set; } + + /// + /// 日志调用行号。 + /// + public int CallsiteLineNumber { get; set; } + + /// + /// 异常信息。 + /// + [SugarColumn(IsNullable = true, ColumnDataType = "text")] + public string Exception { get; set; } + + /// + /// 日志的唯一标识符。 + /// [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] //数据库是自增才配自增 public int Id { get; set; } - public DateTime LogTime { get; set; } + /// + /// 日志级别。 + /// public string Level { get; set; } - public int ThreadID { get; set; } - - [SugarColumn(IsNullable = true)] public string ThreadName { get; set; } + /// + /// 日志记录器名称。 + /// public string Logger { get; set; } - public string Callsite { get; set; } - public int CallsiteLineNumber { get; set; } + + /// + /// 日志时间。 + /// + public DateTime LogTime { get; set; } + + /// + /// 日志消息内容。 + /// public string Message { get; set; } - [SugarColumn(IsNullable = true, ColumnDataType = "text")] - public string Exception { get; set; } + /// + /// 线程ID。 + /// + public int ThreadID { get; set; } + + /// + /// 线程名称。 + /// + [SugarColumn(IsNullable = true)] + public string ThreadName { get; set; } } \ No newline at end of file diff --git a/Data/Entities/DbUser.cs b/Data/Entities/DbUser.cs index e312267..47a35b7 100644 --- a/Data/Entities/DbUser.cs +++ b/Data/Entities/DbUser.cs @@ -2,9 +2,15 @@ namespace PMSWPF.Data.Entities; +/// +/// 表示数据库中的用户实体。 +/// [SugarTable("User")] public class DbUser { + /// + /// 用户的唯一标识符。 + /// [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] //数据库是自增才配自增 public int Id { get; set; } } \ No newline at end of file diff --git a/Data/Entities/DbVariableData.cs b/Data/Entities/DbVariableData.cs index d3a7e3b..e91b2ff 100644 --- a/Data/Entities/DbVariableData.cs +++ b/Data/Entities/DbVariableData.cs @@ -4,123 +4,126 @@ using SqlSugar.DbConvert; namespace PMSWPF.Data.Entities; +/// +/// 表示数据库中的变量数据实体。 +/// [SugarTable("VarData")] public class DbVariableData { /// - /// 变量唯一标识符 + /// 报警的最大值阈值。 /// - [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] //数据库是自增才配自增 - public int Id { get; set; } + public double AlarmMax { get; set; } /// - /// 关联的变量表ID + /// 报警的最小值阈值。 /// - public int VariableTableId { get; set; } + public double AlarmMin { get; set; } /// - /// 关联的变量表实体 + /// 数据转换规则或表达式。 /// - [Navigate(NavigateType.ManyToOne, nameof(VariableTableId))] - public DbVariableTable? VariableTable { get; set; } + public string Converstion { get; set; } = String.Empty; /// - /// 变量名称 + /// 数据类型,例如Int、Float、String等。 /// - public string Name { get; set; } + public string DataType { get; set; } = String.Empty; /// - /// 变量描述 + /// 变量当前原始数据值。 + /// + public string DataValue { get; set; } = String.Empty; + + /// + /// 变量描述。 /// [SugarColumn(IsNullable = true)] public string? Description { get; set; } /// - /// 节点ID,用于标识变量在设备或系统中的唯一路径 - /// - public string NodeId { get; set; } = String.Empty; - - /// - /// 协议类型,例如Modbus、OPC UA等 - /// - [SugarColumn(ColumnDataType = "varchar(20)", SqlParameterDbType = typeof(EnumToStringConvert))] - public ProtocolType ProtocolType { get; set; } - - /// - /// 数据类型,例如Int、Float、String等 - /// - public string DataType { get; set; }=String.Empty; - - /// - /// 信号类型,例如模拟量、数字量等 - /// - [SugarColumn(ColumnDataType = "varchar(20)", IsNullable = true, SqlParameterDbType = typeof(EnumToStringConvert))] - public SignalType SignalType { get; set; } - - /// - /// 变量当前原始数据值 - /// - public string DataValue { get; set; } = String.Empty; - - /// - /// 变量经过转换或格式化后的显示值 + /// 变量经过转换或格式化后的显示值。 /// public string DisplayValue { get; set; } = String.Empty; /// - /// 变量数据最后更新时间 + /// 变量唯一标识符。 /// - public DateTime UpdateTime { get; set; } = DateTime.Now; + [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] //数据库是自增才配自增 + public int Id { get; set; } /// - /// 最后更新变量数据的用户 + /// 指示是否需要对变量进行报警监测。 /// - [SugarColumn(IsNullable = true)] - public DbUser? UpdateUser { get; set; } + public bool IsAlarm { get; set; } /// - /// 关联的MQTT配置列表 + /// 指示变量是否处于激活状态。 + /// + public bool IsActive { get; set; } + + /// + /// 指示变量是否已被逻辑删除。 + /// + public bool IsDeleted { get; set; } + + /// + /// 指示是否需要保存变量数据。 + /// + public bool IsSave { get; set; } + + /// + /// 关联的MQTT配置列表。 /// [SugarColumn(IsNullable = true)] public List? Mqtts { get; set; } /// - /// 数据转换规则或表达式 + /// 变量名称。 /// - public string Converstion { get; set; } = String.Empty; + public string Name { get; set; } /// - /// 指示变量是否处于激活状态 + /// 节点ID,用于标识变量在设备或系统中的唯一路径。 /// - public bool IsActive { get; set; } + public string NodeId { get; set; } = String.Empty; /// - /// 指示是否需要保存变量数据 + /// 协议类型,例如Modbus、OPC UA等。 /// - public bool IsSave { get; set; } + [SugarColumn(ColumnDataType = "varchar(20)", SqlParameterDbType = typeof(EnumToStringConvert))] + public ProtocolType ProtocolType { get; set; } /// - /// 数据保存的范围或阈值 + /// 数据保存的范围或阈值。 /// public double SaveRange { get; set; } /// - /// 指示是否需要对变量进行报警监测 + /// 信号类型,例如模拟量、数字量等。 /// - public bool IsAlarm { get; set; } + [SugarColumn(ColumnDataType = "varchar(20)", IsNullable = true, SqlParameterDbType = typeof(EnumToStringConvert))] + public SignalType SignalType { get; set; } /// - /// 报警的最小值阈值 + /// 变量数据最后更新时间。 /// - public double AlarmMin { get; set; } + public DateTime UpdateTime { get; set; } = DateTime.Now; /// - /// 报警的最大值阈值 + /// 最后更新变量数据的用户。 /// - public double AlarmMax { get; set; } + [SugarColumn(IsNullable = true)] + public DbUser? UpdateUser { get; set; } /// - /// 指示变量是否已被逻辑删除 + /// 关联的变量表实体。 /// - public bool IsDeleted { get; set; } + [Navigate(NavigateType.ManyToOne, nameof(VariableTableId))] + public DbVariableTable? VariableTable { get; set; } + + /// + /// 关联的变量表ID。 + /// + public int VariableTableId { get; set; } } \ No newline at end of file diff --git a/Data/Entities/DbVariableS7Data.cs b/Data/Entities/DbVariableS7Data.cs index 8f254ac..d6687f3 100644 --- a/Data/Entities/DbVariableS7Data.cs +++ b/Data/Entities/DbVariableS7Data.cs @@ -2,6 +2,9 @@ namespace PMSWPF.Data.Entities; +/// +/// 表示数据库中的S7变量数据实体,继承自DbVariableData。 +/// [SugarTable("S7DataVariable")] public class DbVariableS7Data : DbVariableData { diff --git a/Data/Entities/DbVariableTable.cs b/Data/Entities/DbVariableTable.cs index 0f3f48a..88dca82 100644 --- a/Data/Entities/DbVariableTable.cs +++ b/Data/Entities/DbVariableTable.cs @@ -4,25 +4,55 @@ using SqlSugar.DbConvert; namespace PMSWPF.Data.Entities; +/// +/// 表示数据库中的变量表实体。 +/// [SugarTable("VariableTable")] public class DbVariableTable { - [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] //数据库是自增才配自增 - public int Id { get; set; } - - public string Name { get; set; } - - public bool IsActive { get; set; } - [SugarColumn(IsNullable = true)] public string? Description { get; set; } - - [SugarColumn(ColumnDataType = "varchar(20)", SqlParameterDbType = typeof(EnumToStringConvert))] - public ProtocolType ProtocolType { get; set; } - + /// + /// 变量表中包含的数据变量列表。 + /// [Navigate(NavigateType.OneToMany, nameof(DbVariableData.VariableTableId))] public List? DataVariables { get; set; } - [SugarColumn(IsNullable = true)] public int? DeviceId { get; set; } - + /// + /// 变量表关联的设备。 + /// [Navigate(NavigateType.ManyToOne, nameof(DeviceId))] public DbDevice? Device { get; set; } + + /// + /// 变量表关联的设备ID。 + /// + [SugarColumn(IsNullable = true)] + public int? DeviceId { get; set; } + + /// + /// 变量表描述。 + /// + [SugarColumn(IsNullable = true)] + public string? Description { get; set; } + + /// + /// 变量表的唯一标识符。 + /// + [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] //数据库是自增才配自增 + public int Id { get; set; } + + /// + /// 表示变量表是否处于活动状态。 + /// + public bool IsActive { get; set; } + + /// + /// 变量表名称。 + /// + public string Name { get; set; } + + /// + /// 变量表使用的协议类型。 + /// + [SugarColumn(ColumnDataType = "varchar(20)", SqlParameterDbType = typeof(EnumToStringConvert))] + public ProtocolType ProtocolType { get; set; } } \ No newline at end of file diff --git a/Models/Device.cs b/Models/Device.cs index d94cf0c..3dd8ff6 100644 --- a/Models/Device.cs +++ b/Models/Device.cs @@ -5,27 +5,66 @@ using SqlSugar.DbConvert; namespace PMSWPF.Models; +/// +/// 表示设备信息。 +/// public partial class Device : ObservableObject { - [ObservableProperty]private string description; - - [ObservableProperty] private int id; - - [ObservableProperty] private string ip; - - [ObservableProperty] private bool isActive = true; - - [ObservableProperty] private bool isAddDefVarTable = true; - - [ObservableProperty] private bool isRuning; - - [ObservableProperty] private string name; - + /// + /// 设备的描述信息。 + /// + [ObservableProperty] + private string description; + + /// + /// 设备的类型。 + /// [SugarColumn(ColumnDataType = "varchar(20)", SqlParameterDbType = typeof(EnumToStringConvert))] public DeviceType DeviceType { get; set; } - - public List? VariableTables { get; set; } + + /// + /// 设备的唯一标识符。 + /// + [ObservableProperty] + private int id; + + /// + /// 设备的IP地址。 + /// + [ObservableProperty] + private string ip; + + /// + /// 表示设备是否处于活动状态。 + /// + [ObservableProperty] + private bool isActive = true; + + /// + /// 表示是否添加默认变量表。 + /// + [ObservableProperty] + private bool isAddDefVarTable = true; + + /// + /// 表示设备是否正在运行。 + /// + [ObservableProperty] + private bool isRuning; + + /// + /// 设备的名称。 + /// + [ObservableProperty] + private string name; + + /// + /// 设备的通信协议类型。 + /// public ProtocolType ProtocolType { get; set; } - - + + /// + /// 设备关联的变量表列表。 + /// + public List? VariableTables { get; set; } } \ No newline at end of file diff --git a/Models/MenuBean.cs b/Models/MenuBean.cs index 1c6b43a..ff3dad7 100644 --- a/Models/MenuBean.cs +++ b/Models/MenuBean.cs @@ -4,20 +4,58 @@ using PMSWPF.ViewModels; namespace PMSWPF.Models; +/// +/// 表示菜单项。 +/// public class MenuBean { - - public int Id { get; set; } - public string Icon { get; set; } - - public string Name { get; set; } - public int ParentId { get; set; } + /// + /// 菜单项关联的数据。 + /// + public object? Data { get; set; } + + /// + /// 菜单项关联的数据ID。 + /// public int DataId { get; set; } - public MenuType Type { get; set; } - - public ViewModelBase ViewModel { get; set; } - public Object? Data { get; set; } + + /// + /// 菜单项的图标。 + /// + public string Icon { get; set; } + + /// + /// 菜单项的唯一标识符。 + /// + public int Id { get; set; } + + /// + /// 子菜单项列表。 + /// public List Items { get; set; } - + + /// + /// 菜单项的名称。 + /// + public string Name { get; set; } + + /// + /// 父菜单项。 + /// public MenuBean Parent { get; set; } + + /// + /// 父菜单项的ID。 + /// + public int ParentId { get; set; } + + /// + /// 菜单项的类型。 + /// + public MenuType Type { get; set; } + + /// + /// 菜单项关联的ViewModel。 + /// + public ViewModelBase ViewModel { get; set; } } \ No newline at end of file diff --git a/Models/Mqtt.cs b/Models/Mqtt.cs index 54b05b7..e77d8a7 100644 --- a/Models/Mqtt.cs +++ b/Models/Mqtt.cs @@ -2,73 +2,78 @@ namespace PMSWPF.Models; +/// +/// 表示MQTT配置信息。 +/// public class Mqtt { - public int Id { get; set; } - /// - /// MQTT主机 - /// - public string Host { get; set; } - - /// - /// MQTT主机端口 - /// - public int Port { get; set; } - - /// - /// 是否启用 - /// - public bool IsActive { get; set; } - - /// - /// Mqtt平台 - /// - public MqttPlatform Platform { get; set; } - - - /// - /// MQTT客户端名字 - /// - public string Name { get; set; } - - /// - /// MQTT客户端登录用户名 - /// - public string UserName { get; set; } - - /// - /// MQTT客户端登录密码 - /// - public string PassWord { get; set; } //变量状态 - - /// - /// MQTT客户端ID + /// MQTT客户端ID。 /// public string ClientID { get; set; } /// - /// MQTT发布主题 - /// - public string PublishTopic { get; set; } - - /// - /// MQTT订阅主题 - /// - public string SubTopics { get; set; } - - /// - /// 是否设置为默认MQTT客户端 - /// - public int IsDefault { get; set; } - - /// - /// 连接时间 + /// 连接时间。 /// public DateTime ConnTime { get; set; } /// - /// MQTT备注 + /// MQTT主机。 + /// + public string Host { get; set; } + + /// + /// MQTT配置的唯一标识符。 + /// + public int Id { get; set; } + + /// + /// 是否启用此MQTT配置。 + /// + public bool IsActive { get; set; } + + /// + /// 是否设置为默认MQTT客户端。 + /// + public int IsDefault { get; set; } + + /// + /// MQTT客户端名字。 + /// + public string Name { get; set; } + + /// + /// MQTT客户端登录密码。 + /// + public string PassWord { get; set; } + + /// + /// Mqtt平台类型。 + /// + public MqttPlatform Platform { get; set; } + + /// + /// MQTT主机端口。 + /// + public int Port { get; set; } + + /// + /// MQTT发布主题。 + /// + public string PublishTopic { get; set; } + + /// + /// MQTT备注。 /// public string Remark { get; set; } = String.Empty; + + /// + /// MQTT订阅主题。 + /// + public string SubTopics { get; set; } + + /// + /// MQTT客户端登录用户名。 + /// + public string UserName { get; set; } } \ No newline at end of file diff --git a/Models/Notification.cs b/Models/Notification.cs index 2bb069a..bd9ff4a 100644 --- a/Models/Notification.cs +++ b/Models/Notification.cs @@ -2,9 +2,23 @@ namespace PMSWPF.Models; +/// +/// 表示通知信息。 +/// public class Notification { - public string Message { get; set; } - public NotificationType Type { get; set; } + /// + /// 通知是否为全局通知。 + /// public bool IsGlobal { get; set; } + + /// + /// 通知消息内容。 + /// + public string Message { get; set; } + + /// + /// 通知类型。 + /// + public NotificationType Type { get; set; } } \ No newline at end of file diff --git a/Models/VariableData.cs b/Models/VariableData.cs index c057651..257a2e9 100644 --- a/Models/VariableData.cs +++ b/Models/VariableData.cs @@ -2,110 +2,113 @@ namespace PMSWPF.Models; +/// +/// 表示变量数据信息。 +/// public class VariableData { /// - /// 变量唯一标识符 - /// - public int Id { get; set; } - /// - /// 关联的变量表ID - /// - public int VariableTableId { get; set; } - - - /// - /// 变量名称 - /// - public string Name { get; set; } - - /// - /// 变量描述 - /// - public string Description { get; set; }=String.Empty; - - /// - /// 节点ID,用于标识变量在设备或系统中的唯一路径 - /// - public string NodeId { get; set; } - - /// - /// 协议类型,例如Modbus、OPC UA等 - /// - public ProtocolType ProtocolType { get; set; } - - /// - /// 数据类型,例如Int、Float、String等 - /// - public string DataType { get; set; } - - /// - /// 信号类型,例如模拟量、数字量等 - /// - public SignalType SignalType { get; set; } - - /// - /// 变量当前原始数据值 - /// - public string DataValue { get; set; }=String.Empty; - - /// - /// 变量经过转换或格式化后的显示值 - /// - public string DisplayValue { get; set; }=String.Empty; - - /// - /// 变量数据最后更新时间 - /// - public DateTime UpdateTime { get; set; }=DateTime.Now; - - /// - /// 最后更新变量数据的用户 - /// - public User UpdateUser { get; set; } - - /// - /// 关联的MQTT配置列表 - /// - public List Mqtts { get; set; } - - /// - /// 数据转换规则或表达式 - /// - public string Converstion { get; set; }=String.Empty; - - /// - /// 指示变量是否处于激活状态 - /// - public bool IsActive { get; set; } - - /// - /// 指示是否需要保存变量数据 - /// - public bool IsSave { get; set; } - - /// - /// 数据保存的范围或阈值 - /// - public double SaveRange { get; set; } - - /// - /// 指示是否需要对变量进行报警监测 - /// - public bool IsAlarm { get; set; } - - /// - /// 报警的最小值阈值 - /// - public double AlarmMin { get; set; } - - /// - /// 报警的最大值阈值 + /// 报警的最大值阈值。 /// public double AlarmMax { get; set; } /// - /// 指示变量是否已被逻辑删除 + /// 报警的最小值阈值。 + /// + public double AlarmMin { get; set; } + + /// + /// 数据转换规则或表达式。 + /// + public string Converstion { get; set; } = String.Empty; + + /// + /// 数据类型,例如Int、Float、String等。 + /// + public string DataType { get; set; } + + /// + /// 变量当前原始数据值。 + /// + public string DataValue { get; set; } = String.Empty; + + /// + /// 变量描述。 + /// + public string Description { get; set; } = String.Empty; + + /// + /// 变量经过转换或格式化后的显示值。 + /// + public string DisplayValue { get; set; } = String.Empty; + + /// + /// 变量唯一标识符。 + /// + public int Id { get; set; } + + /// + /// 指示是否需要对变量进行报警监测。 + /// + public bool IsAlarm { get; set; } + + /// + /// 指示变量是否处于激活状态。 + /// + public bool IsActive { get; set; } + + /// + /// 指示变量是否已被逻辑删除。 /// public bool IsDeleted { get; set; } + + /// + /// 指示是否需要保存变量数据。 + /// + public bool IsSave { get; set; } + + /// + /// 关联的MQTT配置列表。 + /// + public List Mqtts { get; set; } + + /// + /// 变量名称。 + /// + public string Name { get; set; } + + /// + /// 节点ID,用于标识变量在设备或系统中的唯一路径。 + /// + public string NodeId { get; set; } + + /// + /// 协议类型,例如Modbus、OPC UA等。 + /// + public ProtocolType ProtocolType { get; set; } + + /// + /// 数据保存的范围或阈值。 + /// + public double SaveRange { get; set; } + + /// + /// 信号类型,例如模拟量、数字量等。 + /// + public SignalType SignalType { get; set; } + + /// + /// 变量数据最后更新时间。 + /// + public DateTime UpdateTime { get; set; } = DateTime.Now; + + /// + /// 最后更新变量数据的用户。 + /// + public User UpdateUser { get; set; } + + /// + /// 关联的变量表ID。 + /// + public int VariableTableId { get; set; } } \ No newline at end of file diff --git a/Models/VariableTable.cs b/Models/VariableTable.cs index 29dccc9..29e12d1 100644 --- a/Models/VariableTable.cs +++ b/Models/VariableTable.cs @@ -3,16 +3,51 @@ using PMSWPF.Enums; namespace PMSWPF.Models; -public partial class VariableTable:ObservableObject +/// +/// 表示变量表信息。 +/// +public partial class VariableTable : ObservableObject { - public int Id { get; set; } - [ObservableProperty] private string name; - [ObservableProperty] private string description; - - public ProtocolType ProtocolType { get; set; } + /// + /// 变量表关联的设备。 + /// + public Device? Device { get; set; } + + /// + /// 变量表关联的设备ID。 + /// + public int? DeviceId { get; set; } + + /// + /// 变量表描述。 + /// + [ObservableProperty] + private string description; + + /// + /// 变量表中包含的数据变量列表。 + /// public List DataVariables { get; set; } + + /// + /// 变量表的唯一标识符。 + /// + public int Id { get; set; } + + /// + /// 表示变量表是否处于活动状态。 + /// [ObservableProperty] private bool isActive; - public int? DeviceId { get; set; } - public Device? Device { get; set; } + + /// + /// 变量表名称。 + /// + [ObservableProperty] + private string name; + + /// + /// 变量表使用的协议类型。 + /// + public ProtocolType ProtocolType { get; set; } } \ No newline at end of file diff --git a/ViewModels/DevicesViewModel.cs b/ViewModels/DevicesViewModel.cs index 84caba7..1feb379 100644 --- a/ViewModels/DevicesViewModel.cs +++ b/ViewModels/DevicesViewModel.cs @@ -11,19 +11,36 @@ using PMSWPF.Services; namespace PMSWPF.ViewModels; +/// +/// 设备管理视图模型,负责设备的增删改查操作。 +/// public partial class DevicesViewModel : ViewModelBase { + private readonly DataServices _dataServices; + private readonly IDialogService _dialogService; private readonly DeviceRepository _deviceRepository; private readonly ILogger _logger; - private readonly IDialogService _dialogService; - private readonly DataServices _dataServices; - - - [ObservableProperty] private ObservableCollection _devices; - [ObservableProperty] private Device _selectedDevice; private readonly MenuRepository _menuRepository; private readonly VarTableRepository _varTableRepository; + /// + /// 设备列表。 + /// + [ObservableProperty] + private ObservableCollection _devices; + + /// + /// 当前选中的设备。 + /// + [ObservableProperty] + private Device _selectedDevice; + + /// + /// 初始化 类的新实例。 + /// + /// 日志记录器。 + /// 对话框服务。 + /// 数据服务。 public DevicesViewModel( ILogger logger, IDialogService dialogService, DataServices dataServices ) @@ -39,10 +56,8 @@ public partial class DevicesViewModel : ViewModelBase _dataServices.OnDeviceListChanged += (devices) => { Devices = new ObservableCollection(devices); }; } - - /// - /// 添加设备 + /// 添加设备命令。 /// [RelayCommand] public async void AddDevice() @@ -55,44 +70,13 @@ public partial class DevicesViewModel : ViewModelBase _logger.LogInformation("用户取消了添加设备操作。"); return; } + await _deviceRepository.AddDeviceAndMenu(device); } - /// - /// 编辑设备 + /// 删除设备命令。 /// - [RelayCommand] - public async void EditDevice() - { - try - { - if (SelectedDevice == null) - { - NotificationHelper.ShowMessage("你没有选择任何设备,请选择设备后再点击编辑设备", NotificationType.Error); - return; - } - - var editDievce = await _dialogService.ShowEditDeviceDialog(SelectedDevice); - if (editDievce != null) - { - // 更新菜单 - var res = await _deviceRepository.Edit(editDievce); - var menu = DataServicesHelper.FindMenusForDevice(editDievce, _dataServices.MenuTrees); - if (menu != null) - await _menuRepository.Edit(menu); - - MessageHelper.SendLoadMessage(LoadTypes.Menu); - MessageHelper.SendLoadMessage(LoadTypes.Devices); - } - } - catch (Exception e) - { - NotificationHelper.ShowMessage($"编辑设备的过程中发生错误:{e.Message}", NotificationType.Error); - _logger.LogError($"编辑设备的过程中发生错误:{e}"); - } - } - [RelayCommand] public async void DeleteDevice() { @@ -126,4 +110,38 @@ public partial class DevicesViewModel : ViewModelBase _logger.LogError($"删除设备的过程中发生错误:{e}"); } } + + /// + /// 编辑设备命令。 + /// + [RelayCommand] + public async void EditDevice() + { + try + { + if (SelectedDevice == null) + { + NotificationHelper.ShowMessage("你没有选择任何设备,请选择设备后再点击编辑设备", NotificationType.Error); + return; + } + + var editDievce = await _dialogService.ShowEditDeviceDialog(SelectedDevice); + if (editDievce != null) + { + // 更新菜单 + var res = await _deviceRepository.Edit(editDievce); + var menu = DataServicesHelper.FindMenusForDevice(editDievce, _dataServices.MenuTrees); + if (menu != null) + await _menuRepository.Edit(menu); + + MessageHelper.SendLoadMessage(LoadTypes.Menu); + MessageHelper.SendLoadMessage(LoadTypes.Devices); + } + } + catch (Exception e) + { + NotificationHelper.ShowMessage($"编辑设备的过程中发生错误:{e.Message}", NotificationType.Error); + _logger.LogError($"编辑设备的过程中发生错误:{e}"); + } + } } \ No newline at end of file