fix-project-application-applicant-id.sql 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. -- 修复项目申报表中申请人ID为空的问题
  2. -- 日期: 2025-08-01
  3. -- 说明: 检查并修复cw_project_application表中applicant_id和department_id为空的记录
  4. -- 1. 查看当前有问题的记录
  5. SELECT
  6. id,
  7. application_no,
  8. project_name,
  9. applicant_id,
  10. applicant_name,
  11. department_id,
  12. department_name,
  13. create_by,
  14. approval_status
  15. FROM cw_project_application
  16. WHERE applicant_id IS NULL
  17. OR applicant_id = 0
  18. OR department_id IS NULL
  19. OR department_id = 0
  20. ORDER BY create_time DESC;
  21. -- 2. 修复applicant_id为空的记录(使用create_by作为申请人ID)
  22. UPDATE cw_project_application
  23. SET applicant_id = create_by
  24. WHERE (applicant_id IS NULL OR applicant_id = 0)
  25. AND create_by IS NOT NULL
  26. AND create_by > 0;
  27. -- 3. 修复applicant_name为空的记录(从sys_user表获取用户名)
  28. UPDATE cw_project_application cpa
  29. INNER JOIN sys_user su ON cpa.applicant_id = su.user_id
  30. SET cpa.applicant_name = su.user_name
  31. WHERE (cpa.applicant_name IS NULL OR cpa.applicant_name = '')
  32. AND cpa.applicant_id IS NOT NULL;
  33. -- 4. 修复department_id为空的记录(从sys_user表获取部门ID)
  34. UPDATE cw_project_application cpa
  35. INNER JOIN sys_user su ON cpa.applicant_id = su.user_id
  36. SET cpa.department_id = su.dept_id
  37. WHERE (cpa.department_id IS NULL OR cpa.department_id = 0)
  38. AND cpa.applicant_id IS NOT NULL
  39. AND su.dept_id IS NOT NULL;
  40. -- 5. 修复department_name为空的记录(从sys_dept表获取部门名称)
  41. UPDATE cw_project_application cpa
  42. INNER JOIN sys_dept sd ON cpa.department_id = sd.dept_id
  43. SET cpa.department_name = sd.dept_name
  44. WHERE (cpa.department_name IS NULL OR cpa.department_name = '')
  45. AND cpa.department_id IS NOT NULL;
  46. -- 6. 对于仍然无法修复的记录,设置为系统管理员(ID=1)
  47. UPDATE cw_project_application
  48. SET applicant_id = 1,
  49. applicant_name = 'admin',
  50. department_id = 103,
  51. department_name = '研发部门'
  52. WHERE applicant_id IS NULL
  53. OR applicant_id = 0
  54. OR department_id IS NULL
  55. OR department_id = 0;
  56. -- 7. 验证修复结果
  57. SELECT
  58. COUNT(*) as total_records,
  59. COUNT(CASE WHEN applicant_id IS NULL OR applicant_id = 0 THEN 1 END) as null_applicant_id,
  60. COUNT(CASE WHEN department_id IS NULL OR department_id = 0 THEN 1 END) as null_department_id,
  61. COUNT(CASE WHEN applicant_name IS NULL OR applicant_name = '' THEN 1 END) as null_applicant_name,
  62. COUNT(CASE WHEN department_name IS NULL OR department_name = '' THEN 1 END) as null_department_name
  63. FROM cw_project_application;
  64. -- 8. 显示修复后的记录
  65. SELECT
  66. id,
  67. application_no,
  68. project_name,
  69. applicant_id,
  70. applicant_name,
  71. department_id,
  72. department_name,
  73. approval_status,
  74. create_time
  75. FROM cw_project_application
  76. ORDER BY create_time DESC
  77. LIMIT 10;