-- 多设备管理数据库表创建脚本
|
-- 创建时间: 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);
|