tuqin
2026-11-02 2d79937de52efd14c1796620f1930d5a7cedba25
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
167
168
169
170
171
172
173
-- =====================================================================
-- 安全生产模块 —— 二期:安全风险分级管控
--
-- 定位:双重预防机制的第一重(风险分级管控)。先识别风险点、评估风险等级,
--       才能据此开展隐患排查(二期之后的能力点)。
--
-- 评估方法:LEC 法(格雷厄姆-金尼法)
--   D = L × E × C
--   L 事故发生可能性        1 / 3 / 6 / 10
--   E 暴露于危险环境频率    0.5 / 1 / 2 / 3 / 6 / 10
--   C 事故后果严重性        1 / 3 / 5 / 7 / 15 / 40 / 100
--   等级划分:D≥320 重大(红);160≤D<320 较大(橙);70≤D<160 一般(黄);D<70 低(蓝)
--
-- 内容:
--   1. 建表 mes_safety_risk_unit(风险单元/风险点)
--   2. 建表 mes_safety_risk(风险事件清单 + LEC 评估)
--   3. 字典:风险等级 / 风险类别 / 事故类型 / 单元状态
--   4. 菜单:挂在「安全生产」目录下
--   5. 授权超级管理员
--
-- 特性:可重复执行
-- =====================================================================
 
-- ---------------------------------------------------------------------
-- 1. 风险单元(风险点):风险识别的最小单元,如"造纸车间1#烘缸""配电室"
-- ---------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `mes_safety_risk_unit` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号',
  `code` varchar(64) NOT NULL COMMENT '风险单元编码',
  `name` varchar(200) NOT NULL COMMENT '风险单元名称',
  `workshop_id` bigint DEFAULT NULL COMMENT '所属车间编号',
  `location` varchar(255) DEFAULT NULL COMMENT '具体位置',
  `risk_category` tinyint DEFAULT NULL COMMENT '风险类别(字典 mes_safety_risk_category)',
  `charge_user_id` bigint DEFAULT NULL COMMENT '责任人编号',
  `status` tinyint NOT NULL DEFAULT '1' COMMENT '状态:1=启用,0=停用',
  `remark` varchar(500) 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`) USING BTREE,
  UNIQUE KEY `uk_code` (`code`) USING BTREE,
  KEY `idx_workshop` (`workshop_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='安全生产-风险单元';
 
-- ---------------------------------------------------------------------
-- 2. 风险事件清单(含 LEC 评估结果)
-- ---------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `mes_safety_risk` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号',
  `unit_id` bigint NOT NULL COMMENT '风险单元编号',
  `code` varchar(64) NOT NULL COMMENT '风险编码',
  `name` varchar(200) NOT NULL COMMENT '风险名称/描述',
  `accident_type` tinyint DEFAULT NULL COMMENT '可能导致的事故类型(字典 mes_safety_accident_type)',
  `possible_consequence` varchar(500) DEFAULT NULL COMMENT '可能导致的后果说明',
 
  `likelihood` decimal(6,2) DEFAULT NULL COMMENT 'L 事故发生可能性',
  `exposure` decimal(6,2) DEFAULT NULL COMMENT 'E 暴露于危险环境频率',
  `consequence` decimal(6,2) DEFAULT NULL COMMENT 'C 事故后果严重性',
  `risk_value` decimal(10,2) DEFAULT NULL COMMENT 'D 风险值 = L×E×C',
  `risk_level` tinyint DEFAULT NULL COMMENT '风险等级(字典 mes_safety_risk_level:1重大 2较大 3一般 4低)',
 
  `control_engineering` varchar(1000) DEFAULT NULL COMMENT '工程技术措施',
  `control_management` varchar(1000) DEFAULT NULL COMMENT '管理措施',
  `control_training` varchar(1000) DEFAULT NULL COMMENT '培训教育措施',
  `control_ppe` varchar(1000) DEFAULT NULL COMMENT '个体防护措施',
  `control_emergency` varchar(1000) DEFAULT NULL COMMENT '应急处置措施',
 
  `evaluate_date` date DEFAULT NULL COMMENT '本次评估日期',
  `next_evaluate_date` date DEFAULT NULL COMMENT '下次评估日期',
  `charge_user_id` bigint DEFAULT NULL COMMENT '管控责任人编号',
  `status` tinyint NOT NULL DEFAULT '1' COMMENT '状态:1=有效,0=已失效',
  `remark` varchar(500) 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`) USING BTREE,
  UNIQUE KEY `uk_code` (`code`) USING BTREE,
  KEY `idx_unit` (`unit_id`) USING BTREE,
  KEY `idx_level` (`risk_level`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='安全生产-风险事件清单';
 
-- ---------------------------------------------------------------------
-- 3. 字典
-- ---------------------------------------------------------------------
DELETE FROM system_dict_data WHERE dict_type IN
  ('mes_safety_risk_level', 'mes_safety_risk_category', 'mes_safety_accident_type', 'mes_safety_unit_status');
 
DELETE FROM system_dict_type WHERE type IN
  ('mes_safety_risk_level', 'mes_safety_risk_category', 'mes_safety_accident_type', 'mes_safety_unit_status');
 
INSERT INTO system_dict_type (name, type, status, remark, creator, create_time, updater, update_time, deleted)
VALUES ('安全生产-风险等级', 'mes_safety_risk_level', 0, '按 LEC 风险值 D 划分:1重大 2较大 3一般 4低', '1', NOW(), '1', NOW(), b'0'),
       ('安全生产-风险类别', 'mes_safety_risk_category', 0, '风险单元的风险类别', '1', NOW(), '1', NOW(), b'0'),
       ('安全生产-事故类型', 'mes_safety_accident_type', 0, 'GB6441 企业职工伤亡事故分类(常用项)', '1', NOW(), '1', NOW(), b'0'),
       ('安全生产-单元状态', 'mes_safety_unit_status', 0, '风险单元状态', '1', NOW(), '1', NOW(), b'0');
 
INSERT INTO system_dict_data (sort, label, value, dict_type, status, color_type, creator, create_time, updater, update_time, deleted)
VALUES
-- 风险等级(四色)
(1, '重大风险', '1', 'mes_safety_risk_level', 0, 'error',      '1', NOW(), '1', NOW(), b'0'),
(2, '较大风险', '2', 'mes_safety_risk_level', 0, 'warning',    '1', NOW(), '1', NOW(), b'0'),
(3, '一般风险', '3', 'mes_safety_risk_level', 0, 'processing', '1', NOW(), '1', NOW(), b'0'),
(4, '低风险',   '4', 'mes_safety_risk_level', 0, 'success',    '1', NOW(), '1', NOW(), b'0'),
-- 风险类别
(1, '设备设施', '1', 'mes_safety_risk_category', 0, 'default', '1', NOW(), '1', NOW(), b'0'),
(2, '作业活动', '2', 'mes_safety_risk_category', 0, 'default', '1', NOW(), '1', NOW(), b'0'),
(3, '作业环境', '3', 'mes_safety_risk_category', 0, 'default', '1', NOW(), '1', NOW(), b'0'),
(4, '安全管理', '4', 'mes_safety_risk_category', 0, 'default', '1', NOW(), '1', NOW(), b'0'),
-- 事故类型
(1, '物体打击',   '1',  'mes_safety_accident_type', 0, 'default', '1', NOW(), '1', NOW(), b'0'),
(2, '车辆伤害',   '2',  'mes_safety_accident_type', 0, 'default', '1', NOW(), '1', NOW(), b'0'),
(3, '机械伤害',   '3',  'mes_safety_accident_type', 0, 'default', '1', NOW(), '1', NOW(), b'0'),
(4, '起重伤害',   '4',  'mes_safety_accident_type', 0, 'default', '1', NOW(), '1', NOW(), b'0'),
(5, '触电',       '5',  'mes_safety_accident_type', 0, 'default', '1', NOW(), '1', NOW(), b'0'),
(6, '淹溺',       '6',  'mes_safety_accident_type', 0, 'default', '1', NOW(), '1', NOW(), b'0'),
(7, '灼烫',       '7',  'mes_safety_accident_type', 0, 'default', '1', NOW(), '1', NOW(), b'0'),
(8, '火灾',       '8',  'mes_safety_accident_type', 0, 'default', '1', NOW(), '1', NOW(), b'0'),
(9, '高处坠落',   '9',  'mes_safety_accident_type', 0, 'default', '1', NOW(), '1', NOW(), b'0'),
(10, '坍塌',      '10', 'mes_safety_accident_type', 0, 'default', '1', NOW(), '1', NOW(), b'0'),
(11, '锅炉爆炸',  '11', 'mes_safety_accident_type', 0, 'default', '1', NOW(), '1', NOW(), b'0'),
(12, '容器爆炸',  '12', 'mes_safety_accident_type', 0, 'default', '1', NOW(), '1', NOW(), b'0'),
(13, '中毒和窒息', '13', 'mes_safety_accident_type', 0, 'default', '1', NOW(), '1', NOW(), b'0'),
(14, '其他伤害',  '14', 'mes_safety_accident_type', 0, 'default', '1', NOW(), '1', NOW(), b'0'),
-- 单元状态
(1, '启用', '1', 'mes_safety_unit_status', 0, 'success', '1', NOW(), '1', NOW(), b'0'),
(2, '停用', '0', 'mes_safety_unit_status', 0, 'default', '1', NOW(), '1', NOW(), b'0');
 
-- ---------------------------------------------------------------------
-- 4. 菜单(挂在 1065910 安全生产下)
-- ---------------------------------------------------------------------
DELETE FROM system_role_menu WHERE menu_id BETWEEN 1065917 AND 1065929;
 
DELETE FROM system_menu WHERE id BETWEEN 1065917 AND 1065929;
 
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
-- 风险单元管理
(1065917, '风险单元管理', '', 2, 2, 1065910, 'risk-unit', 'ep:location',
 'safety/risk/unit/index', 'SafetyRiskUnit', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'),
(1065918, '风险单元查询', 'mes:safety-risk-unit:query',  3, 1, 1065917, '', '', NULL, NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'),
(1065919, '风险单元创建', 'mes:safety-risk-unit:create', 3, 2, 1065917, '', '', NULL, NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'),
(1065920, '风险单元更新', 'mes:safety-risk-unit:update', 3, 3, 1065917, '', '', NULL, NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'),
(1065921, '风险单元删除', 'mes:safety-risk-unit:delete', 3, 4, 1065917, '', '', NULL, NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'),
-- 风险清单管理
(1065922, '风险清单管理', '', 2, 3, 1065910, 'risk-list', 'ep:warning',
 'safety/risk/list/index', 'SafetyRiskList', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'),
(1065923, '风险清单查询', 'mes:safety-risk:query',  3, 1, 1065922, '', '', NULL, NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'),
(1065924, '风险清单创建', 'mes:safety-risk:create', 3, 2, 1065922, '', '', NULL, NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'),
(1065925, '风险清单更新', 'mes:safety-risk:update', 3, 3, 1065922, '', '', NULL, NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'),
(1065926, '风险清单删除', 'mes:safety-risk:delete', 3, 4, 1065922, '', '', NULL, NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0');
 
-- ---------------------------------------------------------------------
-- 5. 授权超级管理员
-- ---------------------------------------------------------------------
INSERT INTO system_role_menu (role_id, menu_id, creator, create_time, updater, update_time, deleted)
SELECT 1, m.id, '1', NOW(), '1', NOW(), b'0'
FROM system_menu m
WHERE m.id BETWEEN 1065917 AND 1065929;
 
-- ---------------------------------------------------------------------
-- 6. 验证
-- ---------------------------------------------------------------------
SELECT id, parent_id, name, path, component, permission, type
FROM system_menu WHERE id BETWEEN 1065910 AND 1065929 ORDER BY id;
 
SELECT dict_type, label, value FROM system_dict_data
WHERE dict_type LIKE 'mes_safety_%' ORDER BY dict_type, sort;