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