啊鑫
2025-08-01 71f686f5a300d0ed26adf57de254f4168637b17d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
using SqlSugar;
 
namespace GSModbus.Database
{
    /// <summary>
    /// Modbus主数据实体 - 存储从PLC读取的数据
    /// </summary>
    [SugarTable("PRODUCTION_DATA")]
    public class ModbusDataEntity
    {
        /// <summary>
        /// 主键ID
        /// </summary>
        [SugarColumn(ColumnName = "ID", OracleSequenceName = "SEQ_MODBUS_DATA_ID", IsPrimaryKey = true)]
        public long Id { get; set; }
 
        /// <summary>
        /// 数据读取时间
        /// </summary>
        [SugarColumn(ColumnName = "READ_TIME", IsNullable = true, ColumnDescription = "数据读取时间")]
        public DateTime? ReadTime { get; set; }
 
        /// <summary>
        /// 项目名称(来自配置)
        /// </summary>
        [SugarColumn(ColumnName = "PROJECT_NAME", Length = 100, IsNullable = true, ColumnDescription = "项目名称")]
        public string? ProjectName { get; set; } 
 
        /// <summary>
        /// PLC IP地址
        /// </summary>
        [SugarColumn(ColumnName = "PLC_IP_ADDRESS", Length = 50, IsNullable = true, ColumnDescription = "PLC IP地址")]
        public string? PlcIpAddress { get; set; } 
 
        /// <summary>
        /// 控制信号数据(JSON格式)
        /// </summary>
        [SugarColumn(ColumnName = "CONTROL_SIGNALS_JSON", ColumnDataType = "TEXT", IsNullable = true, ColumnDescription = "控制信号数据JSON")]
        public string? ControlSignalsJson { get; set; }
 
        /// <summary>
        /// 产品数据(JSON格式)
        /// </summary>
        [SugarColumn(ColumnName = "PRODUCT_DATA_JSON", ColumnDataType = "TEXT", IsNullable = true, ColumnDescription = "产品数据JSON")]
        public string? ProductDataJson { get; set; }
 
        /// <summary>
        /// 测量数据(JSON格式)
        /// </summary>
        [SugarColumn(ColumnName = "MEASUREMENT_DATA_JSON", ColumnDataType = "TEXT", IsNullable = true, ColumnDescription = "测量数据JSON")]
        public string? MeasurementDataJson { get; set; }
 
        /// <summary>
        /// 原始寄存器数据(JSON格式,用于调试)
        /// </summary>
        [SugarColumn(ColumnName = "RAW_REGISTERS_JSON", ColumnDataType = "TEXT", IsNullable = true, ColumnDescription = "原始寄存器数据JSON")]
        public string? RawRegistersJson { get; set; }
 
        /// <summary>
        /// 数据创建时间
        /// </summary>
        [SugarColumn(ColumnName = "CREATED_AT", IsNullable = true, ColumnDescription = "记录创建时间")]
        public DateTime? CreatedAt { get; set; } = DateTime.Now;
    }
 
    /// <summary>
    /// 通信日志实体 - 记录通信状态和统计信息
    /// </summary>
    [SugarTable("COMMUNICATION_LOG")]
    public class CommunicationLogEntity
    {
        /// <summary>
        /// 主键ID
        /// </summary>
        [SugarColumn(ColumnName = "ID", OracleSequenceName = "SEQ_COMMUNICATION_LOG_ID", IsPrimaryKey = true)]
        public long Id { get; set; }
 
        /// <summary>
        /// 日志时间
        /// </summary>
        [SugarColumn(ColumnName = "LOG_TIME", IsNullable = true, ColumnDescription = "日志时间")]
        public DateTime? LogTime { get; set; }
 
        /// <summary>
        /// 项目名称
        /// </summary>
        [SugarColumn(ColumnName = "PROJECT_NAME", Length = 100, IsNullable = true, ColumnDescription = "项目名称")]
        public string? ProjectName { get; set; }
 
        /// <summary>
        /// PLC IP地址
        /// </summary>
        [SugarColumn(ColumnName = "PLC_IP_ADDRESS", Length = 50, IsNullable = true, ColumnDescription = "PLC IP地址")]
        public string? PlcIpAddress { get; set; } 
 
        /// <summary>
        /// 事件类型(Connected, Disconnected, DataReceived, Error等)
        /// </summary>
        [SugarColumn(ColumnName = "EVENT_TYPE", Length = 50, IsNullable = true, ColumnDescription = "事件类型")]
        public string? EventType { get; set; }
 
        /// <summary>
        /// 事件描述
        /// </summary>
        [SugarColumn(ColumnName = "EVENT_DESCRIPTION", Length = 500, IsNullable = true, ColumnDescription = "事件描述")]
        public string? EventDescription { get; set; }
 
        /// <summary>
        /// 是否成功
        /// </summary>
        [SugarColumn(ColumnName = "IS_SUCCESS", IsNullable = true, ColumnDescription = "是否成功")]
        public bool? IsSuccess { get; set; }
 
        /// <summary>
        /// 耗时(毫秒)
        /// </summary>
        [SugarColumn(ColumnName = "DURATION_MS", IsNullable = true, ColumnDescription = "操作耗时毫秒")]
        public int? DurationMs { get; set; }
 
        /// <summary>
        /// 附加数据(JSON格式)
        /// </summary>
        [SugarColumn(ColumnName = "ADDITIONAL_DATA_JSON", ColumnDataType = "TEXT", IsNullable = true, ColumnDescription = "附加数据JSON")]
        public string? AdditionalDataJson { get; set; }
    }
 
    /// <summary>
    /// 错误日志实体 - 记录通信和处理错误
    /// </summary>
    [SugarTable("ERROR_LOG")]
    public class ErrorLogEntity
    {
        /// <summary>
        /// 主键ID
        /// </summary>
        [SugarColumn(ColumnName = "ID", OracleSequenceName = "SEQ_ERROR_LOG_ID", IsPrimaryKey = true)]
        public long Id { get; set; }
 
        /// <summary>
        /// 错误发生时间
        /// </summary>
        [SugarColumn(ColumnName = "ERROR_TIME", IsNullable = true, ColumnDescription = "错误发生时间")]
        public DateTime? ErrorTime { get; set; }
 
        /// <summary>
        /// 项目名称
        /// </summary>
        [SugarColumn(ColumnName = "PROJECT_NAME", Length = 100, IsNullable = true, ColumnDescription = "项目名称")]
        public string? ProjectName { get; set; } 
        /// <summary>
        /// PLC IP地址
        /// </summary>
        [SugarColumn(ColumnName = "PLC_IP_ADDRESS", Length = 50, IsNullable = true, ColumnDescription = "PLC IP地址")]
        public string? PlcIpAddress { get; set; }
 
        /// <summary>
        /// 错误类型
        /// </summary>
        [SugarColumn(ColumnName = "ERROR_TYPE", Length = 100, IsNullable = true, ColumnDescription = "错误类型")]
        public string? ErrorType { get; set; }
 
        /// <summary>
        /// 错误消息
        /// </summary>
        [SugarColumn(ColumnName = "ERROR_MESSAGE", Length = 1000, IsNullable = true, ColumnDescription = "错误消息")]
        public string? ErrorMessage { get; set; }
 
        /// <summary>
        /// 异常堆栈信息
        /// </summary>
        [SugarColumn(ColumnName = "STACK_TRACE", ColumnDataType = "TEXT", IsNullable = true, ColumnDescription = "异常堆栈信息")]
        public string? StackTrace { get; set; }
 
        /// <summary>
        /// 错误严重级别(Critical, High, Medium, Low)
        /// </summary>
        [SugarColumn(ColumnName = "SEVERITY", Length = 20, IsNullable = true, ColumnDescription = "错误严重级别")]
        public string? Severity { get; set; } = "Medium";
 
        /// <summary>
        /// 重试次数
        /// </summary>
        [SugarColumn(ColumnName = "RETRY_COUNT", IsNullable = true, ColumnDescription = "重试次数")]
        public int? RetryCount { get; set; } = 0;
 
        /// <summary>
        /// 是否已解决
        /// </summary>
        [SugarColumn(ColumnName = "IS_RESOLVED", IsNullable = true, ColumnDescription = "是否已解决")]
        public bool? IsResolved { get; set; } = false;
    }
 
    /// <summary>
    /// 统计数据实体 - 记录通信统计信息
    /// </summary>
    [SugarTable("STATISTICS")]
    public class StatisticsEntity
    {
        /// <summary>
        /// 主键ID
        /// </summary>
        [SugarColumn(ColumnName = "ID", OracleSequenceName = "SEQ_STATISTICS_ID", IsPrimaryKey = true)]
        public long Id { get; set; }
 
        /// <summary>
        /// 统计时间
        /// </summary>
        [SugarColumn(ColumnName = "STATISTICS_TIME", IsNullable = true, ColumnDescription = "统计时间")]
        public DateTime? StatisticsTime { get; set; }
 
        /// <summary>
        /// 项目名称
        /// </summary>
        [SugarColumn(ColumnName = "PROJECT_NAME", Length = 100, IsNullable = true, ColumnDescription = "项目名称")]
        public string? ProjectName { get; set; } 
 
        /// <summary>
        /// PLC IP地址
        /// </summary>
        [SugarColumn(ColumnName = "PLC_IP_ADDRESS", Length = 50, IsNullable = true, ColumnDescription = "PLC IP地址")]
        public string? PlcIpAddress { get; set; }
 
        /// <summary>
        /// 连接尝试总数
        /// </summary>
        [SugarColumn(ColumnName = "TOTAL_CONNECTION_ATTEMPTS", IsNullable = true, ColumnDescription = "连接尝试总数")]
        public int? TotalConnectionAttempts { get; set; }
 
        /// <summary>
        /// 连接成功总数
        /// </summary>
        [SugarColumn(ColumnName = "SUCCESSFUL_CONNECTIONS", IsNullable = true, ColumnDescription = "连接成功总数")]
        public int? SuccessfulConnections { get; set; }
 
        /// <summary>
        /// 数据读取总数
        /// </summary>
        [SugarColumn(ColumnName = "TOTAL_DATA_READS", IsNullable = true, ColumnDescription = "数据读取总数")]
        public int? TotalDataReads { get; set; }
 
        /// <summary>
        /// 数据读取成功总数
        /// </summary>
        [SugarColumn(ColumnName = "SUCCESSFUL_DATA_READS", IsNullable = true, ColumnDescription = "数据读取成功总数")]
        public int? SuccessfulDataReads { get; set; }
 
        /// <summary>
        /// 错误总数
        /// </summary>
        [SugarColumn(ColumnName = "TOTAL_ERRORS", IsNullable = true, ColumnDescription = "错误总数")]
        public int? TotalErrors { get; set; }
 
        /// <summary>
        /// 平均响应时间(毫秒)
        /// </summary>
        [SugarColumn(ColumnName = "AVERAGE_RESPONSE_TIME_MS", IsNullable = true, ColumnDescription = "平均响应时间毫秒")]
        public double? AverageResponseTimeMs { get; set; }
 
        /// <summary>
        /// 最大响应时间(毫秒)
        /// </summary>
        [SugarColumn(ColumnName = "MAX_RESPONSE_TIME_MS", IsNullable = true, ColumnDescription = "最大响应时间毫秒")]
        public int? MaxResponseTimeMs { get; set; }
 
        /// <summary>
        /// 最小响应时间(毫秒)
        /// </summary>
        [SugarColumn(ColumnName = "MIN_RESPONSE_TIME_MS", IsNullable = true, ColumnDescription = "最小响应时间毫秒")]
        public int? MinResponseTimeMs { get; set; }
 
        /// <summary>
        /// 连接成功率
        /// </summary>
        [SugarColumn(ColumnName = "CONNECTION_SUCCESS_RATE", IsNullable = true, ColumnDescription = "连接成功率")]
        public double? ConnectionSuccessRate { get; set; }
 
        /// <summary>
        /// 数据读取成功率
        /// </summary>
        [SugarColumn(ColumnName = "DATA_READ_SUCCESS_RATE", IsNullable = true, ColumnDescription = "数据读取成功率")]
        public double? DataReadSuccessRate { get; set; }
 
        /// <summary>
        /// 统计时间范围开始
        /// </summary>
        [SugarColumn(ColumnName = "PERIOD_START", IsNullable = true, ColumnDescription = "统计时间范围开始")]
        public DateTime? PeriodStart { get; set; }
 
        /// <summary>
        /// 统计时间范围结束
        /// </summary>
        [SugarColumn(ColumnName = "PERIOD_END", IsNullable = true, 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";            // 轻微问题,不影响主要功能
    }
}