修复见习人员权限数据.sql 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. -- ============================================================
  2. -- 湛江市智慧人社运营运维项目
  3. -- 综合修复见习人员管理模块问题
  4. -- 修复内容:
  5. -- 1. 修复 sys_permission 按钮权限 status=NULL 问题(导出按钮+服务跟进按钮不显示的根本原因)
  6. -- 2. 修复服务跟进权限ID冲突问题
  7. -- 3. 确保导出权限和服务跟进权限已授权给admin角色
  8. -- 4. 确保 DICTIONARY/DICTIONARY_ITEM 字典数据存在(自定义标签不显示的原因)
  9. -- 数据库:达梦数据库 (DM8) 兼容(不加反引号,使用 FROM DUAL 和 NEWID)
  10. -- 创建日期:2026-06-05
  11. -- ============================================================
  12. -- ============================================================
  13. -- 第一部分:修复权限 status 字段(核心问题)
  14. -- 后端 SysPermissionController 构建 codeList 时要求 status='1'
  15. -- 但 V20260603_6 插入的见习人员权限 status=NULL,导致权限码不返回
  16. -- V20260604_9 只修复了重点关注人员,遗漏了见习人员
  17. -- ============================================================
  18. -- 1.1 修复见习人员所有按钮权限的 status 为 1
  19. UPDATE sys_permission
  20. SET status = 1
  21. WHERE perms IN (
  22. 'internship_personnel:add',
  23. 'internship_personnel:edit',
  24. 'internship_personnel:delete',
  25. 'internship_personnel:deleteBatch',
  26. 'internship_personnel:exportXls',
  27. 'internship_personnel:importExcel',
  28. 'internship_personnel:serviceFollow',
  29. 'internship_personnel:messagePush',
  30. 'internship_personnel:jobPush',
  31. 'internship_personnel:customTag'
  32. )
  33. AND (status IS NULL OR status != 1);
  34. -- ============================================================
  35. -- 第二部分:修复服务跟进权限ID冲突
  36. -- V20260603_6 中角色授权ID 1780601000000327 与服务跟进权限ID冲突
  37. -- ============================================================
  38. -- 2.1 清理冲突的旧数据
  39. DELETE FROM sys_role_permission WHERE permission_id = '1780601000000327';
  40. DELETE FROM sys_permission WHERE id = '1780601000000327' AND perms = 'internship_personnel:serviceFollow';
  41. -- 2.2 插入服务跟进权限(使用不冲突的ID,status=1)
  42. 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)
  43. 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
  44. FROM DUAL
  45. WHERE NOT EXISTS (SELECT 1 FROM sys_permission WHERE perms = 'internship_personnel:serviceFollow');
  46. -- 2.3 授权服务跟进权限给admin角色
  47. INSERT INTO sys_role_permission (id, role_id, permission_id, data_rule_ids, operate_date, operate_ip)
  48. SELECT '1780601000000341', 'f6817f48af4fb3af11b9e8bf182f618b', '1780601000000340', NULL, '2026-06-05 10:00:00', '127.0.0.1'
  49. FROM DUAL
  50. WHERE NOT EXISTS (SELECT 1 FROM sys_role_permission WHERE role_id = 'f6817f48af4fb3af11b9e8bf182f618b' AND permission_id = '1780601000000340');
  51. -- 2.4 确保导出权限已授权给admin角色(权限ID 1780601000000325)
  52. INSERT INTO sys_role_permission (id, role_id, permission_id, data_rule_ids, operate_date, operate_ip)
  53. SELECT '1780601000000342', 'f6817f48af4fb3af11b9e8bf182f618b', '1780601000000325', NULL, '2026-06-05 10:00:00', '127.0.0.1'
  54. FROM DUAL
  55. WHERE NOT EXISTS (SELECT 1 FROM sys_role_permission WHERE role_id = 'f6817f48af4fb3af11b9e8bf182f618b' AND permission_id = '1780601000000325');
  56. -- ============================================================
  57. -- 第三部分:确保 DICTIONARY/DICTIONARY_ITEM 字典数据存在
  58. -- 自定义标签不显示的原因:V20260604_7 可能未成功执行(之前有CAST错误)
  59. -- 前端 useDict 从 DICTIONARY_ITEM 表加载字典数据
  60. -- ============================================================
  61. -- 3.1 确保 DICTIONARY 表有见习人员标签字典
  62. INSERT INTO DICTIONARY (DictionaryCode, Name, OrderNo, RecordStatus)
  63. SELECT 'internship_major_tag', '见习人员大类标签', 4, 0 FROM DUAL
  64. WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY WHERE DictionaryCode = 'internship_major_tag');
  65. INSERT INTO DICTIONARY (DictionaryCode, Name, OrderNo, RecordStatus)
  66. SELECT 'internship_minor_tag', '见习人员小类标签', 5, 0 FROM DUAL
  67. WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY WHERE DictionaryCode = 'internship_minor_tag');
  68. INSERT INTO DICTIONARY (DictionaryCode, Name, OrderNo, RecordStatus)
  69. SELECT 'internship_custom_tag', '见习人员自定义标签', 6, 0 FROM DUAL
  70. WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY WHERE DictionaryCode = 'internship_custom_tag');
  71. -- 3.2 确保 DICTIONARY_ITEM 表有见习人员大类标签(Value=1, Name='见习人员')
  72. INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
  73. SELECT NEWID(), 'internship_major_tag', '1', 1, '见习人员', 1, 1, 1 FROM DUAL
  74. WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'internship_major_tag' AND Value = 1);
  75. -- 3.3 确保 DICTIONARY_ITEM 表有见习人员小类标签
  76. INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
  77. SELECT NEWID(), 'internship_minor_tag', '1', 1, '离校2年内未就业高校毕业生', 1, 1, 1 FROM DUAL
  78. WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'internship_minor_tag' AND Value = 1);
  79. INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
  80. SELECT NEWID(), 'internship_minor_tag', '2', 2, '16-24岁失业青年', 2, 1, 1 FROM DUAL
  81. WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'internship_minor_tag' AND Value = 2);
  82. -- 3.4 确保 DICTIONARY_ITEM 表有8条自定义标签
  83. INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
  84. SELECT NEWID(), 'internship_custom_tag', '1', 1, '零就业家庭', 1, 1, 1 FROM DUAL
  85. WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'internship_custom_tag' AND Value = 1);
  86. INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
  87. SELECT NEWID(), 'internship_custom_tag', '2', 2, '低保家庭', 2, 1, 1 FROM DUAL
  88. WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'internship_custom_tag' AND Value = 2);
  89. INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
  90. SELECT NEWID(), 'internship_custom_tag', '3', 3, '残疾人员', 3, 1, 1 FROM DUAL
  91. WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'internship_custom_tag' AND Value = 3);
  92. INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
  93. SELECT NEWID(), 'internship_custom_tag', '4', 4, '长期失业', 4, 1, 1 FROM DUAL
  94. WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'internship_custom_tag' AND Value = 4);
  95. INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
  96. SELECT NEWID(), 'internship_custom_tag', '5', 5, '特困人员', 5, 1, 1 FROM DUAL
  97. WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'internship_custom_tag' AND Value = 5);
  98. INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
  99. SELECT NEWID(), 'internship_custom_tag', '6', 6, '刑满释放', 6, 1, 1 FROM DUAL
  100. WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'internship_custom_tag' AND Value = 6);
  101. INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
  102. SELECT NEWID(), 'internship_custom_tag', '7', 7, '社会救助', 7, 1, 1 FROM DUAL
  103. WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'internship_custom_tag' AND Value = 7);
  104. INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
  105. SELECT NEWID(), 'internship_custom_tag', '8', 8, '优抚对象', 8, 1, 1 FROM DUAL
  106. WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'internship_custom_tag' AND Value = 8);
  107. -- 3.5 确保 JobSeekerCategory(求职人员类别)字典数据存在
  108. INSERT INTO DICTIONARY (DictionaryCode, Name, OrderNo, RecordStatus)
  109. SELECT 'JobSeekerCategory', '求职人员类别', 7, 1 FROM DUAL
  110. WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY WHERE DictionaryCode = 'JobSeekerCategory');
  111. INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
  112. SELECT NEWID(), 'JobSeekerCategory', '1', 1, '新成长失业青年', 1, 1, 1 FROM DUAL
  113. WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'JobSeekerCategory' AND Value = 1);
  114. INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
  115. SELECT NEWID(), 'JobSeekerCategory', '2', 2, '应届高校毕业生', 2, 1, 1 FROM DUAL
  116. WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'JobSeekerCategory' AND Value = 2);
  117. INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
  118. SELECT NEWID(), 'JobSeekerCategory', '3', 3, '就业转失业人员', 3, 1, 1 FROM DUAL
  119. WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'JobSeekerCategory' AND Value = 3);
  120. INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
  121. SELECT NEWID(), 'JobSeekerCategory', '4', 4, '其他失业人员', 4, 1, 1 FROM DUAL
  122. WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'JobSeekerCategory' AND Value = 4);
  123. INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
  124. SELECT NEWID(), 'JobSeekerCategory', '5', 5, '本市农村人员', 5, 1, 1 FROM DUAL
  125. WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'JobSeekerCategory' AND Value = 5);
  126. INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
  127. SELECT NEWID(), 'JobSeekerCategory', '6', 6, '外埠人员', 6, 1, 1 FROM DUAL
  128. WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'JobSeekerCategory' AND Value = 6);
  129. INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
  130. SELECT NEWID(), 'JobSeekerCategory', '7', 7, '在业人员', 7, 1, 1 FROM DUAL
  131. WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'JobSeekerCategory' AND Value = 7);
  132. INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
  133. SELECT NEWID(), 'JobSeekerCategory', '8', 8, '下岗职工', 8, 1, 1 FROM DUAL
  134. WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'JobSeekerCategory' AND Value = 8);
  135. INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
  136. SELECT NEWID(), 'JobSeekerCategory', '9', 9, '退休人员', 9, 1, 1 FROM DUAL
  137. WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'JobSeekerCategory' AND Value = 9);
  138. INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
  139. SELECT NEWID(), 'JobSeekerCategory', '10', 10, '在学人员', 10, 1, 1 FROM DUAL
  140. WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'JobSeekerCategory' AND Value = 10);
  141. -- 3.6 确保 JobSeekerStatus(求职状态)字典数据存在
  142. INSERT INTO DICTIONARY (DictionaryCode, Name, OrderNo, RecordStatus)
  143. SELECT 'JobSeekerStatus', '求职状态', 8, 1 FROM DUAL
  144. WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY WHERE DictionaryCode = 'JobSeekerStatus');
  145. INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
  146. SELECT NEWID(), 'JobSeekerStatus', '1', 1, '离职-随时到岗', 1, 1, 1 FROM DUAL
  147. WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'JobSeekerStatus' AND Value = 1);
  148. INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
  149. SELECT NEWID(), 'JobSeekerStatus', '2', 2, '离职-随时到岗', 2, 1, 1 FROM DUAL
  150. WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'JobSeekerStatus' AND Value = 2);
  151. INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
  152. SELECT NEWID(), 'JobSeekerStatus', '3', 3, '在职-月内到岗', 3, 1, 1 FROM DUAL
  153. WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'JobSeekerStatus' AND Value = 3);
  154. INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
  155. SELECT NEWID(), 'JobSeekerStatus', '4', 4, '在职-考虑机会', 4, 1, 1 FROM DUAL
  156. WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'JobSeekerStatus' AND Value = 4);
  157. INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
  158. SELECT NEWID(), 'JobSeekerStatus', '5', 5, '在职-暂无意向', 5, 1, 1 FROM DUAL
  159. WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'JobSeekerStatus' AND Value = 5);
  160. INSERT INTO DICTIONARY_ITEM (DictionaryItemID, DictionaryCode, Code, Value, Name, OrderNo, RecordStatus, IsEditable)
  161. SELECT NEWID(), 'JobSeekerStatus', '6', 6, '在校-即将毕业', 6, 1, 1 FROM DUAL
  162. WHERE NOT EXISTS (SELECT 1 FROM DICTIONARY_ITEM WHERE DictionaryCode = 'JobSeekerStatus' AND Value = 6);
  163. -- ============================================================
  164. -- 第四部分:清理见习人员在 sys_dict/sys_dict_item 中的旧数据
  165. -- V20260604_3 插入了中文item_value的旧字典数据,需要清理
  166. -- 前端 useDict 从 DICTIONARY_ITEM 表加载,不再使用 sys_dict_item
  167. -- ============================================================
  168. DELETE FROM sys_dict_item
  169. WHERE dict_id IN (
  170. SELECT id FROM sys_dict
  171. WHERE dict_code IN ('internship_major_tag', 'internship_minor_tag', 'internship_custom_tag')
  172. AND del_flag = 0
  173. );
  174. DELETE FROM sys_dict
  175. WHERE dict_code IN ('internship_major_tag', 'internship_minor_tag', 'internship_custom_tag')
  176. AND del_flag = 0;
  177. -- ============================================================
  178. -- 第五部分:验证修复结果
  179. -- ============================================================
  180. -- 5.1 验证权限status是否已修复
  181. SELECT '权限status检查' AS 检查项, id, name, perms, status
  182. FROM sys_permission
  183. WHERE perms LIKE 'internship_personnel:%'
  184. AND menu_type = 2
  185. ORDER BY perms;
  186. -- 5.2 验证导出和服务跟进权限的角色授权
  187. SELECT '角色授权检查' AS 检查项, p.perms, rp.role_id
  188. FROM sys_permission p
  189. LEFT JOIN sys_role_permission rp ON rp.permission_id = p.id AND rp.role_id = 'f6817f48af4fb3af11b9e8bf182f618b'
  190. WHERE p.perms IN ('internship_personnel:exportXls', 'internship_personnel:serviceFollow');
  191. -- 5.3 验证DICTIONARY字典数据
  192. SELECT '字典主表检查' AS 检查项, DictionaryCode, Name
  193. FROM DICTIONARY
  194. WHERE DictionaryCode IN ('internship_major_tag', 'internship_minor_tag', 'internship_custom_tag', 'JobSeekerCategory', 'JobSeekerStatus');
  195. -- 5.4 验证DICTIONARY_ITEM字典项数据
  196. SELECT '字典项检查' AS 检查项, DictionaryCode, Value, Name, OrderNo
  197. FROM DICTIONARY_ITEM
  198. WHERE DictionaryCode IN ('internship_major_tag', 'internship_minor_tag', 'internship_custom_tag', 'JobSeekerCategory', 'JobSeekerStatus')
  199. ORDER BY DictionaryCode, OrderNo;