| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247 |
- -- ============================================================
- -- 湛江市智慧人社运营运维项目
- -- 综合修复见习人员管理模块问题
- -- 修复内容:
- -- 1. 修复 sys_permission 按钮权限 status=NULL 问题(导出按钮+服务跟进按钮不显示的根本原因)
- -- 2. 修复服务跟进权限ID冲突问题
- -- 3. 确保导出权限和服务跟进权限已授权给admin角色
- -- 4. 确保 DICTIONARY/DICTIONARY_ITEM 字典数据存在(自定义标签不显示的原因)
- -- 数据库:达梦数据库 (DM8) 兼容(不加反引号,使用 FROM DUAL 和 NEWID)
- -- 创建日期:2026-06-05
- -- ============================================================
- -- ============================================================
- -- 第一部分:修复权限 status 字段(核心问题)
- -- 后端 SysPermissionController 构建 codeList 时要求 status='1'
- -- 但 V20260603_6 插入的见习人员权限 status=NULL,导致权限码不返回
- -- V20260604_9 只修复了重点关注人员,遗漏了见习人员
- -- ============================================================
- -- 1.1 修复见习人员所有按钮权限的 status 为 1
- UPDATE sys_permission
- SET status = 1
- WHERE perms IN (
- 'internship_personnel:add',
- 'internship_personnel:edit',
- 'internship_personnel:delete',
- 'internship_personnel:deleteBatch',
- 'internship_personnel:exportXls',
- 'internship_personnel:importExcel',
- 'internship_personnel:serviceFollow',
- 'internship_personnel:messagePush',
- 'internship_personnel:jobPush',
- 'internship_personnel:customTag'
- )
- AND (status IS NULL OR status != 1);
- -- ============================================================
- -- 第二部分:修复服务跟进权限ID冲突
- -- V20260603_6 中角色授权ID 1780601000000327 与服务跟进权限ID冲突
- -- ============================================================
- -- 2.1 清理冲突的旧数据
- DELETE FROM sys_role_permission WHERE permission_id = '1780601000000327';
- DELETE FROM sys_permission WHERE id = '1780601000000327' AND perms = 'internship_personnel:serviceFollow';
- -- 2.2 插入服务跟进权限(使用不冲突的ID,status=1)
- INSERT INTO sys_permission (id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
- SELECT '1780601000000340', '178060100000032', '服务跟进_见习人员管理', NULL, NULL, 0, '', NULL, 2, 'internship_personnel:serviceFollow', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-06-05 10:00:00', NULL, NULL, 0, 0, 1, 0
- FROM DUAL
- WHERE NOT EXISTS (SELECT 1 FROM sys_permission WHERE perms = 'internship_personnel:serviceFollow');
- -- 2.3 授权服务跟进权限给admin角色
- INSERT INTO sys_role_permission (id, role_id, permission_id, data_rule_ids, operate_date, operate_ip)
- SELECT '1780601000000341', 'f6817f48af4fb3af11b9e8bf182f618b', '1780601000000340', NULL, '2026-06-05 10:00:00', '127.0.0.1'
- FROM DUAL
- WHERE NOT EXISTS (SELECT 1 FROM sys_role_permission WHERE role_id = 'f6817f48af4fb3af11b9e8bf182f618b' AND permission_id = '1780601000000340');
- -- 2.4 确保导出权限已授权给admin角色(权限ID 1780601000000325)
- INSERT INTO sys_role_permission (id, role_id, permission_id, data_rule_ids, operate_date, operate_ip)
- SELECT '1780601000000342', 'f6817f48af4fb3af11b9e8bf182f618b', '1780601000000325', NULL, '2026-06-05 10:00:00', '127.0.0.1'
- FROM DUAL
- WHERE NOT EXISTS (SELECT 1 FROM sys_role_permission WHERE role_id = 'f6817f48af4fb3af11b9e8bf182f618b' AND permission_id = '1780601000000325');
- -- ============================================================
- -- 第三部分:确保 DICTIONARY/DICTIONARY_ITEM 字典数据存在
- -- 自定义标签不显示的原因:V20260604_7 可能未成功执行(之前有CAST错误)
- -- 前端 useDict 从 DICTIONARY_ITEM 表加载字典数据
- -- ============================================================
- -- 3.1 确保 DICTIONARY 表有见习人员标签字典
- INSERT INTO DICTIONARY (DictionaryCode, Name, OrderNo, RecordStatus)
- SELECT 'internship_major_tag', '见习人员大类标签', 4, 0 FROM DUAL
- WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY WHERE DictionaryCode = 'internship_major_tag');
- INSERT INTO DICTIONARY (DictionaryCode, Name, OrderNo, RecordStatus)
- SELECT 'internship_minor_tag', '见习人员小类标签', 5, 0 FROM DUAL
- WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY WHERE DictionaryCode = 'internship_minor_tag');
- INSERT INTO DICTIONARY (DictionaryCode, Name, OrderNo, RecordStatus)
- SELECT 'internship_custom_tag', '见习人员自定义标签', 6, 0 FROM DUAL
- WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY WHERE DictionaryCode = 'internship_custom_tag');
- -- 3.2 确保 DICTIONARY_ITEM 表有见习人员大类标签(Value=1, Name='见习人员')
- INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
- SELECT NEWID(), 'internship_major_tag', '1', 1, '见习人员', 1, 1, 1 FROM DUAL
- WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'internship_major_tag' AND Value = 1);
- -- 3.3 确保 DICTIONARY_ITEM 表有见习人员小类标签
- INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
- SELECT NEWID(), 'internship_minor_tag', '1', 1, '离校2年内未就业高校毕业生', 1, 1, 1 FROM DUAL
- WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'internship_minor_tag' AND Value = 1);
- INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
- SELECT NEWID(), 'internship_minor_tag', '2', 2, '16-24岁失业青年', 2, 1, 1 FROM DUAL
- WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'internship_minor_tag' AND Value = 2);
- -- 3.4 确保 DICTIONARY_ITEM 表有8条自定义标签
- INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
- SELECT NEWID(), 'internship_custom_tag', '1', 1, '零就业家庭', 1, 1, 1 FROM DUAL
- WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'internship_custom_tag' AND Value = 1);
- INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
- SELECT NEWID(), 'internship_custom_tag', '2', 2, '低保家庭', 2, 1, 1 FROM DUAL
- WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'internship_custom_tag' AND Value = 2);
- INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
- SELECT NEWID(), 'internship_custom_tag', '3', 3, '残疾人员', 3, 1, 1 FROM DUAL
- WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'internship_custom_tag' AND Value = 3);
- INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
- SELECT NEWID(), 'internship_custom_tag', '4', 4, '长期失业', 4, 1, 1 FROM DUAL
- WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'internship_custom_tag' AND Value = 4);
- INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
- SELECT NEWID(), 'internship_custom_tag', '5', 5, '特困人员', 5, 1, 1 FROM DUAL
- WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'internship_custom_tag' AND Value = 5);
- INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
- SELECT NEWID(), 'internship_custom_tag', '6', 6, '刑满释放', 6, 1, 1 FROM DUAL
- WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'internship_custom_tag' AND Value = 6);
- INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
- SELECT NEWID(), 'internship_custom_tag', '7', 7, '社会救助', 7, 1, 1 FROM DUAL
- WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'internship_custom_tag' AND Value = 7);
- INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
- SELECT NEWID(), 'internship_custom_tag', '8', 8, '优抚对象', 8, 1, 1 FROM DUAL
- WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'internship_custom_tag' AND Value = 8);
- -- 3.5 确保 JobSeekerCategory(求职人员类别)字典数据存在
- INSERT INTO DICTIONARY (DictionaryCode, Name, OrderNo, RecordStatus)
- SELECT 'JobSeekerCategory', '求职人员类别', 7, 1 FROM DUAL
- WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY WHERE DictionaryCode = 'JobSeekerCategory');
- INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
- SELECT NEWID(), 'JobSeekerCategory', '1', 1, '新成长失业青年', 1, 1, 1 FROM DUAL
- WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'JobSeekerCategory' AND Value = 1);
- INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
- SELECT NEWID(), 'JobSeekerCategory', '2', 2, '应届高校毕业生', 2, 1, 1 FROM DUAL
- WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'JobSeekerCategory' AND Value = 2);
- INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
- SELECT NEWID(), 'JobSeekerCategory', '3', 3, '就业转失业人员', 3, 1, 1 FROM DUAL
- WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'JobSeekerCategory' AND Value = 3);
- INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
- SELECT NEWID(), 'JobSeekerCategory', '4', 4, '其他失业人员', 4, 1, 1 FROM DUAL
- WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'JobSeekerCategory' AND Value = 4);
- INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
- SELECT NEWID(), 'JobSeekerCategory', '5', 5, '本市农村人员', 5, 1, 1 FROM DUAL
- WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'JobSeekerCategory' AND Value = 5);
- INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
- SELECT NEWID(), 'JobSeekerCategory', '6', 6, '外埠人员', 6, 1, 1 FROM DUAL
- WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'JobSeekerCategory' AND Value = 6);
- INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
- SELECT NEWID(), 'JobSeekerCategory', '7', 7, '在业人员', 7, 1, 1 FROM DUAL
- WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'JobSeekerCategory' AND Value = 7);
- INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
- SELECT NEWID(), 'JobSeekerCategory', '8', 8, '下岗职工', 8, 1, 1 FROM DUAL
- WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'JobSeekerCategory' AND Value = 8);
- INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
- SELECT NEWID(), 'JobSeekerCategory', '9', 9, '退休人员', 9, 1, 1 FROM DUAL
- WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'JobSeekerCategory' AND Value = 9);
- INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
- SELECT NEWID(), 'JobSeekerCategory', '10', 10, '在学人员', 10, 1, 1 FROM DUAL
- WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'JobSeekerCategory' AND Value = 10);
- -- 3.6 确保 JobSeekerStatus(求职状态)字典数据存在
- INSERT INTO DICTIONARY (DictionaryCode, Name, OrderNo, RecordStatus)
- SELECT 'JobSeekerStatus', '求职状态', 8, 1 FROM DUAL
- WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY WHERE DictionaryCode = 'JobSeekerStatus');
- INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
- SELECT NEWID(), 'JobSeekerStatus', '1', 1, '离职-随时到岗', 1, 1, 1 FROM DUAL
- WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'JobSeekerStatus' AND Value = 1);
- INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
- SELECT NEWID(), 'JobSeekerStatus', '2', 2, '离职-随时到岗', 2, 1, 1 FROM DUAL
- WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'JobSeekerStatus' AND Value = 2);
- INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
- SELECT NEWID(), 'JobSeekerStatus', '3', 3, '在职-月内到岗', 3, 1, 1 FROM DUAL
- WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'JobSeekerStatus' AND Value = 3);
- INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
- SELECT NEWID(), 'JobSeekerStatus', '4', 4, '在职-考虑机会', 4, 1, 1 FROM DUAL
- WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'JobSeekerStatus' AND Value = 4);
- INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
- SELECT NEWID(), 'JobSeekerStatus', '5', 5, '在职-暂无意向', 5, 1, 1 FROM DUAL
- WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'JobSeekerStatus' AND Value = 5);
- INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
- SELECT NEWID(), 'JobSeekerStatus', '6', 6, '在校-即将毕业', 6, 1, 1 FROM DUAL
- WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'JobSeekerStatus' AND Value = 6);
- -- ============================================================
- -- 第四部分:清理见习人员在 sys_dict/sys_dict_item 中的旧数据
- -- V20260604_3 插入了中文item_value的旧字典数据,需要清理
- -- 前端 useDict 从 DICTIONARY_ITEM 表加载,不再使用 sys_dict_item
- -- ============================================================
- DELETE FROM sys_dict_item
- WHERE dict_id IN (
- SELECT id FROM sys_dict
- WHERE dict_code IN ('internship_major_tag', 'internship_minor_tag', 'internship_custom_tag')
- AND del_flag = 0
- );
- DELETE FROM sys_dict
- WHERE dict_code IN ('internship_major_tag', 'internship_minor_tag', 'internship_custom_tag')
- AND del_flag = 0;
- -- ============================================================
- -- 第五部分:验证修复结果
- -- ============================================================
- -- 5.1 验证权限status是否已修复
- SELECT '权限status检查' AS 检查项, id, name, perms, status
- FROM sys_permission
- WHERE perms LIKE 'internship_personnel:%'
- AND menu_type = 2
- ORDER BY perms;
- -- 5.2 验证导出和服务跟进权限的角色授权
- SELECT '角色授权检查' AS 检查项, p.perms, rp.role_id
- FROM sys_permission p
- LEFT JOIN sys_role_permission rp ON rp.permission_id = p.id AND rp.role_id = 'f6817f48af4fb3af11b9e8bf182f618b'
- WHERE p.perms IN ('internship_personnel:exportXls', 'internship_personnel:serviceFollow');
- -- 5.3 验证DICTIONARY字典数据
- SELECT '字典主表检查' AS 检查项, DictionaryCode, Name
- FROM DICTIONARY
- WHERE DictionaryCode IN ('internship_major_tag', 'internship_minor_tag', 'internship_custom_tag', 'JobSeekerCategory', 'JobSeekerStatus');
- -- 5.4 验证DICTIONARY_ITEM字典项数据
- SELECT '字典项检查' AS 检查项, DictionaryCode, Value, Name, OrderNo
- FROM DICTIONARY_ITEM
- WHERE DictionaryCode IN ('internship_major_tag', 'internship_minor_tag', 'internship_custom_tag', 'JobSeekerCategory', 'JobSeekerStatus')
- ORDER BY DictionaryCode, OrderNo;
|