huang
2025-11-17 92a5d16f0474ead87744b4ca5cb04417247a0619
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
-- 多设备管理数据库表创建脚本
-- 创建时间: 2025-10-30
-- 功能: 支持多设备联合测试
 
-- 设备配置表
CREATE TABLE device_config (
    id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '设备ID',
    device_id VARCHAR(50) UNIQUE NOT NULL COMMENT '设备唯一标识',
    device_name VARCHAR(100) NOT NULL COMMENT '设备名称',
    device_code VARCHAR(50) NOT NULL UNIQUE COMMENT '设备编码',
    device_type VARCHAR(50) NOT NULL COMMENT '设备类型(上大车/大理片/玻璃存储)',
    project_id BIGINT NOT NULL COMMENT '所属项目ID',
    plc_ip VARCHAR(15) NOT NULL COMMENT 'PLC IP地址',
    plc_type VARCHAR(20) NOT NULL COMMENT 'PLC类型(S7-1200/S7-1500等)',
    module_name VARCHAR(50) NOT NULL COMMENT '模块名称',
    is_primary BOOLEAN DEFAULT FALSE COMMENT '是否主控设备',
    enabled BOOLEAN DEFAULT TRUE COMMENT '是否启用',
    config_json TEXT COMMENT '设备特定配置(JSON格式)',
    description VARCHAR(200) COMMENT '设备描述',
    extra_params JSON COMMENT '扩展参数JSON',
    is_deleted INT DEFAULT 0 COMMENT '是否删除:0-否,1-是',
    created_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    updated_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    created_by VARCHAR(50) NOT NULL DEFAULT 'system' COMMENT '创建人',
    updated_by VARCHAR(50) NOT NULL DEFAULT 'system' COMMENT '更新人',
    
    INDEX idx_device_type (device_type),
    INDEX idx_module_name (module_name),
    INDEX idx_enabled (enabled),
    INDEX idx_is_deleted (is_deleted),
    INDEX idx_device_config_project_id (project_id),
    INDEX idx_device_config_device_code (device_code),
    INDEX idx_device_config_created_at (created_time),
    INDEX idx_device_config_updated_at (updated_time)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='设备配置表';
 
-- 设备组配置表
CREATE TABLE device_group_config (
    id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '设备组ID',
    group_code VARCHAR(50) UNIQUE NOT NULL COMMENT '设备组编码',
    group_name VARCHAR(100) NOT NULL COMMENT '设备组名称',
    group_type INT NOT NULL COMMENT '设备组类型:1-生产线,2-测试线,3-辅助设备组',
    project_id BIGINT NOT NULL COMMENT '所属项目ID',
    status INT NOT NULL DEFAULT 1 COMMENT '设备组状态:0-停用,1-启用,3-维护中',
    max_concurrent_devices INT DEFAULT 0 COMMENT '最大并发设备数',
    heartbeat_interval INT DEFAULT 30 COMMENT '心跳检测间隔(秒)',
    communication_timeout INT DEFAULT 5000 COMMENT '通信超时时间(毫秒)',
    description VARCHAR(200) COMMENT '设备组描述',
    extra_config JSON COMMENT '扩展配置JSON',
    is_deleted INT NOT NULL DEFAULT 0 COMMENT '是否删除:0-否,1-是',
    created_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    updated_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    created_by VARCHAR(50) NOT NULL DEFAULT 'system' COMMENT '创建人',
    updated_by VARCHAR(50) NOT NULL DEFAULT 'system' COMMENT '更新人',
 
    INDEX idx_device_group_config_group_code (group_code),
    INDEX idx_device_group_config_group_type (group_type),
    INDEX idx_device_group_config_project_id (project_id),
    INDEX idx_device_group_config_created_at (created_time),
    INDEX idx_device_group_config_updated_at (updated_time)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='设备组配置表';
 
-- 设备组与设备关联关系表
CREATE TABLE device_group_relation (
    id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '关联ID',
    group_id BIGINT NOT NULL COMMENT '设备组ID',
    device_id BIGINT NOT NULL COMMENT '设备ID',
    priority INT DEFAULT 5 COMMENT '设备在组内的优先级:1-最高,10-最低',
    role INT DEFAULT 2 COMMENT '设备在组内的角色:1-主控,2-协作,3-监控',
    status INT DEFAULT 1 COMMENT '设备在该组中的状态:0-未配置,1-正常,2-故障,3-维护',
    connection_order INT DEFAULT 1 COMMENT '连接顺序:数值越小越先连接',
    relation_desc VARCHAR(200) COMMENT '关联描述',
    extra_params JSON COMMENT '扩展参数JSON',
    is_deleted INT NOT NULL DEFAULT 0 COMMENT '是否删除:0-否,1-是',
    created_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    updated_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    created_by VARCHAR(50) NOT NULL DEFAULT 'system' COMMENT '创建人',
    updated_by VARCHAR(50) NOT NULL DEFAULT 'system' COMMENT '更新人',
 
    INDEX idx_device_group_relation_group_id (group_id),
    INDEX idx_device_group_relation_device_id (device_id),
    INDEX idx_device_group_relation_role (role),
    INDEX idx_device_group_relation_status (status),
    INDEX idx_device_group_relation_priority (priority),
    INDEX idx_device_group_relation_connection_order (connection_order),
    INDEX idx_device_group_relation_created_at (created_time),
    INDEX idx_device_group_relation_updated_at (updated_time)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='设备组与设备关联关系表';
 
-- 多设备任务表
CREATE TABLE multi_device_task (
    id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '任务ID',
    task_id VARCHAR(50) UNIQUE NOT NULL COMMENT '任务唯一标识',
    group_id VARCHAR(50) NOT NULL COMMENT '设备组ID',
    project_id VARCHAR(50) NOT NULL COMMENT '项目ID',
    status ENUM('PENDING', 'RUNNING', 'COMPLETED', 'FAILED', 'CANCELLED') DEFAULT 'PENDING' COMMENT '任务状态',
    current_step INT DEFAULT 0 COMMENT '当前执行步骤',
    total_steps INT DEFAULT 0 COMMENT '总步骤数',
    start_time DATETIME COMMENT '开始时间',
    end_time DATETIME COMMENT '结束时间',
    error_message TEXT COMMENT '错误信息',
    result_data JSON COMMENT '结果数据(JSON格式)',
    created_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    updated_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    
    INDEX idx_task_project (project_id),
    INDEX idx_task_status (status),
    INDEX idx_task_time (created_time)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='多设备任务表';
 
-- 任务步骤详情表
CREATE TABLE task_step_detail (
    id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '步骤ID',
    task_id VARCHAR(50) NOT NULL COMMENT '任务ID',
    step_order INT NOT NULL COMMENT '步骤顺序',
    device_id VARCHAR(50) NOT NULL COMMENT '设备ID',
    step_name VARCHAR(100) NOT NULL COMMENT '步骤名称',
    status ENUM('PENDING', 'RUNNING', 'COMPLETED', 'FAILED', 'SKIPPED') DEFAULT 'PENDING' COMMENT '步骤状态',
    start_time DATETIME COMMENT '步骤开始时间',
    end_time DATETIME COMMENT '步骤结束时间',
    duration_ms BIGINT COMMENT '执行耗时(毫秒)',
    input_data JSON COMMENT '输入数据(JSON格式)',
    output_data JSON COMMENT '输出数据(JSON格式)',
    error_message TEXT COMMENT '错误信息',
    retry_count INT DEFAULT 0 COMMENT '重试次数',
    created_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    
    INDEX idx_step_task (task_id),
    INDEX idx_step_device (device_id),
    INDEX idx_step_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='任务步骤详情表';
 
-- 设备状态监控表
CREATE TABLE device_status (
    id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '记录ID',
    device_id VARCHAR(50) NOT NULL COMMENT '设备ID',
    task_id VARCHAR(50) COMMENT '关联任务ID(可选)',
    status ENUM('ONLINE', 'OFFLINE', 'BUSY', 'ERROR', 'MAINTENANCE') DEFAULT 'OFFLINE' COMMENT '设备状态',
    last_heartbeat DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '最后心跳时间',
    cpu_usage DECIMAL(5,2) COMMENT 'CPU使用率(%)',
    memory_usage DECIMAL(5,2) COMMENT '内存使用率(%)',
    plc_connection_status ENUM('CONNECTED', 'DISCONNECTED', 'ERROR') DEFAULT 'DISCONNECTED' COMMENT 'PLC连接状态',
    current_operation VARCHAR(100) COMMENT '当前操作',
    operation_progress DECIMAL(5,2) COMMENT '操作进度(0-100)',
    alert_message TEXT COMMENT '告警信息',
    created_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '记录时间',
    
    INDEX idx_device_status (device_id),
    INDEX idx_device_heartbeat (last_heartbeat),
    INDEX idx_plc_connection (plc_connection_status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='设备状态监控表';
 
-- 插入一些示例数据
INSERT INTO device_config (device_id, device_name, device_code, device_type, project_id, plc_ip, plc_type, module_name, is_primary, config_json, description) VALUES
('DEVICE_001', '上大车设备1', 'DEV_001', '上大车', 1, '192.168.1.100', 'S7-1200', '上大车模块', TRUE, '{"vehicleCapacity": 6000, "glassIntervalMs": 1000}', '上大车设备1'),
('DEVICE_002', '大理片设备1', 'DEV_002', '大理片', 1, '192.168.1.101', 'S7-1200', '大理片模块', FALSE, '{"glassMatchingEnabled": true, "batchProcessing": true}', '大理片设备1'),
('DEVICE_003', '玻璃存储设备1', 'DEV_003', '玻璃存储', 1, '192.168.1.102', 'S7-1500', '玻璃存储模块', FALSE, '{"storageCapacity": 100, "sortingEnabled": true}', '玻璃存储设备1');
 
INSERT INTO device_group_config (group_code, group_name, group_type, project_id, status, description) VALUES
('GROUP_001', '生产线A', 1, 1, 1, '生产线A设备组');
 
-- 插入设备组关联数据
INSERT INTO device_group_relation (group_id, device_id, role, status, priority, connection_order) VALUES
((SELECT id FROM device_group_config WHERE group_code = 'GROUP_001' AND is_deleted = 0), (SELECT id FROM device_config WHERE device_id = 'DEVICE_001' AND is_deleted = 0), 1, 1, 5, 1),
((SELECT id FROM device_group_config WHERE group_code = 'GROUP_001' AND is_deleted = 0), (SELECT id FROM device_config WHERE device_id = 'DEVICE_002' AND is_deleted = 0), 2, 1, 5, 2),
((SELECT id FROM device_group_config WHERE group_code = 'GROUP_001' AND is_deleted = 0), (SELECT id FROM device_config WHERE device_id = 'DEVICE_003' AND is_deleted = 0), 2, 1, 5, 3);