using SqlSugar;
|
|
namespace GSModbus.Database
|
{
|
/// <summary>
|
/// Modbus主数据实体 - 存储从PLC读取的数据
|
/// </summary>
|
[SugarTable("ModbusData")]
|
public class ModbusDataEntity
|
{
|
/// <summary>
|
/// 主键ID
|
/// </summary>
|
[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
|
public long Id { get; set; }
|
|
/// <summary>
|
/// 数据读取时间
|
/// </summary>
|
[SugarColumn(IsNullable = false, ColumnDescription = "数据读取时间")]
|
public DateTime ReadTime { get; set; }
|
|
/// <summary>
|
/// 项目名称(来自配置)
|
/// </summary>
|
[SugarColumn(Length = 100, IsNullable = false, ColumnDescription = "项目名称")]
|
public string ProjectName { get; set; } = string.Empty;
|
|
/// <summary>
|
/// PLC IP地址
|
/// </summary>
|
[SugarColumn(Length = 50, IsNullable = false, ColumnDescription = "PLC IP地址")]
|
public string PlcIpAddress { get; set; } = string.Empty;
|
|
/// <summary>
|
/// 控制信号数据(JSON格式)
|
/// </summary>
|
[SugarColumn(ColumnDataType = "TEXT", IsNullable = true, ColumnDescription = "控制信号数据JSON")]
|
public string? ControlSignalsJson { get; set; }
|
|
/// <summary>
|
/// 产品数据(JSON格式)
|
/// </summary>
|
[SugarColumn(ColumnDataType = "TEXT", IsNullable = true, ColumnDescription = "产品数据JSON")]
|
public string? ProductDataJson { get; set; }
|
|
/// <summary>
|
/// 测量数据(JSON格式)
|
/// </summary>
|
[SugarColumn(ColumnDataType = "TEXT", IsNullable = true, ColumnDescription = "测量数据JSON")]
|
public string? MeasurementDataJson { get; set; }
|
|
/// <summary>
|
/// 原始寄存器数据(JSON格式,用于调试)
|
/// </summary>
|
[SugarColumn(ColumnDataType = "TEXT", IsNullable = true, ColumnDescription = "原始寄存器数据JSON")]
|
public string? RawRegistersJson { get; set; }
|
|
/// <summary>
|
/// 数据创建时间
|
/// </summary>
|
[SugarColumn(IsNullable = false, ColumnDescription = "记录创建时间")]
|
public DateTime CreatedAt { get; set; } = DateTime.Now;
|
}
|
|
/// <summary>
|
/// 通信日志实体 - 记录通信状态和统计信息
|
/// </summary>
|
[SugarTable("CommunicationLog")]
|
public class CommunicationLogEntity
|
{
|
/// <summary>
|
/// 主键ID
|
/// </summary>
|
[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
|
public long Id { get; set; }
|
|
/// <summary>
|
/// 日志时间
|
/// </summary>
|
[SugarColumn(IsNullable = false, ColumnDescription = "日志时间")]
|
public DateTime LogTime { get; set; }
|
|
/// <summary>
|
/// 项目名称
|
/// </summary>
|
[SugarColumn(Length = 100, IsNullable = false, ColumnDescription = "项目名称")]
|
public string ProjectName { get; set; } = string.Empty;
|
|
/// <summary>
|
/// PLC IP地址
|
/// </summary>
|
[SugarColumn(Length = 50, IsNullable = false, ColumnDescription = "PLC IP地址")]
|
public string PlcIpAddress { get; set; } = string.Empty;
|
|
/// <summary>
|
/// 事件类型(Connected, Disconnected, DataReceived, Error等)
|
/// </summary>
|
[SugarColumn(Length = 50, IsNullable = false, ColumnDescription = "事件类型")]
|
public string EventType { get; set; } = string.Empty;
|
|
/// <summary>
|
/// 事件描述
|
/// </summary>
|
[SugarColumn(Length = 500, IsNullable = true, ColumnDescription = "事件描述")]
|
public string? EventDescription { get; set; }
|
|
/// <summary>
|
/// 是否成功
|
/// </summary>
|
[SugarColumn(IsNullable = false, ColumnDescription = "是否成功")]
|
public bool IsSuccess { get; set; }
|
|
/// <summary>
|
/// 耗时(毫秒)
|
/// </summary>
|
[SugarColumn(IsNullable = true, ColumnDescription = "操作耗时毫秒")]
|
public int? DurationMs { get; set; }
|
|
/// <summary>
|
/// 附加数据(JSON格式)
|
/// </summary>
|
[SugarColumn(ColumnDataType = "TEXT", IsNullable = true, ColumnDescription = "附加数据JSON")]
|
public string? AdditionalDataJson { get; set; }
|
}
|
|
/// <summary>
|
/// 错误日志实体 - 记录通信和处理错误
|
/// </summary>
|
[SugarTable("ErrorLog")]
|
public class ErrorLogEntity
|
{
|
/// <summary>
|
/// 主键ID
|
/// </summary>
|
[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
|
public long Id { get; set; }
|
|
/// <summary>
|
/// 错误发生时间
|
/// </summary>
|
[SugarColumn(IsNullable = false, ColumnDescription = "错误发生时间")]
|
public DateTime ErrorTime { get; set; }
|
|
/// <summary>
|
/// 项目名称
|
/// </summary>
|
[SugarColumn(Length = 100, IsNullable = false, ColumnDescription = "项目名称")]
|
public string ProjectName { get; set; } = string.Empty;
|
|
/// <summary>
|
/// PLC IP地址
|
/// </summary>
|
[SugarColumn(Length = 50, IsNullable = false, ColumnDescription = "PLC IP地址")]
|
public string PlcIpAddress { get; set; } = string.Empty;
|
|
/// <summary>
|
/// 错误类型
|
/// </summary>
|
[SugarColumn(Length = 100, IsNullable = false, ColumnDescription = "错误类型")]
|
public string ErrorType { get; set; } = string.Empty;
|
|
/// <summary>
|
/// 错误消息
|
/// </summary>
|
[SugarColumn(Length = 1000, IsNullable = false, ColumnDescription = "错误消息")]
|
public string ErrorMessage { get; set; } = string.Empty;
|
|
/// <summary>
|
/// 异常堆栈信息
|
/// </summary>
|
[SugarColumn(ColumnDataType = "TEXT", IsNullable = true, ColumnDescription = "异常堆栈信息")]
|
public string? StackTrace { get; set; }
|
|
/// <summary>
|
/// 错误严重级别(Critical, High, Medium, Low)
|
/// </summary>
|
[SugarColumn(Length = 20, IsNullable = false, ColumnDescription = "错误严重级别")]
|
public string Severity { get; set; } = "Medium";
|
|
/// <summary>
|
/// 重试次数
|
/// </summary>
|
[SugarColumn(IsNullable = false, ColumnDescription = "重试次数")]
|
public int RetryCount { get; set; } = 0;
|
|
/// <summary>
|
/// 是否已解决
|
/// </summary>
|
[SugarColumn(IsNullable = false, ColumnDescription = "是否已解决")]
|
public bool IsResolved { get; set; } = false;
|
}
|
|
/// <summary>
|
/// 统计数据实体 - 记录通信统计信息
|
/// </summary>
|
[SugarTable("Statistics")]
|
public class StatisticsEntity
|
{
|
/// <summary>
|
/// 主键ID
|
/// </summary>
|
[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
|
public long Id { get; set; }
|
|
/// <summary>
|
/// 统计时间
|
/// </summary>
|
[SugarColumn(IsNullable = false, ColumnDescription = "统计时间")]
|
public DateTime StatisticsTime { get; set; }
|
|
/// <summary>
|
/// 项目名称
|
/// </summary>
|
[SugarColumn(Length = 100, IsNullable = false, ColumnDescription = "项目名称")]
|
public string ProjectName { get; set; } = string.Empty;
|
|
/// <summary>
|
/// PLC IP地址
|
/// </summary>
|
[SugarColumn(Length = 50, IsNullable = false, ColumnDescription = "PLC IP地址")]
|
public string PlcIpAddress { get; set; } = string.Empty;
|
|
/// <summary>
|
/// 连接尝试总数
|
/// </summary>
|
[SugarColumn(IsNullable = false, ColumnDescription = "连接尝试总数")]
|
public int TotalConnectionAttempts { get; set; }
|
|
/// <summary>
|
/// 连接成功总数
|
/// </summary>
|
[SugarColumn(IsNullable = false, ColumnDescription = "连接成功总数")]
|
public int SuccessfulConnections { get; set; }
|
|
/// <summary>
|
/// 数据读取总数
|
/// </summary>
|
[SugarColumn(IsNullable = false, ColumnDescription = "数据读取总数")]
|
public int TotalDataReads { get; set; }
|
|
/// <summary>
|
/// 数据读取成功总数
|
/// </summary>
|
[SugarColumn(IsNullable = false, ColumnDescription = "数据读取成功总数")]
|
public int SuccessfulDataReads { get; set; }
|
|
/// <summary>
|
/// 错误总数
|
/// </summary>
|
[SugarColumn(IsNullable = false, ColumnDescription = "错误总数")]
|
public int TotalErrors { get; set; }
|
|
/// <summary>
|
/// 平均响应时间(毫秒)
|
/// </summary>
|
[SugarColumn(IsNullable = false, ColumnDescription = "平均响应时间毫秒")]
|
public double AverageResponseTimeMs { get; set; }
|
|
/// <summary>
|
/// 最大响应时间(毫秒)
|
/// </summary>
|
[SugarColumn(IsNullable = false, ColumnDescription = "最大响应时间毫秒")]
|
public int MaxResponseTimeMs { get; set; }
|
|
/// <summary>
|
/// 最小响应时间(毫秒)
|
/// </summary>
|
[SugarColumn(IsNullable = false, ColumnDescription = "最小响应时间毫秒")]
|
public int MinResponseTimeMs { get; set; }
|
|
/// <summary>
|
/// 连接成功率
|
/// </summary>
|
[SugarColumn(IsNullable = false, ColumnDescription = "连接成功率")]
|
public double ConnectionSuccessRate { get; set; }
|
|
/// <summary>
|
/// 数据读取成功率
|
/// </summary>
|
[SugarColumn(IsNullable = false, ColumnDescription = "数据读取成功率")]
|
public double DataReadSuccessRate { get; set; }
|
|
/// <summary>
|
/// 统计时间范围开始
|
/// </summary>
|
[SugarColumn(IsNullable = false, ColumnDescription = "统计时间范围开始")]
|
public DateTime PeriodStart { get; set; }
|
|
/// <summary>
|
/// 统计时间范围结束
|
/// </summary>
|
[SugarColumn(IsNullable = false, ColumnDescription = "统计时间范围结束")]
|
public DateTime PeriodEnd { get; set; }
|
}
|
|
/// <summary>
|
/// 事件类型常量
|
/// </summary>
|
public static class EventTypes
|
{
|
public const string Connected = "Connected";
|
public const string Disconnected = "Disconnected";
|
public const string DataReceived = "DataReceived";
|
public const string ConnectionError = "ConnectionError";
|
public const string DataReadError = "DataReadError";
|
public const string ConfigurationLoaded = "ConfigurationLoaded";
|
public const string SystemStarted = "SystemStarted";
|
public const string SystemStopped = "SystemStopped";
|
}
|
|
/// <summary>
|
/// 错误严重级别常量
|
/// </summary>
|
public static class ErrorSeverity
|
{
|
public const string Critical = "Critical"; // 系统无法继续运行
|
public const string High = "High"; // 功能受到严重影响
|
public const string Medium = "Medium"; // 功能受到影响但可继续
|
public const string Low = "Low"; // 轻微问题,不影响主要功能
|
}
|
}
|