migration_20260712_reset_sys_dept.sql 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. -- =============================================================================
  2. -- 重置 shanxia2.0 租户部门树(P0 数据迁移前置)
  3. -- 执行库:shanxia2.0
  4. -- 日期:2026-07-12
  5. --
  6. -- 目标结构:
  7. -- 安庆市山峡化工有限公司(根,组织类别 gs)
  8. -- ├── 销售部(bm)
  9. -- ├── 人力资源部(bm)
  10. -- └── 生产现场部(bm)
  11. --
  12. -- 用法(生产):
  13. -- mysql -h121.43.228.102 -uroot -p shanxia2.0 < backend/scripts/migration_20260712_reset_sys_dept.sql
  14. --
  15. -- 说明:
  16. -- 1. 物理删除租户 shanxia2.0 下全部 sys_dept 后重建(含已软删记录)
  17. -- 2. 复用根部门 ID(admin.dept_id 已指向)与销售部 ID(用户迁移脚本默认部门)
  18. -- 3. 同步将 admin 挂到根公司;清理已失效的自定义数据权限部门引用
  19. -- =============================================================================
  20. -- 与表字段 collation 对齐,避免 1267 Illegal mix of collations
  21. SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci;
  22. SET collation_connection = 'utf8mb4_unicode_ci';
  23. SET @tenant_no := 'shanxia2.0';
  24. SET @admin_user_id := 'd3000000000000000000000000000001';
  25. -- 稳定部门 ID(与历史/迁移脚本对齐)
  26. SET @dept_root_id := 'b13c2be2-4e71-11f1-9f47-00163e3bdd96';
  27. SET @dept_sales_id := 'E65CAAE057914CCCAE2A81BE627A43EA';
  28. SET @dept_hr_id := 'C65CAAE057914CCCAE2A81BE627A43ED';
  29. SET @dept_prod_id := 'D65CAAE057914CCCAE2A81BE627A43EE';
  30. START TRANSACTION;
  31. -- 清理自定义数据权限中指向旧部门的配置(当前库通常为空,预留)
  32. DELETE FROM sys_role_data_scope_detail
  33. WHERE tenant_no = @tenant_no COLLATE utf8mb4_unicode_ci
  34. AND scope_type = 'dept' COLLATE utf8mb4_unicode_ci
  35. AND scope_value COLLATE utf8mb4_unicode_ci NOT IN (
  36. @dept_root_id COLLATE utf8mb4_unicode_ci,
  37. @dept_sales_id COLLATE utf8mb4_unicode_ci,
  38. @dept_hr_id COLLATE utf8mb4_unicode_ci,
  39. @dept_prod_id COLLATE utf8mb4_unicode_ci
  40. );
  41. -- 清空租户全部部门(物理删除)
  42. DELETE FROM sys_dept
  43. WHERE tenant_no = @tenant_no COLLATE utf8mb4_unicode_ci;
  44. -- 根:安庆市山峡化工有限公司
  45. INSERT INTO sys_dept (
  46. id, parent_id, dept_name, dept_category_code, status,
  47. leader, leader_phone, tenant_no, order_num, remark,
  48. create_by, create_dept_id, create_time, update_by, update_time, del_flag
  49. ) VALUES (
  50. @dept_root_id, '0', '安庆市山峡化工有限公司', 'gs', '1',
  51. NULL, NULL, @tenant_no, 0, '数据迁移脚本重建',
  52. @admin_user_id, '', NOW(), @admin_user_id, NOW(), 0
  53. );
  54. -- 一级部门:销售部
  55. INSERT INTO sys_dept (
  56. id, parent_id, dept_name, dept_category_code, status,
  57. leader, leader_phone, tenant_no, order_num, remark,
  58. create_by, create_dept_id, create_time, update_by, update_time, del_flag
  59. ) VALUES (
  60. @dept_sales_id, @dept_root_id, '销售部', 'bm', '1',
  61. NULL, NULL, @tenant_no, 10, '数据迁移脚本重建',
  62. @admin_user_id, @dept_root_id, NOW(), @admin_user_id, NOW(), 0
  63. );
  64. -- 一级部门:人力资源部
  65. INSERT INTO sys_dept (
  66. id, parent_id, dept_name, dept_category_code, status,
  67. leader, leader_phone, tenant_no, order_num, remark,
  68. create_by, create_dept_id, create_time, update_by, update_time, del_flag
  69. ) VALUES (
  70. @dept_hr_id, @dept_root_id, '人力资源部', 'bm', '1',
  71. NULL, NULL, @tenant_no, 20, '数据迁移脚本重建',
  72. @admin_user_id, @dept_root_id, NOW(), @admin_user_id, NOW(), 0
  73. );
  74. -- 一级部门:生产现场部
  75. INSERT INTO sys_dept (
  76. id, parent_id, dept_name, dept_category_code, status,
  77. leader, leader_phone, tenant_no, order_num, remark,
  78. create_by, create_dept_id, create_time, update_by, update_time, del_flag
  79. ) VALUES (
  80. @dept_prod_id, @dept_root_id, '生产现场部', 'bm', '1',
  81. NULL, NULL, @tenant_no, 30, '数据迁移脚本重建',
  82. @admin_user_id, @dept_root_id, NOW(), @admin_user_id, NOW(), 0
  83. );
  84. -- admin 挂到根公司(与重建后 ID 一致,幂等)
  85. UPDATE sys_user
  86. SET dept_id = @dept_root_id,
  87. update_by = @admin_user_id,
  88. update_time = NOW()
  89. WHERE id = @admin_user_id COLLATE utf8mb4_unicode_ci
  90. AND tenant_no = @tenant_no COLLATE utf8mb4_unicode_ci
  91. AND del_flag = 0;
  92. COMMIT;
  93. -- 验收查询
  94. SELECT id, parent_id, dept_name, dept_category_code, order_num, status
  95. FROM sys_dept
  96. WHERE tenant_no = @tenant_no COLLATE utf8mb4_unicode_ci
  97. AND del_flag = 0
  98. ORDER BY parent_id, order_num, dept_name;
  99. SELECT id, user_no, nick_name, dept_id
  100. FROM sys_user
  101. WHERE tenant_no = @tenant_no COLLATE utf8mb4_unicode_ci
  102. AND del_flag = 0
  103. ORDER BY user_no;