database_fix_jcbt_poverty_application.sql 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. -- ============================================================================
  2. -- 贫困生认定申请表字段修复脚本
  3. -- 创建时间: 2025-01-03
  4. -- 描述: 修复 jcbt_poverty_application 表缺失的字段
  5. -- ============================================================================
  6. -- 检查并添加缺失的字段到 jcbt_poverty_application 表
  7. -- 1. 检查表是否存在,如不存在则创建完整表
  8. CREATE TABLE IF NOT EXISTS `jcbt_poverty_application` (
  9. `id` bigint(20) NOT NULL COMMENT '主键ID',
  10. `application_no` varchar(50) DEFAULT NULL COMMENT '申请编号',
  11. `academic_year` varchar(20) DEFAULT NULL COMMENT '学年',
  12. `term` int(11) DEFAULT NULL COMMENT '学期',
  13. `student_id` bigint(20) DEFAULT NULL COMMENT '学生ID',
  14. `student_no` varchar(50) DEFAULT NULL COMMENT '学号',
  15. `student_name` varchar(100) DEFAULT NULL COMMENT '学生姓名',
  16. `gender` varchar(10) DEFAULT NULL COMMENT '性别',
  17. `college_id` bigint(20) DEFAULT NULL COMMENT '学院ID',
  18. `college_name` varchar(100) DEFAULT NULL COMMENT '学院名称',
  19. `major_id` bigint(20) DEFAULT NULL COMMENT '专业ID',
  20. `major_name` varchar(100) DEFAULT NULL COMMENT '专业名称',
  21. `class_id` bigint(20) DEFAULT NULL COMMENT '班级ID',
  22. `class_name` varchar(100) DEFAULT NULL COMMENT '班级名称',
  23. `recognition_group` varchar(50) DEFAULT NULL COMMENT '认定群体(特殊群体/其他群体)',
  24. `recognition_type_id` bigint(20) DEFAULT NULL COMMENT '认定类型ID',
  25. `recognition_type_code` varchar(50) DEFAULT NULL COMMENT '认定类型编码',
  26. `recognition_type_name` varchar(100) DEFAULT NULL COMMENT '认定类型名称',
  27. `assistance_type_ids` varchar(500) DEFAULT NULL COMMENT '申请自助类型ID数组(多选)',
  28. `assistance_type_names` varchar(500) DEFAULT NULL COMMENT '申请自助类型名称(多个用逗号分隔)',
  29. `family_economy_summary` text COMMENT '家庭经济情况摘要',
  30. `attach_application_form_url` varchar(500) DEFAULT NULL COMMENT '申请表附件URL',
  31. `attach_application_form_id` bigint(20) DEFAULT NULL COMMENT '申请表附件ID',
  32. `attach_survey_form_url` varchar(500) DEFAULT NULL COMMENT '调查表附件URL',
  33. `attach_survey_form_id` bigint(20) DEFAULT NULL COMMENT '调查表附件ID',
  34. `status` varchar(20) DEFAULT 'DRAFT' COMMENT '申请状态(DRAFT-草稿,SUBMITTED-已提交,REVIEWING-审核中,APPROVED-已通过,REJECTED-已拒绝,WITHDRAWN-已撤回)',
  35. `submitter_id` bigint(20) DEFAULT NULL COMMENT '提交人ID',
  36. `submitter_name` varchar(100) DEFAULT NULL COMMENT '提交人姓名',
  37. `submit_time` datetime DEFAULT NULL COMMENT '提交时间',
  38. `auditor_id` bigint(20) DEFAULT NULL COMMENT '审核人ID',
  39. `auditor_name` varchar(100) DEFAULT NULL COMMENT '审核人姓名',
  40. `audit_time` datetime DEFAULT NULL COMMENT '审核时间',
  41. `audit_opinion` text COMMENT '审核意见',
  42. `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  43. `deleted` bigint(20) DEFAULT '0' COMMENT '逻辑删除标记(0-正常,非0-已删除)',
  44. `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号',
  45. `create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
  46. `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  47. `update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
  48. `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  49. PRIMARY KEY (`id`),
  50. KEY `idx_student_no` (`student_no`),
  51. KEY `idx_status` (`status`),
  52. KEY `idx_academic_year` (`academic_year`),
  53. KEY `idx_college_id` (`college_id`),
  54. KEY `idx_tenant_deleted` (`tenant_id`, `deleted`),
  55. KEY `idx_create_time` (`create_time`)
  56. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='贫困生认定申请表';
  57. -- 2. 如果表已存在但缺少字段,则添加缺失字段
  58. -- 添加 term 字段(如果不存在)
  59. SET @sql = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
  60. WHERE TABLE_SCHEMA = DATABASE()
  61. AND TABLE_NAME = 'jcbt_poverty_application'
  62. AND COLUMN_NAME = 'term');
  63. SET @sql = IF(@sql = 0,
  64. 'ALTER TABLE jcbt_poverty_application ADD COLUMN term int(11) DEFAULT NULL COMMENT ''学期'' AFTER academic_year',
  65. 'SELECT ''term字段已存在'' as result');
  66. PREPARE stmt FROM @sql;
  67. EXECUTE stmt;
  68. DEALLOCATE PREPARE stmt;
  69. -- 添加 attach_application_form_id 字段(如果不存在)
  70. SET @sql = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
  71. WHERE TABLE_SCHEMA = DATABASE()
  72. AND TABLE_NAME = 'jcbt_poverty_application'
  73. AND COLUMN_NAME = 'attach_application_form_id');
  74. SET @sql = IF(@sql = 0,
  75. 'ALTER TABLE jcbt_poverty_application ADD COLUMN attach_application_form_id bigint(20) DEFAULT NULL COMMENT ''申请表附件ID'' AFTER attach_application_form_url',
  76. 'SELECT ''attach_application_form_id字段已存在'' as result');
  77. PREPARE stmt FROM @sql;
  78. EXECUTE stmt;
  79. DEALLOCATE PREPARE stmt;
  80. -- 添加 submit_time 字段(如果不存在)
  81. SET @sql = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
  82. WHERE TABLE_SCHEMA = DATABASE()
  83. AND TABLE_NAME = 'jcbt_poverty_application'
  84. AND COLUMN_NAME = 'submit_time');
  85. SET @sql = IF(@sql = 0,
  86. 'ALTER TABLE jcbt_poverty_application ADD COLUMN submit_time datetime DEFAULT NULL COMMENT ''提交时间'' AFTER submitter_name',
  87. 'SELECT ''submit_time字段已存在'' as result');
  88. PREPARE stmt FROM @sql;
  89. EXECUTE stmt;
  90. DEALLOCATE PREPARE stmt;
  91. -- 添加 auditor_id 字段(如果不存在)
  92. SET @sql = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
  93. WHERE TABLE_SCHEMA = DATABASE()
  94. AND TABLE_NAME = 'jcbt_poverty_application'
  95. AND COLUMN_NAME = 'auditor_id');
  96. SET @sql = IF(@sql = 0,
  97. 'ALTER TABLE jcbt_poverty_application ADD COLUMN auditor_id bigint(20) DEFAULT NULL COMMENT ''审核人ID'' AFTER submit_time',
  98. 'SELECT ''auditor_id字段已存在'' as result');
  99. PREPARE stmt FROM @sql;
  100. EXECUTE stmt;
  101. DEALLOCATE PREPARE stmt;
  102. -- 添加 auditor_name 字段(如果不存在)
  103. SET @sql = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
  104. WHERE TABLE_SCHEMA = DATABASE()
  105. AND TABLE_NAME = 'jcbt_poverty_application'
  106. AND COLUMN_NAME = 'auditor_name');
  107. SET @sql = IF(@sql = 0,
  108. 'ALTER TABLE jcbt_poverty_application ADD COLUMN auditor_name varchar(100) DEFAULT NULL COMMENT ''审核人姓名'' AFTER auditor_id',
  109. 'SELECT ''auditor_name字段已存在'' as result');
  110. PREPARE stmt FROM @sql;
  111. EXECUTE stmt;
  112. DEALLOCATE PREPARE stmt;
  113. -- 添加 audit_time 字段(如果不存在)
  114. SET @sql = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
  115. WHERE TABLE_SCHEMA = DATABASE()
  116. AND TABLE_NAME = 'jcbt_poverty_application'
  117. AND COLUMN_NAME = 'audit_time');
  118. SET @sql = IF(@sql = 0,
  119. 'ALTER TABLE jcbt_poverty_application ADD COLUMN audit_time datetime DEFAULT NULL COMMENT ''审核时间'' AFTER auditor_name',
  120. 'SELECT ''audit_time字段已存在'' as result');
  121. PREPARE stmt FROM @sql;
  122. EXECUTE stmt;
  123. DEALLOCATE PREPARE stmt;
  124. -- 添加 audit_opinion 字段(如果不存在)
  125. SET @sql = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
  126. WHERE TABLE_SCHEMA = DATABASE()
  127. AND TABLE_NAME = 'jcbt_poverty_application'
  128. AND COLUMN_NAME = 'audit_opinion');
  129. SET @sql = IF(@sql = 0,
  130. 'ALTER TABLE jcbt_poverty_application ADD COLUMN audit_opinion text COMMENT ''审核意见'' AFTER audit_time',
  131. 'SELECT ''audit_opinion字段已存在'' as result');
  132. PREPARE stmt FROM @sql;
  133. EXECUTE stmt;
  134. DEALLOCATE PREPARE stmt;
  135. -- 3. 验证表结构
  136. SELECT 'Table structure verification:' as message;
  137. DESCRIBE jcbt_poverty_application;
  138. -- 4. 检查缺失的字段
  139. SELECT
  140. 'Missing fields check:' as message,
  141. CASE
  142. WHEN (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
  143. WHERE TABLE_SCHEMA = DATABASE()
  144. AND TABLE_NAME = 'jcbt_poverty_application'
  145. AND COLUMN_NAME = 'term') = 0
  146. THEN 'term字段缺失'
  147. ELSE 'term字段存在'
  148. END as term_status,
  149. CASE
  150. WHEN (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
  151. WHERE TABLE_SCHEMA = DATABASE()
  152. AND TABLE_NAME = 'jcbt_poverty_application'
  153. AND COLUMN_NAME = 'attach_application_form_id') = 0
  154. THEN 'attach_application_form_id字段缺失'
  155. ELSE 'attach_application_form_id字段存在'
  156. END as attach_application_form_id_status;
  157. -- ============================================================================
  158. -- 使用说明:
  159. -- 1. 连接到对应的数据库
  160. -- 2. 执行本脚本
  161. -- 3. 检查输出结果,确认所有字段都已正确添加
  162. -- 4. 重新启动后端服务
  163. -- ============================================================================