using SqlSugar;
namespace GSModbus.Database
{
///
/// Modbus主数据实体 - 存储从PLC读取的数据
///
[SugarTable("PRODUCTION_DATA")]
public class ModbusDataEntity
{
///
/// 主键ID
///
[SugarColumn(ColumnName = "ID", OracleSequenceName = "SEQ_MODBUS_DATA_ID", IsPrimaryKey = true)]
public long Id { get; set; }
///
/// 数据读取时间
///
[SugarColumn(ColumnName = "READ_TIME", IsNullable = true, ColumnDescription = "数据读取时间")]
public DateTime? ReadTime { get; set; }
///
/// 项目名称(来自配置)
///
[SugarColumn(ColumnName = "PROJECT_NAME", Length = 100, IsNullable = true, ColumnDescription = "项目名称")]
public string? ProjectName { get; set; }
///
/// PLC IP地址
///
[SugarColumn(ColumnName = "PLC_IP_ADDRESS", Length = 50, IsNullable = true, ColumnDescription = "PLC IP地址")]
public string? PlcIpAddress { get; set; }
///
/// 控制信号数据(JSON格式)
///
[SugarColumn(ColumnName = "CONTROL_SIGNALS_JSON", ColumnDataType = "TEXT", IsNullable = true, ColumnDescription = "控制信号数据JSON")]
public string? ControlSignalsJson { get; set; }
///
/// 产品数据(JSON格式)
///
[SugarColumn(ColumnName = "PRODUCT_DATA_JSON", ColumnDataType = "TEXT", IsNullable = true, ColumnDescription = "产品数据JSON")]
public string? ProductDataJson { get; set; }
///
/// 测量数据(JSON格式)
///
[SugarColumn(ColumnName = "MEASUREMENT_DATA_JSON", ColumnDataType = "TEXT", IsNullable = true, ColumnDescription = "测量数据JSON")]
public string? MeasurementDataJson { get; set; }
///
/// 原始寄存器数据(JSON格式,用于调试)
///
[SugarColumn(ColumnName = "RAW_REGISTERS_JSON", ColumnDataType = "TEXT", IsNullable = true, ColumnDescription = "原始寄存器数据JSON")]
public string? RawRegistersJson { get; set; }
///
/// 数据创建时间
///
[SugarColumn(ColumnName = "CREATED_AT", IsNullable = true, ColumnDescription = "记录创建时间")]
public DateTime? CreatedAt { get; set; } = DateTime.Now;
}
///
/// 通信日志实体 - 记录通信状态和统计信息
///
[SugarTable("COMMUNICATION_LOG")]
public class CommunicationLogEntity
{
///
/// 主键ID
///
[SugarColumn(ColumnName = "ID", OracleSequenceName = "SEQ_COMMUNICATION_LOG_ID", IsPrimaryKey = true)]
public long Id { get; set; }
///
/// 日志时间
///
[SugarColumn(ColumnName = "LOG_TIME", IsNullable = true, ColumnDescription = "日志时间")]
public DateTime? LogTime { get; set; }
///
/// 项目名称
///
[SugarColumn(ColumnName = "PROJECT_NAME", Length = 100, IsNullable = true, ColumnDescription = "项目名称")]
public string? ProjectName { get; set; }
///
/// PLC IP地址
///
[SugarColumn(ColumnName = "PLC_IP_ADDRESS", Length = 50, IsNullable = true, ColumnDescription = "PLC IP地址")]
public string? PlcIpAddress { get; set; }
///
/// 事件类型(Connected, Disconnected, DataReceived, Error等)
///
[SugarColumn(ColumnName = "EVENT_TYPE", Length = 50, IsNullable = true, ColumnDescription = "事件类型")]
public string? EventType { get; set; }
///
/// 事件描述
///
[SugarColumn(ColumnName = "EVENT_DESCRIPTION", Length = 500, IsNullable = true, ColumnDescription = "事件描述")]
public string? EventDescription { get; set; }
///
/// 是否成功
///
[SugarColumn(ColumnName = "IS_SUCCESS", IsNullable = true, ColumnDescription = "是否成功")]
public bool? IsSuccess { get; set; }
///
/// 耗时(毫秒)
///
[SugarColumn(ColumnName = "DURATION_MS", IsNullable = true, ColumnDescription = "操作耗时毫秒")]
public int? DurationMs { get; set; }
///
/// 附加数据(JSON格式)
///
[SugarColumn(ColumnName = "ADDITIONAL_DATA_JSON", ColumnDataType = "TEXT", IsNullable = true, ColumnDescription = "附加数据JSON")]
public string? AdditionalDataJson { get; set; }
}
///
/// 错误日志实体 - 记录通信和处理错误
///
[SugarTable("ERROR_LOG")]
public class ErrorLogEntity
{
///
/// 主键ID
///
[SugarColumn(ColumnName = "ID", OracleSequenceName = "SEQ_ERROR_LOG_ID", IsPrimaryKey = true)]
public long Id { get; set; }
///
/// 错误发生时间
///
[SugarColumn(ColumnName = "ERROR_TIME", IsNullable = true, ColumnDescription = "错误发生时间")]
public DateTime? ErrorTime { get; set; }
///
/// 项目名称
///
[SugarColumn(ColumnName = "PROJECT_NAME", Length = 100, IsNullable = true, ColumnDescription = "项目名称")]
public string? ProjectName { get; set; }
///
/// PLC IP地址
///
[SugarColumn(ColumnName = "PLC_IP_ADDRESS", Length = 50, IsNullable = true, ColumnDescription = "PLC IP地址")]
public string? PlcIpAddress { get; set; }
///
/// 错误类型
///
[SugarColumn(ColumnName = "ERROR_TYPE", Length = 100, IsNullable = true, ColumnDescription = "错误类型")]
public string? ErrorType { get; set; }
///
/// 错误消息
///
[SugarColumn(ColumnName = "ERROR_MESSAGE", Length = 1000, IsNullable = true, ColumnDescription = "错误消息")]
public string? ErrorMessage { get; set; }
///
/// 异常堆栈信息
///
[SugarColumn(ColumnName = "STACK_TRACE", ColumnDataType = "TEXT", IsNullable = true, ColumnDescription = "异常堆栈信息")]
public string? StackTrace { get; set; }
///
/// 错误严重级别(Critical, High, Medium, Low)
///
[SugarColumn(ColumnName = "SEVERITY", Length = 20, IsNullable = true, ColumnDescription = "错误严重级别")]
public string? Severity { get; set; } = "Medium";
///
/// 重试次数
///
[SugarColumn(ColumnName = "RETRY_COUNT", IsNullable = true, ColumnDescription = "重试次数")]
public int? RetryCount { get; set; } = 0;
///
/// 是否已解决
///
[SugarColumn(ColumnName = "IS_RESOLVED", IsNullable = true, ColumnDescription = "是否已解决")]
public bool? IsResolved { get; set; } = false;
}
///
/// 统计数据实体 - 记录通信统计信息
///
[SugarTable("STATISTICS")]
public class StatisticsEntity
{
///
/// 主键ID
///
[SugarColumn(ColumnName = "ID", OracleSequenceName = "SEQ_STATISTICS_ID", IsPrimaryKey = true)]
public long Id { get; set; }
///
/// 统计时间
///
[SugarColumn(ColumnName = "STATISTICS_TIME", IsNullable = true, ColumnDescription = "统计时间")]
public DateTime? StatisticsTime { get; set; }
///
/// 项目名称
///
[SugarColumn(ColumnName = "PROJECT_NAME", Length = 100, IsNullable = true, ColumnDescription = "项目名称")]
public string? ProjectName { get; set; }
///
/// PLC IP地址
///
[SugarColumn(ColumnName = "PLC_IP_ADDRESS", Length = 50, IsNullable = true, ColumnDescription = "PLC IP地址")]
public string? PlcIpAddress { get; set; }
///
/// 连接尝试总数
///
[SugarColumn(ColumnName = "TOTAL_CONNECTION_ATTEMPTS", IsNullable = true, ColumnDescription = "连接尝试总数")]
public int? TotalConnectionAttempts { get; set; }
///
/// 连接成功总数
///
[SugarColumn(ColumnName = "SUCCESSFUL_CONNECTIONS", IsNullable = true, ColumnDescription = "连接成功总数")]
public int? SuccessfulConnections { get; set; }
///
/// 数据读取总数
///
[SugarColumn(ColumnName = "TOTAL_DATA_READS", IsNullable = true, ColumnDescription = "数据读取总数")]
public int? TotalDataReads { get; set; }
///
/// 数据读取成功总数
///
[SugarColumn(ColumnName = "SUCCESSFUL_DATA_READS", IsNullable = true, ColumnDescription = "数据读取成功总数")]
public int? SuccessfulDataReads { get; set; }
///
/// 错误总数
///
[SugarColumn(ColumnName = "TOTAL_ERRORS", IsNullable = true, ColumnDescription = "错误总数")]
public int? TotalErrors { get; set; }
///
/// 平均响应时间(毫秒)
///
[SugarColumn(ColumnName = "AVERAGE_RESPONSE_TIME_MS", IsNullable = true, ColumnDescription = "平均响应时间毫秒")]
public double? AverageResponseTimeMs { get; set; }
///
/// 最大响应时间(毫秒)
///
[SugarColumn(ColumnName = "MAX_RESPONSE_TIME_MS", IsNullable = true, ColumnDescription = "最大响应时间毫秒")]
public int? MaxResponseTimeMs { get; set; }
///
/// 最小响应时间(毫秒)
///
[SugarColumn(ColumnName = "MIN_RESPONSE_TIME_MS", IsNullable = true, ColumnDescription = "最小响应时间毫秒")]
public int? MinResponseTimeMs { get; set; }
///
/// 连接成功率
///
[SugarColumn(ColumnName = "CONNECTION_SUCCESS_RATE", IsNullable = true, ColumnDescription = "连接成功率")]
public double? ConnectionSuccessRate { get; set; }
///
/// 数据读取成功率
///
[SugarColumn(ColumnName = "DATA_READ_SUCCESS_RATE", IsNullable = true, ColumnDescription = "数据读取成功率")]
public double? DataReadSuccessRate { get; set; }
///
/// 统计时间范围开始
///
[SugarColumn(ColumnName = "PERIOD_START", IsNullable = true, ColumnDescription = "统计时间范围开始")]
public DateTime? PeriodStart { get; set; }
///
/// 统计时间范围结束
///
[SugarColumn(ColumnName = "PERIOD_END", IsNullable = true, ColumnDescription = "统计时间范围结束")]
public DateTime? PeriodEnd { get; set; }
}
///
/// 事件类型常量
///
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";
}
///
/// 错误严重级别常量
///
public static class ErrorSeverity
{
public const string Critical = "Critical"; // 系统无法继续运行
public const string High = "High"; // 功能受到严重影响
public const string Medium = "Medium"; // 功能受到影响但可继续
public const string Low = "Low"; // 轻微问题,不影响主要功能
}
}