This commit is contained in:
zlwu committed 2026-07-14 19:53:35 +08:00
1 parent 0e60b88cba
commit 87f7f6bf38
34 files changed
+18326 -6165

No files matched your search

@@ -0,0 +1,85 @@
-- 人员从业资格证拆分:cert_name 重命名(可重复执行)
-- 前置 spec: docs/superpowers/specs/2026-07-13-pl-personnel-cert-split-design.md
-- 1) 押运员证 → 押运员从业资格证(全部 personnel 证书)
UPDATE pl_cert c
INNER JOIN pl_personnel p ON p.id = c.owner_id AND p.del_flag = 0
SET c.cert_name = '押运员从业资格证',
c.update_time = NOW()
WHERE c.del_flag = 0
AND c.owner_type = 'personnel'
AND c.cert_name = '押运员证';
-- 2) 泛称从业资格证 → 驾驶员从业资格证(driver / both)
UPDATE pl_cert c
INNER JOIN pl_personnel p ON p.id = c.owner_id AND p.del_flag = 0
SET c.cert_name = '驾驶员从业资格证',
c.update_time = NOW()
WHERE c.del_flag = 0
AND c.owner_type = 'personnel'
AND c.cert_name = '从业资格证'
AND p.personnel_type IN ('driver', 'both');
-- 3) 泛称从业资格证 → 押运员从业资格证(escort)
UPDATE pl_cert c
INNER JOIN pl_personnel p ON p.id = c.owner_id AND p.del_flag = 0
SET c.cert_name = '押运员从业资格证',
c.update_time = NOW()
WHERE c.del_flag = 0
AND c.owner_type = 'personnel'
AND c.cert_name = '从业资格证'
AND p.personnel_type = 'escort';
-- 4) both 人员:若迁移后仍缺驾/押任一从业证,供运营补录(验证查询,不修改数据)
SELECT
p.id AS personnel_id,
p.personnel_name,
p.personnel_type,
GROUP_CONCAT(c.cert_name ORDER BY c.cert_name SEPARATOR '、') AS cert_names
FROM pl_personnel p
LEFT JOIN pl_cert c
ON c.owner_id = p.id
AND c.owner_type = 'personnel'
AND c.del_flag = 0
WHERE p.del_flag = 0
AND p.personnel_type = 'both'
GROUP BY p.id, p.personnel_name, p.personnel_type
HAVING SUM(CASE WHEN c.cert_name IN ('驾驶员从业资格证') THEN 1 ELSE 0 END) = 0
OR SUM(CASE WHEN c.cert_name IN ('押运员从业资格证', '押运员证') THEN 1 ELSE 0 END) = 0;
-- 5) 危化品从业资格证:不自动迁移(人工清单)
SELECT
p.id AS personnel_id,
p.personnel_name,
p.personnel_type,
c.id AS cert_id,
c.cert_name
FROM pl_cert c
INNER JOIN pl_personnel p ON p.id = c.owner_id AND p.del_flag = 0
WHERE c.del_flag = 0
AND c.owner_type = 'personnel'
AND c.cert_name = '危化品从业资格证';
-- 6) both + 仍保留泛称「从业资格证」的歧义记录(需人工处理,不自动改)
SELECT
p.id AS personnel_id,
p.personnel_name,
c.id AS cert_id,
c.cert_name
FROM pl_cert c
INNER JOIN pl_personnel p ON p.id = c.owner_id AND p.del_flag = 0
WHERE c.del_flag = 0
AND c.owner_type = 'personnel'
AND c.cert_name = '从业资格证'
AND p.personnel_type = 'both';
-- 7) 字典 pl_cert_name 增量(可选,可重复执行)
INSERT INTO sys_dict_data (id, dict_label, dict_value, tag_type, dict_type, tenant_no, order_num, del_flag, create_time, update_time)
SELECT 'PL_CERT_DRIVER_QUAL', '驾驶员从业资格证', '驾驶员从业资格证', 'primary', 'pl_cert_name', 'shanxia2.0', 6, 0, NOW(), NOW()
FROM DUAL
WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE id = 'PL_CERT_DRIVER_QUAL');
INSERT INTO sys_dict_data (id, dict_label, dict_value, tag_type, dict_type, tenant_no, order_num, del_flag, create_time, update_time)
SELECT 'PL_CERT_ESCORT_QUAL', '押运员从业资格证', '押运员从业资格证', 'warning', 'pl_cert_name', 'shanxia2.0', 7, 0, NOW(), NOW()
FROM DUAL
WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE id = 'PL_CERT_ESCORT_QUAL');