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"; // 轻微问题,不影响主要功能 } }