fix-applicant-id-issue.sql 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. -- ==========================================
  2. -- 修复项目申报中申请人ID为空的问题
  3. -- 创建时间: 2025-08-01
  4. -- 描述: 检查并修复cw_project_application表中applicant_id为NULL的记录
  5. -- ==========================================
  6. -- 1. 检查问题记录
  7. SELECT
  8. id,
  9. application_no,
  10. project_name,
  11. applicant_id,
  12. applicant_name,
  13. department_id,
  14. department_name,
  15. approval_status,
  16. create_by,
  17. create_time
  18. FROM cw_project_application
  19. WHERE applicant_id IS NULL OR applicant_id = 0;
  20. -- 2. 修复方案1:将申请人ID设置为创建者ID(推荐)
  21. UPDATE cw_project_application
  22. SET
  23. applicant_id = create_by,
  24. applicant_name = (
  25. SELECT nick_name
  26. FROM sys_user
  27. WHERE user_id = cw_project_application.create_by
  28. AND deleted = 0
  29. LIMIT 1
  30. )
  31. WHERE (applicant_id IS NULL OR applicant_id = 0)
  32. AND create_by IS NOT NULL
  33. AND create_by > 0;
  34. -- 3. 修复方案2:如果创建者也为空,设置为系统管理员(ID=1)
  35. UPDATE cw_project_application
  36. SET
  37. applicant_id = 1,
  38. applicant_name = '系统管理员'
  39. WHERE (applicant_id IS NULL OR applicant_id = 0)
  40. AND (create_by IS NULL OR create_by = 0);
  41. -- 4. 修复部门信息为空的记录
  42. UPDATE cw_project_application
  43. SET
  44. department_id = (
  45. SELECT dept_id
  46. FROM sys_user
  47. WHERE user_id = cw_project_application.applicant_id
  48. AND deleted = 0
  49. LIMIT 1
  50. ),
  51. department_name = (
  52. SELECT d.dept_name
  53. FROM sys_user u
  54. LEFT JOIN sys_dept d ON u.dept_id = d.dept_id
  55. WHERE u.user_id = cw_project_application.applicant_id
  56. AND u.deleted = 0
  57. AND d.deleted = 0
  58. LIMIT 1
  59. )
  60. WHERE (department_id IS NULL OR department_id = 0)
  61. AND applicant_id IS NOT NULL
  62. AND applicant_id > 0;
  63. -- 5. 验证修复结果
  64. SELECT
  65. '修复后检查' as check_type,
  66. COUNT(*) as total_records,
  67. SUM(CASE WHEN applicant_id IS NULL OR applicant_id = 0 THEN 1 ELSE 0 END) as null_applicant_count,
  68. SUM(CASE WHEN department_id IS NULL OR department_id = 0 THEN 1 ELSE 0 END) as null_department_count
  69. FROM cw_project_application;
  70. -- 6. 显示修复后的记录
  71. SELECT
  72. id,
  73. application_no,
  74. project_name,
  75. applicant_id,
  76. applicant_name,
  77. department_id,
  78. department_name,
  79. approval_status
  80. FROM cw_project_application
  81. ORDER BY create_time DESC
  82. LIMIT 10;