-- 1. 创建报警记录表 DROP TABLE IF EXISTS `mes_device_fault_record`; CREATE TABLE IF NOT EXISTS `mes_device_fault_record` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '报警记录ID', `device_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '设备名称', `sensor_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '传感器名/通道', `device_status` tinyint NOT NULL DEFAULT 2 COMMENT '设备状态:0-停机,1-待机,2-生产', `nominal_value` decimal(10, 2) NULL DEFAULT NULL COMMENT '标称值(标准/理想值)', `normal_min` decimal(10, 2) NOT NULL COMMENT '正常范围下限(下限)', `normal_max` decimal(10, 2) NOT NULL COMMENT '正常范围上限(上限)', `lower_lower_limit` decimal(10, 2) NULL DEFAULT NULL COMMENT '下下限(严重超限下限)', `upper_upper_limit` decimal(10, 2) NULL DEFAULT NULL COMMENT '上上限(严重超限上限)', `actual_value` decimal(10, 2) NOT NULL COMMENT '实测值', `deviation_rate` decimal(10, 2) NULL COMMENT '偏离度(%)', `fault_level` tinyint NULL DEFAULT 1 COMMENT '故障等级:1-轻微,2-一般,3-严重', `fault_tag` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '故障标注/描述', `analysis_type` tinyint NOT NULL DEFAULT 1 COMMENT '分析类型:1-瞬态,2-趋势', `fault_time` datetime NOT NULL COMMENT '故障发生时间', `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '创建者', `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '更新者', `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '备注', `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除:0-未删除,1-已删除', `tenant_id` bigint NOT NULL DEFAULT 1 COMMENT '租户ID', PRIMARY KEY (`id`) USING BTREE, INDEX `idx_device_name`(`device_name`) USING BTREE COMMENT '设备名称索引', INDEX `idx_sensor_name`(`sensor_name`) USING BTREE COMMENT '传感器名索引', INDEX `idx_fault_time`(`fault_time`) USING BTREE COMMENT '故障时间索引', INDEX `idx_device_status`(`device_status`) USING BTREE COMMENT '设备状态索引', INDEX `idx_fault_level`(`fault_level`) USING BTREE COMMENT '故障等级索引' ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '设备报警记录表' ROW_FORMAT = DYNAMIC; -- 2. 插入二级菜单:报警记录(父菜单为设备管理,menu_id=2168) INSERT INTO `sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ('设备报警记录', 2168, 10, 'faultRecord', 'mes/device/faultRecord/index', NULL, 1, 0, 'C', '0', '0', 'device:faultRecord:list', 'log', 'admin', NOW(), '', NULL, '报警记录菜单'); -- 获取刚插入的菜单ID SET @menu_id = LAST_INSERT_ID(); -- 3. 插入按钮权限 -- 报警记录查询 INSERT INTO `sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ('报警记录查询', @menu_id, 1, '#', '', NULL, 1, 0, 'F', '0', '0', 'device:faultRecord:query', '#', 'admin', NOW(), '', NULL, ''); -- 报警记录导出 INSERT INTO `sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ('报警记录导出', @menu_id, 2, '#', '', NULL, 1, 0, 'F', '0', '0', 'device:faultRecord:export', '#', 'admin', NOW(), '', NULL, ''); -- 注意:趋势分析功能已合并到报警记录页面中,使用圆滑折线图展示 -- 4. 添加门限类型字段(如果表已存在,执行此ALTER语句) ALTER TABLE `mes_device_fault_record` ADD COLUMN `threshold_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '门限类型(如:温度、压力、流量等)' AFTER `upper_upper_limit`; -- 5.门限可为空 ALTER TABLE mes_device_fault_record MODIFY COLUMN normal_min decimal(10,2) NULL; ALTER TABLE mes_device_fault_record MODIFY COLUMN normal_max decimal(10,2) NULL; -- 6.修改fault_level字段类型为varchar(如果表已存在,执行此ALTER语句) ALTER TABLE `mes_device_fault_record` MODIFY COLUMN `fault_level` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '报警类型:超上限、超上上限、超下限、超下下限、其他'; -- ============================================= -- LabVIEW写入示例(供LabVIEW端参考) -- ============================================= -- 发酵罐1号 温度传感器-CH01 跨月测试数据(跨度6个月,门限类型和门限值会变化) -- INSERT INTO `mes_device_fault_record` -- (`device_name`, `sensor_name`, `device_status`, `nominal_value`, `normal_min`, `normal_max`, `lower_lower_limit`, `upper_upper_limit`, `threshold_type`, `actual_value`, `deviation_rate`, `fault_level`, `fault_tag`, `analysis_type`, `fault_time`, `create_by`, `create_time`) -- VALUES -- ('发酵罐1号', '温度传感器-CH01', 2, 25.00, 20.00, 30.00, 15.00, 35.00, '温度℃', 31.50, 26.00, 2, '7月温度偏高', 1, '2025-07-08 14:22:35', 'labview', NOW()), -- ('发酵罐1号', '温度传感器-CH01', 2, 26.00, 21.00, 31.00, 16.00, 36.00, '温度℃', 36.80, 41.54, 3, '8月高温报警(门限调整后)', 1, '2025-08-15 09:45:18', 'labview', NOW()), -- ('发酵罐1号', '温度传感器-CH01', 2, 24.00, 19.00, 29.00, 14.00, 34.00, '温度℃', 18.20, 24.17, 2, '9月温度偏低(门限下调)', 1, '2025-09-03 16:33:42', 'labview', NOW()), -- ('发酵罐1号', '温度传感器-CH01', 2, 25.00, 20.00, 30.00, 15.00, 35.00, '温度℃', 32.50, 30.00, 2, '10月温度超上限', 1, '2025-10-22 11:08:27', 'labview', NOW()), -- ('发酵罐1号', '温度传感器-CH01', 2, 23.00, 18.00, 28.00, 13.00, 33.00, '温度℃', 12.50, 45.65, 3, '11月低温严重报警(冬季门限)', 1, '2025-11-18 08:55:13', 'labview', NOW()), -- ('发酵罐1号', '温度传感器-CH01', 2, 22.00, 17.00, 27.00, 12.00, 32.00, '温度℃', 28.80, 30.91, 2, '12月温度超上限(冬季门限)', 1, '2025-12-10 15:42:56', 'labview', NOW()); -- ============================================= -- 字段说明(供LabVIEW端参考) -- ============================================= -- device_name : 设备名称(必填)如:发酵罐1号、搅拌器1号、进料泵1号 -- sensor_name : 传感器名/通道(必填)如:温度传感器-CH01、压力传感器-CH02 -- device_status : 设备状态(必填)0-停机,1-待机,2-生产 -- nominal_value : 标称值(选填)标准/理想值,可为NULL -- normal_min : 正常范围下限(必填) -- normal_max : 正常范围上限(必填) -- lower_lower_limit : 下下限(选填)严重超限下限 -- upper_upper_limit : 上上限(选填)严重超限上限 -- threshold_type : 门限类型(选填)如:温度℃、压力MPa、流量L/min等 -- actual_value : 实测值(必填) -- deviation_rate : 偏离度%(必填)计算公式:|actual_value - nominal_value| / nominal_value * 100 -- fault_level : 报警类型(选填)超上限、超上上限、超下限、超下下限、其他 -- fault_tag : 报警标注(选填)描述报警原因 -- analysis_type : 分析类型(必填)1-瞬态,2-趋势 -- fault_time : 报警发生时间(必填)格式:YYYY-MM-DD HH:MM:SS -- create_by : 创建者(必填)固定为 'labview' -- create_time : 创建时间(必填)使用 NOW() 获取当前时间 -- -- 报警类型说明: -- 超上限:实测值超过正常范围上限 -- 超上上限:实测值超过严重范围上限 -- 超下限:实测值低于正常范围下限 -- 超下下限:实测值低于严重范围下限 -- 其他:其他类型的报警