Files
shanxia2.0/backend/scripts/migration_20260712_reset_sys_dept.sql
T
2026-07-13 20:26:43 +08:00

118 lines
4.4 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- =============================================================================
-- 重置 shanxia2.0 租户部门树(P0 数据迁移前置)
-- 执行库:shanxia2.0
-- 日期:2026-07-12
--
-- 目标结构:
-- 安庆市山峡化工有限公司(根,组织类别 gs)
-- ├── 销售部(bm)
-- ├── 人力资源部(bm)
-- └── 生产现场部(bm)
--
-- 用法(生产):
-- mysql -h121.43.228.102 -uroot -p shanxia2.0 < backend/scripts/migration_20260712_reset_sys_dept.sql
--
-- 说明:
-- 1. 物理删除租户 shanxia2.0 下全部 sys_dept 后重建(含已软删记录)
-- 2. 复用根部门 ID(admin.dept_id 已指向)与销售部 ID(用户迁移脚本默认部门)
-- 3. 同步将 admin 挂到根公司;清理已失效的自定义数据权限部门引用
-- =============================================================================
-- 与表字段 collation 对齐,避免 1267 Illegal mix of collations
SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci;
SET collation_connection = 'utf8mb4_unicode_ci';
SET @tenant_no := 'shanxia2.0';
SET @admin_user_id := 'd3000000000000000000000000000001';
-- 稳定部门 ID(与历史/迁移脚本对齐)
SET @dept_root_id := 'b13c2be2-4e71-11f1-9f47-00163e3bdd96';
SET @dept_sales_id := 'E65CAAE057914CCCAE2A81BE627A43EA';
SET @dept_hr_id := 'C65CAAE057914CCCAE2A81BE627A43ED';
SET @dept_prod_id := 'D65CAAE057914CCCAE2A81BE627A43EE';
START TRANSACTION;
-- 清理自定义数据权限中指向旧部门的配置(当前库通常为空,预留)
DELETE FROM sys_role_data_scope_detail
WHERE tenant_no = @tenant_no COLLATE utf8mb4_unicode_ci
AND scope_type = 'dept' COLLATE utf8mb4_unicode_ci
AND scope_value COLLATE utf8mb4_unicode_ci NOT IN (
@dept_root_id COLLATE utf8mb4_unicode_ci,
@dept_sales_id COLLATE utf8mb4_unicode_ci,
@dept_hr_id COLLATE utf8mb4_unicode_ci,
@dept_prod_id COLLATE utf8mb4_unicode_ci
);
-- 清空租户全部部门(物理删除)
DELETE FROM sys_dept
WHERE tenant_no = @tenant_no COLLATE utf8mb4_unicode_ci;
-- 根:安庆市山峡化工有限公司
INSERT INTO sys_dept (
id, parent_id, dept_name, dept_category_code, status,
leader, leader_phone, tenant_no, order_num, remark,
create_by, create_dept_id, create_time, update_by, update_time, del_flag
) VALUES (
@dept_root_id, '0', '安庆市山峡化工有限公司', 'gs', '1',
NULL, NULL, @tenant_no, 0, '数据迁移脚本重建',
@admin_user_id, '', NOW(), @admin_user_id, NOW(), 0
);
-- 一级部门:销售部
INSERT INTO sys_dept (
id, parent_id, dept_name, dept_category_code, status,
leader, leader_phone, tenant_no, order_num, remark,
create_by, create_dept_id, create_time, update_by, update_time, del_flag
) VALUES (
@dept_sales_id, @dept_root_id, '销售部', 'bm', '1',
NULL, NULL, @tenant_no, 10, '数据迁移脚本重建',
@admin_user_id, @dept_root_id, NOW(), @admin_user_id, NOW(), 0
);
-- 一级部门:人力资源部
INSERT INTO sys_dept (
id, parent_id, dept_name, dept_category_code, status,
leader, leader_phone, tenant_no, order_num, remark,
create_by, create_dept_id, create_time, update_by, update_time, del_flag
) VALUES (
@dept_hr_id, @dept_root_id, '人力资源部', 'bm', '1',
NULL, NULL, @tenant_no, 20, '数据迁移脚本重建',
@admin_user_id, @dept_root_id, NOW(), @admin_user_id, NOW(), 0
);
-- 一级部门:生产现场部
INSERT INTO sys_dept (
id, parent_id, dept_name, dept_category_code, status,
leader, leader_phone, tenant_no, order_num, remark,
create_by, create_dept_id, create_time, update_by, update_time, del_flag
) VALUES (
@dept_prod_id, @dept_root_id, '生产现场部', 'bm', '1',
NULL, NULL, @tenant_no, 30, '数据迁移脚本重建',
@admin_user_id, @dept_root_id, NOW(), @admin_user_id, NOW(), 0
);
-- admin 挂到根公司(与重建后 ID 一致,幂等)
UPDATE sys_user
SET dept_id = @dept_root_id,
update_by = @admin_user_id,
update_time = NOW()
WHERE id = @admin_user_id COLLATE utf8mb4_unicode_ci
AND tenant_no = @tenant_no COLLATE utf8mb4_unicode_ci
AND del_flag = 0;
COMMIT;
-- 验收查询
SELECT id, parent_id, dept_name, dept_category_code, order_num, status
FROM sys_dept
WHERE tenant_no = @tenant_no COLLATE utf8mb4_unicode_ci
AND del_flag = 0
ORDER BY parent_id, order_num, dept_name;
SELECT id, user_no, nick_name, dept_id
FROM sys_user
WHERE tenant_no = @tenant_no COLLATE utf8mb4_unicode_ci
AND del_flag = 0
ORDER BY user_no;