Files
hzdyjs/script/sql/fix-project-application-applicant-id.sql
T
2025-07-30 23:24:43 +08:00

85 lines
2.8 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.
-- 修复项目申报表中申请人ID为空的问题
-- 日期: 2025-08-01
-- 说明: 检查并修复cw_project_application表中applicant_id和department_id为空的记录
-- 1. 查看当前有问题的记录
SELECT
id,
application_no,
project_name,
applicant_id,
applicant_name,
department_id,
department_name,
create_by,
approval_status
FROM cw_project_application
WHERE applicant_id IS NULL
OR applicant_id = 0
OR department_id IS NULL
OR department_id = 0
ORDER BY create_time DESC;
-- 2. 修复applicant_id为空的记录(使用create_by作为申请人ID)
UPDATE cw_project_application
SET applicant_id = create_by
WHERE (applicant_id IS NULL OR applicant_id = 0)
AND create_by IS NOT NULL
AND create_by > 0;
-- 3. 修复applicant_name为空的记录(从sys_user表获取用户名)
UPDATE cw_project_application cpa
INNER JOIN sys_user su ON cpa.applicant_id = su.user_id
SET cpa.applicant_name = su.user_name
WHERE (cpa.applicant_name IS NULL OR cpa.applicant_name = '')
AND cpa.applicant_id IS NOT NULL;
-- 4. 修复department_id为空的记录(从sys_user表获取部门ID)
UPDATE cw_project_application cpa
INNER JOIN sys_user su ON cpa.applicant_id = su.user_id
SET cpa.department_id = su.dept_id
WHERE (cpa.department_id IS NULL OR cpa.department_id = 0)
AND cpa.applicant_id IS NOT NULL
AND su.dept_id IS NOT NULL;
-- 5. 修复department_name为空的记录(从sys_dept表获取部门名称)
UPDATE cw_project_application cpa
INNER JOIN sys_dept sd ON cpa.department_id = sd.dept_id
SET cpa.department_name = sd.dept_name
WHERE (cpa.department_name IS NULL OR cpa.department_name = '')
AND cpa.department_id IS NOT NULL;
-- 6. 对于仍然无法修复的记录,设置为系统管理员(ID=1)
UPDATE cw_project_application
SET applicant_id = 1,
applicant_name = 'admin',
department_id = 103,
department_name = '研发部门'
WHERE applicant_id IS NULL
OR applicant_id = 0
OR department_id IS NULL
OR department_id = 0;
-- 7. 验证修复结果
SELECT
COUNT(*) as total_records,
COUNT(CASE WHEN applicant_id IS NULL OR applicant_id = 0 THEN 1 END) as null_applicant_id,
COUNT(CASE WHEN department_id IS NULL OR department_id = 0 THEN 1 END) as null_department_id,
COUNT(CASE WHEN applicant_name IS NULL OR applicant_name = '' THEN 1 END) as null_applicant_name,
COUNT(CASE WHEN department_name IS NULL OR department_name = '' THEN 1 END) as null_department_name
FROM cw_project_application;
-- 8. 显示修复后的记录
SELECT
id,
application_no,
project_name,
applicant_id,
applicant_name,
department_id,
department_name,
approval_status,
create_time
FROM cw_project_application
ORDER BY create_time DESC
LIMIT 10;