Files
hzdyjs/backend/sql/database_fix_jcbt_poverty_application.sql
T
2025-08-12 16:52:10 +08:00

190 lines
8.5 KiB
SQL

-- ============================================================================
-- 贫困生认定申请表字段修复脚本
-- 创建时间: 2025-01-03
-- 描述: 修复 jcbt_poverty_application 表缺失的字段
-- ============================================================================
-- 检查并添加缺失的字段到 jcbt_poverty_application 表
-- 1. 检查表是否存在,如不存在则创建完整表
CREATE TABLE IF NOT EXISTS `jcbt_poverty_application` (
`id` bigint(20) NOT NULL COMMENT '主键ID',
`application_no` varchar(50) DEFAULT NULL COMMENT '申请编号',
`academic_year` varchar(20) DEFAULT NULL COMMENT '学年',
`term` int(11) DEFAULT NULL COMMENT '学期',
`student_id` bigint(20) DEFAULT NULL COMMENT '学生ID',
`student_no` varchar(50) DEFAULT NULL COMMENT '学号',
`student_name` varchar(100) DEFAULT NULL COMMENT '学生姓名',
`gender` varchar(10) DEFAULT NULL COMMENT '性别',
`college_id` bigint(20) DEFAULT NULL COMMENT '学院ID',
`college_name` varchar(100) DEFAULT NULL COMMENT '学院名称',
`major_id` bigint(20) DEFAULT NULL COMMENT '专业ID',
`major_name` varchar(100) DEFAULT NULL COMMENT '专业名称',
`class_id` bigint(20) DEFAULT NULL COMMENT '班级ID',
`class_name` varchar(100) DEFAULT NULL COMMENT '班级名称',
`recognition_group` varchar(50) DEFAULT NULL COMMENT '认定群体(特殊群体/其他群体)',
`recognition_type_id` bigint(20) DEFAULT NULL COMMENT '认定类型ID',
`recognition_type_code` varchar(50) DEFAULT NULL COMMENT '认定类型编码',
`recognition_type_name` varchar(100) DEFAULT NULL COMMENT '认定类型名称',
`assistance_type_ids` varchar(500) DEFAULT NULL COMMENT '申请自助类型ID数组(多选)',
`assistance_type_names` varchar(500) DEFAULT NULL COMMENT '申请自助类型名称(多个用逗号分隔)',
`family_economy_summary` text COMMENT '家庭经济情况摘要',
`attach_application_form_url` varchar(500) DEFAULT NULL COMMENT '申请表附件URL',
`attach_application_form_id` bigint(20) DEFAULT NULL COMMENT '申请表附件ID',
`attach_survey_form_url` varchar(500) DEFAULT NULL COMMENT '调查表附件URL',
`attach_survey_form_id` bigint(20) DEFAULT NULL COMMENT '调查表附件ID',
`status` varchar(20) DEFAULT 'DRAFT' COMMENT '申请状态(DRAFT-草稿,SUBMITTED-已提交,REVIEWING-审核中,APPROVED-已通过,REJECTED-已拒绝,WITHDRAWN-已撤回)',
`submitter_id` bigint(20) DEFAULT NULL COMMENT '提交人ID',
`submitter_name` varchar(100) DEFAULT NULL COMMENT '提交人姓名',
`submit_time` datetime DEFAULT NULL COMMENT '提交时间',
`auditor_id` bigint(20) DEFAULT NULL COMMENT '审核人ID',
`auditor_name` varchar(100) DEFAULT NULL COMMENT '审核人姓名',
`audit_time` datetime DEFAULT NULL COMMENT '审核时间',
`audit_opinion` text COMMENT '审核意见',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
`deleted` bigint(20) DEFAULT '0' COMMENT '逻辑删除标记(0-正常,非0-已删除)',
`tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_student_no` (`student_no`),
KEY `idx_status` (`status`),
KEY `idx_academic_year` (`academic_year`),
KEY `idx_college_id` (`college_id`),
KEY `idx_tenant_deleted` (`tenant_id`, `deleted`),
KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='贫困生认定申请表';
-- 2. 如果表已存在但缺少字段,则添加缺失字段
-- 添加 term 字段(如果不存在)
SET @sql = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'jcbt_poverty_application'
AND COLUMN_NAME = 'term');
SET @sql = IF(@sql = 0,
'ALTER TABLE jcbt_poverty_application ADD COLUMN term int(11) DEFAULT NULL COMMENT ''学期'' AFTER academic_year',
'SELECT ''term字段已存在'' as result');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- 添加 attach_application_form_id 字段(如果不存在)
SET @sql = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'jcbt_poverty_application'
AND COLUMN_NAME = 'attach_application_form_id');
SET @sql = IF(@sql = 0,
'ALTER TABLE jcbt_poverty_application ADD COLUMN attach_application_form_id bigint(20) DEFAULT NULL COMMENT ''申请表附件ID'' AFTER attach_application_form_url',
'SELECT ''attach_application_form_id字段已存在'' as result');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- 添加 submit_time 字段(如果不存在)
SET @sql = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'jcbt_poverty_application'
AND COLUMN_NAME = 'submit_time');
SET @sql = IF(@sql = 0,
'ALTER TABLE jcbt_poverty_application ADD COLUMN submit_time datetime DEFAULT NULL COMMENT ''提交时间'' AFTER submitter_name',
'SELECT ''submit_time字段已存在'' as result');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- 添加 auditor_id 字段(如果不存在)
SET @sql = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'jcbt_poverty_application'
AND COLUMN_NAME = 'auditor_id');
SET @sql = IF(@sql = 0,
'ALTER TABLE jcbt_poverty_application ADD COLUMN auditor_id bigint(20) DEFAULT NULL COMMENT ''审核人ID'' AFTER submit_time',
'SELECT ''auditor_id字段已存在'' as result');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- 添加 auditor_name 字段(如果不存在)
SET @sql = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'jcbt_poverty_application'
AND COLUMN_NAME = 'auditor_name');
SET @sql = IF(@sql = 0,
'ALTER TABLE jcbt_poverty_application ADD COLUMN auditor_name varchar(100) DEFAULT NULL COMMENT ''审核人姓名'' AFTER auditor_id',
'SELECT ''auditor_name字段已存在'' as result');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- 添加 audit_time 字段(如果不存在)
SET @sql = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'jcbt_poverty_application'
AND COLUMN_NAME = 'audit_time');
SET @sql = IF(@sql = 0,
'ALTER TABLE jcbt_poverty_application ADD COLUMN audit_time datetime DEFAULT NULL COMMENT ''审核时间'' AFTER auditor_name',
'SELECT ''audit_time字段已存在'' as result');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- 添加 audit_opinion 字段(如果不存在)
SET @sql = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'jcbt_poverty_application'
AND COLUMN_NAME = 'audit_opinion');
SET @sql = IF(@sql = 0,
'ALTER TABLE jcbt_poverty_application ADD COLUMN audit_opinion text COMMENT ''审核意见'' AFTER audit_time',
'SELECT ''audit_opinion字段已存在'' as result');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- 3. 验证表结构
SELECT 'Table structure verification:' as message;
DESCRIBE jcbt_poverty_application;
-- 4. 检查缺失的字段
SELECT
'Missing fields check:' as message,
CASE
WHEN (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'jcbt_poverty_application'
AND COLUMN_NAME = 'term') = 0
THEN 'term字段缺失'
ELSE 'term字段存在'
END as term_status,
CASE
WHEN (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'jcbt_poverty_application'
AND COLUMN_NAME = 'attach_application_form_id') = 0
THEN 'attach_application_form_id字段缺失'
ELSE 'attach_application_form_id字段存在'
END as attach_application_form_id_status;
-- ============================================================================
-- 使用说明:
-- 1. 连接到对应的数据库
-- 2. 执行本脚本
-- 3. 检查输出结果,确认所有字段都已正确添加
-- 4. 重新启动后端服务
-- ============================================================================