-- 修复项目申报表中申请人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;