103 lines
8.3 KiB
SQL
103 lines
8.3 KiB
SQL
-- 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() 获取当前时间
|
||
--
|
||
-- 报警类型说明:
|
||
-- 超上限:实测值超过正常范围上限
|
||
-- 超上上限:实测值超过严重范围上限
|
||
-- 超下限:实测值低于正常范围下限
|
||
-- 超下下限:实测值低于严重范围下限
|
||
-- 其他:其他类型的报警 |