-- ============================================================
|
-- MES 注塑机数采对接
|
-- 数据库:mom-kyzn
|
-- 日期:2026-10-20
|
-- 说明:
|
-- 1. 设备台账增加数采设备编号/启用标记
|
-- 2. 新建实时、周期、工艺、参数变更、报警、原始报文表
|
-- 3. 新增数采监控菜单与权限
|
-- 脚本可重复执行。
|
-- ============================================================
|
|
-- ---------- 1. 设备台账扩展 ----------
|
SET @exists = (SELECT COUNT(*) FROM information_schema.columns
|
WHERE table_schema = DATABASE() AND table_name = 'mes_dv_machinery' AND column_name = 'collect_device_code');
|
SET @sql = IF(@exists = 0,
|
'ALTER TABLE mes_dv_machinery ADD COLUMN collect_device_code VARCHAR(64) NULL COMMENT ''数采设备编号(MQTT devId,如 C01)'' AFTER workstation_id',
|
'SELECT 1');
|
PREPARE stmt FROM @sql;
|
EXECUTE stmt;
|
DEALLOCATE PREPARE stmt;
|
|
SET @exists = (SELECT COUNT(*) FROM information_schema.columns
|
WHERE table_schema = DATABASE() AND table_name = 'mes_dv_machinery' AND column_name = 'collect_enabled');
|
SET @sql = IF(@exists = 0,
|
'ALTER TABLE mes_dv_machinery ADD COLUMN collect_enabled BIT(1) NOT NULL DEFAULT b''0'' COMMENT ''是否启用数采'' AFTER collect_device_code',
|
'SELECT 1');
|
PREPARE stmt FROM @sql;
|
EXECUTE stmt;
|
DEALLOCATE PREPARE stmt;
|
|
SET @exists = (SELECT COUNT(*) FROM information_schema.statistics
|
WHERE table_schema = DATABASE() AND table_name = 'mes_dv_machinery' AND index_name = 'uk_collect_device_code');
|
SET @sql = IF(@exists = 0,
|
'ALTER TABLE mes_dv_machinery ADD UNIQUE INDEX uk_collect_device_code (collect_device_code)',
|
'SELECT 1');
|
PREPARE stmt FROM @sql;
|
EXECUTE stmt;
|
DEALLOCATE PREPARE stmt;
|
|
-- ---------- 2. 数采表 ----------
|
CREATE TABLE IF NOT EXISTS mes_collect_realtime (
|
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '编号',
|
machinery_id BIGINT DEFAULT NULL COMMENT '设备台账编号',
|
device_code VARCHAR(64) NOT NULL COMMENT '数采设备编号',
|
task_id BIGINT DEFAULT NULL COMMENT '生产任务编号',
|
work_order_id BIGINT DEFAULT NULL COMMENT '生产工单编号',
|
collect_time DATETIME(3) NOT NULL COMMENT '采集时间',
|
sts INT DEFAULT NULL COMMENT '运行状态:1待机 2生产',
|
opm INT DEFAULT NULL COMMENT '运行模式:0手动 1半自动 2电眼自动 3时间自动 4调模使用',
|
asts INT DEFAULT NULL COMMENT '附加状态',
|
ot DECIMAL(10,2) DEFAULT NULL COMMENT '油温',
|
temps JSON DEFAULT NULL COMMENT '各段温度 T1..Tn',
|
data_json JSON DEFAULT NULL COMMENT '完整数据',
|
creator VARCHAR(64) DEFAULT '' COMMENT '创建者',
|
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
updater VARCHAR(64) DEFAULT '' COMMENT '更新者',
|
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
deleted BIT(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
|
PRIMARY KEY (id),
|
UNIQUE KEY uk_collect_realtime_device (device_code),
|
KEY idx_collect_realtime_machinery (machinery_id),
|
KEY idx_collect_realtime_work_order (work_order_id)
|
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 数采-设备实时状态';
|
|
CREATE TABLE IF NOT EXISTS mes_collect_realtime_history (
|
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '编号',
|
machinery_id BIGINT DEFAULT NULL COMMENT '设备台账编号',
|
device_code VARCHAR(64) NOT NULL COMMENT '数采设备编号',
|
task_id BIGINT DEFAULT NULL COMMENT '生产任务编号',
|
work_order_id BIGINT DEFAULT NULL COMMENT '生产工单编号',
|
collect_time DATETIME(3) NOT NULL COMMENT '采集时间',
|
sts INT DEFAULT NULL COMMENT '运行状态:1待机 2生产',
|
opm INT DEFAULT NULL COMMENT '运行模式:0手动 1半自动 2电眼自动 3时间自动 4调模使用',
|
asts INT DEFAULT NULL COMMENT '附加状态',
|
ot DECIMAL(10,2) DEFAULT NULL COMMENT '油温',
|
temps JSON DEFAULT NULL COMMENT '各段温度 T1..Tn',
|
data_json JSON DEFAULT NULL COMMENT '完整数据',
|
creator VARCHAR(64) DEFAULT '' COMMENT '创建者',
|
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
updater VARCHAR(64) DEFAULT '' COMMENT '更新者',
|
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
deleted BIT(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
|
PRIMARY KEY (id),
|
UNIQUE KEY uk_collect_realtime_history (device_code, collect_time),
|
KEY idx_collect_realtime_history_device_time (device_code, collect_time),
|
KEY idx_collect_realtime_history_work_order (work_order_id, collect_time),
|
KEY idx_collect_realtime_history_collect_time (collect_time)
|
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 数采-实时状态历史';
|
|
CREATE TABLE IF NOT EXISTS mes_collect_cycle (
|
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '编号',
|
machinery_id BIGINT DEFAULT NULL COMMENT '设备台账编号',
|
device_code VARCHAR(64) NOT NULL COMMENT '数采设备编号',
|
task_id BIGINT DEFAULT NULL COMMENT '生产任务编号',
|
work_order_id BIGINT DEFAULT NULL COMMENT '生产工单编号',
|
cycle_no BIGINT NOT NULL DEFAULT 0 COMMENT '周期序号(CYCN)',
|
collect_time DATETIME(3) NOT NULL COMMENT '采集时间',
|
ecyct DECIMAL(14,4) DEFAULT NULL COMMENT '周期时间(ECYCT)',
|
eiss DECIMAL(14,4) DEFAULT NULL COMMENT '射出起点(EISS)',
|
eivm DECIMAL(14,4) DEFAULT NULL COMMENT '最大射速(EIVM)',
|
eipm DECIMAL(14,4) DEFAULT NULL COMMENT '最大射压(EIPM)',
|
esipt DECIMAL(14,4) DEFAULT NULL COMMENT '转保压时间(ESIPT)',
|
esipp DECIMAL(14,4) DEFAULT NULL COMMENT '转保压压力(ESIPP)',
|
esips DECIMAL(14,4) DEFAULT NULL COMMENT '转保压位置(ESIPS)',
|
eipt DECIMAL(14,4) DEFAULT NULL COMMENT '射出时间(EIPT)',
|
eipse DECIMAL(14,4) DEFAULT NULL COMMENT '射出终点位置(EIPSE)',
|
eplst DECIMAL(14,4) DEFAULT NULL COMMENT '储料时间(EPLST)',
|
eplsse DECIMAL(14,4) DEFAULT NULL COMMENT '储料终点(EPLSSE)',
|
eplspm DECIMAL(14,4) DEFAULT NULL COMMENT '最大储料压力(EPLSPM)',
|
et_temps JSON DEFAULT NULL COMMENT '生产温度 ET1..ETn',
|
data_json JSON DEFAULT NULL COMMENT '完整数据',
|
creator VARCHAR(64) DEFAULT '' COMMENT '创建者',
|
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
updater VARCHAR(64) DEFAULT '' COMMENT '更新者',
|
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
deleted BIT(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
|
PRIMARY KEY (id),
|
UNIQUE KEY uk_collect_cycle (device_code, cycle_no, collect_time),
|
KEY idx_collect_cycle_device_time (device_code, collect_time),
|
KEY idx_collect_cycle_work_order (work_order_id, collect_time)
|
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 数采-周期过程数据';
|
|
CREATE TABLE IF NOT EXISTS mes_collect_tech (
|
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '编号',
|
machinery_id BIGINT DEFAULT NULL COMMENT '设备台账编号',
|
device_code VARCHAR(64) NOT NULL COMMENT '数采设备编号',
|
task_id BIGINT DEFAULT NULL COMMENT '生产任务编号',
|
work_order_id BIGINT DEFAULT NULL COMMENT '生产工单编号',
|
collect_time DATETIME(3) NOT NULL COMMENT '采集时间',
|
data_json JSON DEFAULT NULL COMMENT '工艺参数完整快照',
|
creator VARCHAR(64) DEFAULT '' COMMENT '创建者',
|
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
updater VARCHAR(64) DEFAULT '' COMMENT '更新者',
|
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
deleted BIT(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
|
PRIMARY KEY (id),
|
UNIQUE KEY uk_collect_tech_device (device_code),
|
KEY idx_collect_tech_work_order (work_order_id)
|
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 数采-工艺参数快照';
|
|
CREATE TABLE IF NOT EXISTS mes_collect_operate_log (
|
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '编号',
|
machinery_id BIGINT DEFAULT NULL COMMENT '设备台账编号',
|
device_code VARCHAR(64) NOT NULL COMMENT '数采设备编号',
|
task_id BIGINT DEFAULT NULL COMMENT '生产任务编号',
|
work_order_id BIGINT DEFAULT NULL COMMENT '生产工单编号',
|
var_id VARCHAR(64) DEFAULT NULL COMMENT '变量编码',
|
old_value VARCHAR(512) DEFAULT NULL COMMENT '修改前的值',
|
new_value VARCHAR(512) DEFAULT NULL COMMENT '修改后的值',
|
modify_time DATETIME(3) DEFAULT NULL COMMENT '参数修改时间',
|
collect_time DATETIME(3) NOT NULL COMMENT '报文采集时间',
|
data_json JSON DEFAULT NULL COMMENT '完整数据',
|
creator VARCHAR(64) DEFAULT '' COMMENT '创建者',
|
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
updater VARCHAR(64) DEFAULT '' COMMENT '更新者',
|
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
deleted BIT(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
|
PRIMARY KEY (id),
|
KEY idx_collect_operate_log_device_time (device_code, modify_time),
|
KEY idx_collect_operate_log_work_order (work_order_id, modify_time),
|
KEY idx_collect_operate_log_var (var_id)
|
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 数采-参数变更日志';
|
|
CREATE TABLE IF NOT EXISTS mes_collect_alarm (
|
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '编号',
|
machinery_id BIGINT DEFAULT NULL COMMENT '设备台账编号',
|
device_code VARCHAR(64) NOT NULL COMMENT '数采设备编号',
|
task_id BIGINT DEFAULT NULL COMMENT '生产任务编号',
|
work_order_id BIGINT DEFAULT NULL COMMENT '生产工单编号',
|
wm_id INT DEFAULT NULL COMMENT '报警标识:2产生 0消失',
|
wm_msg VARCHAR(512) DEFAULT NULL COMMENT '报警内容',
|
wm_time DATETIME(3) DEFAULT NULL COMMENT '报警时间',
|
status TINYINT NOT NULL DEFAULT 0 COMMENT '状态:0未消除 1已消除',
|
clear_time DATETIME(3) DEFAULT NULL COMMENT '消除时间',
|
collect_time DATETIME(3) NOT NULL COMMENT '报文采集时间',
|
data_json JSON DEFAULT NULL COMMENT '完整数据',
|
creator VARCHAR(64) DEFAULT '' COMMENT '创建者',
|
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
updater VARCHAR(64) DEFAULT '' COMMENT '更新者',
|
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
deleted BIT(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
|
PRIMARY KEY (id),
|
KEY idx_collect_alarm_device_status (device_code, status),
|
KEY idx_collect_alarm_time (wm_time),
|
KEY idx_collect_alarm_work_order (work_order_id)
|
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 数采-报警记录';
|
|
CREATE TABLE IF NOT EXISTS mes_collect_message (
|
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '编号',
|
machinery_id BIGINT DEFAULT NULL COMMENT '设备台账编号',
|
device_code VARCHAR(64) DEFAULT NULL COMMENT '数采设备编号',
|
mqtt_topic VARCHAR(255) DEFAULT NULL COMMENT 'MQTT 主题',
|
msg_type VARCHAR(32) DEFAULT NULL COMMENT '数据类型:realtime/spc/tech/opLog/alarm/unknown',
|
event_time DATETIME(3) DEFAULT NULL COMMENT '设备数据时间',
|
raw_payload LONGTEXT COMMENT '原始报文',
|
process_status TINYINT NOT NULL DEFAULT 0 COMMENT '处理状态:0成功 1失败',
|
error_msg VARCHAR(1024) DEFAULT NULL COMMENT '失败原因',
|
receive_time DATETIME(3) NOT NULL COMMENT '接收时间',
|
creator VARCHAR(64) DEFAULT '' COMMENT '创建者',
|
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
updater VARCHAR(64) DEFAULT '' COMMENT '更新者',
|
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
deleted BIT(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
|
PRIMARY KEY (id),
|
KEY idx_collect_message_device_time (device_code, receive_time),
|
KEY idx_collect_message_type_time (msg_type, receive_time),
|
KEY idx_collect_message_receive_time (receive_time)
|
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 数采-原始报文';
|
|
-- ---------- 3. 菜单与权限 ----------
|
INSERT INTO system_menu (id, name, permission, type, sort, parent_id, path, icon, component, component_name,
|
status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted)
|
VALUES (5392, '数采监控', 'mes:collect:query', 2, 9, 5300, 'collect/monitor', 'ep:monitor',
|
'mes/collect/monitor/index', 'MesCollectMonitor', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0')
|
ON DUPLICATE KEY UPDATE name = VALUES(name), permission = VALUES(permission), parent_id = VALUES(parent_id),
|
path = VALUES(path), component = VALUES(component), component_name = VALUES(component_name),
|
status = VALUES(status), visible = VALUES(visible), deleted = b'0';
|
|
INSERT INTO system_menu (id, name, permission, type, sort, parent_id, path, icon, component, component_name,
|
status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted)
|
VALUES (5393, '报警确认', 'mes:collect-alarm:ack', 3, 1, 5392, '', '', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0')
|
ON DUPLICATE KEY UPDATE name = VALUES(name), permission = VALUES(permission), parent_id = VALUES(parent_id),
|
status = VALUES(status), deleted = b'0';
|
|
INSERT IGNORE INTO system_role_menu (role_id, menu_id, creator, create_time, updater, update_time, deleted)
|
VALUES (1, 5392, '1', NOW(), '1', NOW(), b'0'),
|
(1, 5393, '1', NOW(), '1', NOW(), b'0');
|