删除xg_student_info相关文件
This commit is contained in:
1 parent
4550318d61
commit
46bc823bcb
37 files changed
-13087
No files matched your search
@@ -1,96 +0,0 @@
|
||||
-- 学生信息字段映射修复脚本
|
||||
-- 确保所有字段都正确存在并具有正确的属性
|
||||
|
||||
USE hzdyjs_xg;
|
||||
|
||||
-- 检查并添加缺失的字段
|
||||
-- 1. 宿舍信息字段
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS dormitory_building VARCHAR(50) COMMENT '宿舍楼栋';
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS dormitory_room VARCHAR(20) COMMENT '宿舍房间号';
|
||||
|
||||
-- 2. 健康信息字段
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS allergies TEXT COMMENT '过敏史';
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS medical_history TEXT COMMENT '病史';
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS health_status VARCHAR(20) DEFAULT '良好' COMMENT '健康状况';
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS blood_type VARCHAR(10) COMMENT '血型';
|
||||
|
||||
-- 3. 银行信息字段
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS bank_branch VARCHAR(100) COMMENT '开户支行';
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS card_holder_name VARCHAR(50) COMMENT '持卡人姓名';
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS bank_card_no VARCHAR(30) COMMENT '银行卡号';
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS bank_name VARCHAR(50) COMMENT '开户银行';
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS bank_city VARCHAR(50) COMMENT '开户城市';
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS bank_province VARCHAR(50) COMMENT '开户省份';
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS card_type VARCHAR(20) DEFAULT '储蓄卡' COMMENT '卡片类型';
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS card_status VARCHAR(20) DEFAULT '正常' COMMENT '卡片状态';
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS bank_card_remark TEXT COMMENT '银行卡备注';
|
||||
|
||||
-- 4. 紧急联系人信息字段
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS emergency_contact_name VARCHAR(50) COMMENT '紧急联系人姓名';
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS emergency_contact_phone VARCHAR(20) COMMENT '紧急联系人电话';
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS emergency_contact_relation VARCHAR(20) COMMENT '紧急联系人关系';
|
||||
|
||||
-- 5. 家庭信息字段
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS father_name VARCHAR(50) COMMENT '父亲姓名';
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS father_phone VARCHAR(20) COMMENT '父亲电话';
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS father_work_unit VARCHAR(100) COMMENT '父亲工作单位';
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS mother_name VARCHAR(50) COMMENT '母亲姓名';
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS mother_phone VARCHAR(20) COMMENT '母亲电话';
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS mother_work_unit VARCHAR(100) COMMENT '母亲工作单位';
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS family_income VARCHAR(20) COMMENT '家庭年收入';
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS family_members INT COMMENT '家庭成员数量';
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS family_economic_status VARCHAR(20) COMMENT '家庭经济状况';
|
||||
|
||||
-- 6. 监护人信息字段
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS guardian_name VARCHAR(50) COMMENT '监护人姓名';
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS guardian_phone VARCHAR(20) COMMENT '监护人电话';
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS guardian_relation VARCHAR(20) COMMENT '监护人关系';
|
||||
|
||||
-- 7. 体征信息字段
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS height DECIMAL(5,2) COMMENT '身高(cm)';
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS weight DECIMAL(5,2) COMMENT '体重(kg)';
|
||||
|
||||
-- 8. 特殊情况字段
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS is_poor_student TINYINT(1) DEFAULT 0 COMMENT '是否贫困生:0-否,1-是';
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS is_minority TINYINT(1) DEFAULT 0 COMMENT '是否少数民族:0-否,1-是';
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS is_disabled TINYINT(1) DEFAULT 0 COMMENT '是否残疾学生:0-否,1-是';
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS is_orphan TINYINT(1) DEFAULT 0 COMMENT '是否孤儿:0-否,1-是';
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS is_left_behind_child TINYINT(1) DEFAULT 0 COMMENT '是否留守儿童:0-否,1-是';
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS is_single_child TINYINT(1) DEFAULT 0 COMMENT '是否独生子女:0-否,1-是';
|
||||
|
||||
-- 9. 扩展信息字段
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS specialties TEXT COMMENT '特长爱好';
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS awards TEXT COMMENT '获奖情况';
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS violations TEXT COMMENT '违纪记录';
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS social_activities TEXT COMMENT '社会活动';
|
||||
|
||||
-- 10. 其他扩展字段
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS disability_type VARCHAR(50) COMMENT '残疾类型';
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS disability_level VARCHAR(20) COMMENT '残疾等级';
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS info_status TINYINT(1) DEFAULT 1 COMMENT '信息状态:1-正常,2-待审核,3-审核中,4-已驳回,5-已锁定';
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS approval_status TINYINT(1) DEFAULT 1 COMMENT '审批状态:1-待审批,2-审批中,3-已通过,4-已驳回';
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS audit_time DATETIME COMMENT '审核时间';
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS audit_by BIGINT(20) COMMENT '审核人员ID';
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS audit_remark TEXT COMMENT '审核备注';
|
||||
|
||||
-- 验证字段是否正确添加
|
||||
SELECT
|
||||
COLUMN_NAME as '字段名',
|
||||
DATA_TYPE as '数据类型',
|
||||
IS_NULLABLE as '可空',
|
||||
COLUMN_DEFAULT as '默认值',
|
||||
COLUMN_COMMENT as '注释'
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = 'hzdyjs_xg'
|
||||
AND TABLE_NAME = 'xg_student_info'
|
||||
AND COLUMN_NAME IN (
|
||||
'dormitory_building', 'dormitory_room', 'allergies', 'medical_history',
|
||||
'bank_branch', 'card_holder_name', 'emergency_contact_name',
|
||||
'father_name', 'mother_name', 'family_income', 'family_members',
|
||||
'height', 'weight', 'specialties', 'awards', 'violations', 'social_activities'
|
||||
)
|
||||
ORDER BY COLUMN_NAME;
|
||||
|
||||
-- 输出执行结果
|
||||
SELECT '字段映射修复脚本执行完成' as '执行结果';
|
||||
SELECT CONCAT('执行时间: ', NOW()) as '时间戳';
|
||||
@@ -1,42 +0,0 @@
|
||||
-- 添加学生信息表缺失的基本字段
|
||||
-- 时间:2025-01-16
|
||||
-- 目的:修复字段映射错误
|
||||
|
||||
USE hzdyjs_xg;
|
||||
|
||||
-- 添加基本信息字段
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS nation VARCHAR(20) DEFAULT NULL COMMENT '民族' AFTER birth_date;
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS school_system INT(2) DEFAULT 4 COMMENT '学制(年)' AFTER enrollment_date;
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS training_type VARCHAR(20) DEFAULT NULL COMMENT '培养方式' AFTER education_level;
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS source_region VARCHAR(100) DEFAULT NULL COMMENT '生源地区' AFTER training_type;
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS middle_school VARCHAR(100) DEFAULT NULL COMMENT '毕业中学' AFTER source_region;
|
||||
|
||||
-- 添加状态管理字段
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS data_source VARCHAR(20) DEFAULT 'manual' COMMENT '数据来源:manual-手工录入,import-批量导入,sync-系统同步' AFTER info_status;
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS last_batch_id BIGINT(20) DEFAULT NULL COMMENT '最后修改批次ID' AFTER data_source;
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS last_audit_time DATETIME DEFAULT NULL COMMENT '最后审核时间' AFTER last_batch_id;
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS is_complete TINYINT(1) DEFAULT 0 COMMENT '信息是否完整:0-不完整,1-完整' AFTER last_audit_time;
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS completion_rate DECIMAL(5,2) DEFAULT 0.00 COMMENT '完整度百分比' AFTER is_complete;
|
||||
|
||||
-- 添加扩展字段
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS ext_field1 VARCHAR(200) DEFAULT NULL COMMENT '扩展字段1' AFTER completion_rate;
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS ext_field2 VARCHAR(200) DEFAULT NULL COMMENT '扩展字段2' AFTER ext_field1;
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS ext_field3 VARCHAR(200) DEFAULT NULL COMMENT '扩展字段3' AFTER ext_field2;
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS ext_field4 VARCHAR(200) DEFAULT NULL COMMENT '扩展字段4' AFTER ext_field3;
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS ext_field5 VARCHAR(500) DEFAULT NULL COMMENT '扩展字段5' AFTER ext_field4;
|
||||
|
||||
-- 添加特殊情况字段
|
||||
ALTER TABLE xg_student_info ADD COLUMN IF NOT EXISTS special_condition VARCHAR(200) DEFAULT NULL COMMENT '特殊体质或疾病' AFTER weight;
|
||||
|
||||
-- 验证字段是否正确添加
|
||||
SELECT
|
||||
COLUMN_NAME as '字段名',
|
||||
DATA_TYPE as '数据类型',
|
||||
IS_NULLABLE as '可空',
|
||||
COLUMN_DEFAULT as '默认值',
|
||||
COLUMN_COMMENT as '注释'
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE()
|
||||
AND table_name = 'xg_student_info'
|
||||
AND COLUMN_NAME IN ('nation', 'school_system', 'training_type', 'source_region', 'middle_school', 'special_condition')
|
||||
ORDER BY ORDINAL_POSITION;
|
||||
@@ -1,237 +0,0 @@
|
||||
# 学生数据生成和导入工具
|
||||
|
||||
## 🎯 功能概述
|
||||
|
||||
本工具包提供了完整的学生信息数据生成和导入功能,包括:
|
||||
- 3个新班级信息
|
||||
- 150条学生信息数据
|
||||
- 150条班级学生关联关系
|
||||
- 完整的数据验证查询
|
||||
|
||||
## 📁 文件说明
|
||||
|
||||
### 核心文件
|
||||
- `generate_student_data.py` - 数据生成脚本(Python)
|
||||
- `complete-student-data.sql` - 完整数据SQL文件(1375行)
|
||||
- `import-student-data.sh` - 数据导入脚本(Shell)
|
||||
- `student-data-generator.sql` - 基础模板文件
|
||||
|
||||
### 生成的数据结构
|
||||
|
||||
#### 班级信息(3个班级)
|
||||
| 班级ID | 班级代码 | 班级名称 | 专业 | 学院 | 总人数 | 男生 | 女生 |
|
||||
|--------|----------|----------|------|------|--------|------|------|
|
||||
| 1100001 | CS2024001 | 计算机科学与技术2024级1班 | 计算机科学与技术 | 计算机科学与技术学院 | 50 | 28 | 22 |
|
||||
| 1100002 | EE2024001 | 电子信息工程2024级1班 | 电子信息工程 | 电子信息工程学院 | 50 | 32 | 18 |
|
||||
| 1100003 | BM2024001 | 工商管理2024级1班 | 工商管理 | 经济管理学院 | 50 | 20 | 30 |
|
||||
|
||||
#### 学生信息字段
|
||||
- **基本信息**: 姓名、性别、生日、身份证号、民族、政治面貌
|
||||
- **学籍信息**: 学号、专业、班级、入学时间、学制、学历层次
|
||||
- **联系信息**: 手机、邮箱、QQ、微信、家庭地址、紧急联系人
|
||||
- **家庭信息**: 父母姓名、联系方式、家庭年收入
|
||||
- **其他信息**: 身高体重、血型、银行卡信息、高中背景、入学成绩
|
||||
|
||||
#### 班级职务分配
|
||||
- **班长**: 每班1名(第1位学生)
|
||||
- **副班长**: 每班1名(第2位学生)
|
||||
- **学习委员**: 每班1名(第3位学生)
|
||||
- **组织委员**: 每班1名(第4位学生)
|
||||
- **宣传委员**: 每班1名(第5位学生)
|
||||
- **普通成员**: 其余学生
|
||||
|
||||
## 🚀 使用方法
|
||||
|
||||
### 方法一:直接导入SQL文件
|
||||
```bash
|
||||
# 进入SQL目录
|
||||
cd backend/script/sql
|
||||
|
||||
# 直接执行SQL文件
|
||||
mysql -u root -p hzdyjs_xg < complete-student-data.sql
|
||||
```
|
||||
|
||||
### 方法二:使用导入脚本(推荐)
|
||||
```bash
|
||||
# 进入SQL目录
|
||||
cd backend/script/sql
|
||||
|
||||
# 运行导入脚本
|
||||
./import-student-data.sh
|
||||
```
|
||||
|
||||
脚本会自动:
|
||||
1. 从项目配置文件获取数据库连接信息
|
||||
2. 显示连接参数确认
|
||||
3. 确认导入操作
|
||||
4. 显示导入结果
|
||||
|
||||
**注意**:脚本会自动从 `application-dev.yml` 配置文件中读取数据库连接信息,无需手动输入。
|
||||
|
||||
### 方法三:重新生成数据
|
||||
```bash
|
||||
# 进入SQL目录
|
||||
cd backend/script/sql
|
||||
|
||||
# 运行Python生成脚本
|
||||
python3 generate_student_data.py
|
||||
|
||||
# 导入新生成的数据
|
||||
./import-student-data.sh
|
||||
```
|
||||
|
||||
## 📊 数据特点
|
||||
|
||||
### 真实性和逻辑性
|
||||
- **姓名**: 使用中国常见姓氏和名字组合
|
||||
- **身份证号**: 符合真实的身份证号码规则
|
||||
- **联系方式**: 符合中国手机号码格式
|
||||
- **地址信息**: 使用杭州市真实的区域和道路名称
|
||||
- **身高体重**: 符合大学生群体的正常范围
|
||||
- **学校信息**: 使用杭州市真实的高中名称
|
||||
|
||||
### 数据完整性
|
||||
- 所有必填字段都有值
|
||||
- 关联字段保持一致性
|
||||
- 性别与身高体重数据匹配
|
||||
- 家庭联系信息完整
|
||||
|
||||
### 业务逻辑
|
||||
- 学号按班级顺序生成
|
||||
- 男女比例符合专业特点
|
||||
- 班级职务合理分配
|
||||
- 入学成绩在合理范围内
|
||||
|
||||
## 🔍 数据验证
|
||||
|
||||
SQL文件包含完整的验证查询:
|
||||
|
||||
```sql
|
||||
-- 验证班级信息
|
||||
SELECT id, class_code, class_name, college_name, major, current_count, male_count, female_count
|
||||
FROM xg_class_info
|
||||
WHERE id IN (1100001, 1100002, 1100003);
|
||||
|
||||
-- 验证学生信息统计
|
||||
SELECT
|
||||
class_id,
|
||||
class_name,
|
||||
COUNT(*) as total_count,
|
||||
SUM(CASE WHEN gender = 'M' THEN 1 ELSE 0 END) as male_count,
|
||||
SUM(CASE WHEN gender = 'F' THEN 1 ELSE 0 END) as female_count
|
||||
FROM xg_student_info
|
||||
WHERE class_id IN (1100001, 1100002, 1100003)
|
||||
GROUP BY class_id, class_name;
|
||||
|
||||
-- 验证班级干部分布
|
||||
SELECT
|
||||
ci.class_name,
|
||||
cs.class_position,
|
||||
cs.student_name,
|
||||
si.gender
|
||||
FROM xg_class_student cs
|
||||
JOIN xg_class_info ci ON cs.class_id = ci.id
|
||||
JOIN xg_student_info si ON cs.student_id = si.id
|
||||
WHERE cs.class_id IN (1100001, 1100002, 1100003)
|
||||
AND cs.class_position != 'member'
|
||||
ORDER BY cs.class_id, cs.position_level;
|
||||
```
|
||||
|
||||
## 🛠️ 技术细节
|
||||
|
||||
### 数据库连接配置
|
||||
- **配置来源**: `backend/ruoyi-admin/src/main/resources/application-dev.yml`
|
||||
- **主机地址**: 47.99.164.66:3306
|
||||
- **数据库名**: hzdyjs_xg
|
||||
- **用户认证**: root/hn02le.34lkdLKD
|
||||
|
||||
### 数据库表结构
|
||||
- `xg_class_info` - 班级信息表
|
||||
- `xg_student_info` - 学生信息表
|
||||
- `xg_class_student` - 班级学生关联表
|
||||
|
||||
### 主键和外键
|
||||
- 学生ID范围: 2100001 ~ 2100150
|
||||
- 班级ID范围: 1100001 ~ 1100003
|
||||
- 关联ID范围: 3100001 ~ 3100150
|
||||
|
||||
### 数据类型和约束
|
||||
- 符合数据库表结构定义
|
||||
- 包含必要的索引和约束
|
||||
- 支持软删除机制
|
||||
|
||||
## 🔧 自定义配置
|
||||
|
||||
### 修改班级信息
|
||||
编辑 `generate_student_data.py` 中的 `classes` 配置:
|
||||
|
||||
```python
|
||||
classes = [
|
||||
{
|
||||
'id': 1100001,
|
||||
'code': 'CS2024001',
|
||||
'name': '计算机科学与技术2024级1班',
|
||||
'major': '计算机科学与技术',
|
||||
'college': '计算机科学与技术学院',
|
||||
'male_count': 28,
|
||||
'female_count': 22
|
||||
},
|
||||
# 添加更多班级...
|
||||
]
|
||||
```
|
||||
|
||||
### 修改数据范围
|
||||
- 修改学生数量: 调整 `male_count` 和 `female_count`
|
||||
- 修改ID范围: 调整 `student_id` 起始值
|
||||
- 修改姓名库: 编辑 `surnames`、`male_names`、`female_names` 数组
|
||||
|
||||
### 修改数据规则
|
||||
- 身份证号规则: 修改 `area_code` 和 `birth_year` 范围
|
||||
- 联系方式规则: 修改 `phone` 生成规则
|
||||
- 地址信息: 修改 `address_prefixes` 和 `road_names`
|
||||
|
||||
## 🚨 注意事项
|
||||
|
||||
### 数据库准备
|
||||
1. 确保数据库 `hzdyjs_xg` 已存在
|
||||
2. 确保相关数据表已创建
|
||||
3. 确保用户有足够的权限
|
||||
|
||||
### 数据冲突
|
||||
- 主键冲突: 如果ID已存在,使用 `ON DUPLICATE KEY UPDATE`
|
||||
- 唯一约束: 学号、身份证号等字段的唯一性
|
||||
- 外键约束: 确保关联表的数据完整性
|
||||
|
||||
### 性能考虑
|
||||
- 批量插入: 使用单条INSERT语句插入多条记录
|
||||
- 索引优化: 在大量数据导入前可以考虑删除索引
|
||||
- 事务管理: 使用事务确保数据一致性
|
||||
|
||||
## 📞 技术支持
|
||||
|
||||
如有问题,请检查:
|
||||
1. 数据库连接配置是否正确
|
||||
2. 数据表结构是否匹配
|
||||
3. 数据字段是否完整
|
||||
4. 权限配置是否正确
|
||||
|
||||
## 📈 扩展功能
|
||||
|
||||
### 未来可能的扩展
|
||||
- 支持更多专业和学院
|
||||
- 添加成绩信息数据
|
||||
- 添加课程选择数据
|
||||
- 添加学生照片信息
|
||||
- 支持历史数据导入
|
||||
|
||||
### 数据分析功能
|
||||
- 学生信息统计报表
|
||||
- 班级结构分析
|
||||
- 生源地分析
|
||||
- 成绩分布分析
|
||||
|
||||
---
|
||||
|
||||
**版本**: V1.0.0
|
||||
**更新时间**: 2025-01-14
|
||||
**维护人**: Cursor AI 辅助开发
|
||||
@@ -1,43 +0,0 @@
|
||||
-- 检查xg_student_info表的实际结构
|
||||
-- 用于确认哪些字段存在于数据库中
|
||||
|
||||
USE hzdyjs_xg;
|
||||
|
||||
-- 显示表结构
|
||||
DESCRIBE xg_student_info;
|
||||
|
||||
-- 显示所有字段名
|
||||
SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT, COLUMN_COMMENT
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = 'hzdyjs_xg'
|
||||
AND table_name = 'xg_student_info'
|
||||
ORDER BY ORDINAL_POSITION;
|
||||
|
||||
-- 检查特定字段是否存在
|
||||
SELECT
|
||||
CASE WHEN COUNT(*) > 0 THEN 'EXISTS' ELSE 'NOT EXISTS' END as nation_status
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = 'hzdyjs_xg'
|
||||
AND table_name = 'xg_student_info'
|
||||
AND column_name = 'nation';
|
||||
|
||||
SELECT
|
||||
CASE WHEN COUNT(*) > 0 THEN 'EXISTS' ELSE 'NOT EXISTS' END as name_english_status
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = 'hzdyjs_xg'
|
||||
AND table_name = 'xg_student_info'
|
||||
AND column_name = 'name_english';
|
||||
|
||||
SELECT
|
||||
CASE WHEN COUNT(*) > 0 THEN 'EXISTS' ELSE 'NOT EXISTS' END as phone_status
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = 'hzdyjs_xg'
|
||||
AND table_name = 'xg_student_info'
|
||||
AND column_name = 'phone';
|
||||
|
||||
SELECT
|
||||
CASE WHEN COUNT(*) > 0 THEN 'EXISTS' ELSE 'NOT EXISTS' END as mobile_status
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = 'hzdyjs_xg'
|
||||
AND table_name = 'xg_student_info'
|
||||
AND column_name = 'mobile';
|
||||
@@ -1,167 +0,0 @@
|
||||
-- ==========================================
|
||||
-- 完整学生信息数据生成脚本(修复版)
|
||||
-- 版本:V1.0.1
|
||||
-- 功能:生成3个新班级和150条学生信息数据
|
||||
-- 作者:Cursor AI 辅助
|
||||
-- 时间:2025-01-21
|
||||
-- 说明:修复字段名称问题,确保与数据库表结构匹配
|
||||
-- ==========================================
|
||||
|
||||
USE hzdyjs_xg;
|
||||
|
||||
-- 设置字符集
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ==============================================
|
||||
-- 1. 创建3个新班级
|
||||
-- ==============================================
|
||||
|
||||
-- 计算机科学与技术2024级1班
|
||||
INSERT INTO `xg_class_info` (
|
||||
`id`, `tenant_id`, `class_code`, `class_name`, `class_type`, `grade`, `enrollment_year`, `graduation_year`,
|
||||
`college_code`, `college_name`, `major_name`, `major_code`, `training_type`, `degree_type`,
|
||||
`counselor_id`, `counselor_name`, `class_teacher_id`, `class_teacher_name`,
|
||||
`planned_capacity`, `current_student_count`, `male_count`, `female_count`, `active_count`,
|
||||
`contact_phone`, `qq_group`, `email`, `class_status`, `is_graduation`,
|
||||
`create_by`, `create_time`, `update_by`, `update_time`
|
||||
) VALUES (
|
||||
1100001, '000000', 'CS2024001', '计算机科学与技术2024级1班', 'regular', '2024', 2024, 2028,
|
||||
'CS001', '计算机科学与技术学院', '计算机科学与技术', 'CS001', '全日制', '本科',
|
||||
10001, '李明华', 10002, '王建国',
|
||||
50, 50, 28, 22, 50,
|
||||
'0571-88000001', '888888001', 'cs2024001@hzdyjs.edu.cn', '1', 0,
|
||||
1, NOW(), 1, NOW()
|
||||
) ON DUPLICATE KEY UPDATE current_student_count = VALUES(current_student_count), male_count = VALUES(male_count), female_count = VALUES(female_count);
|
||||
|
||||
-- 电子信息工程2024级1班
|
||||
INSERT INTO `xg_class_info` (
|
||||
`id`, `tenant_id`, `class_code`, `class_name`, `class_type`, `grade`, `enrollment_year`, `graduation_year`,
|
||||
`college_code`, `college_name`, `major_name`, `major_code`, `training_type`, `degree_type`,
|
||||
`counselor_id`, `counselor_name`, `class_teacher_id`, `class_teacher_name`,
|
||||
`planned_capacity`, `current_student_count`, `male_count`, `female_count`, `active_count`,
|
||||
`contact_phone`, `qq_group`, `email`, `class_status`, `is_graduation`,
|
||||
`create_by`, `create_time`, `update_by`, `update_time`
|
||||
) VALUES (
|
||||
1100002, '000000', 'EE2024001', '电子信息工程2024级1班', 'regular', '2024', 2024, 2028,
|
||||
'EE001', '电子信息工程学院', '电子信息工程', 'EE001', '全日制', '本科',
|
||||
10003, '张丽萍', 10004, '刘德华',
|
||||
50, 50, 32, 18, 50,
|
||||
'0571-88000002', '888888002', 'ee2024001@hzdyjs.edu.cn', '1', 0,
|
||||
1, NOW(), 1, NOW()
|
||||
) ON DUPLICATE KEY UPDATE current_student_count = VALUES(current_student_count), male_count = VALUES(male_count), female_count = VALUES(female_count);
|
||||
|
||||
-- 工商管理2024级1班
|
||||
INSERT INTO `xg_class_info` (
|
||||
`id`, `tenant_id`, `class_code`, `class_name`, `class_type`, `grade`, `enrollment_year`, `graduation_year`,
|
||||
`college_code`, `college_name`, `major_name`, `major_code`, `training_type`, `degree_type`,
|
||||
`counselor_id`, `counselor_name`, `class_teacher_id`, `class_teacher_name`,
|
||||
`planned_capacity`, `current_student_count`, `male_count`, `female_count`, `active_count`,
|
||||
`contact_phone`, `qq_group`, `email`, `class_status`, `is_graduation`,
|
||||
`create_by`, `create_time`, `update_by`, `update_time`
|
||||
) VALUES (
|
||||
1100003, '000000', 'BM2024001', '工商管理2024级1班', 'regular', '2024', 2024, 2028,
|
||||
'BM001', '经济管理学院', '工商管理', 'BM001', '全日制', '本科',
|
||||
10005, '陈建华', 10006, '赵文强',
|
||||
50, 50, 20, 30, 50,
|
||||
'0571-88000003', '888888003', 'bm2024001@hzdyjs.edu.cn', '1', 0,
|
||||
1, NOW(), 1, NOW()
|
||||
) ON DUPLICATE KEY UPDATE current_student_count = VALUES(current_student_count), male_count = VALUES(male_count), female_count = VALUES(female_count);
|
||||
|
||||
-- ==============================================
|
||||
-- 2. 生成150条学生信息数据
|
||||
-- ==============================================
|
||||
|
||||
INSERT INTO `xg_student_info` (
|
||||
`id`, `tenant_id`, `student_id`, `name`, `gender`, `birth_date`, `id_card`, `nation`, `political_status`,
|
||||
`enrollment_date`, `education_length`, `major`, `class_id`, `class_name`, `student_status`, `training_type`,
|
||||
`phone`, `email`, `qq_number`, `wechat_number`, `home_address`, `emergency_contact`, `emergency_phone`, `emergency_relation`,
|
||||
`father_name`, `father_phone`, `mother_name`, `mother_phone`, `height`, `weight`, `blood_type`,
|
||||
`bank_card_number`, `bank_name`, `birthplace`, `native_place`, `hukou_type`, `middle_school`, `admission_score`,
|
||||
`info_status`, `data_source`, `create_by`, `create_time`, `update_by`, `update_time`
|
||||
) VALUES
|
||||
(2100001, '000000', '202401001', '吕高格', 'M', '2005-03-09', '330195200503095076', '汉族', '02',
|
||||
'2024-09-01', 4, '计算机科学与技术', 1100001, '计算机科学与技术2024级1班', '1', '全日制',
|
||||
'13866652192', '吕高格@student.edu.cn', '3799031679', '吕高格_2005', '浙江省杭州市江干区湖滨路799号', '李志华', '13974914433', '父亲',
|
||||
'李志华', '13974914433', '叶美丽', '13738721701', 184.7, 68.7, 'B',
|
||||
'6222676649946794779', '浦发银行', '浙江省杭州市', '浙江省杭州市', '城镇', '杭州市余杭高级中学', 625.3,
|
||||
'1', 'manual', 1, NOW(), 1, NOW()),
|
||||
(2100002, '000000', '202401002', '杨志强', 'M', '2005-06-15', '330106200506151234', '汉族', '03',
|
||||
'2024-09-01', 4, '计算机科学与技术', 1100001, '计算机科学与技术2024级1班', '1', '全日制',
|
||||
'13801234568', '杨志强@student.edu.cn', '1234567891', '杨志强_2005', '浙江省杭州市西湖区文二路200号', '杨建华', '13901234568', '父亲',
|
||||
'杨建华', '13901234568', '刘小华', '13902234568', 176.2, 69.5, 'A',
|
||||
'6222001234567890124', '中国建设银行', '浙江省杭州市', '浙江省杭州市', '城镇', '杭州市第二中学', 628.8,
|
||||
'1', 'manual', 1, NOW(), 1, NOW()),
|
||||
(2100003, '000000', '202401003', '张浩然', 'M', '2005-09-20', '330108200509201234', '汉族', '03',
|
||||
'2024-09-01', 4, '计算机科学与技术', 1100001, '计算机科学与技术2024级1班', '1', '全日制',
|
||||
'13801234569', '张浩然@student.edu.cn', '1234567892', '张浩然_2005', '浙江省杭州市拱墅区莫干山路300号', '张建华', '13901234569', '父亲',
|
||||
'张建华', '13901234569', '李小华', '13902234569', 177.8, 70.2, 'B',
|
||||
'6222001234567890125', '中国农业银行', '浙江省杭州市', '浙江省杭州市', '城镇', '杭州市第三中学', 632.1,
|
||||
'1', 'manual', 1, NOW(), 1, NOW())
|
||||
ON DUPLICATE KEY UPDATE
|
||||
name = VALUES(name),
|
||||
gender = VALUES(gender),
|
||||
class_name = VALUES(class_name),
|
||||
student_status = VALUES(student_status),
|
||||
update_time = NOW();
|
||||
|
||||
-- ==============================================
|
||||
-- 3. 创建班级学生关联关系
|
||||
-- ==============================================
|
||||
|
||||
INSERT INTO `xg_class_student` (
|
||||
`id`, `tenant_id`, `class_id`, `student_id`, `student_number`, `student_name`,
|
||||
`class_position`, `position_level`, `relation_status`, `join_time`, `student_order`,
|
||||
`create_by`, `create_time`, `update_by`, `update_time`
|
||||
) VALUES
|
||||
(3100001, '000000', 1100001, 2100001, '202401001', '吕高格',
|
||||
'monitor', 1, '1', '2024-09-01', 1, 1, NOW(), 1, NOW()),
|
||||
(3100002, '000000', 1100001, 2100002, '202401002', '杨志强',
|
||||
'deputy', 2, '1', '2024-09-01', 2, 1, NOW(), 1, NOW()),
|
||||
(3100003, '000000', 1100001, 2100003, '202401003', '张浩然',
|
||||
'secretary', 3, '1', '2024-09-01', 3, 1, NOW(), 1, NOW())
|
||||
ON DUPLICATE KEY UPDATE
|
||||
student_name = VALUES(student_name),
|
||||
class_position = VALUES(class_position),
|
||||
update_time = NOW();
|
||||
|
||||
-- ==============================================
|
||||
-- 4. 验证数据创建结果
|
||||
-- ==============================================
|
||||
|
||||
-- 验证班级信息
|
||||
SELECT '=== 班级信息验证 ===' as info;
|
||||
SELECT id, class_code, class_name, college_name, major_name, current_student_count, male_count, female_count
|
||||
FROM xg_class_info
|
||||
WHERE id IN (1100001, 1100002, 1100003);
|
||||
|
||||
-- 验证学生信息统计
|
||||
SELECT '=== 学生信息统计 ===' as info;
|
||||
SELECT
|
||||
class_id,
|
||||
class_name,
|
||||
COUNT(*) as total_count,
|
||||
SUM(CASE WHEN gender = 'M' THEN 1 ELSE 0 END) as male_count,
|
||||
SUM(CASE WHEN gender = 'F' THEN 1 ELSE 0 END) as female_count
|
||||
FROM xg_student_info
|
||||
WHERE class_id IN (1100001, 1100002, 1100003)
|
||||
GROUP BY class_id, class_name;
|
||||
|
||||
-- 验证班级学生关联
|
||||
SELECT '=== 班级学生关联验证 ===' as info;
|
||||
SELECT
|
||||
cs.class_id,
|
||||
ci.class_name,
|
||||
COUNT(*) as student_count,
|
||||
SUM(CASE WHEN cs.class_position != 'member' THEN 1 ELSE 0 END) as position_count
|
||||
FROM xg_class_student cs
|
||||
JOIN xg_class_info ci ON cs.class_id = ci.id
|
||||
WHERE cs.class_id IN (1100001, 1100002, 1100003)
|
||||
GROUP BY cs.class_id, ci.class_name;
|
||||
|
||||
-- 恢复外键检查
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
||||
SELECT '🎉 班级信息管理数据库准备完成!' as result;
|
||||
SELECT '📊 总计:3个班级信息,3条学生数据,3条关联关系' as summary;
|
||||
SELECT '✅ 数据字典:班级类型、班级状态字典已配置' as dict_status;
|
||||
File diff suppressed because it is too large.
Load diff
@@ -1,178 +0,0 @@
|
||||
-- ==========================================
|
||||
-- 信息采集批次相关表创建脚本
|
||||
-- 版本:V1.0.0
|
||||
-- 创建时间:2025-01-17
|
||||
-- 说明:创建信息采集批次功能所需的关联表
|
||||
-- ==========================================
|
||||
|
||||
USE hzdyjs_xg;
|
||||
|
||||
-- 1. 修改现有批次表结构,增加目标条件字段(如果不存在)
|
||||
ALTER TABLE xg_collection_batch
|
||||
ADD COLUMN IF NOT EXISTS target_grade VARCHAR(50) COMMENT '目标届别(如:2021,2022,2023)' AFTER batch_status,
|
||||
ADD COLUMN IF NOT EXISTS target_college_ids TEXT COMMENT '目标学院ID列表(JSON格式)' AFTER target_grade,
|
||||
ADD COLUMN IF NOT EXISTS target_major_ids TEXT COMMENT '目标专业ID列表(JSON格式)' AFTER target_college_ids,
|
||||
ADD COLUMN IF NOT EXISTS target_class_ids TEXT COMMENT '目标班级ID列表(JSON格式)' AFTER target_major_ids,
|
||||
ADD COLUMN IF NOT EXISTS remind_before_start INT DEFAULT 24 COMMENT '开始前提醒时间(小时)' AFTER target_class_ids,
|
||||
ADD COLUMN IF NOT EXISTS remind_before_end INT DEFAULT 24 COMMENT '结束前提醒时间(小时)' AFTER remind_before_start,
|
||||
ADD COLUMN IF NOT EXISTS auto_close TINYINT DEFAULT 1 COMMENT '是否自动关闭' AFTER remind_before_end,
|
||||
ADD COLUMN IF NOT EXISTS notification_sent TINYINT DEFAULT 0 COMMENT '是否已发送通知' AFTER auto_close,
|
||||
ADD COLUMN IF NOT EXISTS created_by_module VARCHAR(50) DEFAULT 'student_info' COMMENT '创建模块' AFTER notification_sent;
|
||||
|
||||
-- 2. 创建批次学生关联表(用于快速查询和统计)
|
||||
CREATE TABLE IF NOT EXISTS xg_collection_batch_student (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
batch_id BIGINT NOT NULL COMMENT '批次ID',
|
||||
student_id BIGINT NOT NULL COMMENT '学生ID',
|
||||
student_code VARCHAR(50) NOT NULL COMMENT '学号',
|
||||
student_name VARCHAR(100) NOT NULL COMMENT '学生姓名',
|
||||
college_id BIGINT COMMENT '学院ID',
|
||||
college_name VARCHAR(100) COMMENT '学院名称',
|
||||
major_id BIGINT COMMENT '专业ID',
|
||||
major_name VARCHAR(100) COMMENT '专业名称',
|
||||
class_id BIGINT COMMENT '班级ID',
|
||||
class_name VARCHAR(100) COMMENT '班级名称',
|
||||
grade VARCHAR(50) COMMENT '届别',
|
||||
can_edit TINYINT DEFAULT 1 COMMENT '是否可编辑',
|
||||
has_submitted TINYINT DEFAULT 0 COMMENT '是否已提交',
|
||||
submit_time DATETIME COMMENT '提交时间',
|
||||
last_edit_time DATETIME COMMENT '最后编辑时间',
|
||||
edit_count INT DEFAULT 0 COMMENT '编辑次数',
|
||||
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
create_by BIGINT COMMENT '创建者',
|
||||
update_by BIGINT COMMENT '更新者',
|
||||
deleted TINYINT DEFAULT 0 COMMENT '删除标志',
|
||||
tenant_id VARCHAR(20) DEFAULT '000000' COMMENT '租户ID',
|
||||
INDEX idx_batch_id (batch_id),
|
||||
INDEX idx_student_id (student_id),
|
||||
INDEX idx_batch_student (batch_id, student_id),
|
||||
INDEX idx_college_id (college_id),
|
||||
INDEX idx_grade (grade),
|
||||
INDEX idx_create_time (create_time),
|
||||
INDEX idx_has_submitted (has_submitted),
|
||||
INDEX idx_tenant_id (tenant_id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='信息采集批次学生关联表';
|
||||
|
||||
-- 3. 创建批次操作日志表
|
||||
CREATE TABLE IF NOT EXISTS xg_collection_batch_log (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
batch_id BIGINT NOT NULL COMMENT '批次ID',
|
||||
student_id BIGINT COMMENT '学生ID',
|
||||
operation_type VARCHAR(50) NOT NULL COMMENT '操作类型(CREATE,UPDATE,SUBMIT,ADMIN_MODIFY,BATCH_PUBLISH,BATCH_CLOSE)',
|
||||
operation_desc TEXT COMMENT '操作描述',
|
||||
old_data TEXT COMMENT '修改前数据(JSON格式)',
|
||||
new_data TEXT COMMENT '修改后数据(JSON格式)',
|
||||
operator_id BIGINT COMMENT '操作人ID',
|
||||
operator_name VARCHAR(100) COMMENT '操作人姓名',
|
||||
operator_type VARCHAR(50) COMMENT '操作人类型(STUDENT,ADMIN,SYSTEM)',
|
||||
ip_address VARCHAR(50) COMMENT 'IP地址',
|
||||
user_agent TEXT COMMENT '用户代理',
|
||||
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
tenant_id VARCHAR(20) DEFAULT '000000' COMMENT '租户ID',
|
||||
INDEX idx_batch_id (batch_id),
|
||||
INDEX idx_student_id (student_id),
|
||||
INDEX idx_operation_type (operation_type),
|
||||
INDEX idx_create_time (create_time),
|
||||
INDEX idx_operator_id (operator_id),
|
||||
INDEX idx_tenant_id (tenant_id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='信息采集批次操作日志表';
|
||||
|
||||
-- 4. 创建批次权限配置表
|
||||
CREATE TABLE IF NOT EXISTS xg_collection_batch_permission (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
batch_id BIGINT NOT NULL COMMENT '批次ID',
|
||||
permission_type VARCHAR(50) NOT NULL COMMENT '权限类型(EDIT,VIEW,SUBMIT,ADMIN)',
|
||||
role_id BIGINT COMMENT '角色ID',
|
||||
user_id BIGINT COMMENT '用户ID',
|
||||
college_id BIGINT COMMENT '学院ID',
|
||||
is_granted TINYINT DEFAULT 1 COMMENT '是否授权',
|
||||
grant_time DATETIME COMMENT '授权时间',
|
||||
expire_time DATETIME COMMENT '过期时间',
|
||||
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
create_by BIGINT COMMENT '创建者',
|
||||
update_by BIGINT COMMENT '更新者',
|
||||
deleted TINYINT DEFAULT 0 COMMENT '删除标志',
|
||||
tenant_id VARCHAR(20) DEFAULT '000000' COMMENT '租户ID',
|
||||
INDEX idx_batch_id (batch_id),
|
||||
INDEX idx_permission_type (permission_type),
|
||||
INDEX idx_role_id (role_id),
|
||||
INDEX idx_user_id (user_id),
|
||||
INDEX idx_college_id (college_id),
|
||||
INDEX idx_tenant_id (tenant_id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='信息采集批次权限配置表';
|
||||
|
||||
-- 5. 创建批次统计表
|
||||
CREATE TABLE IF NOT EXISTS xg_collection_batch_statistics (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
batch_id BIGINT NOT NULL COMMENT '批次ID',
|
||||
total_students INT DEFAULT 0 COMMENT '总学生数',
|
||||
submitted_students INT DEFAULT 0 COMMENT '已提交学生数',
|
||||
pending_students INT DEFAULT 0 COMMENT '待提交学生数',
|
||||
completion_rate DECIMAL(5,2) DEFAULT 0.00 COMMENT '完成率',
|
||||
college_id BIGINT COMMENT '学院ID(按学院统计时使用)',
|
||||
college_name VARCHAR(100) COMMENT '学院名称',
|
||||
major_id BIGINT COMMENT '专业ID(按专业统计时使用)',
|
||||
major_name VARCHAR(100) COMMENT '专业名称',
|
||||
class_id BIGINT COMMENT '班级ID(按班级统计时使用)',
|
||||
class_name VARCHAR(100) COMMENT '班级名称',
|
||||
grade VARCHAR(50) COMMENT '届别',
|
||||
statistics_type VARCHAR(50) DEFAULT 'TOTAL' COMMENT '统计类型(TOTAL,COLLEGE,MAJOR,CLASS,GRADE)',
|
||||
last_updated DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
tenant_id VARCHAR(20) DEFAULT '000000' COMMENT '租户ID',
|
||||
INDEX idx_batch_id (batch_id),
|
||||
INDEX idx_college_id (college_id),
|
||||
INDEX idx_major_id (major_id),
|
||||
INDEX idx_class_id (class_id),
|
||||
INDEX idx_grade (grade),
|
||||
INDEX idx_statistics_type (statistics_type),
|
||||
INDEX idx_tenant_id (tenant_id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='信息采集批次统计表';
|
||||
|
||||
-- 6. 创建批次定时任务表
|
||||
CREATE TABLE IF NOT EXISTS xg_batch_scheduled_task (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
batch_id BIGINT NOT NULL COMMENT '批次ID',
|
||||
task_type VARCHAR(50) NOT NULL COMMENT '任务类型(REMIND_START,REMIND_END,AUTO_CLOSE)',
|
||||
task_time DATETIME NOT NULL COMMENT '执行时间',
|
||||
task_status VARCHAR(20) DEFAULT 'PENDING' COMMENT '任务状态(PENDING,EXECUTED,FAILED)',
|
||||
execute_time DATETIME COMMENT '实际执行时间',
|
||||
error_message TEXT COMMENT '错误信息',
|
||||
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
tenant_id VARCHAR(20) DEFAULT '000000' COMMENT '租户ID',
|
||||
INDEX idx_batch_id (batch_id),
|
||||
INDEX idx_task_type (task_type),
|
||||
INDEX idx_task_time (task_time),
|
||||
INDEX idx_task_status (task_status),
|
||||
INDEX idx_tenant_id (tenant_id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='信息采集批次定时任务表';
|
||||
|
||||
-- 7. 修改学生信息表,添加批次相关字段(如果不存在)
|
||||
ALTER TABLE xg_student_info
|
||||
ADD COLUMN IF NOT EXISTS last_batch_id BIGINT COMMENT '最后参与的批次ID' AFTER remark,
|
||||
ADD COLUMN IF NOT EXISTS last_edit_batch_id BIGINT COMMENT '最后编辑的批次ID' AFTER last_batch_id,
|
||||
ADD COLUMN IF NOT EXISTS info_lock_status TINYINT DEFAULT 0 COMMENT '信息锁定状态(0:正常,1:锁定)' AFTER last_edit_batch_id,
|
||||
ADD COLUMN IF NOT EXISTS lock_reason VARCHAR(500) COMMENT '锁定原因' AFTER info_lock_status,
|
||||
ADD COLUMN IF NOT EXISTS last_batch_submit_time DATETIME COMMENT '最后批次提交时间' AFTER lock_reason;
|
||||
|
||||
-- 8. 创建相关索引
|
||||
CREATE INDEX IF NOT EXISTS idx_xg_collection_batch_grade ON xg_collection_batch(target_grade);
|
||||
CREATE INDEX IF NOT EXISTS idx_xg_collection_batch_module ON xg_collection_batch(created_by_module);
|
||||
CREATE INDEX IF NOT EXISTS idx_xg_student_info_last_batch ON xg_student_info(last_batch_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_xg_student_info_lock_status ON xg_student_info(info_lock_status);
|
||||
|
||||
-- 9. 插入一些测试数据
|
||||
INSERT INTO xg_collection_batch (id, tenant_id, batch_code, batch_name, batch_type, academic_year, semester, batch_status, start_time, end_time, description, create_by, create_time, update_by, update_time, deleted) VALUES
|
||||
(1745001000000000001, '000000', 'BATCH_2024_1', '2024-2025学年第一学期信息采集', 'annual', '2024-2025', '1', '2', '2024-09-01 00:00:00', '2024-09-30 23:59:59', '2024-2025学年第一学期学生信息采集工作', 1, NOW(), 1, NOW(), 0),
|
||||
(1745001000000000002, '000000', 'BATCH_2024_2', '2024-2025学年第二学期信息采集', 'annual', '2024-2025', '2', '1', '2025-02-15 00:00:00', '2025-03-15 23:59:59', '2024-2025学年第二学期学生信息采集工作', 1, NOW(), 1, NOW(), 0)
|
||||
ON DUPLICATE KEY UPDATE
|
||||
batch_name = VALUES(batch_name),
|
||||
description = VALUES(description),
|
||||
update_time = NOW();
|
||||
|
||||
-- 完成信息
|
||||
SELECT 'Database tables created successfully!' as message;
|
||||
@@ -1,458 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
"""
|
||||
学生信息数据生成脚本
|
||||
版本:V1.0.0
|
||||
功能:生成3个新班级和150条学生信息数据
|
||||
作者:Cursor AI 辅助
|
||||
时间:2025-01-14
|
||||
说明:包含完整的学生信息和班级关联数据
|
||||
"""
|
||||
|
||||
import random
|
||||
import datetime
|
||||
from datetime import date, timedelta
|
||||
|
||||
# 中国常见姓氏
|
||||
surnames = ['李', '王', '张', '刘', '陈', '杨', '赵', '黄', '周', '吴', '徐', '孙', '胡', '朱', '高', '林', '何', '郭', '马', '罗', '梁', '宋', '郑', '谢', '韩', '唐', '冯', '于', '董', '萧', '程', '曹', '袁', '邓', '许', '傅', '沈', '曾', '彭', '吕', '苏', '卢', '蒋', '蔡', '贾', '丁', '魏', '薛', '叶', '阎']
|
||||
|
||||
# 常见名字
|
||||
male_names = ['明阳', '志强', '浩然', '伟峰', '俊杰', '建华', '志华', '文华', '国强', '建国', '志刚', '志远', '浩宇', '宇航', '晨阳', '子轩', '梓轩', '博涛', '智宸', '正豪', '昊然', '明轩', '绍齐', '伟宸', '梓豪', '子涵', '明哲', '俊驰', '雨泽', '烨磊', '晟睿', '文昊', '修杰', '黎昕', '远航', '旭尧', '鸿涛', '伟祺', '荣轩', '越泽', '瑾瑜', '皓轩', '哲瀚', '鑫磊', '修洁', '天佑', '英杰', '致远', '俊材', '高格']
|
||||
|
||||
female_names = ['丽华', '美丽', '秀英', '丽君', '小华', '淑华', '雅静', '美玉', '雪梅', '春花', '秀兰', '丽娟', '小丽', '晓雯', '雅婷', '佳音', '思涵', '梦瑶', '雨婷', '可馨', '欣妍', '佳琦', '雅楠', '语嫣', '桑榆', '欣怡', '美莲', '诗涵', '璟雯', '佳妮', '芸熙', '钰彤', '璟颖', '奕凤', '雨薇', '思颖', '笑薇', '娅楠', '明美', '惠茜', '漫妮', '香怡', '雅芙', '韵寒', '莉姿', '梦璐', '沛玲', '雨嘉', '静香']
|
||||
|
||||
# 高中名单
|
||||
high_schools = ['杭州市第一中学', '杭州市第二中学', '杭州市第三中学', '杭州市第四中学', '杭州市第五中学', '杭州市第六中学', '杭州市第七中学', '杭州市第八中学', '杭州市第九中学', '杭州市第十中学', '杭州市第十一中学', '杭州市第十二中学', '杭州市第十三中学', '杭州市第十四中学', '杭州市第十五中学', '杭州学军中学', '杭州市长河高级中学', '杭州市源清中学', '杭州市绿城育华学校', '杭州市余杭高级中学']
|
||||
|
||||
# 银行列表
|
||||
banks = ['中国工商银行', '中国建设银行', '中国农业银行', '中国银行', '招商银行', '交通银行', '中信银行', '浦发银行', '兴业银行', '光大银行', '民生银行', '华夏银行', '广发银行', '平安银行', '邮储银行']
|
||||
|
||||
# 血型
|
||||
blood_types = ['A', 'B', 'AB', 'O']
|
||||
|
||||
# 地址前缀
|
||||
address_prefixes = ['浙江省杭州市西湖区', '浙江省杭州市上城区', '浙江省杭州市江干区', '浙江省杭州市拱墅区', '浙江省杭州市下城区', '浙江省杭州市滨江区', '浙江省杭州市萧山区', '浙江省杭州市余杭区', '浙江省杭州市临安区', '浙江省杭州市富阳区']
|
||||
|
||||
# 道路名称
|
||||
road_names = ['文一路', '文二路', '文三路', '建国路', '凤起路', '教工路', '莫干山路', '天目山路', '西湖大道', '中河路', '上塘路', '德胜路', '庆春路', '解放路', '延安路', '湖滨路', '学院路', '科技路', '创业路', '发展路']
|
||||
|
||||
def generate_student_data():
|
||||
"""生成学生数据"""
|
||||
students = []
|
||||
|
||||
# 三个班级配置
|
||||
classes = [
|
||||
{'id': 1100001, 'code': 'CS2024001', 'name': '计算机科学与技术2024级1班', 'major': '计算机科学与技术', 'college': '计算机科学与技术学院', 'male_count': 28, 'female_count': 22},
|
||||
{'id': 1100002, 'code': 'EE2024001', 'name': '电子信息工程2024级1班', 'major': '电子信息工程', 'college': '电子信息工程学院', 'male_count': 32, 'female_count': 18},
|
||||
{'id': 1100003, 'code': 'BM2024001', 'name': '工商管理2024级1班', 'major': '工商管理', 'college': '经济管理学院', 'male_count': 20, 'female_count': 30}
|
||||
]
|
||||
|
||||
student_id = 2100001
|
||||
|
||||
for class_info in classes:
|
||||
# 生成男生
|
||||
for i in range(class_info['male_count']):
|
||||
student_no = f'202401{student_id - 2100000:03d}'
|
||||
surname = random.choice(surnames)
|
||||
name = surname + random.choice(male_names)
|
||||
|
||||
# 生成身份证号
|
||||
area_code = '330' + str(random.randint(100, 199))
|
||||
birth_year = random.choice(['2005', '2006'])
|
||||
birth_month = f'{random.randint(1, 12):02d}'
|
||||
birth_day = f'{random.randint(1, 28):02d}'
|
||||
birth_date = f'{birth_year}-{birth_month}-{birth_day}'
|
||||
id_card = f'{area_code}{birth_year}{birth_month}{birth_day}{random.randint(1000, 9999)}'
|
||||
|
||||
# 生成联系信息
|
||||
phone = f'138{random.randint(10000000, 99999999)}'
|
||||
email = f'{name.lower()}@student.edu.cn'
|
||||
qq = f'{random.randint(1000000000, 9999999999)}'
|
||||
wechat = f'{name.lower()}_{birth_year}'
|
||||
|
||||
# 生成家庭信息
|
||||
father_name = random.choice(surnames) + random.choice(['建华', '国强', '志华', '文华', '建国'])
|
||||
father_phone = f'139{random.randint(10000000, 99999999)}'
|
||||
mother_name = random.choice(surnames) + random.choice(['丽华', '美丽', '秀英', '丽君', '小华'])
|
||||
mother_phone = f'137{random.randint(10000000, 99999999)}'
|
||||
|
||||
# 生成其他信息
|
||||
height = round(random.uniform(165, 185), 1)
|
||||
weight = round(random.uniform(55, 80), 1)
|
||||
blood_type = random.choice(blood_types)
|
||||
bank_card = f'6222{random.randint(100000000000000, 999999999999999)}'
|
||||
bank = random.choice(banks)
|
||||
address = random.choice(address_prefixes) + random.choice(road_names) + f'{random.randint(1, 999)}号'
|
||||
high_school = random.choice(high_schools)
|
||||
score = round(random.uniform(580, 650), 1)
|
||||
|
||||
student = {
|
||||
'id': student_id,
|
||||
'student_no': student_no,
|
||||
'name': name,
|
||||
'gender': 'M',
|
||||
'birth_date': birth_date,
|
||||
'id_card': id_card,
|
||||
'phone': phone,
|
||||
'email': email,
|
||||
'qq': qq,
|
||||
'wechat': wechat,
|
||||
'father_name': father_name,
|
||||
'father_phone': father_phone,
|
||||
'mother_name': mother_name,
|
||||
'mother_phone': mother_phone,
|
||||
'height': height,
|
||||
'weight': weight,
|
||||
'blood_type': blood_type,
|
||||
'bank_card': bank_card,
|
||||
'bank': bank,
|
||||
'address': address,
|
||||
'high_school': high_school,
|
||||
'score': score,
|
||||
'class_id': class_info['id'],
|
||||
'class_name': class_info['name'],
|
||||
'major': class_info['major'],
|
||||
'college': class_info['college']
|
||||
}
|
||||
students.append(student)
|
||||
student_id += 1
|
||||
|
||||
# 生成女生
|
||||
for i in range(class_info['female_count']):
|
||||
student_no = f'202401{student_id - 2100000:03d}'
|
||||
surname = random.choice(surnames)
|
||||
name = surname + random.choice(female_names)
|
||||
|
||||
# 生成身份证号
|
||||
area_code = '330' + str(random.randint(100, 199))
|
||||
birth_year = random.choice(['2005', '2006'])
|
||||
birth_month = f'{random.randint(1, 12):02d}'
|
||||
birth_day = f'{random.randint(1, 28):02d}'
|
||||
birth_date = f'{birth_year}-{birth_month}-{birth_day}'
|
||||
id_card = f'{area_code}{birth_year}{birth_month}{birth_day}{random.randint(1000, 9999)}'
|
||||
|
||||
# 生成联系信息
|
||||
phone = f'138{random.randint(10000000, 99999999)}'
|
||||
email = f'{name.lower()}@student.edu.cn'
|
||||
qq = f'{random.randint(1000000000, 9999999999)}'
|
||||
wechat = f'{name.lower()}_{birth_year}'
|
||||
|
||||
# 生成家庭信息
|
||||
father_name = random.choice(surnames) + random.choice(['建华', '国强', '志华', '文华', '建国'])
|
||||
father_phone = f'139{random.randint(10000000, 99999999)}'
|
||||
mother_name = random.choice(surnames) + random.choice(['丽华', '美丽', '秀英', '丽君', '小华'])
|
||||
mother_phone = f'137{random.randint(10000000, 99999999)}'
|
||||
|
||||
# 生成其他信息
|
||||
height = round(random.uniform(155, 175), 1)
|
||||
weight = round(random.uniform(45, 65), 1)
|
||||
blood_type = random.choice(blood_types)
|
||||
bank_card = f'6222{random.randint(100000000000000, 999999999999999)}'
|
||||
bank = random.choice(banks)
|
||||
address = random.choice(address_prefixes) + random.choice(road_names) + f'{random.randint(1, 999)}号'
|
||||
high_school = random.choice(high_schools)
|
||||
score = round(random.uniform(580, 650), 1)
|
||||
|
||||
student = {
|
||||
'id': student_id,
|
||||
'student_no': student_no,
|
||||
'name': name,
|
||||
'gender': 'F',
|
||||
'birth_date': birth_date,
|
||||
'id_card': id_card,
|
||||
'phone': phone,
|
||||
'email': email,
|
||||
'qq': qq,
|
||||
'wechat': wechat,
|
||||
'father_name': father_name,
|
||||
'father_phone': father_phone,
|
||||
'mother_name': mother_name,
|
||||
'mother_phone': mother_phone,
|
||||
'height': height,
|
||||
'weight': weight,
|
||||
'blood_type': blood_type,
|
||||
'bank_card': bank_card,
|
||||
'bank': bank,
|
||||
'address': address,
|
||||
'high_school': high_school,
|
||||
'score': score,
|
||||
'class_id': class_info['id'],
|
||||
'class_name': class_info['name'],
|
||||
'major': class_info['major'],
|
||||
'college': class_info['college']
|
||||
}
|
||||
students.append(student)
|
||||
student_id += 1
|
||||
|
||||
return students
|
||||
|
||||
def generate_insert_sql(students):
|
||||
"""生成学生信息插入SQL"""
|
||||
sql_parts = []
|
||||
|
||||
for i, student in enumerate(students):
|
||||
emergency_relation = random.choice(['父亲', '母亲', '爷爷', '奶奶', '舅舅', '叔叔'])
|
||||
emergency_name = student['father_name'] if emergency_relation == '父亲' else student['mother_name'] if emergency_relation == '母亲' else random.choice(surnames) + random.choice(['建华', '丽华'])
|
||||
emergency_phone = student['father_phone'] if emergency_relation == '父亲' else student['mother_phone'] if emergency_relation == '母亲' else f'139{random.randint(10000000, 99999999)}'
|
||||
|
||||
political_status = random.choice(['01', '02', '03', '13']) # 党员、预备党员、团员、群众
|
||||
|
||||
sql = f"""({student['id']}, '000000', '{student['student_no']}', '{student['name']}', '{student['gender']}', '{student['birth_date']}', '{student['id_card']}', '汉族', '{political_status}',
|
||||
'2024-09-01', 4, '{student['major']}', {student['class_id']}, '{student['class_name']}', '1', '全日制',
|
||||
'{student['phone']}', '{student['email']}', '{student['qq']}', '{student['wechat']}', '{student['address']}', '{emergency_name}', '{emergency_phone}', '{emergency_relation}',
|
||||
'{student['father_name']}', '{student['father_phone']}', '{student['mother_name']}', '{student['mother_phone']}', {student['height']}, {student['weight']}, '{student['blood_type']}',
|
||||
'{student['bank_card']}', '{student['bank']}', '浙江省杭州市', '浙江省杭州市', '城镇', '{student['high_school']}', {student['score']},
|
||||
'1', 'manual', 1, NOW(), 1, NOW())"""
|
||||
|
||||
sql_parts.append(sql)
|
||||
|
||||
return ',\n'.join(sql_parts)
|
||||
|
||||
def generate_class_student_sql(students):
|
||||
"""生成班级学生关联SQL"""
|
||||
sql_parts = []
|
||||
relation_id = 3100001
|
||||
|
||||
for i, student in enumerate(students):
|
||||
position = 'member'
|
||||
position_level = 9
|
||||
|
||||
# 每个班级设置班长、副班长、学习委员等
|
||||
if i % 50 == 0: # 每班第一个学生为班长
|
||||
position = 'monitor'
|
||||
position_level = 1
|
||||
elif i % 50 == 1: # 每班第二个学生为副班长
|
||||
position = 'deputy'
|
||||
position_level = 2
|
||||
elif i % 50 == 2: # 每班第三个学生为学习委员
|
||||
position = 'secretary'
|
||||
position_level = 3
|
||||
elif i % 50 == 3: # 每班第四个学生为组织委员
|
||||
position = 'organizer'
|
||||
position_level = 3
|
||||
elif i % 50 == 4: # 每班第五个学生为宣传委员
|
||||
position = 'publicity'
|
||||
position_level = 3
|
||||
|
||||
sql = f"""({relation_id}, '000000', {student['class_id']}, {student['id']}, '{student['student_no']}', '{student['name']}',
|
||||
'{position}', {position_level}, '1', '2024-09-01', {i % 50 + 1}, 1, NOW(), 1, NOW())"""
|
||||
|
||||
sql_parts.append(sql)
|
||||
relation_id += 1
|
||||
|
||||
return ',\n'.join(sql_parts)
|
||||
|
||||
def generate_complete_sql():
|
||||
"""生成完整的SQL文件"""
|
||||
students = generate_student_data()
|
||||
|
||||
sql_content = """-- ==========================================
|
||||
-- 完整学生信息数据生成脚本
|
||||
-- 版本:V1.0.0
|
||||
-- 功能:生成3个新班级和150条学生信息数据
|
||||
-- 作者:Cursor AI 辅助
|
||||
-- 时间:2025-01-14
|
||||
-- 说明:包含完整的学生信息和班级关联数据
|
||||
-- ==========================================
|
||||
|
||||
USE hzdyjs_xg;
|
||||
|
||||
-- 设置字符集
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ==============================================
|
||||
-- 1. 创建3个新班级
|
||||
-- ==============================================
|
||||
|
||||
-- 计算机科学与技术2024级1班
|
||||
INSERT INTO `xg_class_info` (
|
||||
`id`, `tenant_id`, `class_code`, `class_name`, `class_type`, `grade`, `enrollment_year`, `graduation_year`,
|
||||
`college_id`, `college_name`, `major`, `major_code`, `training_type`, `degree_type`,
|
||||
`counselor_id`, `counselor_name`, `head_teacher_id`, `head_teacher_name`,
|
||||
`planned_capacity`, `current_count`, `male_count`, `female_count`, `active_count`,
|
||||
`contact_phone`, `qq_group`, `email`, `class_status`, `is_graduation`,
|
||||
`create_by`, `create_time`, `update_by`, `update_time`
|
||||
) VALUES (
|
||||
1100001, '000000', 'CS2024001', '计算机科学与技术2024级1班', 'regular', '2024', 2024, 2028,
|
||||
110001, '计算机科学与技术学院', '计算机科学与技术', 'CS001', '全日制', '本科',
|
||||
10001, '李明华', 10002, '王建国',
|
||||
50, 50, 28, 22, 50,
|
||||
'0571-88000001', '888888001', 'cs2024001@hzdyjs.edu.cn', '1', 0,
|
||||
1, NOW(), 1, NOW()
|
||||
) ON DUPLICATE KEY UPDATE current_count = VALUES(current_count), male_count = VALUES(male_count), female_count = VALUES(female_count);
|
||||
|
||||
-- 电子信息工程2024级1班
|
||||
INSERT INTO `xg_class_info` (
|
||||
`id`, `tenant_id`, `class_code`, `class_name`, `class_type`, `grade`, `enrollment_year`, `graduation_year`,
|
||||
`college_id`, `college_name`, `major`, `major_code`, `training_type`, `degree_type`,
|
||||
`counselor_id`, `counselor_name`, `head_teacher_id`, `head_teacher_name`,
|
||||
`planned_capacity`, `current_count`, `male_count`, `female_count`, `active_count`,
|
||||
`contact_phone`, `qq_group`, `email`, `class_status`, `is_graduation`,
|
||||
`create_by`, `create_time`, `update_by`, `update_time`
|
||||
) VALUES (
|
||||
1100002, '000000', 'EE2024001', '电子信息工程2024级1班', 'regular', '2024', 2024, 2028,
|
||||
110002, '电子信息工程学院', '电子信息工程', 'EE001', '全日制', '本科',
|
||||
10003, '张丽萍', 10004, '刘德华',
|
||||
50, 50, 32, 18, 50,
|
||||
'0571-88000002', '888888002', 'ee2024001@hzdyjs.edu.cn', '1', 0,
|
||||
1, NOW(), 1, NOW()
|
||||
) ON DUPLICATE KEY UPDATE current_count = VALUES(current_count), male_count = VALUES(male_count), female_count = VALUES(female_count);
|
||||
|
||||
-- 工商管理2024级1班
|
||||
INSERT INTO `xg_class_info` (
|
||||
`id`, `tenant_id`, `class_code`, `class_name`, `class_type`, `grade`, `enrollment_year`, `graduation_year`,
|
||||
`college_id`, `college_name`, `major`, `major_code`, `training_type`, `degree_type`,
|
||||
`counselor_id`, `counselor_name`, `head_teacher_id`, `head_teacher_name`,
|
||||
`planned_capacity`, `current_count`, `male_count`, `female_count`, `active_count`,
|
||||
`contact_phone`, `qq_group`, `email`, `class_status`, `is_graduation`,
|
||||
`create_by`, `create_time`, `update_by`, `update_time`
|
||||
) VALUES (
|
||||
1100003, '000000', 'BM2024001', '工商管理2024级1班', 'regular', '2024', 2024, 2028,
|
||||
110003, '经济管理学院', '工商管理', 'BM001', '全日制', '本科',
|
||||
10005, '陈建华', 10006, '赵文强',
|
||||
50, 50, 20, 30, 50,
|
||||
'0571-88000003', '888888003', 'bm2024001@hzdyjs.edu.cn', '1', 0,
|
||||
1, NOW(), 1, NOW()
|
||||
) ON DUPLICATE KEY UPDATE current_count = VALUES(current_count), male_count = VALUES(male_count), female_count = VALUES(female_count);
|
||||
|
||||
-- ==============================================
|
||||
-- 2. 生成150条学生信息数据
|
||||
-- ==============================================
|
||||
|
||||
INSERT INTO `xg_student_info` (
|
||||
`id`, `tenant_id`, `student_id`, `name`, `gender`, `birth_date`, `id_card`, `nation`, `political_status`,
|
||||
`admission_date`, `education_length`, `major`, `class_id`, `class_name`, `student_status`, `training_type`,
|
||||
`phone`, `email`, `qq_number`, `wechat_number`, `home_address`, `emergency_contact`, `emergency_phone`, `emergency_relation`,
|
||||
`father_name`, `father_phone`, `mother_name`, `mother_phone`, `height`, `weight`, `blood_type`,
|
||||
`bank_card_number`, `bank_name`, `birthplace`, `native_place`, `hukou_type`, `high_school`, `admission_score`,
|
||||
`info_status`, `data_source`, `create_by`, `create_time`, `update_by`, `update_time`
|
||||
) VALUES
|
||||
"""
|
||||
|
||||
# 添加学生数据
|
||||
sql_content += generate_insert_sql(students)
|
||||
|
||||
sql_content += """
|
||||
ON DUPLICATE KEY UPDATE
|
||||
name = VALUES(name),
|
||||
gender = VALUES(gender),
|
||||
class_name = VALUES(class_name),
|
||||
student_status = VALUES(student_status),
|
||||
update_time = NOW();
|
||||
|
||||
-- ==============================================
|
||||
-- 3. 创建班级学生关联关系
|
||||
-- ==============================================
|
||||
|
||||
INSERT INTO `xg_class_student` (
|
||||
`id`, `tenant_id`, `class_id`, `student_id`, `student_number`, `student_name`,
|
||||
`class_position`, `position_level`, `relation_status`, `join_time`, `student_order`,
|
||||
`create_by`, `create_time`, `update_by`, `update_time`
|
||||
) VALUES
|
||||
"""
|
||||
|
||||
# 添加班级学生关联数据
|
||||
sql_content += generate_class_student_sql(students)
|
||||
|
||||
sql_content += """
|
||||
ON DUPLICATE KEY UPDATE
|
||||
student_name = VALUES(student_name),
|
||||
class_position = VALUES(class_position),
|
||||
update_time = NOW();
|
||||
|
||||
-- ==============================================
|
||||
-- 4. 验证数据创建结果
|
||||
-- ==============================================
|
||||
|
||||
-- 验证班级信息
|
||||
SELECT '=== 班级信息验证 ===' as info;
|
||||
SELECT id, class_code, class_name, college_name, major, current_count, male_count, female_count
|
||||
FROM xg_class_info
|
||||
WHERE id IN (1100001, 1100002, 1100003);
|
||||
|
||||
-- 验证学生信息统计
|
||||
SELECT '=== 学生信息统计 ===' as info;
|
||||
SELECT
|
||||
class_id,
|
||||
class_name,
|
||||
COUNT(*) as total_count,
|
||||
SUM(CASE WHEN gender = 'M' THEN 1 ELSE 0 END) as male_count,
|
||||
SUM(CASE WHEN gender = 'F' THEN 1 ELSE 0 END) as female_count
|
||||
FROM xg_student_info
|
||||
WHERE class_id IN (1100001, 1100002, 1100003)
|
||||
GROUP BY class_id, class_name;
|
||||
|
||||
-- 验证班级学生关联
|
||||
SELECT '=== 班级学生关联验证 ===' as info;
|
||||
SELECT
|
||||
cs.class_id,
|
||||
ci.class_name,
|
||||
COUNT(*) as student_count,
|
||||
SUM(CASE WHEN cs.class_position != 'member' THEN 1 ELSE 0 END) as position_count
|
||||
FROM xg_class_student cs
|
||||
JOIN xg_class_info ci ON cs.class_id = ci.id
|
||||
WHERE cs.class_id IN (1100001, 1100002, 1100003)
|
||||
GROUP BY cs.class_id, ci.class_name;
|
||||
|
||||
-- 验证各班级学生分布
|
||||
SELECT '=== 各班级学生分布详情 ===' as info;
|
||||
SELECT
|
||||
ci.class_name,
|
||||
si.gender,
|
||||
COUNT(*) as count,
|
||||
ROUND(AVG(si.admission_score), 2) as avg_score,
|
||||
MIN(si.admission_score) as min_score,
|
||||
MAX(si.admission_score) as max_score
|
||||
FROM xg_student_info si
|
||||
JOIN xg_class_info ci ON si.class_id = ci.id
|
||||
WHERE si.class_id IN (1100001, 1100002, 1100003)
|
||||
GROUP BY ci.class_name, si.gender
|
||||
ORDER BY ci.class_name, si.gender;
|
||||
|
||||
-- 验证班级干部分布
|
||||
SELECT '=== 班级干部分布 ===' as info;
|
||||
SELECT
|
||||
ci.class_name,
|
||||
cs.class_position,
|
||||
cs.student_name,
|
||||
si.gender
|
||||
FROM xg_class_student cs
|
||||
JOIN xg_class_info ci ON cs.class_id = ci.id
|
||||
JOIN xg_student_info si ON cs.student_id = si.id
|
||||
WHERE cs.class_id IN (1100001, 1100002, 1100003)
|
||||
AND cs.class_position != 'member'
|
||||
ORDER BY cs.class_id, cs.position_level;
|
||||
|
||||
-- 恢复外键检查
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
||||
SELECT '🎉 学生信息数据生成完成!' as result;
|
||||
SELECT '📊 总计:3个班级,150条学生信息,150条关联关系' as summary;
|
||||
SELECT '👥 班级分布:' as distribution;
|
||||
SELECT ' - 计算机科学与技术2024级1班:50人(男28,女22)' as class1;
|
||||
SELECT ' - 电子信息工程2024级1班:50人(男32,女18)' as class2;
|
||||
SELECT ' - 工商管理2024级1班:50人(男20,女30)' as class3;
|
||||
"""
|
||||
|
||||
return sql_content
|
||||
|
||||
if __name__ == "__main__":
|
||||
print("正在生成学生信息数据...")
|
||||
|
||||
# 生成完整的SQL文件
|
||||
sql_content = generate_complete_sql()
|
||||
|
||||
# 写入文件
|
||||
with open('complete-student-data.sql', 'w', encoding='utf-8') as f:
|
||||
f.write(sql_content)
|
||||
|
||||
print("✅ 完整的学生数据SQL文件已生成完成!")
|
||||
print("📁 文件路径:complete-student-data.sql")
|
||||
print("📊 包含内容:")
|
||||
print(" - 3个班级信息")
|
||||
print(" - 150条学生信息")
|
||||
print(" - 150条班级学生关联关系")
|
||||
print(" - 完整的数据验证查询")
|
||||
print("\n🚀 您可以直接执行SQL文件来导入数据!")
|
||||
@@ -1,191 +0,0 @@
|
||||
-- ==========================================
|
||||
-- 学生信息数据生成脚本
|
||||
-- 版本:V1.0.0
|
||||
-- 功能:生成3个新班级和150条学生信息数据
|
||||
-- 作者:Cursor AI 辅助
|
||||
-- 时间:2025-01-14
|
||||
-- 说明:包含完整的学生信息和班级关联数据
|
||||
-- ==========================================
|
||||
|
||||
USE hzdyjs_xg;
|
||||
|
||||
-- 设置字符集
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ==============================================
|
||||
-- 1. 创建3个新班级
|
||||
-- ==============================================
|
||||
|
||||
-- 计算机科学与技术2024级1班
|
||||
INSERT INTO `xg_class_info` (
|
||||
`id`, `tenant_id`, `class_code`, `class_name`, `class_type`, `grade`, `enrollment_year`, `graduation_year`,
|
||||
`college_id`, `college_name`, `major`, `major_code`, `training_type`, `degree_type`,
|
||||
`counselor_id`, `counselor_name`, `head_teacher_id`, `head_teacher_name`,
|
||||
`planned_capacity`, `current_count`, `male_count`, `female_count`, `active_count`,
|
||||
`contact_phone`, `qq_group`, `email`, `class_status`, `is_graduation`,
|
||||
`create_by`, `create_time`, `update_by`, `update_time`
|
||||
) VALUES (
|
||||
1100001, '000000', 'CS2024001', '计算机科学与技术2024级1班', 'regular', '2024', 2024, 2028,
|
||||
110001, '计算机科学与技术学院', '计算机科学与技术', 'CS001', '全日制', '本科',
|
||||
10001, '李明华', 10002, '王建国',
|
||||
50, 50, 28, 22, 50,
|
||||
'0571-88000001', '888888001', 'cs2024001@hzdyjs.edu.cn', '1', 0,
|
||||
1, NOW(), 1, NOW()
|
||||
) ON DUPLICATE KEY UPDATE current_count = VALUES(current_count), male_count = VALUES(male_count), female_count = VALUES(female_count);
|
||||
|
||||
-- 电子信息工程2024级1班
|
||||
INSERT INTO `xg_class_info` (
|
||||
`id`, `tenant_id`, `class_code`, `class_name`, `class_type`, `grade`, `enrollment_year`, `graduation_year`,
|
||||
`college_id`, `college_name`, `major`, `major_code`, `training_type`, `degree_type`,
|
||||
`counselor_id`, `counselor_name`, `head_teacher_id`, `head_teacher_name`,
|
||||
`planned_capacity`, `current_count`, `male_count`, `female_count`, `active_count`,
|
||||
`contact_phone`, `qq_group`, `email`, `class_status`, `is_graduation`,
|
||||
`create_by`, `create_time`, `update_by`, `update_time`
|
||||
) VALUES (
|
||||
1100002, '000000', 'EE2024001', '电子信息工程2024级1班', 'regular', '2024', 2024, 2028,
|
||||
110002, '电子信息工程学院', '电子信息工程', 'EE001', '全日制', '本科',
|
||||
10003, '张丽萍', 10004, '刘德华',
|
||||
50, 50, 32, 18, 50,
|
||||
'0571-88000002', '888888002', 'ee2024001@hzdyjs.edu.cn', '1', 0,
|
||||
1, NOW(), 1, NOW()
|
||||
) ON DUPLICATE KEY UPDATE current_count = VALUES(current_count), male_count = VALUES(male_count), female_count = VALUES(female_count);
|
||||
|
||||
-- 工商管理2024级1班
|
||||
INSERT INTO `xg_class_info` (
|
||||
`id`, `tenant_id`, `class_code`, `class_name`, `class_type`, `grade`, `enrollment_year`, `graduation_year`,
|
||||
`college_id`, `college_name`, `major`, `major_code`, `training_type`, `degree_type`,
|
||||
`counselor_id`, `counselor_name`, `head_teacher_id`, `head_teacher_name`,
|
||||
`planned_capacity`, `current_count`, `male_count`, `female_count`, `active_count`,
|
||||
`contact_phone`, `qq_group`, `email`, `class_status`, `is_graduation`,
|
||||
`create_by`, `create_time`, `update_by`, `update_time`
|
||||
) VALUES (
|
||||
1100003, '000000', 'BM2024001', '工商管理2024级1班', 'regular', '2024', 2024, 2028,
|
||||
110003, '经济管理学院', '工商管理', 'BM001', '全日制', '本科',
|
||||
10005, '陈建华', 10006, '赵文强',
|
||||
50, 50, 20, 30, 50,
|
||||
'0571-88000003', '888888003', 'bm2024001@hzdyjs.edu.cn', '1', 0,
|
||||
1, NOW(), 1, NOW()
|
||||
) ON DUPLICATE KEY UPDATE current_count = VALUES(current_count), male_count = VALUES(male_count), female_count = VALUES(female_count);
|
||||
|
||||
-- ==============================================
|
||||
-- 2. 生成150条学生信息数据
|
||||
-- ==============================================
|
||||
|
||||
-- 计算机科学与技术2024级1班 (50人)
|
||||
INSERT INTO `xg_student_info` (
|
||||
`id`, `tenant_id`, `student_id`, `name`, `gender`, `birth_date`, `id_card`, `nation`, `political_status`,
|
||||
`admission_date`, `education_length`, `major`, `class_id`, `class_name`, `student_status`, `training_type`,
|
||||
`phone`, `email`, `qq_number`, `wechat_number`, `home_address`, `emergency_contact`, `emergency_phone`, `emergency_relation`,
|
||||
`father_name`, `father_phone`, `mother_name`, `mother_phone`, `height`, `weight`, `blood_type`,
|
||||
`bank_card_number`, `bank_name`, `birthplace`, `native_place`, `hukou_type`, `high_school`, `admission_score`,
|
||||
`info_status`, `data_source`, `create_by`, `create_time`, `update_by`, `update_time`
|
||||
) VALUES
|
||||
-- 计算机班男生 (28人)
|
||||
(2100001, '000000', '202401001', '李明阳', 'M', '2005-03-15', '330102200503151234', '汉族', '03',
|
||||
'2024-09-01', 4, '计算机科学与技术', 1100001, '计算机科学与技术2024级1班', '1', '全日制',
|
||||
'13801234567', 'limingyang@student.edu.cn', '1234567890', 'lmy_2005', '浙江省杭州市西湖区文一路100号', '李建华', '13901234567', '父亲',
|
||||
'李建华', '13901234567', '王丽华', '13902234567', 175.5, 68.2, 'A',
|
||||
'6222001234567890123', '中国工商银行', '浙江省杭州市', '浙江省杭州市', '城镇', '杭州市第一中学', 625.5,
|
||||
'1', 'manual', 1, NOW(), 1, NOW()),
|
||||
|
||||
(2100002, '000000', '202401002', '王志强', 'M', '2005-07-22', '330103200507221234', '汉族', '03',
|
||||
'2024-09-01', 4, '计算机科学与技术', 1100001, '计算机科学与技术2024级1班', '1', '全日制',
|
||||
'13801234568', 'wangzhiqiang@student.edu.cn', '1234567891', 'wzq_2005', '浙江省杭州市上城区建国路200号', '王国强', '13901234568', '父亲',
|
||||
'王国强', '13901234568', '张美丽', '13902234568', 178.0, 72.5, 'B',
|
||||
'6222001234567890124', '中国建设银行', '浙江省杭州市', '浙江省杭州市', '城镇', '杭州市第二中学', 618.0,
|
||||
'1', 'manual', 1, NOW(), 1, NOW()),
|
||||
|
||||
(2100003, '000000', '202401003', '张浩然', 'M', '2005-11-08', '330104200511081234', '汉族', '13',
|
||||
'2024-09-01', 4, '计算机科学与技术', 1100001, '计算机科学与技术2024级1班', '1', '全日制',
|
||||
'13801234569', 'zhanghaoran@student.edu.cn', '1234567892', 'zhr_2005', '浙江省杭州市江干区凤起路300号', '张国华', '13901234569', '父亲',
|
||||
'张国华', '13901234569', '李秀英', '13902234569', 172.3, 65.8, 'O',
|
||||
'6222001234567890125', '中国农业银行', '浙江省杭州市', '浙江省杭州市', '城镇', '杭州市第三中学', 620.8,
|
||||
'1', 'manual', 1, NOW(), 1, NOW()),
|
||||
|
||||
(2100004, '000000', '202401004', '刘伟峰', 'M', '2005-04-12', '330105200504121234', '汉族', '03',
|
||||
'2024-09-01', 4, '计算机科学与技术', 1100001, '计算机科学与技术2024级1班', '1', '全日制',
|
||||
'13801234570', 'liuweifeng@student.edu.cn', '1234567893', 'lwf_2005', '浙江省杭州市拱墅区莫干山路400号', '刘建国', '13901234570', '父亲',
|
||||
'刘建国', '13901234570', '陈丽君', '13902234570', 176.8, 70.5, 'A',
|
||||
'6222001234567890126', '中国银行', '浙江省杭州市', '浙江省杭州市', '城镇', '杭州市第四中学', 615.2,
|
||||
'1', 'manual', 1, NOW(), 1, NOW()),
|
||||
|
||||
(2100005, '000000', '202401005', '陈俊杰', 'M', '2005-08-30', '330106200508301234', '汉族', '03',
|
||||
'2024-09-01', 4, '计算机科学与技术', 1100001, '计算机科学与技术2024级1班', '1', '全日制',
|
||||
'13801234571', 'chenjunjie@student.edu.cn', '1234567894', 'cjj_2005', '浙江省杭州市西湖区教工路500号', '陈建华', '13901234571', '父亲',
|
||||
'陈建华', '13901234571', '王小华', '13902234571', 174.2, 67.3, 'B',
|
||||
'6222001234567890127', '招商银行', '浙江省杭州市', '浙江省杭州市', '城镇', '杭州市第五中学', 622.3,
|
||||
'1', 'manual', 1, NOW(), 1, NOW())
|
||||
|
||||
-- 注意:这里只显示了前5条数据,实际脚本会包含完整的150条数据
|
||||
-- 继续添加更多学生数据...
|
||||
ON DUPLICATE KEY UPDATE
|
||||
name = VALUES(name),
|
||||
gender = VALUES(gender),
|
||||
class_name = VALUES(class_name),
|
||||
student_status = VALUES(student_status),
|
||||
update_time = NOW();
|
||||
|
||||
-- ==============================================
|
||||
-- 3. 创建班级学生关联关系
|
||||
-- ==============================================
|
||||
|
||||
-- 计算机科学与技术2024级1班学生关联
|
||||
INSERT INTO `xg_class_student` (
|
||||
`id`, `tenant_id`, `class_id`, `student_id`, `student_number`, `student_name`,
|
||||
`class_position`, `position_level`, `relation_status`, `join_time`, `student_order`,
|
||||
`create_by`, `create_time`, `update_by`, `update_time`
|
||||
) VALUES
|
||||
-- 班长
|
||||
(3100001, '000000', 1100001, 2100001, '202401001', '李明阳', 'monitor', 1, '1', '2024-09-01', 1, 1, NOW(), 1, NOW()),
|
||||
-- 副班长
|
||||
(3100002, '000000', 1100001, 2100002, '202401002', '王志强', 'deputy', 2, '1', '2024-09-01', 2, 1, NOW(), 1, NOW()),
|
||||
-- 学习委员
|
||||
(3100003, '000000', 1100001, 2100003, '202401003', '张浩然', 'secretary', 3, '1', '2024-09-01', 3, 1, NOW(), 1, NOW()),
|
||||
-- 普通成员
|
||||
(3100004, '000000', 1100001, 2100004, '202401004', '刘伟峰', 'member', 9, '1', '2024-09-01', 4, 1, NOW(), 1, NOW()),
|
||||
(3100005, '000000', 1100001, 2100005, '202401005', '陈俊杰', 'member', 9, '1', '2024-09-01', 5, 1, NOW(), 1, NOW())
|
||||
-- 继续添加更多班级关联...
|
||||
ON DUPLICATE KEY UPDATE
|
||||
student_name = VALUES(student_name),
|
||||
class_position = VALUES(class_position),
|
||||
update_time = NOW();
|
||||
|
||||
-- ==============================================
|
||||
-- 4. 验证数据创建结果
|
||||
-- ==============================================
|
||||
|
||||
-- 验证班级信息
|
||||
SELECT '=== 班级信息验证 ===' as info;
|
||||
SELECT id, class_code, class_name, college_name, major, current_count, male_count, female_count
|
||||
FROM xg_class_info
|
||||
WHERE id IN (1100001, 1100002, 1100003);
|
||||
|
||||
-- 验证学生信息统计
|
||||
SELECT '=== 学生信息统计 ===' as info;
|
||||
SELECT
|
||||
class_id,
|
||||
class_name,
|
||||
COUNT(*) as total_count,
|
||||
SUM(CASE WHEN gender = 'M' THEN 1 ELSE 0 END) as male_count,
|
||||
SUM(CASE WHEN gender = 'F' THEN 1 ELSE 0 END) as female_count
|
||||
FROM xg_student_info
|
||||
WHERE class_id IN (1100001, 1100002, 1100003)
|
||||
GROUP BY class_id, class_name;
|
||||
|
||||
-- 验证班级学生关联
|
||||
SELECT '=== 班级学生关联验证 ===' as info;
|
||||
SELECT
|
||||
cs.class_id,
|
||||
ci.class_name,
|
||||
COUNT(*) as student_count,
|
||||
SUM(CASE WHEN cs.class_position != 'member' THEN 1 ELSE 0 END) as position_count
|
||||
FROM xg_class_student cs
|
||||
JOIN xg_class_info ci ON cs.class_id = ci.id
|
||||
WHERE cs.class_id IN (1100001, 1100002, 1100003)
|
||||
GROUP BY cs.class_id, ci.class_name;
|
||||
|
||||
-- 恢复外键检查
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
||||
SELECT '学生信息数据生成完成!共创建3个班级和150条学生信息。' as result;
|
||||
File diff suppressed because it is too large.
Load diff
@@ -1,19 +0,0 @@
|
||||
-- 第一阶段:学生信息表增强
|
||||
-- 说明:为学生信息表添加批次相关字段
|
||||
|
||||
-- 1. 修改学生信息表,添加批次相关字段
|
||||
ALTER TABLE xg_student_info
|
||||
ADD COLUMN last_batch_id BIGINT COMMENT '最后参与的批次ID' AFTER remark,
|
||||
ADD COLUMN last_edit_batch_id BIGINT COMMENT '最后编辑的批次ID' AFTER last_batch_id,
|
||||
ADD COLUMN info_lock_status TINYINT DEFAULT 0 COMMENT '信息锁定状态(0:正常,1:锁定)' AFTER last_edit_batch_id,
|
||||
ADD COLUMN lock_reason VARCHAR(500) COMMENT '锁定原因' AFTER info_lock_status,
|
||||
ADD COLUMN last_batch_submit_time DATETIME COMMENT '最后批次提交时间' AFTER lock_reason;
|
||||
|
||||
-- 2. 创建索引
|
||||
CREATE INDEX idx_xg_student_info_batch ON xg_student_info(last_batch_id, last_edit_batch_id);
|
||||
CREATE INDEX idx_xg_student_info_grade_college ON xg_student_info(grade, college_id);
|
||||
CREATE INDEX idx_xg_student_info_major_class ON xg_student_info(major_id, class_id);
|
||||
CREATE INDEX idx_xg_student_info_lock_status ON xg_student_info(info_lock_status);
|
||||
|
||||
-- 验证修改
|
||||
SELECT 'Student info table enhancement completed!' as message;
|
||||
@@ -1,220 +0,0 @@
|
||||
-- 第一阶段:创建批次相关的视图和存储过程
|
||||
-- 说明:用于简化查询和批量操作
|
||||
|
||||
-- 1. 创建视图:当前活跃批次
|
||||
CREATE VIEW v_current_active_batch AS
|
||||
SELECT
|
||||
b.*,
|
||||
COUNT(bs.id) as total_students,
|
||||
SUM(CASE WHEN bs.has_submitted = 1 THEN 1 ELSE 0 END) as submitted_students,
|
||||
ROUND(SUM(CASE WHEN bs.has_submitted = 1 THEN 1 ELSE 0 END) * 100.0 / COUNT(bs.id), 2) as completion_rate
|
||||
FROM xg_collection_batch b
|
||||
LEFT JOIN xg_collection_batch_student bs ON b.id = bs.batch_id AND bs.deleted = 0
|
||||
WHERE b.deleted = 0
|
||||
AND b.status = 'active'
|
||||
AND b.is_published = 1
|
||||
AND NOW() BETWEEN b.start_time AND b.end_time
|
||||
GROUP BY b.id;
|
||||
|
||||
-- 2. 创建视图:学生批次权限
|
||||
CREATE VIEW v_student_batch_permission AS
|
||||
SELECT
|
||||
bs.student_id,
|
||||
bs.student_code,
|
||||
bs.student_name,
|
||||
b.id as batch_id,
|
||||
b.batch_name,
|
||||
b.batch_code,
|
||||
b.start_time,
|
||||
b.end_time,
|
||||
b.status as batch_status,
|
||||
bs.can_edit,
|
||||
bs.has_submitted,
|
||||
bs.submit_time,
|
||||
CASE
|
||||
WHEN b.status != 'active' THEN 0
|
||||
WHEN b.is_published != 1 THEN 0
|
||||
WHEN NOW() < b.start_time THEN 0
|
||||
WHEN NOW() > b.end_time THEN 0
|
||||
WHEN bs.can_edit != 1 THEN 0
|
||||
WHEN bs.has_submitted = 1 THEN 0
|
||||
ELSE 1
|
||||
END as can_edit_now
|
||||
FROM xg_collection_batch_student bs
|
||||
JOIN xg_collection_batch b ON bs.batch_id = b.id
|
||||
WHERE bs.deleted = 0 AND b.deleted = 0;
|
||||
|
||||
-- 3. 创建存储过程:批量生成批次学生关联
|
||||
DELIMITER //
|
||||
CREATE PROCEDURE sp_generate_batch_students(
|
||||
IN p_batch_id BIGINT,
|
||||
IN p_target_grade VARCHAR(50),
|
||||
IN p_target_college_ids TEXT,
|
||||
IN p_target_major_ids TEXT,
|
||||
IN p_target_class_ids TEXT,
|
||||
IN p_creator_id BIGINT
|
||||
)
|
||||
BEGIN
|
||||
DECLARE done INT DEFAULT FALSE;
|
||||
DECLARE v_student_id BIGINT;
|
||||
DECLARE v_student_code VARCHAR(50);
|
||||
DECLARE v_student_name VARCHAR(100);
|
||||
DECLARE v_college_id BIGINT;
|
||||
DECLARE v_college_name VARCHAR(100);
|
||||
DECLARE v_major_id BIGINT;
|
||||
DECLARE v_major_name VARCHAR(100);
|
||||
DECLARE v_class_id BIGINT;
|
||||
DECLARE v_class_name VARCHAR(100);
|
||||
DECLARE v_grade VARCHAR(50);
|
||||
|
||||
-- 构建条件SQL
|
||||
SET @sql = CONCAT('
|
||||
SELECT
|
||||
s.id, s.student_code, s.student_name,
|
||||
s.college_id, c.college_name,
|
||||
s.major_id, m.major_name,
|
||||
s.class_id, cl.class_name,
|
||||
s.grade
|
||||
FROM xg_student_info s
|
||||
LEFT JOIN xg_college c ON s.college_id = c.id
|
||||
LEFT JOIN xg_major m ON s.major_id = m.id
|
||||
LEFT JOIN xg_class_info cl ON s.class_id = cl.id
|
||||
WHERE s.deleted = 0'
|
||||
);
|
||||
|
||||
-- 添加届别条件
|
||||
IF p_target_grade IS NOT NULL AND p_target_grade != '' THEN
|
||||
SET @sql = CONCAT(@sql, ' AND s.grade = ''', p_target_grade, '''');
|
||||
END IF;
|
||||
|
||||
-- 添加学院条件
|
||||
IF p_target_college_ids IS NOT NULL AND p_target_college_ids != '' THEN
|
||||
SET @sql = CONCAT(@sql, ' AND FIND_IN_SET(s.college_id, ''', p_target_college_ids, ''')');
|
||||
END IF;
|
||||
|
||||
-- 添加专业条件
|
||||
IF p_target_major_ids IS NOT NULL AND p_target_major_ids != '' THEN
|
||||
SET @sql = CONCAT(@sql, ' AND FIND_IN_SET(s.major_id, ''', p_target_major_ids, ''')');
|
||||
END IF;
|
||||
|
||||
-- 添加班级条件
|
||||
IF p_target_class_ids IS NOT NULL AND p_target_class_ids != '' THEN
|
||||
SET @sql = CONCAT(@sql, ' AND FIND_IN_SET(s.class_id, ''', p_target_class_ids, ''')');
|
||||
END IF;
|
||||
|
||||
-- 清空该批次的现有学生关联
|
||||
DELETE FROM xg_collection_batch_student WHERE batch_id = p_batch_id;
|
||||
|
||||
-- 准备插入语句
|
||||
SET @insert_sql = CONCAT('
|
||||
INSERT INTO xg_collection_batch_student (
|
||||
batch_id, student_id, student_code, student_name,
|
||||
college_id, college_name, major_id, major_name,
|
||||
class_id, class_name, grade, can_edit, has_submitted,
|
||||
create_by, tenant_id
|
||||
) ', @sql, ' AND s.id NOT IN (
|
||||
SELECT student_id FROM xg_collection_batch_student
|
||||
WHERE batch_id = ', p_batch_id, ' AND deleted = 0
|
||||
)');
|
||||
|
||||
-- 替换SELECT为INSERT VALUES
|
||||
SET @insert_sql = REPLACE(@insert_sql, 'SELECT ', CONCAT('SELECT ', p_batch_id, ', '));
|
||||
SET @insert_sql = CONCAT(@insert_sql, ', 1, 0, ', p_creator_id, ', 0');
|
||||
|
||||
-- 执行插入
|
||||
PREPARE stmt FROM @insert_sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- 记录日志
|
||||
INSERT INTO xg_collection_batch_log (
|
||||
batch_id, operation_type, operation_desc,
|
||||
operator_id, operator_type, create_time
|
||||
) VALUES (
|
||||
p_batch_id, 'BATCH_GENERATE',
|
||||
CONCAT('批量生成批次学生关联,条件:届别=', IFNULL(p_target_grade, 'ALL'),
|
||||
',学院=', IFNULL(p_target_college_ids, 'ALL'),
|
||||
',专业=', IFNULL(p_target_major_ids, 'ALL'),
|
||||
',班级=', IFNULL(p_target_class_ids, 'ALL')),
|
||||
p_creator_id, 'ADMIN', NOW()
|
||||
);
|
||||
END //
|
||||
DELIMITER ;
|
||||
|
||||
-- 4. 创建存储过程:检查学生是否可以编辑信息
|
||||
DELIMITER //
|
||||
CREATE PROCEDURE sp_check_student_can_edit(
|
||||
IN p_student_id BIGINT,
|
||||
OUT p_can_edit TINYINT,
|
||||
OUT p_batch_id BIGINT,
|
||||
OUT p_message VARCHAR(500)
|
||||
)
|
||||
BEGIN
|
||||
DECLARE v_batch_count INT DEFAULT 0;
|
||||
DECLARE v_batch_id BIGINT;
|
||||
DECLARE v_batch_name VARCHAR(200);
|
||||
DECLARE v_start_time DATETIME;
|
||||
DECLARE v_end_time DATETIME;
|
||||
DECLARE v_can_edit TINYINT DEFAULT 0;
|
||||
DECLARE v_has_submitted TINYINT DEFAULT 0;
|
||||
|
||||
-- 初始化输出参数
|
||||
SET p_can_edit = 0;
|
||||
SET p_batch_id = NULL;
|
||||
SET p_message = '';
|
||||
|
||||
-- 查找当前活跃的批次中是否包含该学生
|
||||
SELECT COUNT(*), MAX(b.id), MAX(b.batch_name), MAX(b.start_time), MAX(b.end_time)
|
||||
INTO v_batch_count, v_batch_id, v_batch_name, v_start_time, v_end_time
|
||||
FROM xg_collection_batch b
|
||||
JOIN xg_collection_batch_student bs ON b.id = bs.batch_id
|
||||
WHERE bs.student_id = p_student_id
|
||||
AND b.deleted = 0
|
||||
AND bs.deleted = 0
|
||||
AND b.status = 'active'
|
||||
AND b.is_published = 1
|
||||
AND NOW() BETWEEN b.start_time AND b.end_time;
|
||||
|
||||
IF v_batch_count = 0 THEN
|
||||
SET p_message = '当前没有开放的信息采集批次';
|
||||
LEAVE proc_label;
|
||||
END IF;
|
||||
|
||||
-- 检查学生在该批次中的权限
|
||||
SELECT can_edit, has_submitted
|
||||
INTO v_can_edit, v_has_submitted
|
||||
FROM xg_collection_batch_student
|
||||
WHERE batch_id = v_batch_id AND student_id = p_student_id AND deleted = 0;
|
||||
|
||||
IF v_can_edit = 0 THEN
|
||||
SET p_message = '您没有编辑权限';
|
||||
LEAVE proc_label;
|
||||
END IF;
|
||||
|
||||
IF v_has_submitted = 1 THEN
|
||||
SET p_message = '您已经提交过信息,无法再次编辑';
|
||||
LEAVE proc_label;
|
||||
END IF;
|
||||
|
||||
-- 检查时间范围
|
||||
IF NOW() < v_start_time THEN
|
||||
SET p_message = CONCAT('信息采集尚未开始,开始时间:', DATE_FORMAT(v_start_time, '%Y-%m-%d %H:%i:%s'));
|
||||
LEAVE proc_label;
|
||||
END IF;
|
||||
|
||||
IF NOW() > v_end_time THEN
|
||||
SET p_message = CONCAT('信息采集已结束,结束时间:', DATE_FORMAT(v_end_time, '%Y-%m-%d %H:%i:%s'));
|
||||
LEAVE proc_label;
|
||||
END IF;
|
||||
|
||||
-- 所有检查通过
|
||||
SET p_can_edit = 1;
|
||||
SET p_batch_id = v_batch_id;
|
||||
SET p_message = CONCAT('可以编辑信息,批次:', v_batch_name);
|
||||
|
||||
proc_label: BEGIN END;
|
||||
END //
|
||||
DELIMITER ;
|
||||
|
||||
-- 验证创建
|
||||
SELECT 'Views and procedures created!' as message;
|
||||
@@ -1,77 +0,0 @@
|
||||
/*
|
||||
学工管理模块实际数据删除脚本
|
||||
|
||||
功能:删除数据库中实际存在的学工管理相关数据
|
||||
创建时间:2025-01-09
|
||||
使用说明:基于实际数据库状态创建的删除脚本
|
||||
|
||||
实际存在的数据:
|
||||
- 6张数据表
|
||||
- 16个菜单权限项
|
||||
- 7个字典类型
|
||||
- 27个字典数据项
|
||||
*/
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ========================================
|
||||
-- 第一步:删除菜单权限数据
|
||||
-- ========================================
|
||||
|
||||
-- 删除学工管理模块的菜单权限
|
||||
DELETE FROM `sys_menu` WHERE `menu_id` IN (
|
||||
3000, 3100, 3110, 3111, 3112, 3113, 3114, 3115, 3116, 3117,
|
||||
1937055384875462657, 1937055384875462658, 1937055384875462659,
|
||||
1937055384875462660, 1937055384875462661, 1937055384875462662
|
||||
);
|
||||
|
||||
-- 删除相关的角色菜单关联数据
|
||||
DELETE FROM `sys_role_menu` WHERE `menu_id` IN (
|
||||
3000, 3100, 3110, 3111, 3112, 3113, 3114, 3115, 3116, 3117,
|
||||
1937055384875462657, 1937055384875462658, 1937055384875462659,
|
||||
1937055384875462660, 1937055384875462661, 1937055384875462662
|
||||
);
|
||||
|
||||
-- ========================================
|
||||
-- 第二步:删除字典数据
|
||||
-- ========================================
|
||||
|
||||
-- 删除学工管理相关的字典数据
|
||||
DELETE FROM `sys_dict_data` WHERE `dict_type` IN (
|
||||
'xg_gender', 'xg_student_status', 'xg_political_status',
|
||||
'xg_education_level', 'xg_training_mode', 'xg_audit_status',
|
||||
'xg_batch_status'
|
||||
);
|
||||
|
||||
-- 删除学工管理相关的字典类型
|
||||
DELETE FROM `sys_dict_type` WHERE `dict_type` IN (
|
||||
'xg_gender', 'xg_student_status', 'xg_political_status',
|
||||
'xg_education_level', 'xg_training_mode', 'xg_audit_status',
|
||||
'xg_batch_status'
|
||||
);
|
||||
|
||||
-- ========================================
|
||||
-- 第三步:删除数据库表
|
||||
-- ========================================
|
||||
|
||||
-- 删除学工管理相关的数据表(按依赖关系顺序删除)
|
||||
DROP TABLE IF EXISTS `xg_class_cadre`;
|
||||
DROP TABLE IF EXISTS `xg_student_audit_log`;
|
||||
DROP TABLE IF EXISTS `xg_info_collection_batch`;
|
||||
DROP TABLE IF EXISTS `xg_student_bank_info`;
|
||||
DROP TABLE IF EXISTS `xg_class_info`;
|
||||
DROP TABLE IF EXISTS `xg_student_info`;
|
||||
|
||||
-- ========================================
|
||||
-- 执行完成提示
|
||||
-- ========================================
|
||||
|
||||
SELECT '学工管理模块实际数据删除完成!' as result;
|
||||
SELECT '已删除:' as info;
|
||||
SELECT '- 6张数据库表' as tables;
|
||||
SELECT '- 16个菜单权限项' as menus;
|
||||
SELECT '- 7个字典类型' as dict_types;
|
||||
SELECT '- 27个字典数据项' as dict_data;
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
@@ -1,217 +0,0 @@
|
||||
# 学生信息管理模块数据库设计说明
|
||||
|
||||
## 📋 文档信息
|
||||
|
||||
| 项目 | 信息 |
|
||||
|------|------|
|
||||
| **模块名称** | 学生信息管理模块 |
|
||||
| **数据库版本** | V1.0.1 |
|
||||
| **创建时间** | 2025-01-12 |
|
||||
| **创建人员** | Cursor AI 辅助 |
|
||||
| **依据文档** | 学生信息管理需求分析书 |
|
||||
|
||||
## 🎯 设计概述
|
||||
|
||||
本模块数据库设计基于《学生信息管理需求分析书》,实现了学生信息收集、管理、审核、统计的完整业务流程。设计遵循项目统一的数据库建设规范,确保数据安全、性能和可扩展性。
|
||||
|
||||
## 📂 文件结构
|
||||
|
||||
```
|
||||
docs/设计文档/database/
|
||||
├── 09-student-management-module.sql # 主表结构文件
|
||||
├── 09-student-management-dict.sql # 字典数据文件
|
||||
├── 09-student-management-menu.sql # 菜单权限文件
|
||||
└── 09-student-management-README.md # 说明文档
|
||||
```
|
||||
|
||||
## 🗄️ 数据表设计
|
||||
|
||||
### 核心业务表
|
||||
|
||||
#### 1. xg_student_info - 学生信息表
|
||||
**表描述**: 存储学生完整信息的核心表
|
||||
|
||||
**主要字段分类**:
|
||||
- **基本信息**: 学号、姓名、性别、出生日期、身份证号等
|
||||
- **学籍信息**: 入学时间、专业、班级、学籍状态、培养方式等
|
||||
- **联系信息**: 手机号、邮箱、家庭地址、紧急联系人等
|
||||
- **家庭信息**: 父母信息、家庭收入、家庭成员等
|
||||
- **体征信息**: 身高、体重、血型、健康状况等
|
||||
- **财务信息**: 银行卡号、开户银行、持卡人姓名等
|
||||
- **扩展信息**: 特长、获奖情况、违纪记录等
|
||||
|
||||
**关键特性**:
|
||||
- 支持多维度查询和统计
|
||||
- 完整的审核状态管理
|
||||
- 数据来源追踪
|
||||
- 信息完整度计算
|
||||
|
||||
#### 2. xg_class_info - 班级信息表
|
||||
**表描述**: 班级基础信息和人员配置管理
|
||||
|
||||
**主要功能**:
|
||||
- 班级基础信息维护
|
||||
- 辅导员、班主任、班干部配置
|
||||
- 班级规模统计
|
||||
- 班级状态管理
|
||||
|
||||
#### 3. xg_collection_batch - 信息采集批次表
|
||||
**表描述**: 学年度信息采集批次管理
|
||||
|
||||
**主要功能**:
|
||||
- 批次创建和时间控制
|
||||
- 目标范围设置
|
||||
- 权限配置管理
|
||||
- 采集进度统计
|
||||
|
||||
#### 4. xg_audit_record - 审核记录表
|
||||
**表描述**: 多级审核流程管理
|
||||
|
||||
**主要功能**:
|
||||
- 审核流程控制
|
||||
- 审核进度跟踪
|
||||
- 变更记录管理
|
||||
- 审核转派支持
|
||||
|
||||
#### 5. xg_class_student - 班级学生关联表
|
||||
**表描述**: 班级与学生的关联关系管理
|
||||
|
||||
**主要功能**:
|
||||
- 班级成员管理
|
||||
- 职务配置
|
||||
- 转班转专业处理
|
||||
- 关系状态维护
|
||||
|
||||
## 📚 字典数据设计
|
||||
|
||||
### 字典类型列表
|
||||
|
||||
| 字典类型 | 字典编码 | 描述 | 数据量 |
|
||||
|----------|----------|------|--------|
|
||||
| 学生性别 | xg_student_gender | 男/女 | 2条 |
|
||||
| 学籍状态 | xg_student_status | 在籍/休学/毕业等 | 8条 |
|
||||
| 政治面貌 | xg_political_status | 党员/团员等 | 13条 |
|
||||
| 血型 | xg_blood_type | A/B/AB/O型 | 5条 |
|
||||
| 培养方式 | xg_training_type | 全日制/在职等 | 6条 |
|
||||
| 班级职务 | xg_class_position | 班长/委员等 | 9条 |
|
||||
| 审核结果 | xg_audit_result | 通过/驳回等 | 5条 |
|
||||
| 批次状态 | xg_batch_status | 进行中/已结束等 | 5条 |
|
||||
| 信息状态 | xg_info_status | 正常/待审核等 | 5条 |
|
||||
|
||||
## 🔐 菜单权限设计
|
||||
|
||||
### 菜单结构
|
||||
|
||||
```
|
||||
学生信息管理 (1200)
|
||||
├── 学生信息管理 (1201)
|
||||
├── 班级信息管理 (1202)
|
||||
├── 信息采集批次 (1203)
|
||||
├── 审核流程管理 (1204)
|
||||
├── 统计分析 (1205)
|
||||
└── 综合查询 (1206)
|
||||
```
|
||||
|
||||
### 权限按钮
|
||||
|
||||
每个功能菜单包含相应的操作按钮权限:
|
||||
- **查询、新增、修改、删除** - 基础CRUD操作
|
||||
- **导入、导出** - 数据批量操作
|
||||
- **审核、统计** - 业务功能操作
|
||||
|
||||
### 角色权限配置
|
||||
|
||||
| 角色 | 权限范围 | 主要功能 |
|
||||
|------|----------|----------|
|
||||
| 超级管理员 | 全部权限 | 系统管理 |
|
||||
| 学生处管理员 | 全部权限 | 全校管理 |
|
||||
| 二级学院管理员 | 学院权限 | 学院管理 |
|
||||
| 辅导员 | 负责学生 | 学生管理 |
|
||||
| 班主任 | 负责班级 | 班级管理 |
|
||||
| 学生 | 个人信息 | 信息维护 |
|
||||
|
||||
## 🔧 技术特性
|
||||
|
||||
### 数据库规范
|
||||
- **命名规范**: 所有表名以`xg_`开头
|
||||
- **字段规范**: 严格遵循MySQL数据库建设规范
|
||||
- **基础字段**: 所有表包含标准基础字段
|
||||
- **索引优化**: 为常用查询字段创建索引
|
||||
|
||||
### 数据安全
|
||||
- **多租户支持**: tenant_id字段实现数据隔离
|
||||
- **逻辑删除**: 使用deleted字段,禁止物理删除
|
||||
- **操作审计**: 完整的创建/更新记录
|
||||
- **权限控制**: 基于角色的细粒度权限管理
|
||||
|
||||
### 性能优化
|
||||
- **索引策略**: 为常用查询字段创建单列和组合索引
|
||||
- **分页支持**: 支持大数据量的分页查询
|
||||
- **统计优化**: 预计算统计字段,提升查询性能
|
||||
- **缓存友好**: 字段设计考虑缓存策略
|
||||
|
||||
## 📊 数据规模预估
|
||||
|
||||
### 存储预估
|
||||
- **学生信息表**: 预计存储10万条学生记录
|
||||
- **班级信息表**: 预计存储5千个班级记录
|
||||
- **审核记录表**: 预计存储100万条审核记录
|
||||
- **采集批次表**: 预计存储1千个批次记录
|
||||
|
||||
### 性能指标
|
||||
- **查询响应时间**: 普通查询<1秒,复杂统计<3秒
|
||||
- **并发支持**: 支持1000人同时在线操作
|
||||
- **数据处理**: 支持10万级学生数据的快速查询
|
||||
- **批量操作**: 支持5000条记录的批量导入
|
||||
|
||||
## 🚀 部署说明
|
||||
|
||||
### 执行顺序
|
||||
1. 执行主表结构文件: `09-student-management-module.sql`
|
||||
2. 执行字典数据文件: `09-student-management-dict.sql`
|
||||
3. 执行菜单权限文件: `09-student-management-menu.sql`
|
||||
|
||||
### 注意事项
|
||||
- 确保数据库支持utf8mb4字符集
|
||||
- 执行前备份现有数据
|
||||
- 检查是否有表名冲突
|
||||
- 验证字典数据和菜单权限配置
|
||||
|
||||
### 验证检查
|
||||
```sql
|
||||
-- 检查表创建情况
|
||||
SHOW TABLES LIKE 'xg_%';
|
||||
|
||||
-- 检查字典数据
|
||||
SELECT dict_type, COUNT(*) FROM sys_dict_data
|
||||
WHERE dict_type LIKE 'xg_%' GROUP BY dict_type;
|
||||
|
||||
-- 检查菜单权限
|
||||
SELECT COUNT(*) FROM sys_menu WHERE menu_id >= 1200 AND menu_id <= 1264;
|
||||
```
|
||||
|
||||
## 📝 维护说明
|
||||
|
||||
### 数据维护
|
||||
- 定期清理过期的审核记录
|
||||
- 定期更新班级人数统计
|
||||
- 定期归档历史批次数据
|
||||
- 定期检查数据完整性
|
||||
|
||||
### 性能维护
|
||||
- 定期分析查询性能
|
||||
- 定期优化索引策略
|
||||
- 定期清理无用数据
|
||||
- 定期备份重要数据
|
||||
|
||||
### 扩展建议
|
||||
- 可根据业务需求扩展学生信息字段
|
||||
- 可增加更多统计维度
|
||||
- 可添加数据导入模板管理
|
||||
- 可增加审核流程配置功能
|
||||
|
||||
---
|
||||
|
||||
**文档维护**: 请在数据库结构变更时及时更新本文档
|
||||
**最后更新**: 2025-01-12
|
||||
**版本**: V1.0.1
|
||||
@@ -1,438 +0,0 @@
|
||||
-- ==========================================
|
||||
-- 学生信息管理模块数据库脚本
|
||||
-- 版本:V1.0.1
|
||||
-- 功能:学生信息管理模块完整表结构
|
||||
-- 作者:Cursor AI 辅助
|
||||
-- 时间:2025-01-12
|
||||
-- 依据文档:docs/需求文档/学工管理学生信息管理需求/学生信息管理需求分析书.md
|
||||
-- ==========================================
|
||||
|
||||
-- 设置字符集
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for xg_student_info
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `xg_student_info`;
|
||||
CREATE TABLE `xg_student_info` (
|
||||
-- 标准基础字段(必须)
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
|
||||
`create_dept` bigint(20) DEFAULT NULL 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 '更新时间',
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
|
||||
-- 基本信息
|
||||
`student_id` varchar(32) NOT NULL COMMENT '学号',
|
||||
`name` varchar(50) NOT NULL COMMENT '姓名',
|
||||
`gender` char(1) NOT NULL COMMENT '性别:0-男,1-女',
|
||||
`birth_date` date DEFAULT NULL COMMENT '出生日期',
|
||||
`id_card` varchar(18) DEFAULT NULL COMMENT '身份证号',
|
||||
`nation` varchar(20) DEFAULT NULL COMMENT '民族',
|
||||
`political_status` varchar(20) DEFAULT NULL COMMENT '政治面貌',
|
||||
`religion` varchar(20) DEFAULT NULL COMMENT '宗教信仰',
|
||||
`photo_url` varchar(500) DEFAULT NULL COMMENT '照片URL',
|
||||
|
||||
-- 学籍信息
|
||||
`admission_date` date DEFAULT NULL COMMENT '入学时间',
|
||||
`education_length` tinyint(1) DEFAULT 4 COMMENT '学制(年)',
|
||||
`major` varchar(100) DEFAULT NULL COMMENT '专业',
|
||||
`class_id` bigint(20) DEFAULT NULL COMMENT '班级ID,关联xg_class_info.id',
|
||||
`class_name` varchar(100) DEFAULT NULL COMMENT '班级名称(冗余字段)',
|
||||
`student_status` char(1) DEFAULT '1' COMMENT '学籍状态:1-在籍,2-休学,3-复学,4-退学,5-毕业,6-肄业,7-转学,8-其他',
|
||||
`training_type` varchar(20) DEFAULT NULL COMMENT '培养方式:全日制,在职,函授,夜大等',
|
||||
`enrollment_type` varchar(20) DEFAULT NULL COMMENT '入学方式:统招,自考,成教,网教等',
|
||||
|
||||
-- 联系信息
|
||||
`phone` varchar(20) DEFAULT NULL COMMENT '手机号',
|
||||
`email` varchar(100) DEFAULT NULL COMMENT '邮箱',
|
||||
`qq_number` varchar(20) DEFAULT NULL COMMENT 'QQ号码',
|
||||
`wechat_number` varchar(50) DEFAULT NULL COMMENT '微信号',
|
||||
`home_address` varchar(200) DEFAULT NULL COMMENT '家庭地址',
|
||||
`current_address` varchar(200) DEFAULT NULL COMMENT '现住址',
|
||||
`postal_code` varchar(10) DEFAULT NULL COMMENT '邮政编码',
|
||||
`emergency_contact` varchar(50) DEFAULT NULL COMMENT '紧急联系人',
|
||||
`emergency_phone` varchar(20) DEFAULT NULL COMMENT '紧急联系电话',
|
||||
`emergency_relation` varchar(20) DEFAULT NULL COMMENT '紧急联系人关系',
|
||||
|
||||
-- 家庭信息
|
||||
`father_name` varchar(50) DEFAULT NULL COMMENT '父亲姓名',
|
||||
`father_phone` varchar(20) DEFAULT NULL COMMENT '父亲电话',
|
||||
`father_work` varchar(100) DEFAULT NULL COMMENT '父亲工作单位',
|
||||
`mother_name` varchar(50) DEFAULT NULL COMMENT '母亲姓名',
|
||||
`mother_phone` varchar(20) DEFAULT NULL COMMENT '母亲电话',
|
||||
`mother_work` varchar(100) DEFAULT NULL COMMENT '母亲工作单位',
|
||||
`family_income` varchar(20) DEFAULT NULL COMMENT '家庭年收入',
|
||||
`family_members` tinyint(2) DEFAULT NULL COMMENT '家庭成员数量',
|
||||
|
||||
-- 体征信息
|
||||
`height` decimal(5,2) DEFAULT NULL COMMENT '身高(cm)',
|
||||
`weight` decimal(5,2) DEFAULT NULL COMMENT '体重(kg)',
|
||||
`blood_type` varchar(5) DEFAULT NULL COMMENT '血型:A,B,AB,O,未知',
|
||||
`health_status` varchar(20) DEFAULT NULL COMMENT '健康状况',
|
||||
`medical_history` varchar(500) DEFAULT NULL COMMENT '病史记录',
|
||||
`allergies` varchar(200) DEFAULT NULL COMMENT '过敏史',
|
||||
|
||||
-- 财务信息
|
||||
`bank_card_number` varchar(30) DEFAULT NULL COMMENT '银行卡号',
|
||||
`bank_name` varchar(100) DEFAULT NULL COMMENT '开户银行',
|
||||
`bank_account_name` varchar(50) DEFAULT NULL COMMENT '持卡人姓名',
|
||||
`bank_phone` varchar(20) DEFAULT NULL COMMENT '银行预留手机号',
|
||||
|
||||
-- 生源信息
|
||||
`birthplace` varchar(100) DEFAULT NULL COMMENT '出生地',
|
||||
`native_place` varchar(100) DEFAULT NULL COMMENT '籍贯',
|
||||
`hukou_type` varchar(20) DEFAULT NULL COMMENT '户口性质:城镇,农村',
|
||||
`hukou_location` varchar(100) DEFAULT NULL COMMENT '户口所在地',
|
||||
`high_school` varchar(100) DEFAULT NULL COMMENT '毕业高中',
|
||||
`admission_score` decimal(6,2) DEFAULT NULL COMMENT '入学成绩',
|
||||
`admission_rank` int(11) DEFAULT NULL COMMENT '入学排名',
|
||||
|
||||
-- 扩展信息
|
||||
`specialties` varchar(200) DEFAULT NULL COMMENT '特长爱好',
|
||||
`certificates` varchar(500) DEFAULT NULL COMMENT '获得证书',
|
||||
`social_work` varchar(500) DEFAULT NULL COMMENT '社会工作经历',
|
||||
`awards` varchar(500) DEFAULT NULL COMMENT '获奖情况',
|
||||
`punishment` varchar(500) DEFAULT NULL COMMENT '违纪处分记录',
|
||||
`scholarship` varchar(500) DEFAULT NULL COMMENT '奖学金获得情况',
|
||||
`financial_aid` varchar(500) DEFAULT NULL COMMENT '助学金情况',
|
||||
`work_study` varchar(500) DEFAULT NULL COMMENT '勤工助学情况',
|
||||
`internship` varchar(500) DEFAULT NULL COMMENT '实习经历',
|
||||
|
||||
-- 状态信息
|
||||
`info_status` char(1) DEFAULT '1' COMMENT '信息状态:1-正常,2-待审核,3-审核中,4-已驳回,5-已锁定',
|
||||
`last_update_batch` bigint(20) DEFAULT NULL COMMENT '最后更新批次ID,关联xg_collection_batch.id',
|
||||
`data_source` varchar(20) DEFAULT 'manual' COMMENT '数据来源:manual-手工录入,import-批量导入,sync-同步导入',
|
||||
`is_complete` tinyint(1) DEFAULT 0 COMMENT '信息是否完整:0-不完整,1-完整',
|
||||
`completion_rate` decimal(5,2) DEFAULT 0 COMMENT '完整度百分比',
|
||||
|
||||
-- 其他字段
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注信息',
|
||||
|
||||
-- 主键和索引
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE KEY `uk_student_id` (`student_id`, `tenant_id`),
|
||||
KEY `idx_tenant_id` (`tenant_id`),
|
||||
KEY `idx_deleted` (`deleted`),
|
||||
KEY `idx_name` (`name`),
|
||||
KEY `idx_class_id` (`class_id`),
|
||||
KEY `idx_student_status` (`student_status`),
|
||||
KEY `idx_info_status` (`info_status`),
|
||||
KEY `idx_create_time` (`create_time`),
|
||||
KEY `idx_phone` (`phone`),
|
||||
KEY `idx_id_card` (`id_card`),
|
||||
KEY `idx_admission_date` (`admission_date`),
|
||||
KEY `idx_major` (`major`),
|
||||
KEY `idx_last_update_batch` (`last_update_batch`),
|
||||
KEY `idx_tenant_status` (`tenant_id`, `student_status`, `deleted`),
|
||||
KEY `idx_class_status` (`class_id`, `info_status`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生信息表';
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for xg_class_info
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `xg_class_info`;
|
||||
CREATE TABLE `xg_class_info` (
|
||||
-- 标准基础字段(必须)
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
|
||||
`create_dept` bigint(20) DEFAULT NULL 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 '更新时间',
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
|
||||
-- 班级基础信息
|
||||
`class_code` varchar(32) NOT NULL COMMENT '班级代码',
|
||||
`class_name` varchar(100) NOT NULL COMMENT '班级名称',
|
||||
`class_type` varchar(20) DEFAULT 'regular' COMMENT '班级类型:regular-普通班,honor-荣誉班,experimental-实验班',
|
||||
`grade` varchar(10) NOT NULL COMMENT '年级',
|
||||
`enrollment_year` int(4) NOT NULL COMMENT '入学年份',
|
||||
`graduation_year` int(4) DEFAULT NULL COMMENT '毕业年份',
|
||||
|
||||
-- 学院和专业信息
|
||||
`college_id` bigint(20) DEFAULT NULL COMMENT '学院ID,关联sys_dept.id',
|
||||
`college_name` varchar(100) DEFAULT NULL COMMENT '学院名称(冗余字段)',
|
||||
`major` varchar(100) NOT NULL COMMENT '专业',
|
||||
`major_code` varchar(20) DEFAULT NULL COMMENT '专业代码',
|
||||
`training_type` varchar(20) DEFAULT NULL COMMENT '培养方式:全日制,在职,函授,夜大等',
|
||||
`degree_type` varchar(20) DEFAULT NULL COMMENT '学位类型:学士,硕士,博士,专科',
|
||||
|
||||
-- 人员配置
|
||||
`counselor_id` bigint(20) DEFAULT NULL COMMENT '辅导员ID,关联sys_user.id',
|
||||
`counselor_name` varchar(50) DEFAULT NULL COMMENT '辅导员姓名(冗余字段)',
|
||||
`head_teacher_id` bigint(20) DEFAULT NULL COMMENT '班主任ID,关联sys_user.id',
|
||||
`head_teacher_name` varchar(50) DEFAULT NULL COMMENT '班主任姓名(冗余字段)',
|
||||
`class_monitor_id` bigint(20) DEFAULT NULL COMMENT '班长ID,关联xg_student_info.id',
|
||||
`class_monitor_name` varchar(50) DEFAULT NULL COMMENT '班长姓名(冗余字段)',
|
||||
`deputy_monitor_id` bigint(20) DEFAULT NULL COMMENT '副班长ID,关联xg_student_info.id',
|
||||
`deputy_monitor_name` varchar(50) DEFAULT NULL COMMENT '副班长姓名(冗余字段)',
|
||||
|
||||
-- 班级规模
|
||||
`planned_capacity` int(11) DEFAULT 30 COMMENT '计划容量',
|
||||
`current_count` int(11) DEFAULT 0 COMMENT '当前人数',
|
||||
`male_count` int(11) DEFAULT 0 COMMENT '男生人数',
|
||||
`female_count` int(11) DEFAULT 0 COMMENT '女生人数',
|
||||
`active_count` int(11) DEFAULT 0 COMMENT '在籍人数',
|
||||
|
||||
-- 联系信息
|
||||
`office_location` varchar(200) DEFAULT NULL COMMENT '班级办公室位置',
|
||||
`contact_phone` varchar(20) DEFAULT NULL COMMENT '联系电话',
|
||||
`qq_group` varchar(20) DEFAULT NULL COMMENT 'QQ群号',
|
||||
`wechat_group` varchar(100) DEFAULT NULL COMMENT '微信群',
|
||||
`email` varchar(100) DEFAULT NULL COMMENT '班级邮箱',
|
||||
|
||||
-- 状态信息
|
||||
`class_status` char(1) DEFAULT '1' COMMENT '班级状态:1-正常,2-暂停,3-解散,4-合并,5-分流',
|
||||
`is_graduation` tinyint(1) DEFAULT 0 COMMENT '是否已毕业:0-未毕业,1-已毕业',
|
||||
`graduation_date` date DEFAULT NULL COMMENT '毕业日期',
|
||||
|
||||
-- 统计信息
|
||||
`last_count_update` datetime DEFAULT NULL COMMENT '最后统计更新时间',
|
||||
`transfer_in_count` int(11) DEFAULT 0 COMMENT '转入人数',
|
||||
`transfer_out_count` int(11) DEFAULT 0 COMMENT '转出人数',
|
||||
`dropout_count` int(11) DEFAULT 0 COMMENT '退学人数',
|
||||
`graduate_count` int(11) DEFAULT 0 COMMENT '毕业人数',
|
||||
|
||||
-- 其他字段
|
||||
`description` varchar(500) DEFAULT NULL COMMENT '班级描述',
|
||||
`sort_order` int(11) DEFAULT 0 COMMENT '排序顺序',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注信息',
|
||||
|
||||
-- 主键和索引
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE KEY `uk_class_code` (`class_code`, `tenant_id`),
|
||||
KEY `idx_tenant_id` (`tenant_id`),
|
||||
KEY `idx_deleted` (`deleted`),
|
||||
KEY `idx_grade` (`grade`),
|
||||
KEY `idx_college_id` (`college_id`),
|
||||
KEY `idx_major` (`major`),
|
||||
KEY `idx_counselor_id` (`counselor_id`),
|
||||
KEY `idx_head_teacher_id` (`head_teacher_id`),
|
||||
KEY `idx_class_status` (`class_status`),
|
||||
KEY `idx_enrollment_year` (`enrollment_year`),
|
||||
KEY `idx_is_graduation` (`is_graduation`),
|
||||
KEY `idx_college_grade` (`college_id`, `grade`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='班级信息表';
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for xg_collection_batch
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `xg_collection_batch`;
|
||||
CREATE TABLE `xg_collection_batch` (
|
||||
-- 标准基础字段(必须)
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
|
||||
`create_dept` bigint(20) DEFAULT NULL 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 '更新时间',
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
|
||||
-- 批次基础信息
|
||||
`batch_code` varchar(32) NOT NULL COMMENT '批次编号',
|
||||
`batch_name` varchar(100) NOT NULL COMMENT '批次名称',
|
||||
`batch_type` varchar(20) DEFAULT 'regular' COMMENT '批次类型:regular-常规采集,special-专项采集,urgent-紧急采集',
|
||||
`academic_year` varchar(10) NOT NULL COMMENT '学年,如:2024-2025',
|
||||
`semester` varchar(10) NOT NULL COMMENT '学期:spring-春季,autumn-秋季,summer-暑期',
|
||||
|
||||
-- 时间设置
|
||||
`start_time` datetime NOT NULL COMMENT '开始时间',
|
||||
`end_time` datetime NOT NULL COMMENT '结束时间',
|
||||
`extend_time` datetime DEFAULT NULL COMMENT '延期时间',
|
||||
`actual_end_time` datetime DEFAULT NULL COMMENT '实际结束时间',
|
||||
|
||||
-- 批次状态
|
||||
`batch_status` char(1) DEFAULT '1' COMMENT '批次状态:1-准备中,2-进行中,3-暂停,4-已结束,5-已归档',
|
||||
`is_auto_close` tinyint(1) DEFAULT 1 COMMENT '是否自动关闭:0-否,1-是',
|
||||
`is_extendable` tinyint(1) DEFAULT 1 COMMENT '是否可延期:0-否,1-是',
|
||||
|
||||
-- 范围设置
|
||||
`target_scope` varchar(20) DEFAULT 'all' COMMENT '目标范围:all-全校,college-学院,grade-年级,class-班级',
|
||||
`target_college_ids` varchar(500) DEFAULT NULL COMMENT '目标学院ID列表(逗号分隔)',
|
||||
`target_grade_list` varchar(100) DEFAULT NULL COMMENT '目标年级列表(逗号分隔)',
|
||||
`target_class_ids` varchar(500) DEFAULT NULL COMMENT '目标班级ID列表(逗号分隔)',
|
||||
`exclude_student_ids` text DEFAULT NULL COMMENT '排除学生ID列表(逗号分隔)',
|
||||
|
||||
-- 采集设置
|
||||
`required_fields` text DEFAULT NULL COMMENT '必填字段列表(JSON格式)',
|
||||
`optional_fields` text DEFAULT NULL COMMENT '可选字段列表(JSON格式)',
|
||||
`readonly_fields` text DEFAULT NULL COMMENT '只读字段列表(JSON格式)',
|
||||
`validation_rules` text DEFAULT NULL COMMENT '验证规则(JSON格式)',
|
||||
|
||||
-- 权限设置
|
||||
`student_editable` tinyint(1) DEFAULT 1 COMMENT '学生是否可编辑:0-否,1-是',
|
||||
`need_approval` tinyint(1) DEFAULT 1 COMMENT '是否需要审核:0-否,1-是',
|
||||
`approval_levels` tinyint(1) DEFAULT 3 COMMENT '审核级别数:1-一级,2-二级,3-三级',
|
||||
`auto_approve` tinyint(1) DEFAULT 0 COMMENT '是否自动审核:0-否,1-是',
|
||||
|
||||
-- 统计信息
|
||||
`total_target_count` int(11) DEFAULT 0 COMMENT '目标学生总数',
|
||||
`submitted_count` int(11) DEFAULT 0 COMMENT '已提交数量',
|
||||
`approved_count` int(11) DEFAULT 0 COMMENT '已审核通过数量',
|
||||
`rejected_count` int(11) DEFAULT 0 COMMENT '已驳回数量',
|
||||
`completion_rate` decimal(5,2) DEFAULT 0 COMMENT '完成率百分比',
|
||||
|
||||
-- 时间统计
|
||||
`first_submit_time` datetime DEFAULT NULL COMMENT '首次提交时间',
|
||||
`last_submit_time` datetime DEFAULT NULL COMMENT '最后提交时间',
|
||||
`avg_submit_duration` int(11) DEFAULT NULL COMMENT '平均提交时长(分钟)',
|
||||
|
||||
-- 其他字段
|
||||
`description` varchar(500) DEFAULT NULL COMMENT '批次描述',
|
||||
`notice_content` text DEFAULT NULL COMMENT '通知内容',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注信息',
|
||||
|
||||
-- 主键和索引
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE KEY `uk_batch_code` (`batch_code`, `tenant_id`),
|
||||
KEY `idx_tenant_id` (`tenant_id`),
|
||||
KEY `idx_deleted` (`deleted`),
|
||||
KEY `idx_batch_status` (`batch_status`),
|
||||
KEY `idx_academic_year` (`academic_year`),
|
||||
KEY `idx_start_time` (`start_time`),
|
||||
KEY `idx_end_time` (`end_time`),
|
||||
KEY `idx_create_time` (`create_time`),
|
||||
KEY `idx_year_semester` (`academic_year`, `semester`),
|
||||
KEY `idx_status_time` (`batch_status`, `start_time`, `end_time`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='信息采集批次表';
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for xg_audit_record
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `xg_audit_record`;
|
||||
CREATE TABLE `xg_audit_record` (
|
||||
-- 标准基础字段(必须)
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
|
||||
`create_dept` bigint(20) DEFAULT NULL 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 '更新时间',
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
|
||||
-- 审核关联信息
|
||||
`student_id` bigint(20) NOT NULL COMMENT '学生ID,关联xg_student_info.id',
|
||||
`student_number` varchar(32) NOT NULL COMMENT '学号',
|
||||
`student_name` varchar(50) NOT NULL COMMENT '学生姓名',
|
||||
`batch_id` bigint(20) NOT NULL COMMENT '批次ID,关联xg_collection_batch.id',
|
||||
`batch_code` varchar(32) NOT NULL COMMENT '批次编号',
|
||||
|
||||
-- 审核级别和流程
|
||||
`audit_level` tinyint(1) NOT NULL COMMENT '审核级别:1-辅导员/班主任,2-学院,3-学生处',
|
||||
`audit_sequence` int(11) NOT NULL COMMENT '审核顺序号',
|
||||
`is_current_step` tinyint(1) DEFAULT 0 COMMENT '是否当前步骤:0-否,1-是',
|
||||
|
||||
-- 审核人信息
|
||||
`auditor_id` bigint(20) NOT NULL COMMENT '审核人ID,关联sys_user.id',
|
||||
`auditor_name` varchar(50) NOT NULL COMMENT '审核人姓名',
|
||||
`auditor_role` varchar(20) NOT NULL COMMENT '审核人角色:counselor-辅导员,teacher-班主任,college-学院管理员,office-学生处',
|
||||
`auditor_dept` varchar(100) DEFAULT NULL COMMENT '审核人部门',
|
||||
|
||||
-- 审核结果
|
||||
`audit_result` char(1) DEFAULT '1' COMMENT '审核结果:1-待审核,2-通过,3-驳回,4-退回修改,5-转审',
|
||||
`audit_time` datetime DEFAULT NULL COMMENT '审核时间',
|
||||
`audit_duration` int(11) DEFAULT NULL COMMENT '审核用时(分钟)',
|
||||
|
||||
-- 审核意见
|
||||
`audit_opinion` varchar(500) DEFAULT NULL COMMENT '审核意见',
|
||||
`reject_reason` varchar(500) DEFAULT NULL COMMENT '驳回原因',
|
||||
`required_changes` text DEFAULT NULL COMMENT '要求修改的字段(JSON格式)',
|
||||
|
||||
-- 变更信息
|
||||
`changed_fields` text DEFAULT NULL COMMENT '变更字段列表(JSON格式)',
|
||||
`field_changes` text DEFAULT NULL COMMENT '字段变更详情(JSON格式)',
|
||||
`change_count` int(11) DEFAULT 0 COMMENT '变更字段数量',
|
||||
|
||||
-- 流程控制
|
||||
`next_auditor_id` bigint(20) DEFAULT NULL COMMENT '下一审核人ID',
|
||||
`next_auditor_name` varchar(50) DEFAULT NULL COMMENT '下一审核人姓名',
|
||||
`transfer_reason` varchar(200) DEFAULT NULL COMMENT '转审原因',
|
||||
`is_final_step` tinyint(1) DEFAULT 0 COMMENT '是否最终步骤:0-否,1-是',
|
||||
|
||||
-- 时间信息
|
||||
`submit_time` datetime DEFAULT NULL COMMENT '提交时间',
|
||||
`assign_time` datetime DEFAULT NULL COMMENT '分配时间',
|
||||
`deadline_time` datetime DEFAULT NULL COMMENT '截止时间',
|
||||
`reminder_count` int(11) DEFAULT 0 COMMENT '提醒次数',
|
||||
`last_reminder_time` datetime DEFAULT NULL COMMENT '最后提醒时间',
|
||||
|
||||
-- 其他字段
|
||||
`priority_level` tinyint(1) DEFAULT 3 COMMENT '优先级:1-最高,2-高,3-普通,4-低,5-最低',
|
||||
`attachment_ids` varchar(500) DEFAULT NULL COMMENT '附件ID列表(逗号分隔)',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注信息',
|
||||
|
||||
-- 主键和索引
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
KEY `idx_tenant_id` (`tenant_id`),
|
||||
KEY `idx_deleted` (`deleted`),
|
||||
KEY `idx_student_id` (`student_id`),
|
||||
KEY `idx_batch_id` (`batch_id`),
|
||||
KEY `idx_auditor_id` (`auditor_id`),
|
||||
KEY `idx_audit_result` (`audit_result`),
|
||||
KEY `idx_audit_level` (`audit_level`),
|
||||
KEY `idx_audit_time` (`audit_time`),
|
||||
KEY `idx_is_current_step` (`is_current_step`),
|
||||
KEY `idx_student_batch` (`student_id`, `batch_id`),
|
||||
KEY `idx_auditor_result` (`auditor_id`, `audit_result`),
|
||||
KEY `idx_batch_level` (`batch_id`, `audit_level`, `audit_result`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='审核记录表';
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for xg_class_student
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `xg_class_student`;
|
||||
CREATE TABLE `xg_class_student` (
|
||||
-- 标准基础字段(必须)
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
|
||||
|
||||
-- 关联信息
|
||||
`class_id` bigint(20) NOT NULL COMMENT '班级ID,关联xg_class_info.id',
|
||||
`student_id` bigint(20) NOT NULL COMMENT '学生ID,关联xg_student_info.id',
|
||||
`student_number` varchar(32) NOT NULL COMMENT '学号',
|
||||
`student_name` varchar(50) NOT NULL COMMENT '学生姓名(冗余字段)',
|
||||
|
||||
-- 班级职务
|
||||
`class_position` varchar(20) DEFAULT NULL COMMENT '班级职务:monitor-班长,deputy-副班长,secretary-学习委员,organizer-组织委员,publicity-宣传委员,sports-体育委员,life-生活委员,member-普通成员',
|
||||
`position_level` tinyint(1) DEFAULT 9 COMMENT '职务级别:1-班长,2-副班长,3-委员,9-普通成员',
|
||||
`appointment_time` datetime DEFAULT NULL COMMENT '任职时间',
|
||||
`term_end_time` datetime DEFAULT NULL COMMENT '任期结束时间',
|
||||
|
||||
-- 状态信息
|
||||
`relation_status` char(1) DEFAULT '1' COMMENT '关系状态:1-正常,2-转出,3-转入,4-休学,5-退学',
|
||||
`join_time` datetime DEFAULT NULL COMMENT '加入时间',
|
||||
`leave_time` datetime DEFAULT NULL COMMENT '离开时间',
|
||||
`transfer_reason` varchar(200) DEFAULT NULL COMMENT '转班原因',
|
||||
|
||||
-- 学号顺序
|
||||
`student_order` int(11) DEFAULT 0 COMMENT '班级内学号顺序',
|
||||
`seat_number` varchar(10) DEFAULT NULL COMMENT '座位号',
|
||||
`dormitory_info` varchar(100) DEFAULT NULL COMMENT '宿舍信息',
|
||||
|
||||
-- 其他字段
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注信息',
|
||||
|
||||
-- 主键和索引
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE KEY `uk_class_student` (`class_id`, `student_id`, `tenant_id`),
|
||||
KEY `idx_tenant_id` (`tenant_id`),
|
||||
KEY `idx_student_id` (`student_id`),
|
||||
KEY `idx_class_id` (`class_id`),
|
||||
KEY `idx_relation_status` (`relation_status`),
|
||||
KEY `idx_class_position` (`class_position`),
|
||||
KEY `idx_join_time` (`join_time`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='班级学生关联表';
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
@@ -1,442 +0,0 @@
|
||||
-- ==========================================
|
||||
-- 学生信息管理模块表结构完整修复脚本
|
||||
-- 版本:V2.0.0
|
||||
-- 功能:补充缺失字段,创建完整表结构
|
||||
-- 作者:Cursor AI 辅助
|
||||
-- 时间:2025-01-12
|
||||
-- 问题:代码期望的表结构与实际数据库表结构不匹配
|
||||
-- ==========================================
|
||||
|
||||
-- 设置字符集
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ----------------------------
|
||||
-- 检查并修复 xg_student_info 表结构
|
||||
-- ----------------------------
|
||||
|
||||
-- 先删除旧表(如果存在)
|
||||
DROP TABLE IF EXISTS `xg_student_info`;
|
||||
|
||||
-- 重新创建完整的 xg_student_info 表
|
||||
CREATE TABLE `xg_student_info` (
|
||||
-- 标准基础字段(必须)
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
|
||||
`create_dept` bigint(20) DEFAULT NULL 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 '更新时间',
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
|
||||
-- 基本信息字段(与XML映射完全匹配)
|
||||
`student_no` varchar(32) NOT NULL COMMENT '学号',
|
||||
`id_card` varchar(18) DEFAULT NULL COMMENT '身份证号',
|
||||
`name` varchar(50) NOT NULL COMMENT '姓名',
|
||||
`name_pinyin` varchar(200) DEFAULT NULL COMMENT '姓名拼音',
|
||||
`gender` char(1) NOT NULL COMMENT '性别:0-男,1-女',
|
||||
`birth_date` date DEFAULT NULL COMMENT '出生日期',
|
||||
`nation` varchar(20) DEFAULT NULL COMMENT '民族',
|
||||
`political_status` varchar(20) DEFAULT NULL COMMENT '政治面貌',
|
||||
|
||||
-- 学籍信息字段
|
||||
`student_status` char(1) DEFAULT '1' COMMENT '学籍状态:1-在籍,2-休学,3-复学,4-退学,5-毕业',
|
||||
`enrollment_year` int(4) DEFAULT NULL COMMENT '入学年份',
|
||||
`enrollment_date` date DEFAULT NULL COMMENT '入学日期',
|
||||
`school_system` int(2) DEFAULT 4 COMMENT '学制(年)',
|
||||
`education_level` varchar(20) DEFAULT NULL COMMENT '学历层次',
|
||||
`training_type` varchar(20) DEFAULT NULL COMMENT '培养方式',
|
||||
|
||||
-- 专业班级信息字段
|
||||
`major_code` varchar(20) DEFAULT NULL COMMENT '专业代码',
|
||||
`major_name` varchar(100) DEFAULT NULL COMMENT '专业名称',
|
||||
`class_code` varchar(32) DEFAULT NULL COMMENT '班级代码',
|
||||
`class_name` varchar(100) DEFAULT NULL COMMENT '班级名称',
|
||||
|
||||
-- 学院信息字段(关键缺失字段)
|
||||
`college_code` varchar(20) DEFAULT NULL COMMENT '学院代码',
|
||||
`college_name` varchar(100) DEFAULT NULL COMMENT '学院名称',
|
||||
|
||||
-- 教师信息字段
|
||||
`counselor_id` bigint(20) DEFAULT NULL COMMENT '辅导员ID',
|
||||
`counselor_name` varchar(50) DEFAULT NULL COMMENT '辅导员姓名',
|
||||
`class_teacher_id` bigint(20) DEFAULT NULL COMMENT '班主任ID',
|
||||
`class_teacher_name` varchar(50) DEFAULT NULL COMMENT '班主任姓名',
|
||||
|
||||
-- 联系信息字段
|
||||
`phone` varchar(20) DEFAULT NULL COMMENT '手机号码',
|
||||
`email` varchar(100) DEFAULT NULL COMMENT '电子邮箱',
|
||||
`qq` varchar(20) DEFAULT NULL COMMENT 'QQ号码',
|
||||
`wechat` varchar(50) DEFAULT NULL COMMENT '微信号',
|
||||
|
||||
-- 地址信息字段
|
||||
`dorm_building` varchar(50) DEFAULT NULL COMMENT '宿舍楼栋',
|
||||
`dorm_room` varchar(20) DEFAULT NULL COMMENT '宿舍房间',
|
||||
`home_address` varchar(200) DEFAULT NULL COMMENT '家庭地址',
|
||||
`home_zip_code` varchar(10) DEFAULT NULL COMMENT '家庭邮编',
|
||||
|
||||
-- 紧急联系人信息字段
|
||||
`emergency_contact` varchar(50) DEFAULT NULL COMMENT '紧急联系人',
|
||||
`emergency_phone` varchar(20) DEFAULT NULL COMMENT '紧急联系人电话',
|
||||
`emergency_relation` varchar(20) DEFAULT NULL COMMENT '紧急联系人关系',
|
||||
|
||||
-- 家庭信息字段
|
||||
`family_address` varchar(200) DEFAULT NULL COMMENT '家庭住址',
|
||||
`family_zip_code` varchar(10) DEFAULT NULL COMMENT '家庭邮编',
|
||||
`father_name` varchar(50) DEFAULT NULL COMMENT '父亲姓名',
|
||||
`father_phone` varchar(20) DEFAULT NULL COMMENT '父亲电话',
|
||||
`father_job` varchar(100) DEFAULT NULL COMMENT '父亲工作',
|
||||
`mother_name` varchar(50) DEFAULT NULL COMMENT '母亲姓名',
|
||||
`mother_phone` varchar(20) DEFAULT NULL COMMENT '母亲电话',
|
||||
`mother_job` varchar(100) DEFAULT NULL COMMENT '母亲工作',
|
||||
`guardian_name` varchar(50) DEFAULT NULL COMMENT '监护人姓名',
|
||||
`guardian_phone` varchar(20) DEFAULT NULL COMMENT '监护人电话',
|
||||
`guardian_relation` varchar(20) DEFAULT NULL COMMENT '监护人关系',
|
||||
|
||||
-- 健康信息字段
|
||||
`health_status` varchar(20) DEFAULT NULL COMMENT '健康状况',
|
||||
`allergies` varchar(200) DEFAULT NULL COMMENT '过敏史',
|
||||
`medical_history` varchar(500) DEFAULT NULL COMMENT '病史',
|
||||
`blood_type` varchar(5) DEFAULT NULL COMMENT '血型',
|
||||
`height` decimal(5,2) DEFAULT NULL COMMENT '身高(cm)',
|
||||
`weight` decimal(5,2) DEFAULT NULL COMMENT '体重(kg)',
|
||||
|
||||
-- 个人特征字段
|
||||
`hobbies` varchar(200) DEFAULT NULL COMMENT '兴趣爱好',
|
||||
`specialties` varchar(200) DEFAULT NULL COMMENT '特长',
|
||||
`personal_statement` text DEFAULT NULL COMMENT '个人简介',
|
||||
|
||||
-- 特殊群体标识字段(关键缺失字段)
|
||||
`is_orphan` tinyint(1) DEFAULT 0 COMMENT '是否孤儿:0-否,1-是',
|
||||
`is_disabled` tinyint(1) DEFAULT 0 COMMENT '是否残疾:0-否,1-是',
|
||||
`is_minority` tinyint(1) DEFAULT 0 COMMENT '是否少数民族:0-否,1-是',
|
||||
`is_from_poor_family` tinyint(1) DEFAULT 0 COMMENT '是否贫困生:0-否,1-是',
|
||||
|
||||
-- 资助信息字段
|
||||
`poverty_level` varchar(20) DEFAULT NULL COMMENT '贫困等级',
|
||||
`has_grant` tinyint(1) DEFAULT 0 COMMENT '是否有助学金:0-否,1-是',
|
||||
`grant_amount` decimal(10,2) DEFAULT NULL COMMENT '助学金金额',
|
||||
`has_loan` tinyint(1) DEFAULT 0 COMMENT '是否有助学贷款:0-否,1-是',
|
||||
`loan_amount` decimal(10,2) DEFAULT NULL COMMENT '助学贷款金额',
|
||||
|
||||
-- 银行信息字段
|
||||
`bank_card_no` varchar(30) DEFAULT NULL COMMENT '银行卡号',
|
||||
`bank_name` varchar(100) DEFAULT NULL COMMENT '开户银行',
|
||||
`bank_branch` varchar(100) DEFAULT NULL COMMENT '开户支行',
|
||||
|
||||
-- 状态管理字段
|
||||
`info_status` char(1) DEFAULT '1' COMMENT '信息状态:1-正常,2-待审核,3-审核中,4-已驳回,5-已锁定',
|
||||
`data_source` varchar(20) DEFAULT 'manual' COMMENT '数据来源:manual-手工录入,import-批量导入,sync-系统同步',
|
||||
`last_batch_id` bigint(20) DEFAULT NULL COMMENT '最后修改批次ID',
|
||||
`last_audit_time` datetime DEFAULT NULL COMMENT '最后审核时间',
|
||||
|
||||
-- 扩展字段
|
||||
`ext_field1` varchar(200) DEFAULT NULL COMMENT '扩展字段1',
|
||||
`ext_field2` varchar(200) DEFAULT NULL COMMENT '扩展字段2',
|
||||
`ext_field3` varchar(200) DEFAULT NULL COMMENT '扩展字段3',
|
||||
`ext_field4` varchar(200) DEFAULT NULL COMMENT '扩展字段4',
|
||||
`ext_field5` varchar(500) DEFAULT NULL COMMENT '扩展字段5',
|
||||
|
||||
-- 备注字段
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注信息',
|
||||
|
||||
-- 主键和索引
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE KEY `uk_student_no_tenant` (`student_no`, `tenant_id`),
|
||||
UNIQUE KEY `uk_id_card_tenant` (`id_card`, `tenant_id`),
|
||||
KEY `idx_tenant_id` (`tenant_id`),
|
||||
KEY `idx_deleted` (`deleted`),
|
||||
KEY `idx_name` (`name`),
|
||||
KEY `idx_college_code` (`college_code`),
|
||||
KEY `idx_class_code` (`class_code`),
|
||||
KEY `idx_student_status` (`student_status`),
|
||||
KEY `idx_info_status` (`info_status`),
|
||||
KEY `idx_enrollment_year` (`enrollment_year`),
|
||||
KEY `idx_major_code` (`major_code`),
|
||||
KEY `idx_counselor_id` (`counselor_id`),
|
||||
KEY `idx_class_teacher_id` (`class_teacher_id`),
|
||||
KEY `idx_last_batch_id` (`last_batch_id`),
|
||||
KEY `idx_phone` (`phone`),
|
||||
KEY `idx_create_time` (`create_time`),
|
||||
KEY `idx_college_class` (`college_code`, `class_code`),
|
||||
KEY `idx_status_filter` (`tenant_id`, `student_status`, `info_status`, `deleted`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生信息表';
|
||||
|
||||
-- ----------------------------
|
||||
-- 检查并修复 xg_class_info 表结构
|
||||
-- ----------------------------
|
||||
|
||||
-- 先删除旧表(如果存在)
|
||||
DROP TABLE IF EXISTS `xg_class_info`;
|
||||
|
||||
-- 重新创建完整的 xg_class_info 表
|
||||
CREATE TABLE `xg_class_info` (
|
||||
-- 标准基础字段(必须)
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
|
||||
`create_dept` bigint(20) DEFAULT NULL 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 '更新时间',
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
|
||||
-- 班级基础信息
|
||||
`class_code` varchar(32) NOT NULL COMMENT '班级代码',
|
||||
`class_name` varchar(100) NOT NULL COMMENT '班级名称',
|
||||
`class_type` varchar(20) DEFAULT 'regular' COMMENT '班级类型',
|
||||
`grade` varchar(10) NOT NULL COMMENT '年级',
|
||||
`enrollment_year` int(4) NOT NULL COMMENT '入学年份',
|
||||
`graduation_year` int(4) DEFAULT NULL COMMENT '毕业年份',
|
||||
|
||||
-- 专业信息
|
||||
`major_code` varchar(20) DEFAULT NULL COMMENT '专业代码',
|
||||
`major_name` varchar(100) DEFAULT NULL COMMENT '专业名称',
|
||||
|
||||
-- 学院信息(关键字段)
|
||||
`college_code` varchar(20) DEFAULT NULL COMMENT '学院代码',
|
||||
`college_name` varchar(100) DEFAULT NULL COMMENT '学院名称',
|
||||
|
||||
-- 教师信息
|
||||
`counselor_id` bigint(20) DEFAULT NULL COMMENT '辅导员ID',
|
||||
`counselor_name` varchar(50) DEFAULT NULL COMMENT '辅导员姓名',
|
||||
`class_teacher_id` bigint(20) DEFAULT NULL COMMENT '班主任ID',
|
||||
`class_teacher_name` varchar(50) DEFAULT NULL COMMENT '班主任姓名',
|
||||
|
||||
-- 班级状态
|
||||
`class_status` char(1) DEFAULT '1' COMMENT '班级状态:1-正常,2-暂停,3-毕业,4-解散',
|
||||
|
||||
-- 人数统计
|
||||
`current_student_count` int(11) DEFAULT 0 COMMENT '当前学生人数',
|
||||
`max_student_count` int(11) DEFAULT 50 COMMENT '最大学生人数',
|
||||
`male_count` int(11) DEFAULT 0 COMMENT '男生人数',
|
||||
`female_count` int(11) DEFAULT 0 COMMENT '女生人数',
|
||||
|
||||
-- 班级描述
|
||||
`class_description` varchar(500) DEFAULT NULL COMMENT '班级描述',
|
||||
`class_notes` varchar(500) DEFAULT NULL COMMENT '班级备注',
|
||||
|
||||
-- 扩展字段
|
||||
`ext_field1` varchar(200) DEFAULT NULL COMMENT '扩展字段1',
|
||||
`ext_field2` varchar(200) DEFAULT NULL COMMENT '扩展字段2',
|
||||
`ext_field3` varchar(200) DEFAULT NULL COMMENT '扩展字段3',
|
||||
|
||||
-- 备注字段
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注信息',
|
||||
|
||||
-- 主键和索引
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE KEY `uk_class_code_tenant` (`class_code`, `tenant_id`),
|
||||
KEY `idx_tenant_id` (`tenant_id`),
|
||||
KEY `idx_deleted` (`deleted`),
|
||||
KEY `idx_college_code` (`college_code`),
|
||||
KEY `idx_enrollment_year` (`enrollment_year`),
|
||||
KEY `idx_grade` (`grade`),
|
||||
KEY `idx_major_code` (`major_code`),
|
||||
KEY `idx_counselor_id` (`counselor_id`),
|
||||
KEY `idx_class_teacher_id` (`class_teacher_id`),
|
||||
KEY `idx_class_status` (`class_status`),
|
||||
KEY `idx_college_grade` (`college_code`, `grade`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='班级信息表';
|
||||
|
||||
-- ----------------------------
|
||||
-- 创建其他相关表(保持原有设计)
|
||||
-- ----------------------------
|
||||
|
||||
-- 班级学生关联表
|
||||
DROP TABLE IF EXISTS `xg_class_student`;
|
||||
CREATE TABLE `xg_class_student` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`tenant_id` varchar(20) NOT NULL 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 '更新时间',
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
|
||||
`class_id` bigint(20) NOT NULL COMMENT '班级ID',
|
||||
`student_id` bigint(20) NOT NULL COMMENT '学生ID',
|
||||
`student_no` varchar(32) NOT NULL COMMENT '学号',
|
||||
`class_position` varchar(20) DEFAULT NULL COMMENT '班级职务',
|
||||
`join_time` datetime DEFAULT NULL COMMENT '加入时间',
|
||||
`leave_time` datetime DEFAULT NULL COMMENT '离开时间',
|
||||
`relation_status` char(1) DEFAULT '1' COMMENT '关系状态:1-正常,2-转出,3-转入,4-休学,5-退学',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE KEY `uk_class_student` (`class_id`, `student_id`, `tenant_id`),
|
||||
KEY `idx_tenant_id` (`tenant_id`),
|
||||
KEY `idx_student_id` (`student_id`),
|
||||
KEY `idx_relation_status` (`relation_status`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='班级学生关联表';
|
||||
|
||||
-- 信息采集批次表
|
||||
DROP TABLE IF EXISTS `xg_collection_batch`;
|
||||
CREATE TABLE `xg_collection_batch` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
|
||||
`create_dept` bigint(20) DEFAULT NULL 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 '更新时间',
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
|
||||
`batch_code` varchar(32) NOT NULL COMMENT '批次编号',
|
||||
`batch_name` varchar(100) NOT NULL COMMENT '批次名称',
|
||||
`batch_type` varchar(20) DEFAULT 'regular' COMMENT '批次类型',
|
||||
`batch_description` varchar(500) DEFAULT NULL COMMENT '批次描述',
|
||||
`start_time` datetime NOT NULL COMMENT '开始时间',
|
||||
`end_time` datetime NOT NULL COMMENT '结束时间',
|
||||
`batch_status` char(1) DEFAULT '1' COMMENT '批次状态:1-准备中,2-进行中,3-已结束',
|
||||
`target_count` int(11) DEFAULT 0 COMMENT '目标数量',
|
||||
`current_count` int(11) DEFAULT 0 COMMENT '当前数量',
|
||||
`completed_count` int(11) DEFAULT 0 COMMENT '完成数量',
|
||||
`approved_count` int(11) DEFAULT 0 COMMENT '审核通过数量',
|
||||
`rejected_count` int(11) DEFAULT 0 COMMENT '审核驳回数量',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE KEY `uk_batch_code` (`batch_code`, `tenant_id`),
|
||||
KEY `idx_tenant_id` (`tenant_id`),
|
||||
KEY `idx_batch_status` (`batch_status`),
|
||||
KEY `idx_start_time` (`start_time`),
|
||||
KEY `idx_end_time` (`end_time`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='信息采集批次表';
|
||||
|
||||
-- 审核记录表
|
||||
DROP TABLE IF EXISTS `xg_audit_record`;
|
||||
CREATE TABLE `xg_audit_record` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
|
||||
`create_dept` bigint(20) DEFAULT NULL 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 '更新时间',
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
|
||||
`business_type` varchar(20) NOT NULL COMMENT '业务类型',
|
||||
`business_id` bigint(20) NOT NULL COMMENT '业务ID',
|
||||
`batch_id` bigint(20) NOT NULL COMMENT '批次ID',
|
||||
`audit_level` tinyint(1) NOT NULL COMMENT '审核级别',
|
||||
`audit_order` int(11) DEFAULT 1 COMMENT '审核顺序',
|
||||
`auditor_id` bigint(20) NOT NULL COMMENT '审核人ID',
|
||||
`auditor_name` varchar(50) NOT NULL COMMENT '审核人姓名',
|
||||
`audit_status` char(1) DEFAULT '1' COMMENT '审核状态:1-待审核,2-审核中,3-已通过,4-已驳回',
|
||||
`audit_result` varchar(20) DEFAULT NULL COMMENT '审核结果',
|
||||
`audit_opinion` varchar(500) DEFAULT NULL COMMENT '审核意见',
|
||||
`final_result` varchar(20) DEFAULT NULL COMMENT '最终结果',
|
||||
`submit_time` datetime DEFAULT NULL COMMENT '提交时间',
|
||||
`audit_time` datetime DEFAULT NULL COMMENT '审核时间',
|
||||
`submitter_id` bigint(20) DEFAULT NULL COMMENT '提交人ID',
|
||||
`submitter_name` varchar(50) DEFAULT NULL COMMENT '提交人姓名',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
KEY `idx_tenant_id` (`tenant_id`),
|
||||
KEY `idx_business` (`business_type`, `business_id`),
|
||||
KEY `idx_batch_id` (`batch_id`),
|
||||
KEY `idx_auditor_id` (`auditor_id`),
|
||||
KEY `idx_audit_status` (`audit_status`),
|
||||
KEY `idx_submit_time` (`submit_time`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='审核记录表';
|
||||
|
||||
-- ----------------------------
|
||||
-- 插入示例数据(用于测试)
|
||||
-- ----------------------------
|
||||
|
||||
-- 插入学院示例数据
|
||||
INSERT INTO `xg_student_info` (
|
||||
`id`, `tenant_id`, `student_no`, `name`, `gender`, `birth_date`, `id_card`, `phone`, `email`,
|
||||
`major_code`, `major_name`, `class_code`, `class_name`,
|
||||
`college_code`, `college_name`, `enrollment_year`, `student_status`, `info_status`,
|
||||
`is_from_poor_family`, `is_minority`, `is_disabled`, `is_orphan`,
|
||||
`create_by`, `create_time`, `update_by`, `update_time`
|
||||
) VALUES
|
||||
(1, '000000', '2023001001', '张三', 'M', '2000-01-01', '110101200001010001', '13800138001', 'zhangsan@example.com',
|
||||
'CS001', '计算机科学与技术', 'CS2023001', '计算机2023-1班',
|
||||
'CS', '计算机学院', 2023, '1', '1',
|
||||
0, 0, 0, 0,
|
||||
1, NOW(), 1, NOW()),
|
||||
(2, '000000', '2023001002', '李四', 'F', '2000-02-02', '110101200002020002', '13800138002', 'lisi@example.com',
|
||||
'CS001', '计算机科学与技术', 'CS2023001', '计算机2023-1班',
|
||||
'CS', '计算机学院', 2023, '1', '1',
|
||||
1, 0, 0, 0,
|
||||
1, NOW(), 1, NOW()),
|
||||
(3, '000000', '2023002001', '王五', 'M', '2000-03-03', '110101200003030003', '13800138003', 'wangwu@example.com',
|
||||
'EE001', '电子信息工程', 'EE2023001', '电子2023-1班',
|
||||
'EE', '电子信息学院', 2023, '1', '1',
|
||||
0, 1, 0, 0,
|
||||
1, NOW(), 1, NOW());
|
||||
|
||||
-- 插入班级示例数据
|
||||
INSERT INTO `xg_class_info` (
|
||||
`id`, `tenant_id`, `class_code`, `class_name`, `class_type`, `grade`, `enrollment_year`, `graduation_year`,
|
||||
`major_code`, `major_name`, `college_code`, `college_name`,
|
||||
`class_status`, `current_student_count`, `max_student_count`, `male_count`, `female_count`,
|
||||
`create_by`, `create_time`, `update_by`, `update_time`
|
||||
) VALUES
|
||||
(1, '000000', 'CS2023001', '计算机2023-1班', '本科', '2023', 2023, 2027,
|
||||
'CS001', '计算机科学与技术', 'CS', '计算机学院',
|
||||
'1', 2, 50, 1, 1,
|
||||
1, NOW(), 1, NOW()),
|
||||
(2, '000000', 'EE2023001', '电子2023-1班', '本科', '2023', 2023, 2027,
|
||||
'EE001', '电子信息工程', 'EE', '电子信息学院',
|
||||
'1', 1, 50, 1, 0,
|
||||
1, NOW(), 1, NOW());
|
||||
|
||||
-- ----------------------------
|
||||
-- 验证表结构和数据
|
||||
-- ----------------------------
|
||||
|
||||
-- 验证 xg_student_info 表结构
|
||||
SELECT '=== xg_student_info 表结构验证 ===' as 'Result';
|
||||
DESC xg_student_info;
|
||||
|
||||
-- 验证关键字段是否存在
|
||||
SELECT '=== 关键字段验证 ===' as 'Result';
|
||||
SELECT
|
||||
CASE WHEN COUNT(*) > 0 THEN '✅ college_code 字段存在' ELSE '❌ college_code 字段缺失' END as 'college_code_check'
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'college_code';
|
||||
|
||||
SELECT
|
||||
CASE WHEN COUNT(*) > 0 THEN '✅ is_from_poor_family 字段存在' ELSE '❌ is_from_poor_family 字段缺失' END as 'poor_family_check'
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'is_from_poor_family';
|
||||
|
||||
-- 测试统计查询(原来报错的SQL)
|
||||
SELECT '=== 统计查询测试 ===' as 'Result';
|
||||
SELECT
|
||||
college_code,
|
||||
college_name,
|
||||
count(*) as total_count,
|
||||
sum(case when gender = 'M' then 1 else 0 end) as male_count,
|
||||
sum(case when gender = 'F' then 1 else 0 end) as female_count,
|
||||
sum(case when student_status = '1' then 1 else 0 end) as active_count,
|
||||
sum(case when student_status = '2' then 1 else 0 end) as suspended_count,
|
||||
sum(case when student_status = '5' then 1 else 0 end) as graduated_count,
|
||||
sum(case when is_from_poor_family = 1 then 1 else 0 end) as poor_family_count,
|
||||
sum(case when is_minority = 1 then 1 else 0 end) as minority_count,
|
||||
sum(case when is_disabled = 1 then 1 else 0 end) as disabled_count,
|
||||
sum(case when is_orphan = 1 then 1 else 0 end) as orphan_count
|
||||
FROM xg_student_info
|
||||
WHERE deleted = 0 AND tenant_id = '000000'
|
||||
GROUP BY college_code, college_name
|
||||
ORDER BY college_code;
|
||||
|
||||
-- 恢复外键检查
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
||||
-- ----------------------------
|
||||
-- 脚本执行完成提示
|
||||
-- ----------------------------
|
||||
SELECT '==============================' as 'Result';
|
||||
SELECT '✅ 学生信息管理表结构修复完成!' as 'Result';
|
||||
SELECT '✅ 所有缺失字段已补充' as 'Result';
|
||||
SELECT '✅ 统计查询功能已修复' as 'Result';
|
||||
SELECT '✅ 示例数据已插入' as 'Result';
|
||||
SELECT '请重启后端服务并刷新前端页面' as 'Result';
|
||||
SELECT '==============================' as 'Result';
|
||||
@@ -1,122 +0,0 @@
|
||||
-- ==========================================
|
||||
-- 学生信息表字段名修复脚本
|
||||
-- 版本:V2.1.0
|
||||
-- 功能:修复字段名不匹配问题
|
||||
-- 作者:Cursor AI 辅助
|
||||
-- 时间:2025-01-12
|
||||
-- 问题:数据库字段名与实体类字段名(驼峰转下划线)不匹配
|
||||
-- ==========================================
|
||||
|
||||
-- 设置字符集
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ----------------------------
|
||||
-- 修复 xg_student_info 表字段名
|
||||
-- ----------------------------
|
||||
|
||||
-- 1. 添加缺失的字段
|
||||
ALTER TABLE `xg_student_info`
|
||||
ADD COLUMN `current_address` varchar(200) DEFAULT NULL COMMENT '现住址' AFTER `wechat`,
|
||||
ADD COLUMN `domicile_place` varchar(100) DEFAULT NULL COMMENT '户籍所在地' AFTER `home_address`,
|
||||
ADD COLUMN `special_condition` varchar(200) DEFAULT NULL COMMENT '特殊体质或疾病' AFTER `weight`;
|
||||
|
||||
-- 2. 重命名字段以匹配实体类
|
||||
ALTER TABLE `xg_student_info`
|
||||
CHANGE COLUMN `emergency_contact` `emergency_contact_name` varchar(50) DEFAULT NULL COMMENT '紧急联系人姓名',
|
||||
CHANGE COLUMN `emergency_relation` `emergency_contact_relation` varchar(20) DEFAULT NULL COMMENT '紧急联系人关系',
|
||||
CHANGE COLUMN `emergency_phone` `emergency_contact_phone` varchar(20) DEFAULT NULL COMMENT '紧急联系人电话',
|
||||
CHANGE COLUMN `father_job` `father_work_unit` varchar(100) DEFAULT NULL COMMENT '父亲工作单位',
|
||||
CHANGE COLUMN `mother_job` `mother_work_unit` varchar(100) DEFAULT NULL COMMENT '母亲工作单位',
|
||||
CHANGE COLUMN `is_from_poor_family` `is_poor_student` tinyint(1) DEFAULT 0 COMMENT '是否贫困生:0-否,1-是';
|
||||
|
||||
-- 3. 删除不需要的重复字段(如果存在)
|
||||
-- ALTER TABLE `xg_student_info` DROP COLUMN IF EXISTS `home_zip_code`;
|
||||
-- ALTER TABLE `xg_student_info` DROP COLUMN IF EXISTS `family_zip_code`;
|
||||
|
||||
-- 4. 确保邮政编码字段正确
|
||||
ALTER TABLE `xg_student_info`
|
||||
CHANGE COLUMN `home_zip_code` `postal_code` varchar(10) DEFAULT NULL COMMENT '邮政编码';
|
||||
|
||||
-- ----------------------------
|
||||
-- 验证修复结果
|
||||
-- ----------------------------
|
||||
|
||||
-- 检查关键字段是否存在
|
||||
SELECT '=== 字段修复验证 ===' as 'Result';
|
||||
|
||||
SELECT
|
||||
CASE WHEN COUNT(*) > 0 THEN '✅ current_address 字段存在' ELSE '❌ current_address 字段缺失' END as 'current_address_check'
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'current_address';
|
||||
|
||||
SELECT
|
||||
CASE WHEN COUNT(*) > 0 THEN '✅ domicile_place 字段存在' ELSE '❌ domicile_place 字段缺失' END as 'domicile_place_check'
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'domicile_place';
|
||||
|
||||
SELECT
|
||||
CASE WHEN COUNT(*) > 0 THEN '✅ emergency_contact_name 字段存在' ELSE '❌ emergency_contact_name 字段缺失' END as 'emergency_contact_name_check'
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'emergency_contact_name';
|
||||
|
||||
SELECT
|
||||
CASE WHEN COUNT(*) > 0 THEN '✅ emergency_contact_relation 字段存在' ELSE '❌ emergency_contact_relation 字段缺失' END as 'emergency_contact_relation_check'
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'emergency_contact_relation';
|
||||
|
||||
SELECT
|
||||
CASE WHEN COUNT(*) > 0 THEN '✅ emergency_contact_phone 字段存在' ELSE '❌ emergency_contact_phone 字段缺失' END as 'emergency_contact_phone_check'
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'emergency_contact_phone';
|
||||
|
||||
SELECT
|
||||
CASE WHEN COUNT(*) > 0 THEN '✅ father_work_unit 字段存在' ELSE '❌ father_work_unit 字段缺失' END as 'father_work_unit_check'
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'father_work_unit';
|
||||
|
||||
SELECT
|
||||
CASE WHEN COUNT(*) > 0 THEN '✅ mother_work_unit 字段存在' ELSE '❌ mother_work_unit 字段缺失' END as 'mother_work_unit_check'
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'mother_work_unit';
|
||||
|
||||
SELECT
|
||||
CASE WHEN COUNT(*) > 0 THEN '✅ special_condition 字段存在' ELSE '❌ special_condition 字段缺失' END as 'special_condition_check'
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'special_condition';
|
||||
|
||||
SELECT
|
||||
CASE WHEN COUNT(*) > 0 THEN '✅ is_poor_student 字段存在' ELSE '❌ is_poor_student 字段缺失' END as 'is_poor_student_check'
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'is_poor_student';
|
||||
|
||||
SELECT
|
||||
CASE WHEN COUNT(*) > 0 THEN '✅ postal_code 字段存在' ELSE '❌ postal_code 字段缺失' END as 'postal_code_check'
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'postal_code';
|
||||
|
||||
-- 测试之前报错的SQL查询
|
||||
SELECT '=== SQL查询测试 ===' as 'Result';
|
||||
|
||||
SELECT COUNT(*) as '查询测试结果'
|
||||
FROM xg_student_info
|
||||
WHERE tenant_id = '000000'
|
||||
AND deleted = 0
|
||||
LIMIT 1;
|
||||
|
||||
-- 显示最终表结构
|
||||
SELECT '=== 最终表结构 ===' as 'Result';
|
||||
DESC xg_student_info;
|
||||
|
||||
-- 恢复外键检查
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
||||
-- ----------------------------
|
||||
-- 脚本执行完成提示
|
||||
-- ----------------------------
|
||||
SELECT '==============================' as 'Result';
|
||||
SELECT '✅ 字段名修复完成!' as 'Result';
|
||||
SELECT '✅ 所有字段名已与实体类匹配' as 'Result';
|
||||
SELECT '✅ MyBatis-Plus 字段映射已修复' as 'Result';
|
||||
SELECT '请重启后端服务并重新测试' as 'Result';
|
||||
SELECT '==============================' as 'Result';
|
||||
@@ -1,97 +0,0 @@
|
||||
-- ==========================================
|
||||
-- 添加缺失的religion字段
|
||||
-- 版本:V2.2.1
|
||||
-- 功能:添加遗漏的宗教信仰字段(兼容MySQL语法)
|
||||
-- 作者:Cursor AI 辅助
|
||||
-- 时间:2025-01-12
|
||||
-- 问题:实体类中有religion字段,但数据库表中缺失
|
||||
-- ==========================================
|
||||
|
||||
-- 设置字符集
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ----------------------------
|
||||
-- 添加缺失的 religion 字段
|
||||
-- ----------------------------
|
||||
|
||||
-- 检查字段是否已存在
|
||||
SELECT '=== 检查religion字段是否存在 ===' as 'Result';
|
||||
|
||||
SELECT
|
||||
CASE WHEN COUNT(*) > 0 THEN '✅ religion 字段已存在' ELSE '❌ religion 字段不存在,需要添加' END as 'religion_check'
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'religion';
|
||||
|
||||
-- 直接添加 religion 字段
|
||||
ALTER TABLE `xg_student_info`
|
||||
ADD COLUMN `religion` varchar(20) DEFAULT NULL COMMENT '宗教信仰' AFTER `special_condition`;
|
||||
|
||||
-- 验证字段添加结果
|
||||
SELECT '=== 验证religion字段添加结果 ===' as 'Result';
|
||||
|
||||
SELECT
|
||||
CASE WHEN COUNT(*) > 0 THEN '✅ religion 字段添加成功' ELSE '❌ religion 字段添加失败' END as 'religion_add_result'
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'religion';
|
||||
|
||||
-- 测试包含religion字段的查询
|
||||
SELECT '=== 测试包含religion字段的查询 ===' as 'Result';
|
||||
|
||||
SELECT COUNT(*) as '包含religion字段的查询测试'
|
||||
FROM xg_student_info
|
||||
WHERE tenant_id = '000000'
|
||||
AND deleted = 0
|
||||
LIMIT 1;
|
||||
|
||||
-- 显示最终字段统计
|
||||
SELECT '=== 最终字段统计 ===' as 'Result';
|
||||
|
||||
SELECT COUNT(*) as '总字段数'
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info';
|
||||
|
||||
-- 验证所有关键字段都存在
|
||||
SELECT '=== 验证所有关键字段 ===' as 'Result';
|
||||
|
||||
SELECT
|
||||
'religion' as field_name,
|
||||
CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'religion'
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
'current_address' as field_name,
|
||||
CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'current_address'
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
'special_condition' as field_name,
|
||||
CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'special_condition'
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
'is_poor_student' as field_name,
|
||||
CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'is_poor_student';
|
||||
|
||||
-- 恢复外键检查
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
||||
-- ----------------------------
|
||||
-- 脚本执行完成提示
|
||||
-- ----------------------------
|
||||
SELECT '==============================' as 'Result';
|
||||
SELECT '✅ religion字段添加完成!' as 'Result';
|
||||
SELECT '✅ 解决Unknown column religion错误' as 'Result';
|
||||
SELECT '请重启后端服务并重新测试' as 'Result';
|
||||
SELECT '==============================' as 'Result';
|
||||
@@ -1,717 +0,0 @@
|
||||
-- =============================================
|
||||
-- 学生信息管理系统数据库设计
|
||||
-- 创建时间: 2025-01-12
|
||||
-- 版本: v1.0
|
||||
-- 说明: 学生信息管理系统完整数据库设计
|
||||
-- =============================================
|
||||
|
||||
-- 1. 学年管理表
|
||||
DROP TABLE IF EXISTS `xg_academic_year`;
|
||||
CREATE TABLE `xg_academic_year` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`year_code` varchar(20) NOT NULL COMMENT '学年编码,如2024-2025',
|
||||
`year_name` varchar(50) NOT NULL COMMENT '学年名称,如2024-2025学年',
|
||||
`start_date` date NOT NULL COMMENT '学年开始日期',
|
||||
`end_date` date NOT NULL COMMENT '学年结束日期',
|
||||
`is_current` tinyint(1) DEFAULT 0 COMMENT '是否当前学年:0-否,1-是',
|
||||
`status` varchar(20) DEFAULT 'active' COMMENT '状态:active-有效,inactive-无效',
|
||||
`description` text COMMENT '学年描述',
|
||||
`sort_order` int(11) DEFAULT 0 COMMENT '排序字段',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
-- 基础字段
|
||||
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
|
||||
`create_dept` bigint(20) DEFAULT NULL 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 '更新时间',
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE KEY `uk_year_code` (`year_code`, `tenant_id`, `deleted`) USING BTREE,
|
||||
KEY `idx_tenant_id` (`tenant_id`) USING BTREE,
|
||||
KEY `idx_is_current` (`is_current`) USING BTREE,
|
||||
KEY `idx_status` (`status`) USING BTREE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学年管理表';
|
||||
|
||||
-- 2. 学期管理表
|
||||
DROP TABLE IF EXISTS `xg_semester`;
|
||||
CREATE TABLE `xg_semester` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`academic_year_id` bigint(20) NOT NULL COMMENT '学年ID,关联xg_academic_year.id',
|
||||
`semester_code` varchar(20) NOT NULL COMMENT '学期编码,如2024-2025-1',
|
||||
`semester_name` varchar(50) NOT NULL COMMENT '学期名称,如2024-2025学年第一学期',
|
||||
`semester_type` varchar(20) NOT NULL COMMENT '学期类型:first-第一学期,second-第二学期,summer-暑期',
|
||||
`start_date` date NOT NULL COMMENT '学期开始日期',
|
||||
`end_date` date NOT NULL COMMENT '学期结束日期',
|
||||
`is_current` tinyint(1) DEFAULT 0 COMMENT '是否当前学期:0-否,1-是',
|
||||
`status` varchar(20) DEFAULT 'active' COMMENT '状态:active-有效,inactive-无效',
|
||||
`description` text COMMENT '学期描述',
|
||||
`sort_order` int(11) DEFAULT 0 COMMENT '排序字段',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
-- 基础字段
|
||||
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
|
||||
`create_dept` bigint(20) DEFAULT NULL 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 '更新时间',
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE KEY `uk_semester_code` (`semester_code`, `tenant_id`, `deleted`) USING BTREE,
|
||||
KEY `idx_academic_year_id` (`academic_year_id`) USING BTREE,
|
||||
KEY `idx_tenant_id` (`tenant_id`) USING BTREE,
|
||||
KEY `idx_is_current` (`is_current`) USING BTREE,
|
||||
KEY `idx_status` (`status`) USING BTREE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学期管理表';
|
||||
|
||||
-- 3. 业务期管理表
|
||||
DROP TABLE IF EXISTS `xg_business_period`;
|
||||
CREATE TABLE `xg_business_period` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`period_code` varchar(50) NOT NULL COMMENT '业务期编码',
|
||||
`period_name` varchar(100) NOT NULL COMMENT '业务期名称',
|
||||
`period_type` varchar(20) NOT NULL COMMENT '业务期类型:collection-信息采集期,audit-审核期,confirm-确认期',
|
||||
`academic_year_id` bigint(20) DEFAULT NULL COMMENT '关联学年ID',
|
||||
`semester_id` bigint(20) DEFAULT NULL COMMENT '关联学期ID',
|
||||
`start_time` datetime NOT NULL COMMENT '业务期开始时间',
|
||||
`end_time` datetime NOT NULL COMMENT '业务期结束时间',
|
||||
`status` varchar(20) DEFAULT 'not_started' COMMENT '状态:not_started-未开始,in_progress-进行中,ended-已结束,suspended-已暂停',
|
||||
`auto_start` tinyint(1) DEFAULT 0 COMMENT '是否自动开始:0-否,1-是',
|
||||
`auto_end` tinyint(1) DEFAULT 0 COMMENT '是否自动结束:0-否,1-是',
|
||||
`description` text COMMENT '业务期描述',
|
||||
`notice_content` text COMMENT '通知内容',
|
||||
`sort_order` int(11) DEFAULT 0 COMMENT '排序字段',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
-- 基础字段
|
||||
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
|
||||
`create_dept` bigint(20) DEFAULT NULL 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 '更新时间',
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE KEY `uk_period_code` (`period_code`, `tenant_id`, `deleted`) USING BTREE,
|
||||
KEY `idx_academic_year_id` (`academic_year_id`) USING BTREE,
|
||||
KEY `idx_semester_id` (`semester_id`) USING BTREE,
|
||||
KEY `idx_tenant_id` (`tenant_id`) USING BTREE,
|
||||
KEY `idx_status` (`status`) USING BTREE,
|
||||
KEY `idx_period_type` (`period_type`) USING BTREE,
|
||||
KEY `idx_time_range` (`start_time`, `end_time`) USING BTREE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='业务期管理表';
|
||||
|
||||
-- 4. 信息采集批次表(完善版)
|
||||
DROP TABLE IF EXISTS `xg_collection_batch`;
|
||||
CREATE TABLE `xg_collection_batch` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`batch_code` varchar(50) NOT NULL COMMENT '批次编码',
|
||||
`batch_name` varchar(100) NOT NULL COMMENT '批次名称',
|
||||
`academic_year_id` bigint(20) NOT NULL COMMENT '关联学年ID',
|
||||
`semester_id` bigint(20) DEFAULT NULL COMMENT '关联学期ID',
|
||||
`business_period_id` bigint(20) DEFAULT NULL COMMENT '关联业务期ID',
|
||||
`batch_type` varchar(20) DEFAULT 'regular' COMMENT '批次类型:regular-常规,special-专项,urgent-紧急',
|
||||
`target_scope` varchar(20) DEFAULT 'all' COMMENT '目标范围:all-全部,college-学院,class-班级,student-个人',
|
||||
`target_ids` text COMMENT '目标ID列表(JSON格式),当target_scope不为all时使用',
|
||||
`start_time` datetime NOT NULL COMMENT '批次开始时间',
|
||||
`end_time` datetime NOT NULL COMMENT '批次结束时间',
|
||||
`status` varchar(20) DEFAULT 'draft' COMMENT '状态:draft-草稿,active-进行中,completed-已完成,cancelled-已取消',
|
||||
`is_published` tinyint(1) DEFAULT 0 COMMENT '是否已发布:0-否,1-是',
|
||||
`publish_time` datetime DEFAULT NULL COMMENT '发布时间',
|
||||
`auto_remind` tinyint(1) DEFAULT 1 COMMENT '是否自动提醒:0-否,1-是',
|
||||
`remind_days` int(11) DEFAULT 3 COMMENT '提醒天数(结束前几天提醒)',
|
||||
`description` text COMMENT '批次描述',
|
||||
`notice_content` text COMMENT '通知内容',
|
||||
`completion_rate` decimal(5,2) DEFAULT 0.00 COMMENT '完成率',
|
||||
`total_count` int(11) DEFAULT 0 COMMENT '总人数',
|
||||
`completed_count` int(11) DEFAULT 0 COMMENT '已完成人数',
|
||||
`sort_order` int(11) DEFAULT 0 COMMENT '排序字段',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
-- 基础字段
|
||||
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
|
||||
`create_dept` bigint(20) DEFAULT NULL 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 '更新时间',
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE KEY `uk_batch_code` (`batch_code`, `tenant_id`, `deleted`) USING BTREE,
|
||||
KEY `idx_academic_year_id` (`academic_year_id`) USING BTREE,
|
||||
KEY `idx_semester_id` (`semester_id`) USING BTREE,
|
||||
KEY `idx_business_period_id` (`business_period_id`) USING BTREE,
|
||||
KEY `idx_tenant_id` (`tenant_id`) USING BTREE,
|
||||
KEY `idx_status` (`status`) USING BTREE,
|
||||
KEY `idx_time_range` (`start_time`, `end_time`) USING BTREE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='信息采集批次表';
|
||||
|
||||
-- 5. 批次权限配置表
|
||||
DROP TABLE IF EXISTS `xg_batch_permission`;
|
||||
CREATE TABLE `xg_batch_permission` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`batch_id` bigint(20) NOT NULL COMMENT '批次ID,关联xg_collection_batch.id',
|
||||
`user_type` varchar(20) NOT NULL COMMENT '用户类型:student-学生,counselor-辅导员,head_teacher-班主任,college_admin-学院管理员,dept_admin-学生处管理员',
|
||||
`permission_type` varchar(20) NOT NULL COMMENT '权限类型:read-查看,write-编辑,audit-审核,manage-管理',
|
||||
`scope_type` varchar(20) DEFAULT 'all' COMMENT '权限范围:all-全部,college-学院,class-班级,self-本人',
|
||||
`scope_ids` text COMMENT '权限范围ID列表(JSON格式)',
|
||||
`start_time` datetime DEFAULT NULL COMMENT '权限开始时间',
|
||||
`end_time` datetime DEFAULT NULL COMMENT '权限结束时间',
|
||||
`is_active` tinyint(1) DEFAULT 1 COMMENT '是否激活:0-否,1-是',
|
||||
`description` varchar(500) DEFAULT NULL COMMENT '权限描述',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
-- 基础字段
|
||||
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
|
||||
`create_dept` bigint(20) DEFAULT NULL 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 '更新时间',
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
KEY `idx_batch_id` (`batch_id`) USING BTREE,
|
||||
KEY `idx_user_type` (`user_type`) USING BTREE,
|
||||
KEY `idx_permission_type` (`permission_type`) USING BTREE,
|
||||
KEY `idx_tenant_id` (`tenant_id`) USING BTREE,
|
||||
KEY `idx_time_range` (`start_time`, `end_time`) USING BTREE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='批次权限配置表';
|
||||
|
||||
-- 6. 学生信息表(完善版)
|
||||
DROP TABLE IF EXISTS `xg_student_info`;
|
||||
CREATE TABLE `xg_student_info` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`student_no` varchar(32) NOT NULL COMMENT '学号',
|
||||
`name` varchar(50) NOT NULL COMMENT '姓名',
|
||||
`gender` char(1) DEFAULT NULL COMMENT '性别:0-男,1-女',
|
||||
`birth_date` date DEFAULT NULL COMMENT '出生日期',
|
||||
`id_card` varchar(18) DEFAULT NULL COMMENT '身份证号',
|
||||
`nation` varchar(20) DEFAULT NULL COMMENT '民族',
|
||||
`political_status` varchar(20) DEFAULT NULL COMMENT '政治面貌',
|
||||
`religion` varchar(20) DEFAULT NULL COMMENT '宗教信仰',
|
||||
`phone` varchar(20) DEFAULT NULL COMMENT '手机号',
|
||||
`email` varchar(100) DEFAULT NULL COMMENT '邮箱',
|
||||
`home_address` varchar(200) DEFAULT NULL COMMENT '家庭地址',
|
||||
`postal_code` varchar(10) DEFAULT NULL COMMENT '邮政编码',
|
||||
`emergency_contact` varchar(50) DEFAULT NULL COMMENT '紧急联系人',
|
||||
`emergency_phone` varchar(20) DEFAULT NULL COMMENT '紧急联系电话',
|
||||
`height` decimal(5,2) DEFAULT NULL COMMENT '身高(厘米)',
|
||||
`weight` decimal(5,2) DEFAULT NULL COMMENT '体重(公斤)',
|
||||
`blood_type` varchar(10) DEFAULT NULL COMMENT '血型',
|
||||
`health_status` varchar(20) DEFAULT NULL COMMENT '健康状况',
|
||||
`bank_card` varchar(30) DEFAULT NULL COMMENT '银行卡号',
|
||||
`bank_name` varchar(100) DEFAULT NULL COMMENT '开户行',
|
||||
`card_holder` varchar(50) DEFAULT NULL COMMENT '持卡人姓名',
|
||||
`photo_url` varchar(200) DEFAULT NULL COMMENT '照片URL',
|
||||
`specialties` text COMMENT '特长',
|
||||
`college_id` bigint(20) DEFAULT NULL COMMENT '学院ID',
|
||||
`college_name` varchar(100) DEFAULT NULL COMMENT '学院名称',
|
||||
`major` varchar(100) DEFAULT NULL COMMENT '专业',
|
||||
`class_id` bigint(20) DEFAULT NULL COMMENT '班级ID',
|
||||
`class_name` varchar(100) DEFAULT NULL COMMENT '班级名称',
|
||||
`grade` varchar(10) DEFAULT NULL COMMENT '年级',
|
||||
`enrollment_date` date DEFAULT NULL COMMENT '入学日期',
|
||||
`education_length` int(11) DEFAULT NULL COMMENT '学制(年)',
|
||||
`student_status` varchar(20) DEFAULT 'active' COMMENT '学籍状态:active-在读,graduated-已毕业,dropout-退学,suspended-休学',
|
||||
`training_mode` varchar(20) DEFAULT NULL COMMENT '培养方式:full_time-全日制,part_time-非全日制',
|
||||
`current_batch_id` bigint(20) DEFAULT NULL COMMENT '当前批次ID',
|
||||
`info_status` varchar(20) DEFAULT 'draft' COMMENT '信息状态:draft-草稿,submitted-已提交,approved-已审核',
|
||||
`last_submit_time` datetime DEFAULT NULL COMMENT '最后提交时间',
|
||||
`last_audit_time` datetime DEFAULT NULL COMMENT '最后审核时间',
|
||||
`audit_comment` text COMMENT '审核意见',
|
||||
`version` int(11) DEFAULT 1 COMMENT '版本号',
|
||||
`sort_order` int(11) DEFAULT 0 COMMENT '排序字段',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
-- 基础字段
|
||||
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
|
||||
`create_dept` bigint(20) DEFAULT NULL 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 '更新时间',
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE KEY `uk_student_no` (`student_no`, `tenant_id`, `deleted`) USING BTREE,
|
||||
KEY `idx_class_id` (`class_id`) USING BTREE,
|
||||
KEY `idx_college_id` (`college_id`) USING BTREE,
|
||||
KEY `idx_current_batch_id` (`current_batch_id`) USING BTREE,
|
||||
KEY `idx_tenant_id` (`tenant_id`) USING BTREE,
|
||||
KEY `idx_info_status` (`info_status`) USING BTREE,
|
||||
KEY `idx_student_status` (`student_status`) USING BTREE,
|
||||
KEY `idx_name` (`name`) USING BTREE,
|
||||
KEY `idx_id_card` (`id_card`) USING BTREE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生信息表';
|
||||
|
||||
-- 7. 学生信息变更记录表
|
||||
DROP TABLE IF EXISTS `xg_student_info_history`;
|
||||
CREATE TABLE `xg_student_info_history` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`student_id` bigint(20) NOT NULL COMMENT '学生ID,关联xg_student_info.id',
|
||||
`batch_id` bigint(20) DEFAULT NULL COMMENT '批次ID',
|
||||
`change_type` varchar(20) NOT NULL COMMENT '变更类型:create-新增,update-修改,delete-删除',
|
||||
`change_fields` text COMMENT '变更字段列表(JSON格式)',
|
||||
`old_values` text COMMENT '变更前数据(JSON格式)',
|
||||
`new_values` text COMMENT '变更后数据(JSON格式)',
|
||||
`change_reason` varchar(500) DEFAULT NULL COMMENT '变更原因',
|
||||
`change_time` datetime NOT NULL COMMENT '变更时间',
|
||||
`change_by` bigint(20) DEFAULT NULL COMMENT '变更人',
|
||||
`change_by_name` varchar(50) DEFAULT NULL COMMENT '变更人姓名',
|
||||
`ip_address` varchar(50) DEFAULT NULL COMMENT 'IP地址',
|
||||
`user_agent` varchar(500) DEFAULT NULL COMMENT '用户代理',
|
||||
`version` int(11) DEFAULT 1 COMMENT '版本号',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
-- 基础字段
|
||||
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
|
||||
`create_dept` bigint(20) DEFAULT NULL 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 '更新时间',
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
KEY `idx_student_id` (`student_id`) USING BTREE,
|
||||
KEY `idx_batch_id` (`batch_id`) USING BTREE,
|
||||
KEY `idx_change_type` (`change_type`) USING BTREE,
|
||||
KEY `idx_change_time` (`change_time`) USING BTREE,
|
||||
KEY `idx_tenant_id` (`tenant_id`) USING BTREE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生信息变更记录表';
|
||||
|
||||
-- 8. 审核记录表(完善版)
|
||||
DROP TABLE IF EXISTS `xg_audit_record`;
|
||||
CREATE TABLE `xg_audit_record` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`student_id` bigint(20) NOT NULL COMMENT '学生ID,关联xg_student_info.id',
|
||||
`batch_id` bigint(20) NOT NULL COMMENT '批次ID,关联xg_collection_batch.id',
|
||||
`audit_level` int(11) NOT NULL COMMENT '审核级别:1-初审,2-复审,3-终审',
|
||||
`audit_type` varchar(20) NOT NULL COMMENT '审核类型:submit-提交,approve-通过,reject-拒绝,return-退回',
|
||||
`audit_status` varchar(20) NOT NULL COMMENT '审核状态:pending-待审核,approved-已通过,rejected-已拒绝',
|
||||
`auditor_id` bigint(20) DEFAULT NULL COMMENT '审核人ID',
|
||||
`auditor_name` varchar(50) DEFAULT NULL COMMENT '审核人姓名',
|
||||
`auditor_role` varchar(20) DEFAULT NULL COMMENT '审核人角色',
|
||||
`audit_time` datetime NOT NULL COMMENT '审核时间',
|
||||
`audit_comment` text COMMENT '审核意见',
|
||||
`changed_fields` text COMMENT '变更字段(JSON格式)',
|
||||
`next_auditor_id` bigint(20) DEFAULT NULL COMMENT '下一审核人ID',
|
||||
`next_auditor_name` varchar(50) DEFAULT NULL COMMENT '下一审核人姓名',
|
||||
`is_final` tinyint(1) DEFAULT 0 COMMENT '是否最终审核:0-否,1-是',
|
||||
`process_duration` int(11) DEFAULT NULL COMMENT '处理时长(分钟)',
|
||||
`ip_address` varchar(50) DEFAULT NULL COMMENT 'IP地址',
|
||||
`user_agent` varchar(500) DEFAULT NULL COMMENT '用户代理',
|
||||
`attachment_urls` text COMMENT '附件URL列表(JSON格式)',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
-- 基础字段
|
||||
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
|
||||
`create_dept` bigint(20) DEFAULT NULL 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 '更新时间',
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
KEY `idx_student_id` (`student_id`) USING BTREE,
|
||||
KEY `idx_batch_id` (`batch_id`) USING BTREE,
|
||||
KEY `idx_audit_level` (`audit_level`) USING BTREE,
|
||||
KEY `idx_audit_status` (`audit_status`) USING BTREE,
|
||||
KEY `idx_auditor_id` (`auditor_id`) USING BTREE,
|
||||
KEY `idx_audit_time` (`audit_time`) USING BTREE,
|
||||
KEY `idx_tenant_id` (`tenant_id`) USING BTREE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='审核记录表';
|
||||
|
||||
-- 9. 通知公告表
|
||||
DROP TABLE IF EXISTS `xg_notice`;
|
||||
CREATE TABLE `xg_notice` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`notice_code` varchar(50) DEFAULT NULL COMMENT '通知编码',
|
||||
`title` varchar(200) NOT NULL COMMENT '通知标题',
|
||||
`content` text NOT NULL COMMENT '通知内容',
|
||||
`notice_type` varchar(20) NOT NULL COMMENT '通知类型:batch-批次通知,audit-审核通知,remind-提醒通知,system-系统通知',
|
||||
`priority` varchar(20) DEFAULT 'normal' COMMENT '优先级:low-低,normal-普通,high-高,urgent-紧急',
|
||||
`target_type` varchar(20) DEFAULT 'all' COMMENT '目标类型:all-全部,role-角色,user-用户,college-学院,class-班级',
|
||||
`target_ids` text COMMENT '目标ID列表(JSON格式)',
|
||||
`related_id` bigint(20) DEFAULT NULL COMMENT '关联ID(如批次ID、审核ID等)',
|
||||
`related_type` varchar(20) DEFAULT NULL COMMENT '关联类型:batch-批次,audit-审核,student-学生',
|
||||
`publish_time` datetime DEFAULT NULL COMMENT '发布时间',
|
||||
`expire_time` datetime DEFAULT NULL COMMENT '过期时间',
|
||||
`is_published` tinyint(1) DEFAULT 0 COMMENT '是否已发布:0-否,1-是',
|
||||
`is_top` tinyint(1) DEFAULT 0 COMMENT '是否置顶:0-否,1-是',
|
||||
`read_count` int(11) DEFAULT 0 COMMENT '阅读次数',
|
||||
`attachment_urls` text COMMENT '附件URL列表(JSON格式)',
|
||||
`auto_send` tinyint(1) DEFAULT 0 COMMENT '是否自动发送:0-否,1-是',
|
||||
`send_channels` varchar(100) DEFAULT 'web' COMMENT '发送渠道:web-网页,email-邮件,sms-短信,wechat-微信',
|
||||
`status` varchar(20) DEFAULT 'draft' COMMENT '状态:draft-草稿,published-已发布,expired-已过期,cancelled-已取消',
|
||||
`sort_order` int(11) DEFAULT 0 COMMENT '排序字段',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
-- 基础字段
|
||||
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
|
||||
`create_dept` bigint(20) DEFAULT NULL 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 '更新时间',
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
KEY `idx_notice_type` (`notice_type`) USING BTREE,
|
||||
KEY `idx_target_type` (`target_type`) USING BTREE,
|
||||
KEY `idx_related_id` (`related_id`) USING BTREE,
|
||||
KEY `idx_related_type` (`related_type`) USING BTREE,
|
||||
KEY `idx_publish_time` (`publish_time`) USING BTREE,
|
||||
KEY `idx_status` (`status`) USING BTREE,
|
||||
KEY `idx_tenant_id` (`tenant_id`) USING BTREE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='通知公告表';
|
||||
|
||||
-- 10. 通知阅读记录表
|
||||
DROP TABLE IF EXISTS `xg_notice_read`;
|
||||
CREATE TABLE `xg_notice_read` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`notice_id` bigint(20) NOT NULL COMMENT '通知ID,关联xg_notice.id',
|
||||
`user_id` bigint(20) NOT NULL COMMENT '用户ID',
|
||||
`user_name` varchar(50) DEFAULT NULL COMMENT '用户姓名',
|
||||
`user_type` varchar(20) DEFAULT NULL COMMENT '用户类型',
|
||||
`read_time` datetime NOT NULL COMMENT '阅读时间',
|
||||
`read_duration` int(11) DEFAULT NULL COMMENT '阅读时长(秒)',
|
||||
`ip_address` varchar(50) DEFAULT NULL COMMENT 'IP地址',
|
||||
`user_agent` varchar(500) DEFAULT NULL COMMENT '用户代理',
|
||||
`device_type` varchar(20) DEFAULT NULL COMMENT '设备类型:pc-电脑,mobile-手机,tablet-平板',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
-- 基础字段
|
||||
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
|
||||
`create_dept` bigint(20) DEFAULT NULL 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 '更新时间',
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE KEY `uk_notice_user` (`notice_id`, `user_id`, `tenant_id`, `deleted`) USING BTREE,
|
||||
KEY `idx_user_id` (`user_id`) USING BTREE,
|
||||
KEY `idx_read_time` (`read_time`) USING BTREE,
|
||||
KEY `idx_tenant_id` (`tenant_id`) USING BTREE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='通知阅读记录表';
|
||||
|
||||
-- 11. 系统配置表
|
||||
DROP TABLE IF EXISTS `xg_system_config`;
|
||||
CREATE TABLE `xg_system_config` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`config_key` varchar(100) NOT NULL COMMENT '配置键',
|
||||
`config_value` text COMMENT '配置值',
|
||||
`config_type` varchar(20) DEFAULT 'string' COMMENT '配置类型:string-字符串,number-数字,boolean-布尔,json-JSON',
|
||||
`config_group` varchar(50) DEFAULT 'system' COMMENT '配置分组',
|
||||
`config_desc` varchar(200) DEFAULT NULL COMMENT '配置描述',
|
||||
`is_system` tinyint(1) DEFAULT 0 COMMENT '是否系统配置:0-否,1-是',
|
||||
`is_readonly` tinyint(1) DEFAULT 0 COMMENT '是否只读:0-否,1-是',
|
||||
`sort_order` int(11) DEFAULT 0 COMMENT '排序字段',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
-- 基础字段
|
||||
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
|
||||
`create_dept` bigint(20) DEFAULT NULL 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 '更新时间',
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE KEY `uk_config_key` (`config_key`, `tenant_id`, `deleted`) USING BTREE,
|
||||
KEY `idx_config_group` (`config_group`) USING BTREE,
|
||||
KEY `idx_tenant_id` (`tenant_id`) USING BTREE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统配置表';
|
||||
|
||||
-- 12. 数据字典表
|
||||
DROP TABLE IF EXISTS `xg_dict_data`;
|
||||
CREATE TABLE `xg_dict_data` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`dict_type` varchar(100) NOT NULL COMMENT '字典类型',
|
||||
`dict_label` varchar(100) NOT NULL COMMENT '字典标签',
|
||||
`dict_value` varchar(100) NOT NULL COMMENT '字典键值',
|
||||
`dict_sort` int(11) DEFAULT 0 COMMENT '字典排序',
|
||||
`css_class` varchar(100) DEFAULT NULL COMMENT '样式属性',
|
||||
`list_class` varchar(100) DEFAULT NULL COMMENT '表格回显样式',
|
||||
`is_default` tinyint(1) DEFAULT 0 COMMENT '是否默认:0-否,1-是',
|
||||
`status` char(1) DEFAULT '0' COMMENT '状态:0-正常,1-停用',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
-- 基础字段
|
||||
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
|
||||
`create_dept` bigint(20) DEFAULT NULL 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 '更新时间',
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
KEY `idx_dict_type` (`dict_type`) USING BTREE,
|
||||
KEY `idx_tenant_id` (`tenant_id`) USING BTREE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='数据字典表';
|
||||
|
||||
-- =============================================
|
||||
-- 初始化数据
|
||||
-- =============================================
|
||||
|
||||
-- 1. 初始化学年数据
|
||||
INSERT INTO `xg_academic_year` (`id`, `year_code`, `year_name`, `start_date`, `end_date`, `is_current`, `status`, `description`, `tenant_id`, `create_time`) VALUES
|
||||
(1, '2024-2025', '2024-2025学年', '2024-09-01', '2025-08-31', 1, 'active', '2024-2025学年', '000000', NOW()),
|
||||
(2, '2023-2024', '2023-2024学年', '2023-09-01', '2024-08-31', 0, 'inactive', '2023-2024学年', '000000', NOW()),
|
||||
(3, '2025-2026', '2025-2026学年', '2025-09-01', '2026-08-31', 0, 'active', '2025-2026学年', '000000', NOW());
|
||||
|
||||
-- 2. 初始化学期数据
|
||||
INSERT INTO `xg_semester` (`id`, `academic_year_id`, `semester_code`, `semester_name`, `semester_type`, `start_date`, `end_date`, `is_current`, `status`, `tenant_id`, `create_time`) VALUES
|
||||
(1, 1, '2024-2025-1', '2024-2025学年第一学期', 'first', '2024-09-01', '2025-01-31', 0, 'active', '000000', NOW()),
|
||||
(2, 1, '2024-2025-2', '2024-2025学年第二学期', 'second', '2025-02-01', '2025-08-31', 1, 'active', '000000', NOW()),
|
||||
(3, 2, '2023-2024-1', '2023-2024学年第一学期', 'first', '2023-09-01', '2024-01-31', 0, 'inactive', '000000', NOW()),
|
||||
(4, 2, '2023-2024-2', '2023-2024学年第二学期', 'second', '2024-02-01', '2024-08-31', 0, 'inactive', '000000', NOW());
|
||||
|
||||
-- 3. 初始化数据字典
|
||||
INSERT INTO `xg_dict_data` (`id`, `dict_type`, `dict_label`, `dict_value`, `dict_sort`, `status`, `tenant_id`, `create_time`) VALUES
|
||||
-- 性别
|
||||
(1, 'xg_gender', '男', 'M', 1, '0', '000000', NOW()),
|
||||
(2, 'xg_gender', '女', 'F', 2, '0', '000000', NOW()),
|
||||
-- 政治面貌
|
||||
(3, 'xg_political_status', '中共党员', 'party_member', 1, '0', '000000', NOW()),
|
||||
(4, 'xg_political_status', '中共预备党员', 'party_probationary', 2, '0', '000000', NOW()),
|
||||
(5, 'xg_political_status', '共青团员', 'youth_league', 3, '0', '000000', NOW()),
|
||||
(6, 'xg_political_status', '群众', 'masses', 4, '0', '000000', NOW()),
|
||||
-- 学籍状态
|
||||
(7, 'xg_student_status', '在读', 'active', 1, '0', '000000', NOW()),
|
||||
(8, 'xg_student_status', '已毕业', 'graduated', 2, '0', '000000', NOW()),
|
||||
(9, 'xg_student_status', '退学', 'dropout', 3, '0', '000000', NOW()),
|
||||
(10, 'xg_student_status', '休学', 'suspended', 4, '0', '000000', NOW()),
|
||||
-- 信息状态
|
||||
(11, 'xg_info_status', '草稿', 'draft', 1, '0', '000000', NOW()),
|
||||
(12, 'xg_info_status', '已提交', 'submitted', 2, '0', '000000', NOW()),
|
||||
(13, 'xg_info_status', '已审核', 'approved', 3, '0', '000000', NOW()),
|
||||
-- 批次状态
|
||||
(14, 'xg_batch_status', '草稿', 'draft', 1, '0', '000000', NOW()),
|
||||
(15, 'xg_batch_status', '进行中', 'active', 2, '0', '000000', NOW()),
|
||||
(16, 'xg_batch_status', '已完成', 'completed', 3, '0', '000000', NOW()),
|
||||
(17, 'xg_batch_status', '已取消', 'cancelled', 4, '0', '000000', NOW()),
|
||||
-- 用户类型
|
||||
(18, 'xg_user_type', '学生', 'student', 1, '0', '000000', NOW()),
|
||||
(19, 'xg_user_type', '辅导员', 'counselor', 2, '0', '000000', NOW()),
|
||||
(20, 'xg_user_type', '班主任', 'head_teacher', 3, '0', '000000', NOW()),
|
||||
(21, 'xg_user_type', '学院管理员', 'college_admin', 4, '0', '000000', NOW()),
|
||||
(22, 'xg_user_type', '学生处管理员', 'dept_admin', 5, '0', '000000', NOW()),
|
||||
-- 权限类型
|
||||
(23, 'xg_permission_type', '查看', 'read', 1, '0', '000000', NOW()),
|
||||
(24, 'xg_permission_type', '编辑', 'write', 2, '0', '000000', NOW()),
|
||||
(25, 'xg_permission_type', '审核', 'audit', 3, '0', '000000', NOW()),
|
||||
(26, 'xg_permission_type', '管理', 'manage', 4, '0', '000000', NOW()),
|
||||
-- 业务期类型
|
||||
(27, 'xg_period_type', '信息采集期', 'collection', 1, '0', '000000', NOW()),
|
||||
(28, 'xg_period_type', '审核期', 'audit', 2, '0', '000000', NOW()),
|
||||
(29, 'xg_period_type', '确认期', 'confirm', 3, '0', '000000', NOW()),
|
||||
-- 通知类型
|
||||
(30, 'xg_notice_type', '批次通知', 'batch', 1, '0', '000000', NOW()),
|
||||
(31, 'xg_notice_type', '审核通知', 'audit', 2, '0', '000000', NOW()),
|
||||
(32, 'xg_notice_type', '提醒通知', 'remind', 3, '0', '000000', NOW()),
|
||||
(33, 'xg_notice_type', '系统通知', 'system', 4, '0', '000000', NOW());
|
||||
|
||||
-- 4. 初始化系统配置
|
||||
INSERT INTO `xg_system_config` (`id`, `config_key`, `config_value`, `config_type`, `config_group`, `config_desc`, `tenant_id`, `create_time`) VALUES
|
||||
(1, 'xg.batch.auto.remind.days', '3', 'number', 'batch', '批次自动提醒天数', '000000', NOW()),
|
||||
(2, 'xg.audit.max.level', '3', 'number', 'audit', '最大审核级别', '000000', NOW()),
|
||||
(3, 'xg.student.photo.max.size', '5', 'number', 'student', '学生照片最大尺寸(MB)', '000000', NOW()),
|
||||
(4, 'xg.notice.auto.expire.days', '30', 'number', 'notice', '通知自动过期天数', '000000', NOW()),
|
||||
(5, 'xg.system.name', '学生信息管理系统', 'string', 'system', '系统名称', '000000', NOW());
|
||||
|
||||
-- =============================================
|
||||
-- 创建视图
|
||||
-- =============================================
|
||||
|
||||
-- 1. 学生信息汇总视图
|
||||
CREATE OR REPLACE VIEW `v_xg_student_summary` AS
|
||||
SELECT
|
||||
s.id,
|
||||
s.student_no,
|
||||
s.name,
|
||||
s.gender,
|
||||
s.phone,
|
||||
s.email,
|
||||
s.college_name,
|
||||
s.major,
|
||||
s.class_name,
|
||||
s.grade,
|
||||
s.student_status,
|
||||
s.info_status,
|
||||
s.last_submit_time,
|
||||
s.last_audit_time,
|
||||
b.batch_name AS current_batch_name,
|
||||
b.status AS batch_status,
|
||||
ay.year_name AS academic_year_name,
|
||||
sem.semester_name AS semester_name,
|
||||
s.create_time,
|
||||
s.update_time
|
||||
FROM xg_student_info s
|
||||
LEFT JOIN xg_collection_batch b ON s.current_batch_id = b.id
|
||||
LEFT JOIN xg_academic_year ay ON b.academic_year_id = ay.id
|
||||
LEFT JOIN xg_semester sem ON b.semester_id = sem.id
|
||||
WHERE s.deleted = 0;
|
||||
|
||||
-- 2. 批次统计视图
|
||||
CREATE OR REPLACE VIEW `v_xg_batch_statistics` AS
|
||||
SELECT
|
||||
b.id,
|
||||
b.batch_code,
|
||||
b.batch_name,
|
||||
b.start_time,
|
||||
b.end_time,
|
||||
b.status,
|
||||
b.total_count,
|
||||
b.completed_count,
|
||||
b.completion_rate,
|
||||
ay.year_name AS academic_year_name,
|
||||
sem.semester_name AS semester_name,
|
||||
COUNT(DISTINCT s.id) AS actual_student_count,
|
||||
COUNT(DISTINCT CASE WHEN s.info_status = 'submitted' THEN s.id END) AS submitted_count,
|
||||
COUNT(DISTINCT CASE WHEN s.info_status = 'approved' THEN s.id END) AS approved_count,
|
||||
ROUND(COUNT(DISTINCT CASE WHEN s.info_status IN ('submitted', 'approved') THEN s.id END) * 100.0 / COUNT(DISTINCT s.id), 2) AS actual_completion_rate
|
||||
FROM xg_collection_batch b
|
||||
LEFT JOIN xg_academic_year ay ON b.academic_year_id = ay.id
|
||||
LEFT JOIN xg_semester sem ON b.semester_id = sem.id
|
||||
LEFT JOIN xg_student_info s ON s.current_batch_id = b.id AND s.deleted = 0
|
||||
WHERE b.deleted = 0
|
||||
GROUP BY b.id, b.batch_code, b.batch_name, b.start_time, b.end_time, b.status, b.total_count, b.completed_count, b.completion_rate, ay.year_name, sem.semester_name;
|
||||
|
||||
-- =============================================
|
||||
-- 创建索引优化
|
||||
-- =============================================
|
||||
|
||||
-- 复合索引优化
|
||||
CREATE INDEX `idx_student_batch_status` ON `xg_student_info` (`current_batch_id`, `info_status`, `deleted`);
|
||||
CREATE INDEX `idx_audit_student_batch` ON `xg_audit_record` (`student_id`, `batch_id`, `audit_level`, `deleted`);
|
||||
CREATE INDEX `idx_notice_target_status` ON `xg_notice` (`target_type`, `status`, `publish_time`, `deleted`);
|
||||
CREATE INDEX `idx_permission_batch_user` ON `xg_batch_permission` (`batch_id`, `user_type`, `is_active`, `deleted`);
|
||||
|
||||
-- =============================================
|
||||
-- 创建触发器
|
||||
-- =============================================
|
||||
|
||||
-- 1. 学生信息变更触发器
|
||||
DELIMITER //
|
||||
CREATE TRIGGER `tr_xg_student_info_history`
|
||||
AFTER UPDATE ON `xg_student_info`
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
INSERT INTO xg_student_info_history (
|
||||
id, student_id, change_type, change_time, change_by,
|
||||
old_values, new_values, tenant_id, create_time
|
||||
) VALUES (
|
||||
FLOOR(RAND() * 9000000000000000000 + 1000000000000000000),
|
||||
NEW.id,
|
||||
'update',
|
||||
NOW(),
|
||||
NEW.update_by,
|
||||
JSON_OBJECT('name', OLD.name, 'phone', OLD.phone, 'email', OLD.email),
|
||||
JSON_OBJECT('name', NEW.name, 'phone', NEW.phone, 'email', NEW.email),
|
||||
NEW.tenant_id,
|
||||
NOW()
|
||||
);
|
||||
END//
|
||||
DELIMITER ;
|
||||
|
||||
-- 2. 批次完成率更新触发器
|
||||
DELIMITER //
|
||||
CREATE TRIGGER `tr_xg_batch_completion_rate`
|
||||
AFTER UPDATE ON `xg_student_info`
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
DECLARE batch_total INT DEFAULT 0;
|
||||
DECLARE batch_completed INT DEFAULT 0;
|
||||
DECLARE completion_rate DECIMAL(5,2) DEFAULT 0.00;
|
||||
|
||||
IF NEW.current_batch_id IS NOT NULL AND (OLD.info_status != NEW.info_status) THEN
|
||||
SELECT COUNT(*) INTO batch_total
|
||||
FROM xg_student_info
|
||||
WHERE current_batch_id = NEW.current_batch_id AND deleted = 0;
|
||||
|
||||
SELECT COUNT(*) INTO batch_completed
|
||||
FROM xg_student_info
|
||||
WHERE current_batch_id = NEW.current_batch_id
|
||||
AND info_status IN ('submitted', 'approved')
|
||||
AND deleted = 0;
|
||||
|
||||
IF batch_total > 0 THEN
|
||||
SET completion_rate = ROUND(batch_completed * 100.0 / batch_total, 2);
|
||||
END IF;
|
||||
|
||||
UPDATE xg_collection_batch
|
||||
SET total_count = batch_total,
|
||||
completed_count = batch_completed,
|
||||
completion_rate = completion_rate,
|
||||
update_time = NOW()
|
||||
WHERE id = NEW.current_batch_id;
|
||||
END IF;
|
||||
END//
|
||||
DELIMITER ;
|
||||
|
||||
-- =============================================
|
||||
-- 创建存储过程
|
||||
-- =============================================
|
||||
|
||||
-- 1. 批次数据统计存储过程
|
||||
DELIMITER //
|
||||
CREATE PROCEDURE `sp_xg_batch_statistics`(IN batch_id BIGINT)
|
||||
BEGIN
|
||||
DECLARE total_count INT DEFAULT 0;
|
||||
DECLARE completed_count INT DEFAULT 0;
|
||||
DECLARE completion_rate DECIMAL(5,2) DEFAULT 0.00;
|
||||
|
||||
SELECT COUNT(*) INTO total_count
|
||||
FROM xg_student_info
|
||||
WHERE current_batch_id = batch_id AND deleted = 0;
|
||||
|
||||
SELECT COUNT(*) INTO completed_count
|
||||
FROM xg_student_info
|
||||
WHERE current_batch_id = batch_id
|
||||
AND info_status IN ('submitted', 'approved')
|
||||
AND deleted = 0;
|
||||
|
||||
IF total_count > 0 THEN
|
||||
SET completion_rate = ROUND(completed_count * 100.0 / total_count, 2);
|
||||
END IF;
|
||||
|
||||
UPDATE xg_collection_batch
|
||||
SET total_count = total_count,
|
||||
completed_count = completed_count,
|
||||
completion_rate = completion_rate,
|
||||
update_time = NOW()
|
||||
WHERE id = batch_id;
|
||||
|
||||
SELECT total_count, completed_count, completion_rate;
|
||||
END//
|
||||
DELIMITER ;
|
||||
|
||||
-- 2. 自动过期通知存储过程
|
||||
DELIMITER //
|
||||
CREATE PROCEDURE `sp_xg_auto_expire_notices`()
|
||||
BEGIN
|
||||
UPDATE xg_notice
|
||||
SET status = 'expired', update_time = NOW()
|
||||
WHERE status = 'published'
|
||||
AND expire_time IS NOT NULL
|
||||
AND expire_time < NOW()
|
||||
AND deleted = 0;
|
||||
|
||||
SELECT ROW_COUNT() AS expired_count;
|
||||
END//
|
||||
DELIMITER ;
|
||||
|
||||
-- =============================================
|
||||
-- 权限配置SQL
|
||||
-- =============================================
|
||||
|
||||
-- 菜单权限配置(需要在sys_menu表中添加)
|
||||
-- 这里只是示例,实际需要根据系统的菜单管理来配置
|
||||
|
||||
-- 1. 学年管理菜单
|
||||
-- INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) VALUES ('学年管理', 父菜单ID, 1, 'academic-year', 'xg/academicYear/index', 1, 0, 'C', '0', '0', 'xg:academicYear:list', 'date', 1, NOW(), 1, NOW(), '学年管理菜单');
|
||||
|
||||
-- 2. 批次管理菜单
|
||||
-- INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) VALUES ('批次管理', 父菜单ID, 2, 'collection-batch', 'xg/collectionBatch/index', 1, 0, 'C', '0', '0', 'xg:collectionBatch:list', 'list', 1, NOW(), 1, NOW(), '批次管理菜单');
|
||||
|
||||
-- 3. 学生信息管理菜单
|
||||
-- INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) VALUES ('学生信息管理', 父菜单ID, 3, 'student-info', 'xg/studentInfo/index', 1, 0, 'C', '0', '0', 'xg:studentInfo:list', 'user', 1, NOW(), 1, NOW(), '学生信息管理菜单');
|
||||
|
||||
-- 4. 审核管理菜单
|
||||
-- INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) VALUES ('审核管理', 父菜单ID, 4, 'audit-record', 'xg/auditRecord/index', 1, 0, 'C', '0', '0', 'xg:auditRecord:list', 'check', 1, NOW(), 1, NOW(), '审核管理菜单');
|
||||
|
||||
-- 5. 通知公告菜单
|
||||
-- INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) VALUES ('通知公告', 父菜单ID, 5, 'notice', 'xg/notice/index', 1, 0, 'C', '0', '0', 'xg:notice:list', 'message', 1, NOW(), 1, NOW(), '通知公告菜单');
|
||||
|
||||
-- =============================================
|
||||
-- 结束
|
||||
-- =============================================
|
||||
@@ -1,183 +0,0 @@
|
||||
-- ==========================================
|
||||
-- 学生信息表字段完整性检查脚本
|
||||
-- 版本:V2.3.0
|
||||
-- 功能:检查实体类所有字段是否在数据库表中存在
|
||||
-- 作者:Cursor AI 辅助
|
||||
-- 时间:2025-01-12
|
||||
-- 目的:彻底解决字段缺失问题,确保100%匹配
|
||||
-- ==========================================
|
||||
|
||||
-- 设置字符集
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ----------------------------
|
||||
-- 检查XgStudentInfo实体类所有字段
|
||||
-- ----------------------------
|
||||
|
||||
SELECT '==============================' as 'Result';
|
||||
SELECT '🔍 学生信息表字段完整性检查' as 'Result';
|
||||
SELECT '==============================' as 'Result';
|
||||
|
||||
-- 检查所有实体类字段是否存在(按实体类顺序)
|
||||
SELECT '=== XgStudentInfo 实体类字段检查 ===' as 'Result';
|
||||
|
||||
-- 基础字段检查
|
||||
SELECT
|
||||
'id' as field_name,
|
||||
CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'id'
|
||||
|
||||
UNION ALL SELECT 'student_no' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'student_no'
|
||||
|
||||
UNION ALL SELECT 'id_card' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'id_card'
|
||||
|
||||
UNION ALL SELECT 'name' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'name'
|
||||
|
||||
UNION ALL SELECT 'name_pinyin' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'name_pinyin'
|
||||
|
||||
UNION ALL SELECT 'gender' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'gender'
|
||||
|
||||
UNION ALL SELECT 'birth_date' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'birth_date'
|
||||
|
||||
UNION ALL SELECT 'nation' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'nation'
|
||||
|
||||
UNION ALL SELECT 'political_status' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'political_status'
|
||||
|
||||
UNION ALL SELECT 'student_status' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'student_status'
|
||||
|
||||
UNION ALL SELECT 'enrollment_year' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'enrollment_year'
|
||||
|
||||
UNION ALL SELECT 'enrollment_date' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'enrollment_date'
|
||||
|
||||
UNION ALL SELECT 'school_system' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'school_system'
|
||||
|
||||
UNION ALL SELECT 'education_level' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'education_level'
|
||||
|
||||
UNION ALL SELECT 'training_type' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'training_type'
|
||||
|
||||
UNION ALL SELECT 'major_code' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'major_code'
|
||||
|
||||
UNION ALL SELECT 'major_name' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'major_name'
|
||||
|
||||
UNION ALL SELECT 'class_code' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'class_code'
|
||||
|
||||
UNION ALL SELECT 'class_name' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'class_name'
|
||||
|
||||
UNION ALL SELECT 'college_code' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'college_code'
|
||||
|
||||
UNION ALL SELECT 'college_name' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'college_name'
|
||||
|
||||
UNION ALL SELECT 'phone' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'phone'
|
||||
|
||||
UNION ALL SELECT 'email' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'email'
|
||||
|
||||
UNION ALL SELECT 'qq' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'qq'
|
||||
|
||||
UNION ALL SELECT 'wechat' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'wechat'
|
||||
|
||||
UNION ALL SELECT 'current_address' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'current_address'
|
||||
|
||||
UNION ALL SELECT 'home_address' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'home_address'
|
||||
|
||||
UNION ALL SELECT 'domicile_place' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'domicile_place'
|
||||
|
||||
UNION ALL SELECT 'postal_code' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'postal_code'
|
||||
|
||||
UNION ALL SELECT 'emergency_contact_name' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'emergency_contact_name'
|
||||
|
||||
UNION ALL SELECT 'emergency_contact_relation' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'emergency_contact_relation'
|
||||
|
||||
UNION ALL SELECT 'emergency_contact_phone' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'emergency_contact_phone'
|
||||
|
||||
UNION ALL SELECT 'father_name' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'father_name'
|
||||
|
||||
UNION ALL SELECT 'father_phone' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'father_phone'
|
||||
|
||||
UNION ALL SELECT 'father_work_unit' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'father_work_unit'
|
||||
|
||||
UNION ALL SELECT 'mother_name' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'mother_name'
|
||||
|
||||
UNION ALL SELECT 'mother_phone' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'mother_phone'
|
||||
|
||||
UNION ALL SELECT 'mother_work_unit' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'mother_work_unit'
|
||||
|
||||
UNION ALL SELECT 'height' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'height'
|
||||
|
||||
UNION ALL SELECT 'weight' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'weight'
|
||||
|
||||
UNION ALL SELECT 'blood_type' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'blood_type'
|
||||
|
||||
UNION ALL SELECT 'special_condition' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'special_condition'
|
||||
|
||||
UNION ALL SELECT 'religion' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'religion'
|
||||
|
||||
UNION ALL SELECT 'hobbies' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'hobbies'
|
||||
|
||||
UNION ALL SELECT 'is_poor_student' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'is_poor_student'
|
||||
|
||||
UNION ALL SELECT 'poverty_level' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'poverty_level'
|
||||
|
||||
UNION ALL SELECT 'has_grant' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'has_grant'
|
||||
|
||||
UNION ALL SELECT 'grant_amount' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'grant_amount'
|
||||
|
||||
UNION ALL SELECT 'has_loan' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'has_loan'
|
||||
|
||||
UNION ALL SELECT 'loan_amount' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'loan_amount'
|
||||
|
||||
UNION ALL SELECT 'bank_card_no' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'bank_card_no'
|
||||
|
||||
UNION ALL SELECT 'bank_name' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'bank_name'
|
||||
|
||||
UNION ALL SELECT 'bank_branch' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'bank_branch'
|
||||
|
||||
UNION ALL SELECT 'info_status' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'info_status'
|
||||
|
||||
UNION ALL SELECT 'data_source' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'data_source'
|
||||
|
||||
UNION ALL SELECT 'last_batch_id' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'last_batch_id'
|
||||
|
||||
UNION ALL SELECT 'last_audit_time' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'last_audit_time'
|
||||
|
||||
UNION ALL SELECT 'ext_field1' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'ext_field1'
|
||||
|
||||
UNION ALL SELECT 'ext_field2' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'ext_field2'
|
||||
|
||||
UNION ALL SELECT 'ext_field3' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'ext_field3'
|
||||
|
||||
UNION ALL SELECT 'ext_field4' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'ext_field4'
|
||||
|
||||
UNION ALL SELECT 'ext_field5' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'ext_field5'
|
||||
|
||||
UNION ALL SELECT 'remark' as field_name, CASE WHEN COUNT(*) > 0 THEN '✅ 存在' ELSE '❌ 缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'remark';
|
||||
|
||||
-- 统计缺失字段
|
||||
SELECT '=== 字段缺失统计 ===' as 'Result';
|
||||
|
||||
SELECT
|
||||
(SELECT COUNT(*) FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info') as '数据库字段总数',
|
||||
57 as '实体类字段总数',
|
||||
(57 - (SELECT COUNT(DISTINCT column_name) FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name IN (
|
||||
'id','student_no','id_card','name','name_pinyin','gender','birth_date','nation','political_status','student_status',
|
||||
'enrollment_year','enrollment_date','school_system','education_level','training_type','major_code','major_name',
|
||||
'class_code','class_name','college_code','college_name','phone','email','qq','wechat','current_address',
|
||||
'home_address','domicile_place','postal_code','emergency_contact_name','emergency_contact_relation',
|
||||
'emergency_contact_phone','father_name','father_phone','father_work_unit','mother_name','mother_phone',
|
||||
'mother_work_unit','height','weight','blood_type','special_condition','religion','hobbies','is_poor_student',
|
||||
'poverty_level','has_grant','grant_amount','has_loan','loan_amount','bank_card_no','bank_name','bank_branch',
|
||||
'info_status','data_source','last_batch_id','last_audit_time','ext_field1','ext_field2','ext_field3','ext_field4','ext_field5','remark'
|
||||
))) as '缺失字段数量';
|
||||
|
||||
-- 恢复外键检查
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
||||
-- ----------------------------
|
||||
-- 脚本执行完成提示
|
||||
-- ----------------------------
|
||||
SELECT '==============================' as 'Result';
|
||||
SELECT '✅ 字段完整性检查完成!' as 'Result';
|
||||
SELECT '✅ 已添加religion字段' as 'Result';
|
||||
SELECT '✅ 如有缺失字段请根据检查结果补充' as 'Result';
|
||||
SELECT '==============================' as 'Result';
|
||||
@@ -1,141 +0,0 @@
|
||||
-- ==========================================
|
||||
-- 修复is_from_poor_family字段名不匹配问题
|
||||
-- 版本:V2.4.0
|
||||
-- 功能:解决VO类、XML映射文件、数据库字段名不一致问题
|
||||
-- 作者:Cursor AI 辅助
|
||||
-- 时间:2025-01-12
|
||||
-- 问题:三层不匹配 - VO类(isPoorStudent) vs XML映射(isFromPoorFamily) vs 数据库(is_poor_student)
|
||||
-- 解决方案:统一使用is_from_poor_family字段名,保持与XML映射文件一致
|
||||
-- ==========================================
|
||||
|
||||
-- 设置字符集
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ----------------------------
|
||||
-- 检查当前字段状态
|
||||
-- ----------------------------
|
||||
|
||||
SELECT '==============================' as 'Result';
|
||||
SELECT '🔍 字段名不匹配问题修复' as 'Result';
|
||||
SELECT '==============================' as 'Result';
|
||||
|
||||
-- 检查is_poor_student字段是否存在
|
||||
SELECT '=== 检查is_poor_student字段 ===' as 'Result';
|
||||
SELECT
|
||||
CASE WHEN COUNT(*) > 0 THEN '✅ is_poor_student 字段存在' ELSE '❌ is_poor_student 字段不存在' END as 'is_poor_student_check'
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'is_poor_student';
|
||||
|
||||
-- 检查is_from_poor_family字段是否存在
|
||||
SELECT '=== 检查is_from_poor_family字段 ===' as 'Result';
|
||||
SELECT
|
||||
CASE WHEN COUNT(*) > 0 THEN '✅ is_from_poor_family 字段存在' ELSE '❌ is_from_poor_family 字段不存在' END as 'is_from_poor_family_check'
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'is_from_poor_family';
|
||||
|
||||
-- ----------------------------
|
||||
-- 解决方案:重命名字段保持与XML映射一致
|
||||
-- ----------------------------
|
||||
|
||||
-- 如果is_poor_student字段存在,则重命名为is_from_poor_family
|
||||
-- 这样可以保持与XML映射文件的一致性
|
||||
SELECT '=== 字段重命名修复 ===' as 'Result';
|
||||
|
||||
-- 检查字段存在性,然后进行重命名
|
||||
SET @sql = (
|
||||
SELECT CASE
|
||||
WHEN COUNT(*) > 0 THEN 'ALTER TABLE `xg_student_info` CHANGE COLUMN `is_poor_student` `is_from_poor_family` tinyint(1) DEFAULT 0 COMMENT ''是否贫困生:0-否,1-是'';'
|
||||
ELSE 'SELECT ''is_poor_student字段不存在,无需重命名'' as ''Result'';'
|
||||
END
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'is_poor_student'
|
||||
);
|
||||
|
||||
-- 执行重命名SQL
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- 如果is_from_poor_family字段仍然不存在,则直接添加
|
||||
SELECT '=== 确保is_from_poor_family字段存在 ===' as 'Result';
|
||||
|
||||
SET @sql2 = (
|
||||
SELECT CASE
|
||||
WHEN COUNT(*) = 0 THEN 'ALTER TABLE `xg_student_info` ADD COLUMN `is_from_poor_family` tinyint(1) DEFAULT 0 COMMENT ''是否贫困生:0-否,1-是'' AFTER `hobbies`;'
|
||||
ELSE 'SELECT ''is_from_poor_family字段已存在'' as ''Result'';'
|
||||
END
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'is_from_poor_family'
|
||||
);
|
||||
|
||||
-- 执行添加字段SQL
|
||||
PREPARE stmt2 FROM @sql2;
|
||||
EXECUTE stmt2;
|
||||
DEALLOCATE PREPARE stmt2;
|
||||
|
||||
-- ----------------------------
|
||||
-- 验证修复结果
|
||||
-- ----------------------------
|
||||
|
||||
SELECT '=== 修复结果验证 ===' as 'Result';
|
||||
|
||||
-- 验证is_from_poor_family字段是否存在
|
||||
SELECT
|
||||
CASE WHEN COUNT(*) > 0 THEN '✅ is_from_poor_family 字段修复成功' ELSE '❌ is_from_poor_family 字段修复失败' END as 'repair_result'
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'is_from_poor_family';
|
||||
|
||||
-- 验证is_poor_student字段是否已被移除
|
||||
SELECT
|
||||
CASE WHEN COUNT(*) = 0 THEN '✅ is_poor_student 字段已正确移除' ELSE '⚠️ is_poor_student 字段仍然存在' END as 'old_field_check'
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'is_poor_student';
|
||||
|
||||
-- 测试原来报错的统计查询
|
||||
SELECT '=== 测试统计查询 ===' as 'Result';
|
||||
|
||||
SELECT
|
||||
college_code,
|
||||
college_name,
|
||||
count(*) as total_count,
|
||||
sum(case when gender = 'M' then 1 else 0 end) as male_count,
|
||||
sum(case when gender = 'F' then 1 else 0 end) as female_count,
|
||||
sum(case when student_status = '1' then 1 else 0 end) as active_count,
|
||||
sum(case when student_status = '2' then 1 else 0 end) as suspended_count,
|
||||
sum(case when student_status = '5' then 1 else 0 end) as graduated_count,
|
||||
sum(case when is_from_poor_family = 1 then 1 else 0 end) as poor_family_count,
|
||||
sum(case when is_minority = 1 then 1 else 0 end) as minority_count,
|
||||
sum(case when is_disabled = 1 then 1 else 0 end) as disabled_count,
|
||||
sum(case when is_orphan = 1 then 1 else 0 end) as orphan_count
|
||||
FROM xg_student_info
|
||||
WHERE deleted = 0 AND tenant_id = '000000'
|
||||
GROUP BY college_code, college_name
|
||||
ORDER BY college_code;
|
||||
|
||||
-- 显示修复后的表结构
|
||||
SELECT '=== 修复后的表结构 ===' as 'Result';
|
||||
SELECT
|
||||
COLUMN_NAME as '字段名',
|
||||
DATA_TYPE as '数据类型',
|
||||
IS_NULLABLE as '是否可空',
|
||||
COLUMN_DEFAULT as '默认值',
|
||||
COLUMN_COMMENT as '注释'
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info'
|
||||
AND COLUMN_NAME IN ('is_from_poor_family', 'is_minority', 'is_disabled', 'is_orphan')
|
||||
ORDER BY COLUMN_NAME;
|
||||
|
||||
-- 恢复外键检查
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
||||
-- ----------------------------
|
||||
-- 脚本执行完成提示
|
||||
-- ----------------------------
|
||||
SELECT '==============================' as 'Result';
|
||||
SELECT '✅ is_from_poor_family字段修复完成!' as 'Result';
|
||||
SELECT '✅ 字段名已与XML映射文件保持一致' as 'Result';
|
||||
SELECT '✅ 统计查询错误已修复' as 'Result';
|
||||
SELECT '📋 下一步:需要修复XML映射文件中的property名称' as 'Result';
|
||||
SELECT '⚠️ 注意:请重启后端服务并重新测试' as 'Result';
|
||||
SELECT '==============================' as 'Result';
|
||||
@@ -1,252 +0,0 @@
|
||||
-- ==========================================
|
||||
-- XML映射文件字段不一致问题修复脚本
|
||||
-- 版本:V2.5.0
|
||||
-- 功能:检查XML映射文件与实体类字段映射的一致性
|
||||
-- 作者:Cursor AI 辅助
|
||||
-- 时间:2025-01-12
|
||||
-- 问题:XML映射文件中存在字段名不一致、缺失字段、过时字段等问题
|
||||
-- 解决方案:提供完整的字段映射关系对照表
|
||||
-- ==========================================
|
||||
|
||||
-- 设置字符集
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ----------------------------
|
||||
-- 检查XML映射文件字段问题
|
||||
-- ----------------------------
|
||||
|
||||
SELECT '==============================' as 'Result';
|
||||
SELECT '🔍 XML映射文件字段一致性检查' as 'Result';
|
||||
SELECT '==============================' as 'Result';
|
||||
|
||||
-- 检查实体类字段在数据库中是否存在
|
||||
SELECT '=== 实体类字段在数据库中的存在性检查 ===' as 'Result';
|
||||
|
||||
-- 检查缺失的字段映射
|
||||
SELECT '=== 缺失字段映射检查 ===' as 'Result';
|
||||
|
||||
SELECT
|
||||
'current_address' as field_name,
|
||||
CASE WHEN COUNT(*) > 0 THEN '✅ 数据库字段存在' ELSE '❌ 数据库字段缺失' END as db_status,
|
||||
'currentAddress' as entity_field,
|
||||
'缺少XML映射' as xml_status
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'current_address'
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
'domicile_place' as field_name,
|
||||
CASE WHEN COUNT(*) > 0 THEN '✅ 数据库字段存在' ELSE '❌ 数据库字段缺失' END as db_status,
|
||||
'domicilePlace' as entity_field,
|
||||
'缺少XML映射' as xml_status
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'domicile_place'
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
'emergency_contact_name' as field_name,
|
||||
CASE WHEN COUNT(*) > 0 THEN '✅ 数据库字段存在' ELSE '❌ 数据库字段缺失' END as db_status,
|
||||
'emergencyContactName' as entity_field,
|
||||
'缺少XML映射' as xml_status
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'emergency_contact_name'
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
'emergency_contact_relation' as field_name,
|
||||
CASE WHEN COUNT(*) > 0 THEN '✅ 数据库字段存在' ELSE '❌ 数据库字段缺失' END as db_status,
|
||||
'emergencyContactRelation' as entity_field,
|
||||
'缺少XML映射' as xml_status
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'emergency_contact_relation'
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
'emergency_contact_phone' as field_name,
|
||||
CASE WHEN COUNT(*) > 0 THEN '✅ 数据库字段存在' ELSE '❌ 数据库字段缺失' END as db_status,
|
||||
'emergencyContactPhone' as entity_field,
|
||||
'缺少XML映射' as xml_status
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'emergency_contact_phone'
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
'father_work_unit' as field_name,
|
||||
CASE WHEN COUNT(*) > 0 THEN '✅ 数据库字段存在' ELSE '❌ 数据库字段缺失' END as db_status,
|
||||
'fatherWorkUnit' as entity_field,
|
||||
'缺少XML映射' as xml_status
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'father_work_unit'
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
'mother_work_unit' as field_name,
|
||||
CASE WHEN COUNT(*) > 0 THEN '✅ 数据库字段存在' ELSE '❌ 数据库字段缺失' END as db_status,
|
||||
'motherWorkUnit' as entity_field,
|
||||
'缺少XML映射' as xml_status
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'mother_work_unit'
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
'postal_code' as field_name,
|
||||
CASE WHEN COUNT(*) > 0 THEN '✅ 数据库字段存在' ELSE '❌ 数据库字段缺失' END as db_status,
|
||||
'postalCode' as entity_field,
|
||||
'缺少XML映射' as xml_status
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'postal_code'
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
'special_condition' as field_name,
|
||||
CASE WHEN COUNT(*) > 0 THEN '✅ 数据库字段存在' ELSE '❌ 数据库字段缺失' END as db_status,
|
||||
'specialCondition' as entity_field,
|
||||
'缺少XML映射' as xml_status
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'special_condition'
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
'religion' as field_name,
|
||||
CASE WHEN COUNT(*) > 0 THEN '✅ 数据库字段存在' ELSE '❌ 数据库字段缺失' END as db_status,
|
||||
'religion' as entity_field,
|
||||
'缺少XML映射' as xml_status
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'religion';
|
||||
|
||||
-- 检查过时的字段映射
|
||||
SELECT '=== 过时字段映射检查 ===' as 'Result';
|
||||
|
||||
SELECT
|
||||
'emergency_contact' as xml_field,
|
||||
CASE WHEN COUNT(*) > 0 THEN '❌ 数据库字段仍存在' ELSE '✅ 数据库字段已移除' END as db_status,
|
||||
'emergencyContact' as xml_property,
|
||||
'应改为emergency_contact_name' as correct_field
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'emergency_contact'
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
'emergency_phone' as xml_field,
|
||||
CASE WHEN COUNT(*) > 0 THEN '❌ 数据库字段仍存在' ELSE '✅ 数据库字段已移除' END as db_status,
|
||||
'emergencyPhone' as xml_property,
|
||||
'应改为emergency_contact_phone' as correct_field
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'emergency_phone'
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
'emergency_relation' as xml_field,
|
||||
CASE WHEN COUNT(*) > 0 THEN '❌ 数据库字段仍存在' ELSE '✅ 数据库字段已移除' END as db_status,
|
||||
'emergencyRelation' as xml_property,
|
||||
'应改为emergency_contact_relation' as correct_field
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'emergency_relation'
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
'father_job' as xml_field,
|
||||
CASE WHEN COUNT(*) > 0 THEN '❌ 数据库字段仍存在' ELSE '✅ 数据库字段已移除' END as db_status,
|
||||
'fatherJob' as xml_property,
|
||||
'应改为father_work_unit' as correct_field
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'father_job'
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
'mother_job' as xml_field,
|
||||
CASE WHEN COUNT(*) > 0 THEN '❌ 数据库字段仍存在' ELSE '✅ 数据库字段已移除' END as db_status,
|
||||
'motherJob' as xml_property,
|
||||
'应改为mother_work_unit' as correct_field
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'mother_job'
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
'home_zip_code' as xml_field,
|
||||
CASE WHEN COUNT(*) > 0 THEN '❌ 数据库字段仍存在' ELSE '✅ 数据库字段已移除' END as db_status,
|
||||
'homeZipCode' as xml_property,
|
||||
'应改为postal_code' as correct_field
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'home_zip_code';
|
||||
|
||||
-- 检查XML映射文件中不存在的字段
|
||||
SELECT '=== XML映射文件中不存在的字段 ===' as 'Result';
|
||||
|
||||
SELECT
|
||||
'dorm_building' as xml_field,
|
||||
CASE WHEN COUNT(*) > 0 THEN '❌ 数据库字段存在但实体类中无对应字段' ELSE '✅ 数据库字段不存在' END as db_status,
|
||||
'dormBuilding' as xml_property,
|
||||
'实体类中不存在此字段' as issue
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'dorm_building'
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
'dorm_room' as xml_field,
|
||||
CASE WHEN COUNT(*) > 0 THEN '❌ 数据库字段存在但实体类中无对应字段' ELSE '✅ 数据库字段不存在' END as db_status,
|
||||
'dormRoom' as xml_property,
|
||||
'实体类中不存在此字段' as issue
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'dorm_room'
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
'family_address' as xml_field,
|
||||
CASE WHEN COUNT(*) > 0 THEN '❌ 数据库字段存在但实体类中无对应字段' ELSE '✅ 数据库字段不存在' END as db_status,
|
||||
'familyAddress' as xml_property,
|
||||
'实体类中不存在此字段' as issue
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'family_address'
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
'family_zip_code' as xml_field,
|
||||
CASE WHEN COUNT(*) > 0 THEN '❌ 数据库字段存在但实体类中无对应字段' ELSE '✅ 数据库字段不存在' END as db_status,
|
||||
'familyZipCode' as xml_property,
|
||||
'实体类中不存在此字段' as issue
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'family_zip_code';
|
||||
|
||||
-- 显示当前数据库表的完整字段列表
|
||||
SELECT '=== 当前数据库表字段列表 ===' as 'Result';
|
||||
|
||||
SELECT
|
||||
COLUMN_NAME as '数据库字段名',
|
||||
DATA_TYPE as '数据类型',
|
||||
IS_NULLABLE as '是否可空',
|
||||
COLUMN_DEFAULT as '默认值',
|
||||
COLUMN_COMMENT as '字段注释'
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info'
|
||||
ORDER BY ORDINAL_POSITION;
|
||||
|
||||
-- 恢复外键检查
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
||||
-- ----------------------------
|
||||
-- 脚本执行完成提示
|
||||
-- ----------------------------
|
||||
SELECT '==============================' as 'Result';
|
||||
SELECT '✅ XML映射文件字段一致性检查完成!' as 'Result';
|
||||
SELECT '📋 请根据检查结果修复XML映射文件' as 'Result';
|
||||
SELECT '⚠️ 下一步:修复XgStudentInfoMapper.xml文件' as 'Result';
|
||||
SELECT '==============================' as 'Result';
|
||||
@@ -1,222 +0,0 @@
|
||||
-- ==========================================
|
||||
-- 最终字段映射验证脚本
|
||||
-- 版本:V2.6.0
|
||||
-- 功能:验证实体类、XML映射文件和数据库字段的完全一致性
|
||||
-- 作者:Cursor AI 辅助
|
||||
-- 时间:2025-01-12
|
||||
-- 目的:确保修复后的字段映射没有遗漏或错误
|
||||
-- ==========================================
|
||||
|
||||
-- 设置字符集
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ----------------------------
|
||||
-- 最终字段映射验证
|
||||
-- ----------------------------
|
||||
|
||||
SELECT '==============================' as 'Result';
|
||||
SELECT '🔍 最终字段映射验证检查' as 'Result';
|
||||
SELECT '==============================' as 'Result';
|
||||
|
||||
-- 检查实体类字段与数据库字段的对应关系
|
||||
SELECT '=== 实体类字段与数据库字段对应检查 ===' as 'Result';
|
||||
|
||||
-- 基于XgStudentInfo实体类的字段列表进行逐一验证
|
||||
SELECT
|
||||
'id' as entity_field,
|
||||
'id' as db_field,
|
||||
CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'id'
|
||||
|
||||
UNION ALL SELECT 'studentNo' as entity_field, 'student_no' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'student_no'
|
||||
|
||||
UNION ALL SELECT 'idCard' as entity_field, 'id_card' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'id_card'
|
||||
|
||||
UNION ALL SELECT 'name' as entity_field, 'name' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'name'
|
||||
|
||||
UNION ALL SELECT 'namePinyin' as entity_field, 'name_pinyin' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'name_pinyin'
|
||||
|
||||
UNION ALL SELECT 'gender' as entity_field, 'gender' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'gender'
|
||||
|
||||
UNION ALL SELECT 'birthDate' as entity_field, 'birth_date' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'birth_date'
|
||||
|
||||
UNION ALL SELECT 'nation' as entity_field, 'nation' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'nation'
|
||||
|
||||
UNION ALL SELECT 'politicalStatus' as entity_field, 'political_status' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'political_status'
|
||||
|
||||
UNION ALL SELECT 'studentStatus' as entity_field, 'student_status' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'student_status'
|
||||
|
||||
UNION ALL SELECT 'enrollmentYear' as entity_field, 'enrollment_year' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'enrollment_year'
|
||||
|
||||
UNION ALL SELECT 'enrollmentDate' as entity_field, 'enrollment_date' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'enrollment_date'
|
||||
|
||||
UNION ALL SELECT 'schoolSystem' as entity_field, 'school_system' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'school_system'
|
||||
|
||||
UNION ALL SELECT 'educationLevel' as entity_field, 'education_level' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'education_level'
|
||||
|
||||
UNION ALL SELECT 'trainingType' as entity_field, 'training_type' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'training_type'
|
||||
|
||||
UNION ALL SELECT 'majorCode' as entity_field, 'major_code' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'major_code'
|
||||
|
||||
UNION ALL SELECT 'majorName' as entity_field, 'major_name' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'major_name'
|
||||
|
||||
UNION ALL SELECT 'classCode' as entity_field, 'class_code' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'class_code'
|
||||
|
||||
UNION ALL SELECT 'className' as entity_field, 'class_name' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'class_name'
|
||||
|
||||
UNION ALL SELECT 'collegeCode' as entity_field, 'college_code' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'college_code'
|
||||
|
||||
UNION ALL SELECT 'collegeName' as entity_field, 'college_name' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'college_name'
|
||||
|
||||
UNION ALL SELECT 'phone' as entity_field, 'phone' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'phone'
|
||||
|
||||
UNION ALL SELECT 'email' as entity_field, 'email' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'email'
|
||||
|
||||
UNION ALL SELECT 'qq' as entity_field, 'qq' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'qq'
|
||||
|
||||
UNION ALL SELECT 'wechat' as entity_field, 'wechat' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'wechat'
|
||||
|
||||
UNION ALL SELECT 'currentAddress' as entity_field, 'current_address' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'current_address'
|
||||
|
||||
UNION ALL SELECT 'homeAddress' as entity_field, 'home_address' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'home_address'
|
||||
|
||||
UNION ALL SELECT 'domicilePlace' as entity_field, 'domicile_place' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'domicile_place'
|
||||
|
||||
UNION ALL SELECT 'postalCode' as entity_field, 'postal_code' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'postal_code'
|
||||
|
||||
UNION ALL SELECT 'emergencyContactName' as entity_field, 'emergency_contact_name' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'emergency_contact_name'
|
||||
|
||||
UNION ALL SELECT 'emergencyContactRelation' as entity_field, 'emergency_contact_relation' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'emergency_contact_relation'
|
||||
|
||||
UNION ALL SELECT 'emergencyContactPhone' as entity_field, 'emergency_contact_phone' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'emergency_contact_phone'
|
||||
|
||||
UNION ALL SELECT 'fatherName' as entity_field, 'father_name' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'father_name'
|
||||
|
||||
UNION ALL SELECT 'fatherPhone' as entity_field, 'father_phone' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'father_phone'
|
||||
|
||||
UNION ALL SELECT 'fatherWorkUnit' as entity_field, 'father_work_unit' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'father_work_unit'
|
||||
|
||||
UNION ALL SELECT 'motherName' as entity_field, 'mother_name' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'mother_name'
|
||||
|
||||
UNION ALL SELECT 'motherPhone' as entity_field, 'mother_phone' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'mother_phone'
|
||||
|
||||
UNION ALL SELECT 'motherWorkUnit' as entity_field, 'mother_work_unit' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'mother_work_unit'
|
||||
|
||||
UNION ALL SELECT 'height' as entity_field, 'height' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'height'
|
||||
|
||||
UNION ALL SELECT 'weight' as entity_field, 'weight' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'weight'
|
||||
|
||||
UNION ALL SELECT 'bloodType' as entity_field, 'blood_type' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'blood_type'
|
||||
|
||||
UNION ALL SELECT 'specialCondition' as entity_field, 'special_condition' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'special_condition'
|
||||
|
||||
UNION ALL SELECT 'religion' as entity_field, 'religion' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'religion'
|
||||
|
||||
UNION ALL SELECT 'hobbies' as entity_field, 'hobbies' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'hobbies'
|
||||
|
||||
UNION ALL SELECT 'isPoorStudent' as entity_field, 'is_from_poor_family' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'is_from_poor_family'
|
||||
|
||||
UNION ALL SELECT 'povertyLevel' as entity_field, 'poverty_level' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'poverty_level'
|
||||
|
||||
UNION ALL SELECT 'hasGrant' as entity_field, 'has_grant' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'has_grant'
|
||||
|
||||
UNION ALL SELECT 'grantAmount' as entity_field, 'grant_amount' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'grant_amount'
|
||||
|
||||
UNION ALL SELECT 'hasLoan' as entity_field, 'has_loan' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'has_loan'
|
||||
|
||||
UNION ALL SELECT 'loanAmount' as entity_field, 'loan_amount' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'loan_amount'
|
||||
|
||||
UNION ALL SELECT 'bankCardNo' as entity_field, 'bank_card_no' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'bank_card_no'
|
||||
|
||||
UNION ALL SELECT 'bankName' as entity_field, 'bank_name' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'bank_name'
|
||||
|
||||
UNION ALL SELECT 'bankBranch' as entity_field, 'bank_branch' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'bank_branch'
|
||||
|
||||
UNION ALL SELECT 'infoStatus' as entity_field, 'info_status' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'info_status'
|
||||
|
||||
UNION ALL SELECT 'dataSource' as entity_field, 'data_source' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'data_source'
|
||||
|
||||
UNION ALL SELECT 'lastBatchId' as entity_field, 'last_batch_id' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'last_batch_id'
|
||||
|
||||
UNION ALL SELECT 'lastAuditTime' as entity_field, 'last_audit_time' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'last_audit_time'
|
||||
|
||||
UNION ALL SELECT 'extField1' as entity_field, 'ext_field1' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'ext_field1'
|
||||
|
||||
UNION ALL SELECT 'extField2' as entity_field, 'ext_field2' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'ext_field2'
|
||||
|
||||
UNION ALL SELECT 'extField3' as entity_field, 'ext_field3' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'ext_field3'
|
||||
|
||||
UNION ALL SELECT 'extField4' as entity_field, 'ext_field4' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'ext_field4'
|
||||
|
||||
UNION ALL SELECT 'extField5' as entity_field, 'ext_field5' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'ext_field5'
|
||||
|
||||
UNION ALL SELECT 'remark' as entity_field, 'remark' as db_field, CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'remark';
|
||||
|
||||
-- 统计映射状态
|
||||
SELECT '=== 字段映射统计 ===' as 'Result';
|
||||
|
||||
SELECT
|
||||
COUNT(*) as '总实体字段数',
|
||||
SUM(CASE WHEN status = '✅ 映射正确' THEN 1 ELSE 0 END) as '映射正确字段数',
|
||||
SUM(CASE WHEN status = '❌ 数据库字段缺失' THEN 1 ELSE 0 END) as '缺失字段数'
|
||||
FROM (
|
||||
SELECT
|
||||
CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status
|
||||
FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'id'
|
||||
UNION ALL SELECT CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'student_no'
|
||||
UNION ALL SELECT CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'id_card'
|
||||
UNION ALL SELECT CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'name'
|
||||
UNION ALL SELECT CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'name_pinyin'
|
||||
UNION ALL SELECT CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'gender'
|
||||
UNION ALL SELECT CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'birth_date'
|
||||
UNION ALL SELECT CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'nation'
|
||||
UNION ALL SELECT CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'political_status'
|
||||
UNION ALL SELECT CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'student_status'
|
||||
UNION ALL SELECT CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'enrollment_year'
|
||||
UNION ALL SELECT CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'enrollment_date'
|
||||
UNION ALL SELECT CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'school_system'
|
||||
UNION ALL SELECT CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'education_level'
|
||||
UNION ALL SELECT CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'training_type'
|
||||
UNION ALL SELECT CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'major_code'
|
||||
UNION ALL SELECT CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'major_name'
|
||||
UNION ALL SELECT CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'class_code'
|
||||
UNION ALL SELECT CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'class_name'
|
||||
UNION ALL SELECT CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'college_code'
|
||||
UNION ALL SELECT CASE WHEN COUNT(*) > 0 THEN '✅ 映射正确' ELSE '❌ 数据库字段缺失' END as status FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'xg_student_info' AND column_name = 'college_name'
|
||||
) t;
|
||||
|
||||
-- 测试原来报错的统计查询
|
||||
SELECT '=== 统计查询功能验证 ===' as 'Result';
|
||||
|
||||
SELECT
|
||||
college_code,
|
||||
college_name,
|
||||
count(*) as total_count,
|
||||
sum(case when gender = 'M' then 1 else 0 end) as male_count,
|
||||
sum(case when gender = 'F' then 1 else 0 end) as female_count,
|
||||
sum(case when student_status = '1' then 1 else 0 end) as active_count,
|
||||
sum(case when student_status = '2' then 1 else 0 end) as suspended_count,
|
||||
sum(case when student_status = '5' then 1 else 0 end) as graduated_count,
|
||||
sum(case when is_from_poor_family = 1 then 1 else 0 end) as poor_family_count,
|
||||
sum(case when is_minority = 1 then 1 else 0 end) as minority_count,
|
||||
sum(case when is_disabled = 1 then 1 else 0 end) as disabled_count,
|
||||
sum(case when is_orphan = 1 then 1 else 0 end) as orphan_count
|
||||
FROM xg_student_info
|
||||
WHERE deleted = 0 AND tenant_id = '000000'
|
||||
GROUP BY college_code, college_name
|
||||
ORDER BY college_code;
|
||||
|
||||
-- 恢复外键检查
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
||||
-- ----------------------------
|
||||
-- 脚本执行完成提示
|
||||
-- ----------------------------
|
||||
SELECT '==============================' as 'Result';
|
||||
SELECT '✅ 最终字段映射验证完成!' as 'Result';
|
||||
SELECT '✅ 实体类、XML映射文件、数据库字段已完全同步' as 'Result';
|
||||
SELECT '✅ 统计查询功能验证通过' as 'Result';
|
||||
SELECT '⚠️ 注意:请重启后端服务使所有修改生效' as 'Result';
|
||||
SELECT '==============================' as 'Result';
|
||||
@@ -1,360 +0,0 @@
|
||||
-- ==========================================
|
||||
-- 学生信息管理页面下拉菜单修复脚本
|
||||
-- 版本:V1.0.0
|
||||
-- 功能:解决搜索栏性别、班级、学籍状态下拉菜单为空的问题
|
||||
-- 作者:Cursor AI 辅助
|
||||
-- 时间:2025-01-14
|
||||
-- 问题:前端下拉菜单空白、班级选项空白、学籍状态空白
|
||||
-- ==========================================
|
||||
|
||||
USE hzdyjs_xg;
|
||||
|
||||
-- 设置字符集
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ==============================================
|
||||
-- 1. 创建学工专用字典类型
|
||||
-- ==============================================
|
||||
|
||||
-- 学生性别字典类型
|
||||
INSERT INTO sys_dict_type (dict_id, tenant_id, dict_name, dict_type, create_dept, create_by, create_time, remark)
|
||||
VALUES (1001, '000000', '学生性别', 'xg_gender', 103, 1, NOW(), '学生性别字典')
|
||||
ON DUPLICATE KEY UPDATE dict_name = VALUES(dict_name), remark = VALUES(remark);
|
||||
|
||||
-- 学生学籍状态字典类型
|
||||
INSERT INTO sys_dict_type (dict_id, tenant_id, dict_name, dict_type, create_dept, create_by, create_time, remark)
|
||||
VALUES (1002, '000000', '学籍状态', 'xg_student_status', 103, 1, NOW(), '学生学籍状态字典')
|
||||
ON DUPLICATE KEY UPDATE dict_name = VALUES(dict_name), remark = VALUES(remark);
|
||||
|
||||
-- 信息状态字典类型
|
||||
INSERT INTO sys_dict_type (dict_id, tenant_id, dict_name, dict_type, create_dept, create_by, create_time, remark)
|
||||
VALUES (1003, '000000', '信息状态', 'xg_info_status', 103, 1, NOW(), '学生信息状态字典')
|
||||
ON DUPLICATE KEY UPDATE dict_name = VALUES(dict_name), remark = VALUES(remark);
|
||||
|
||||
-- 学历层次字典类型
|
||||
INSERT INTO sys_dict_type (dict_id, tenant_id, dict_name, dict_type, create_dept, create_by, create_time, remark)
|
||||
VALUES (1004, '000000', '学历层次', 'xg_education_level', 103, 1, NOW(), '学历层次字典')
|
||||
ON DUPLICATE KEY UPDATE dict_name = VALUES(dict_name), remark = VALUES(remark);
|
||||
|
||||
-- 培养方式字典类型
|
||||
INSERT INTO sys_dict_type (dict_id, tenant_id, dict_name, dict_type, create_dept, create_by, create_time, remark)
|
||||
VALUES (1005, '000000', '培养方式', 'xg_training_type', 103, 1, NOW(), '培养方式字典')
|
||||
ON DUPLICATE KEY UPDATE dict_name = VALUES(dict_name), remark = VALUES(remark);
|
||||
|
||||
-- 政治面貌字典类型
|
||||
INSERT INTO sys_dict_type (dict_id, tenant_id, dict_name, dict_type, create_dept, create_by, create_time, remark)
|
||||
VALUES (1006, '000000', '政治面貌', 'xg_political_status', 103, 1, NOW(), '政治面貌字典')
|
||||
ON DUPLICATE KEY UPDATE dict_name = VALUES(dict_name), remark = VALUES(remark);
|
||||
|
||||
-- ==============================================
|
||||
-- 2. 创建学工专用字典数据
|
||||
-- ==============================================
|
||||
|
||||
-- 学生性别字典数据
|
||||
INSERT INTO sys_dict_data (dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, remark)
|
||||
VALUES (2001, '000000', 1, '男', 'M', 'xg_gender', '', 'primary', 'Y', 103, 1, NOW(), '男性')
|
||||
ON DUPLICATE KEY UPDATE dict_label = VALUES(dict_label), list_class = VALUES(list_class);
|
||||
|
||||
INSERT INTO sys_dict_data (dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, remark)
|
||||
VALUES (2002, '000000', 2, '女', 'F', 'xg_gender', '', 'danger', 'N', 103, 1, NOW(), '女性')
|
||||
ON DUPLICATE KEY UPDATE dict_label = VALUES(dict_label), list_class = VALUES(list_class);
|
||||
|
||||
-- 学籍状态字典数据
|
||||
INSERT INTO sys_dict_data (dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, remark)
|
||||
VALUES (2011, '000000', 1, '在籍', '1', 'xg_student_status', '', 'success', 'Y', 103, 1, NOW(), '在籍学生')
|
||||
ON DUPLICATE KEY UPDATE dict_label = VALUES(dict_label), list_class = VALUES(list_class);
|
||||
|
||||
INSERT INTO sys_dict_data (dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, remark)
|
||||
VALUES (2012, '000000', 2, '休学', '2', 'xg_student_status', '', 'warning', 'N', 103, 1, NOW(), '休学学生')
|
||||
ON DUPLICATE KEY UPDATE dict_label = VALUES(dict_label), list_class = VALUES(list_class);
|
||||
|
||||
INSERT INTO sys_dict_data (dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, remark)
|
||||
VALUES (2013, '000000', 3, '复学', '3', 'xg_student_status', '', 'info', 'N', 103, 1, NOW(), '复学学生')
|
||||
ON DUPLICATE KEY UPDATE dict_label = VALUES(dict_label), list_class = VALUES(list_class);
|
||||
|
||||
INSERT INTO sys_dict_data (dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, remark)
|
||||
VALUES (2014, '000000', 4, '退学', '4', 'xg_student_status', '', 'danger', 'N', 103, 1, NOW(), '退学学生')
|
||||
ON DUPLICATE KEY UPDATE dict_label = VALUES(dict_label), list_class = VALUES(list_class);
|
||||
|
||||
INSERT INTO sys_dict_data (dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, remark)
|
||||
VALUES (2015, '000000', 5, '毕业', '5', 'xg_student_status', '', 'success', 'N', 103, 1, NOW(), '毕业学生')
|
||||
ON DUPLICATE KEY UPDATE dict_label = VALUES(dict_label), list_class = VALUES(list_class);
|
||||
|
||||
INSERT INTO sys_dict_data (dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, remark)
|
||||
VALUES (2016, '000000', 6, '肄业', '6', 'xg_student_status', '', 'warning', 'N', 103, 1, NOW(), '肄业学生')
|
||||
ON DUPLICATE KEY UPDATE dict_label = VALUES(dict_label), list_class = VALUES(list_class);
|
||||
|
||||
INSERT INTO sys_dict_data (dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, remark)
|
||||
VALUES (2017, '000000', 7, '转学', '7', 'xg_student_status', '', 'info', 'N', 103, 1, NOW(), '转学学生')
|
||||
ON DUPLICATE KEY UPDATE dict_label = VALUES(dict_label), list_class = VALUES(list_class);
|
||||
|
||||
-- 信息状态字典数据
|
||||
INSERT INTO sys_dict_data (dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, remark)
|
||||
VALUES (2021, '000000', 1, '正常', '1', 'xg_info_status', '', 'success', 'Y', 103, 1, NOW(), '信息正常')
|
||||
ON DUPLICATE KEY UPDATE dict_label = VALUES(dict_label), list_class = VALUES(list_class);
|
||||
|
||||
INSERT INTO sys_dict_data (dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, remark)
|
||||
VALUES (2022, '000000', 2, '待审核', '2', 'xg_info_status', '', 'warning', 'N', 103, 1, NOW(), '待审核')
|
||||
ON DUPLICATE KEY UPDATE dict_label = VALUES(dict_label), list_class = VALUES(list_class);
|
||||
|
||||
INSERT INTO sys_dict_data (dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, remark)
|
||||
VALUES (2023, '000000', 3, '审核中', '3', 'xg_info_status', '', 'primary', 'N', 103, 1, NOW(), '审核中')
|
||||
ON DUPLICATE KEY UPDATE dict_label = VALUES(dict_label), list_class = VALUES(list_class);
|
||||
|
||||
INSERT INTO sys_dict_data (dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, remark)
|
||||
VALUES (2024, '000000', 4, '已驳回', '4', 'xg_info_status', '', 'danger', 'N', 103, 1, NOW(), '已驳回')
|
||||
ON DUPLICATE KEY UPDATE dict_label = VALUES(dict_label), list_class = VALUES(list_class);
|
||||
|
||||
INSERT INTO sys_dict_data (dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, remark)
|
||||
VALUES (2025, '000000', 5, '已锁定', '5', 'xg_info_status', '', 'info', 'N', 103, 1, NOW(), '已锁定')
|
||||
ON DUPLICATE KEY UPDATE dict_label = VALUES(dict_label), list_class = VALUES(list_class);
|
||||
|
||||
-- 学历层次字典数据
|
||||
INSERT INTO sys_dict_data (dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, remark)
|
||||
VALUES (2031, '000000', 1, '专科', '1', 'xg_education_level', '', 'info', 'N', 103, 1, NOW(), '专科层次')
|
||||
ON DUPLICATE KEY UPDATE dict_label = VALUES(dict_label), list_class = VALUES(list_class);
|
||||
|
||||
INSERT INTO sys_dict_data (dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, remark)
|
||||
VALUES (2032, '000000', 2, '本科', '2', 'xg_education_level', '', 'primary', 'Y', 103, 1, NOW(), '本科层次')
|
||||
ON DUPLICATE KEY UPDATE dict_label = VALUES(dict_label), list_class = VALUES(list_class);
|
||||
|
||||
INSERT INTO sys_dict_data (dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, remark)
|
||||
VALUES (2033, '000000', 3, '硕士', '3', 'xg_education_level', '', 'success', 'N', 103, 1, NOW(), '硕士层次')
|
||||
ON DUPLICATE KEY UPDATE dict_label = VALUES(dict_label), list_class = VALUES(list_class);
|
||||
|
||||
INSERT INTO sys_dict_data (dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, remark)
|
||||
VALUES (2034, '000000', 4, '博士', '4', 'xg_education_level', '', 'warning', 'N', 103, 1, NOW(), '博士层次')
|
||||
ON DUPLICATE KEY UPDATE dict_label = VALUES(dict_label), list_class = VALUES(list_class);
|
||||
|
||||
-- 培养方式字典数据
|
||||
INSERT INTO sys_dict_data (dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, remark)
|
||||
VALUES (2041, '000000', 1, '全日制', '1', 'xg_training_type', '', 'success', 'Y', 103, 1, NOW(), '全日制培养')
|
||||
ON DUPLICATE KEY UPDATE dict_label = VALUES(dict_label), list_class = VALUES(list_class);
|
||||
|
||||
INSERT INTO sys_dict_data (dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, remark)
|
||||
VALUES (2042, '000000', 2, '非全日制', '2', 'xg_training_type', '', 'warning', 'N', 103, 1, NOW(), '非全日制培养')
|
||||
ON DUPLICATE KEY UPDATE dict_label = VALUES(dict_label), list_class = VALUES(list_class);
|
||||
|
||||
INSERT INTO sys_dict_data (dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, remark)
|
||||
VALUES (2043, '000000', 3, '函授', '3', 'xg_training_type', '', 'info', 'N', 103, 1, NOW(), '函授培养')
|
||||
ON DUPLICATE KEY UPDATE dict_label = VALUES(dict_label), list_class = VALUES(list_class);
|
||||
|
||||
INSERT INTO sys_dict_data (dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, remark)
|
||||
VALUES (2044, '000000', 4, '业余', '4', 'xg_training_type', '', 'primary', 'N', 103, 1, NOW(), '业余培养')
|
||||
ON DUPLICATE KEY UPDATE dict_label = VALUES(dict_label), list_class = VALUES(list_class);
|
||||
|
||||
-- 政治面貌字典数据
|
||||
INSERT INTO sys_dict_data (dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, remark)
|
||||
VALUES (2051, '000000', 1, '中共党员', '01', 'xg_political_status', '', 'danger', 'N', 103, 1, NOW(), '中共党员')
|
||||
ON DUPLICATE KEY UPDATE dict_label = VALUES(dict_label), list_class = VALUES(list_class);
|
||||
|
||||
INSERT INTO sys_dict_data (dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, remark)
|
||||
VALUES (2052, '000000', 2, '中共预备党员', '02', 'xg_political_status', '', 'warning', 'N', 103, 1, NOW(), '中共预备党员')
|
||||
ON DUPLICATE KEY UPDATE dict_label = VALUES(dict_label), list_class = VALUES(list_class);
|
||||
|
||||
INSERT INTO sys_dict_data (dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, remark)
|
||||
VALUES (2053, '000000', 3, '共青团员', '03', 'xg_political_status', '', 'primary', 'Y', 103, 1, NOW(), '共青团员')
|
||||
ON DUPLICATE KEY UPDATE dict_label = VALUES(dict_label), list_class = VALUES(list_class);
|
||||
|
||||
INSERT INTO sys_dict_data (dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, remark)
|
||||
VALUES (2054, '000000', 13, '群众', '13', 'xg_political_status', '', 'info', 'N', 103, 1, NOW(), '群众')
|
||||
ON DUPLICATE KEY UPDATE dict_label = VALUES(dict_label), list_class = VALUES(list_class);
|
||||
|
||||
-- ==============================================
|
||||
-- 3. 确保学生信息表存在且结构正确
|
||||
-- ==============================================
|
||||
|
||||
-- 创建学生信息表(如果不存在)
|
||||
CREATE TABLE IF NOT EXISTS `xg_student_info` (
|
||||
-- 标准基础字段(必须)
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
|
||||
`create_dept` bigint(20) DEFAULT NULL 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 '更新时间',
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
|
||||
-- 基本信息字段
|
||||
`student_no` varchar(32) NOT NULL COMMENT '学号',
|
||||
`id_card` varchar(18) DEFAULT NULL COMMENT '身份证号',
|
||||
`name` varchar(50) NOT NULL COMMENT '姓名',
|
||||
`name_pinyin` varchar(200) DEFAULT NULL COMMENT '姓名拼音',
|
||||
`gender` char(1) NOT NULL COMMENT '性别:0-男,1-女',
|
||||
`birth_date` date DEFAULT NULL COMMENT '出生日期',
|
||||
`nation` varchar(20) DEFAULT NULL COMMENT '民族',
|
||||
`political_status` varchar(20) DEFAULT NULL COMMENT '政治面貌',
|
||||
|
||||
-- 学籍信息字段
|
||||
`student_status` char(1) DEFAULT '1' COMMENT '学籍状态:1-在籍,2-休学,3-复学,4-退学,5-毕业',
|
||||
`enrollment_year` int(4) DEFAULT NULL COMMENT '入学年份',
|
||||
`enrollment_date` date DEFAULT NULL COMMENT '入学日期',
|
||||
`school_system` int(2) DEFAULT 4 COMMENT '学制(年)',
|
||||
`education_level` varchar(20) DEFAULT NULL COMMENT '学历层次',
|
||||
`training_type` varchar(20) DEFAULT NULL COMMENT '培养方式',
|
||||
|
||||
-- 专业班级信息字段
|
||||
`major_code` varchar(20) DEFAULT NULL COMMENT '专业代码',
|
||||
`major_name` varchar(100) DEFAULT NULL COMMENT '专业名称',
|
||||
`class_code` varchar(32) DEFAULT NULL COMMENT '班级代码',
|
||||
`class_name` varchar(100) DEFAULT NULL COMMENT '班级名称',
|
||||
|
||||
-- 学院信息字段
|
||||
`college_code` varchar(20) DEFAULT NULL COMMENT '学院代码',
|
||||
`college_name` varchar(100) DEFAULT NULL COMMENT '学院名称',
|
||||
|
||||
-- 教师信息字段
|
||||
`counselor_id` bigint(20) DEFAULT NULL COMMENT '辅导员ID',
|
||||
`counselor_name` varchar(50) DEFAULT NULL COMMENT '辅导员姓名',
|
||||
`class_teacher_id` bigint(20) DEFAULT NULL COMMENT '班主任ID',
|
||||
`class_teacher_name` varchar(50) DEFAULT NULL COMMENT '班主任姓名',
|
||||
|
||||
-- 联系信息字段
|
||||
`phone` varchar(20) DEFAULT NULL COMMENT '手机号码',
|
||||
`email` varchar(100) DEFAULT NULL COMMENT '电子邮箱',
|
||||
`qq` varchar(20) DEFAULT NULL COMMENT 'QQ号码',
|
||||
`wechat` varchar(50) DEFAULT NULL COMMENT '微信号',
|
||||
|
||||
-- 地址信息字段
|
||||
`dorm_building` varchar(50) DEFAULT NULL COMMENT '宿舍楼栋',
|
||||
`dorm_room` varchar(20) DEFAULT NULL COMMENT '宿舍房间',
|
||||
`home_address` varchar(200) DEFAULT NULL COMMENT '家庭地址',
|
||||
`postal_code` varchar(10) DEFAULT NULL COMMENT '邮政编码',
|
||||
|
||||
-- 紧急联系人信息字段
|
||||
`emergency_contact` varchar(50) DEFAULT NULL COMMENT '紧急联系人',
|
||||
`emergency_phone` varchar(20) DEFAULT NULL COMMENT '紧急联系人电话',
|
||||
`emergency_relation` varchar(20) DEFAULT NULL COMMENT '紧急联系人关系',
|
||||
|
||||
-- 其他信息字段
|
||||
`is_from_poor_family` tinyint(1) DEFAULT 0 COMMENT '是否贫困生:0-否,1-是',
|
||||
`is_minority` tinyint(1) DEFAULT 0 COMMENT '是否少数民族:0-否,1-是',
|
||||
`is_disabled` tinyint(1) DEFAULT 0 COMMENT '是否残疾:0-否,1-是',
|
||||
`is_orphan` tinyint(1) DEFAULT 0 COMMENT '是否孤儿:0-否,1-是',
|
||||
|
||||
-- 状态管理字段
|
||||
`info_status` char(1) DEFAULT '1' COMMENT '信息状态:1-正常,2-待审核,3-审核中,4-已驳回,5-已锁定',
|
||||
`data_source` varchar(20) DEFAULT 'manual' COMMENT '数据来源:manual-手工录入,import-批量导入,sync-系统同步',
|
||||
|
||||
-- 备注字段
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注信息',
|
||||
|
||||
-- 主键和索引
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE KEY `uk_student_no_tenant` (`student_no`, `tenant_id`),
|
||||
KEY `idx_tenant_id` (`tenant_id`),
|
||||
KEY `idx_deleted` (`deleted`),
|
||||
KEY `idx_name` (`name`),
|
||||
KEY `idx_college_code` (`college_code`),
|
||||
KEY `idx_class_code` (`class_code`),
|
||||
KEY `idx_student_status` (`student_status`),
|
||||
KEY `idx_info_status` (`info_status`),
|
||||
KEY `idx_enrollment_year` (`enrollment_year`),
|
||||
KEY `idx_major_code` (`major_code`),
|
||||
KEY `idx_create_time` (`create_time`),
|
||||
KEY `idx_college_class` (`college_code`, `class_code`),
|
||||
KEY `idx_status_filter` (`tenant_id`, `student_status`, `info_status`, `deleted`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生信息表';
|
||||
|
||||
-- ==============================================
|
||||
-- 4. 插入测试数据
|
||||
-- ==============================================
|
||||
|
||||
-- 插入示例学生数据
|
||||
INSERT INTO `xg_student_info` (
|
||||
`id`, `tenant_id`, `student_no`, `name`, `gender`, `birth_date`, `id_card`, `phone`, `email`,
|
||||
`major_code`, `major_name`, `class_code`, `class_name`,
|
||||
`college_code`, `college_name`, `enrollment_year`, `student_status`, `info_status`,
|
||||
`is_from_poor_family`, `is_minority`, `is_disabled`, `is_orphan`,
|
||||
`create_by`, `create_time`, `update_by`, `update_time`
|
||||
) VALUES
|
||||
(1001, '000000', '2023001001', '张三', 'M', '2000-01-01', '110101200001010001', '13800138001', 'zhangsan@example.com',
|
||||
'CS001', '计算机科学与技术', 'CS2023001', '计算机2023-1班',
|
||||
'CS', '计算机学院', 2023, '1', '1',
|
||||
0, 0, 0, 0,
|
||||
1, NOW(), 1, NOW()),
|
||||
(1002, '000000', '2023001002', '李四', 'F', '2000-02-02', '110101200002020002', '13800138002', 'lisi@example.com',
|
||||
'CS001', '计算机科学与技术', 'CS2023001', '计算机2023-1班',
|
||||
'CS', '计算机学院', 2023, '1', '1',
|
||||
1, 0, 0, 0,
|
||||
1, NOW(), 1, NOW()),
|
||||
(1003, '000000', '2023002001', '王五', 'M', '2000-03-03', '110101200003030003', '13800138003', 'wangwu@example.com',
|
||||
'EE001', '电子信息工程', 'EE2023001', '电子2023-1班',
|
||||
'EE', '电子信息学院', 2023, '1', '1',
|
||||
0, 1, 0, 0,
|
||||
1, NOW(), 1, NOW()),
|
||||
(1004, '000000', '2023002002', '赵六', 'F', '2000-04-04', '110101200004040004', '13800138004', 'zhaoliu@example.com',
|
||||
'EE001', '电子信息工程', 'EE2023001', '电子2023-1班',
|
||||
'EE', '电子信息学院', 2023, '2', '1',
|
||||
0, 0, 0, 0,
|
||||
1, NOW(), 1, NOW()),
|
||||
(1005, '000000', '2023003001', '孙七', 'M', '2000-05-05', '110101200005050005', '13800138005', 'sunqi@example.com',
|
||||
'BM001', '工商管理', 'BM2023001', '管理2023-1班',
|
||||
'BM', '经济管理学院', 2023, '1', '1',
|
||||
0, 0, 0, 0,
|
||||
1, NOW(), 1, NOW()),
|
||||
(1006, '000000', '2022001001', '周八', 'F', '1999-06-06', '110101199906060006', '13800138006', 'zhouba@example.com',
|
||||
'CS001', '计算机科学与技术', 'CS2022001', '计算机2022-1班',
|
||||
'CS', '计算机学院', 2022, '1', '1',
|
||||
0, 0, 0, 0,
|
||||
1, NOW(), 1, NOW()),
|
||||
(1007, '000000', '2022001002', '吴九', 'M', '1999-07-07', '110101199907070007', '13800138007', 'wujiu@example.com',
|
||||
'CS001', '计算机科学与技术', 'CS2022001', '计算机2022-1班',
|
||||
'CS', '计算机学院', 2022, '5', '1',
|
||||
0, 0, 0, 0,
|
||||
1, NOW(), 1, NOW()),
|
||||
(1008, '000000', '2024001001', '郑十', 'F', '2001-08-08', '110101200108080008', '13800138008', 'zhengshi@example.com',
|
||||
'CS002', '软件工程', 'CS2024001', '软件2024-1班',
|
||||
'CS', '计算机学院', 2024, '1', '1',
|
||||
0, 0, 0, 0,
|
||||
1, NOW(), 1, NOW())
|
||||
ON DUPLICATE KEY UPDATE
|
||||
name = VALUES(name),
|
||||
gender = VALUES(gender),
|
||||
class_name = VALUES(class_name),
|
||||
college_name = VALUES(college_name),
|
||||
student_status = VALUES(student_status),
|
||||
update_time = NOW();
|
||||
|
||||
-- ==============================================
|
||||
-- 5. 验证数据创建结果
|
||||
-- ==============================================
|
||||
|
||||
-- 验证字典类型创建
|
||||
SELECT '=== 字典类型验证 ===' as info;
|
||||
SELECT dict_id, dict_name, dict_type FROM sys_dict_type WHERE dict_type LIKE 'xg_%' ORDER BY dict_id;
|
||||
|
||||
-- 验证字典数据创建
|
||||
SELECT '=== 字典数据验证 ===' as info;
|
||||
SELECT dict_type, dict_label, dict_value, list_class FROM sys_dict_data WHERE dict_type LIKE 'xg_%' ORDER BY dict_type, dict_sort;
|
||||
|
||||
-- 验证学生信息数据
|
||||
SELECT '=== 学生信息验证 ===' as info;
|
||||
SELECT student_no, name, gender, class_name, college_name, student_status, info_status FROM xg_student_info ORDER BY student_no;
|
||||
|
||||
-- 验证班级选项数据
|
||||
SELECT '=== 班级选项验证 ===' as info;
|
||||
SELECT DISTINCT class_code, class_name, college_code, college_name FROM xg_student_info WHERE class_code IS NOT NULL ORDER BY class_code;
|
||||
|
||||
-- 验证学院选项数据
|
||||
SELECT '=== 学院选项验证 ===' as info;
|
||||
SELECT DISTINCT college_code, college_name FROM xg_student_info WHERE college_code IS NOT NULL ORDER BY college_code;
|
||||
|
||||
-- 统计数据
|
||||
SELECT '=== 统计数据验证 ===' as info;
|
||||
SELECT
|
||||
COUNT(*) as total_count,
|
||||
SUM(CASE WHEN gender = 'M' THEN 1 ELSE 0 END) as male_count,
|
||||
SUM(CASE WHEN gender = 'F' THEN 1 ELSE 0 END) as female_count,
|
||||
SUM(CASE WHEN student_status = '1' THEN 1 ELSE 0 END) as active_count,
|
||||
SUM(CASE WHEN student_status = '2' THEN 1 ELSE 0 END) as suspended_count,
|
||||
SUM(CASE WHEN student_status = '5' THEN 1 ELSE 0 END) as graduated_count
|
||||
FROM xg_student_info
|
||||
WHERE deleted = 0;
|
||||
|
||||
-- 恢复外键检查
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
||||
SELECT '学生信息管理页面下拉菜单修复完成!' as result;
|
||||
@@ -1,186 +0,0 @@
|
||||
-- ==============================
|
||||
-- 修复 xg_student_info 表缺失字段 (MySQL 5.7兼容版本)
|
||||
-- 创建时间: 2025-01-15
|
||||
-- 说明: 使用存储过程检查字段是否存在,避免重复添加
|
||||
-- ==============================
|
||||
|
||||
USE `hzdyjs_xg`;
|
||||
|
||||
-- 创建添加字段的存储过程
|
||||
DELIMITER $$
|
||||
|
||||
DROP PROCEDURE IF EXISTS AddColumnIfNotExists$$
|
||||
|
||||
CREATE PROCEDURE AddColumnIfNotExists(
|
||||
IN table_name VARCHAR(128),
|
||||
IN column_name VARCHAR(128),
|
||||
IN column_definition TEXT
|
||||
)
|
||||
BEGIN
|
||||
DECLARE column_exists INT DEFAULT 0;
|
||||
|
||||
-- 检查字段是否存在
|
||||
SELECT COUNT(*) INTO column_exists
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = table_name
|
||||
AND COLUMN_NAME = column_name;
|
||||
|
||||
-- 如果字段不存在,则添加
|
||||
IF column_exists = 0 THEN
|
||||
SET @sql = CONCAT('ALTER TABLE `', table_name, '` ADD COLUMN `', column_name, '` ', column_definition);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
SELECT CONCAT('Added column: ', column_name) as message;
|
||||
ELSE
|
||||
SELECT CONCAT('Column already exists: ', column_name) as message;
|
||||
END IF;
|
||||
END$$
|
||||
|
||||
DELIMITER ;
|
||||
|
||||
-- 开始添加字段
|
||||
SELECT 'Starting to add missing columns to xg_student_info table...' as message;
|
||||
|
||||
-- 1. 添加基本信息字段
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'nation', 'varchar(20) DEFAULT NULL COMMENT \'民族\' AFTER `birth_date`');
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'name_english', 'varchar(100) DEFAULT NULL COMMENT \'英文姓名\' AFTER `name`');
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'former_name', 'varchar(50) DEFAULT NULL COMMENT \'曾用名\' AFTER `name_english`');
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'name_pinyin', 'varchar(200) DEFAULT NULL COMMENT \'姓名拼音\' AFTER `former_name`');
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'marital_status', 'varchar(10) DEFAULT NULL COMMENT \'婚姻状况:未婚、已婚、离异、丧偶\' AFTER `political_status`');
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'religion', 'varchar(20) DEFAULT NULL COMMENT \'宗教信仰\' AFTER `marital_status`');
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'photo_path', 'varchar(500) DEFAULT NULL COMMENT \'学生照片存储路径\' AFTER `photo_url`');
|
||||
|
||||
-- 2. 添加学籍信息字段
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'school_system', 'varchar(10) DEFAULT NULL COMMENT \'学制:3年制、4年制、5年制等\' AFTER `enrollment_year`');
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'education_level', 'varchar(20) DEFAULT NULL COMMENT \'培养层次:专科、本科、硕士、博士\' AFTER `school_system`');
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'training_type', 'varchar(20) DEFAULT NULL COMMENT \'培养方式:全日制、非全日制\' AFTER `education_level`');
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'admission_category', 'varchar(20) DEFAULT NULL COMMENT \'录取类别:统招、自主招生、推荐免试等\' AFTER `training_type`');
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'source_region', 'varchar(50) DEFAULT NULL COMMENT \'生源地区\' AFTER `admission_category`');
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'middle_school', 'varchar(100) DEFAULT NULL COMMENT \'毕业中学\' AFTER `source_region`');
|
||||
|
||||
-- 3. 添加联系信息字段
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'qq', 'varchar(20) DEFAULT NULL COMMENT \'QQ号码\' AFTER `email`');
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'wechat', 'varchar(50) DEFAULT NULL COMMENT \'微信号\' AFTER `qq`');
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'current_address', 'varchar(200) DEFAULT NULL COMMENT \'现住址\' AFTER `home_address`');
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'postal_code', 'varchar(10) DEFAULT NULL COMMENT \'邮政编码\' AFTER `current_address`');
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'domicile_place', 'varchar(100) DEFAULT NULL COMMENT \'户籍所在地\' AFTER `postal_code`');
|
||||
|
||||
-- 4. 添加宿舍信息字段
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'dormitory_building', 'varchar(20) DEFAULT NULL COMMENT \'宿舍楼栋\' AFTER `domicile_place`');
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'dormitory_room', 'varchar(20) DEFAULT NULL COMMENT \'宿舍房间号\' AFTER `dormitory_building`');
|
||||
|
||||
-- 5. 添加紧急联系人字段
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'emergency_contact_name', 'varchar(50) DEFAULT NULL COMMENT \'紧急联系人姓名\' AFTER `dormitory_room`');
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'emergency_contact_phone', 'varchar(20) DEFAULT NULL COMMENT \'紧急联系人电话\' AFTER `emergency_contact_name`');
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'emergency_contact_relation', 'varchar(20) DEFAULT NULL COMMENT \'紧急联系人关系\' AFTER `emergency_contact_phone`');
|
||||
|
||||
-- 6. 添加家庭信息字段
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'father_name', 'varchar(50) DEFAULT NULL COMMENT \'父亲姓名\' AFTER `emergency_contact_relation`');
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'father_phone', 'varchar(20) DEFAULT NULL COMMENT \'父亲电话\' AFTER `father_name`');
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'father_work_unit', 'varchar(100) DEFAULT NULL COMMENT \'父亲工作单位\' AFTER `father_phone`');
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'father_position', 'varchar(50) DEFAULT NULL COMMENT \'父亲职务\' AFTER `father_work_unit`');
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'mother_name', 'varchar(50) DEFAULT NULL COMMENT \'母亲姓名\' AFTER `father_position`');
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'mother_phone', 'varchar(20) DEFAULT NULL COMMENT \'母亲电话\' AFTER `mother_name`');
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'mother_work_unit', 'varchar(100) DEFAULT NULL COMMENT \'母亲工作单位\' AFTER `mother_phone`');
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'mother_position', 'varchar(50) DEFAULT NULL COMMENT \'母亲职务\' AFTER `mother_work_unit`');
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'family_income', 'decimal(10,2) DEFAULT NULL COMMENT \'家庭年收入\' AFTER `mother_position`');
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'family_members', 'int DEFAULT NULL COMMENT \'家庭成员数量\' AFTER `family_income`');
|
||||
|
||||
-- 7. 添加体征信息字段
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'height', 'decimal(5,2) DEFAULT NULL COMMENT \'身高(cm)\' AFTER `blood_type`');
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'weight', 'decimal(5,2) DEFAULT NULL COMMENT \'体重(kg)\' AFTER `height`');
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'health_status', 'varchar(20) DEFAULT NULL COMMENT \'健康状况:健康、一般、较差\' AFTER `weight`');
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'special_condition', 'varchar(200) DEFAULT NULL COMMENT \'特殊身体状况\' AFTER `health_status`');
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'medical_history', 'varchar(500) DEFAULT NULL COMMENT \'既往病史\' AFTER `special_condition`');
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'allergies', 'varchar(200) DEFAULT NULL COMMENT \'过敏史\' AFTER `medical_history`');
|
||||
|
||||
-- 8. 添加银行信息字段
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'bank_card_no', 'varchar(30) DEFAULT NULL COMMENT \'银行卡号\' AFTER `allergies`');
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'bank_name', 'varchar(50) DEFAULT NULL COMMENT \'开户银行\' AFTER `bank_card_no`');
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'bank_branch', 'varchar(100) DEFAULT NULL COMMENT \'开户支行\' AFTER `bank_name`');
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'card_holder_name', 'varchar(50) DEFAULT NULL COMMENT \'持卡人姓名\' AFTER `bank_branch`');
|
||||
|
||||
-- 9. 添加特殊标识字段
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'is_poor_student', 'tinyint(1) DEFAULT 0 COMMENT \'是否贫困生:0-否,1-是\' AFTER `card_holder_name`');
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'is_minority', 'tinyint(1) DEFAULT 0 COMMENT \'是否少数民族:0-否,1-是\' AFTER `is_poor_student`');
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'is_disabled', 'tinyint(1) DEFAULT 0 COMMENT \'是否残疾:0-否,1-是\' AFTER `is_minority`');
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'is_orphan', 'tinyint(1) DEFAULT 0 COMMENT \'是否孤儿:0-否,1-是\' AFTER `is_disabled`');
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'is_single_parent', 'tinyint(1) DEFAULT 0 COMMENT \'是否单亲家庭:0-否,1-是\' AFTER `is_orphan`');
|
||||
|
||||
-- 10. 添加扩展信息字段
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'specialties', 'varchar(500) DEFAULT NULL COMMENT \'特长爱好\' AFTER `is_single_parent`');
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'awards', 'text DEFAULT NULL COMMENT \'获奖情况\' AFTER `specialties`');
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'violations', 'text DEFAULT NULL COMMENT \'违纪记录\' AFTER `awards`');
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'social_activities', 'text DEFAULT NULL COMMENT \'社会实践活动\' AFTER `violations`');
|
||||
|
||||
-- 11. 添加状态管理字段
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'info_status', 'varchar(10) DEFAULT \'active\' COMMENT \'信息状态:active-正常,inactive-停用,graduated-已毕业\' AFTER `social_activities`');
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'data_source', 'varchar(20) DEFAULT \'manual\' COMMENT \'数据来源:manual-手动录入,import-批量导入,sync-同步\' AFTER `info_status`');
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'is_complete', 'tinyint(1) DEFAULT 0 COMMENT \'信息是否完整:0-不完整,1-完整\' AFTER `data_source`');
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'completion_rate', 'decimal(5,2) DEFAULT 0.00 COMMENT \'信息完整度百分比\' AFTER `is_complete`');
|
||||
|
||||
-- 12. 添加扩展字段
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'ext_field1', 'varchar(200) DEFAULT NULL COMMENT \'扩展字段1\' AFTER `completion_rate`');
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'ext_field2', 'varchar(200) DEFAULT NULL COMMENT \'扩展字段2\' AFTER `ext_field1`');
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'ext_field3', 'varchar(200) DEFAULT NULL COMMENT \'扩展字段3\' AFTER `ext_field2`');
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'ext_field4', 'varchar(200) DEFAULT NULL COMMENT \'扩展字段4\' AFTER `ext_field3`');
|
||||
CALL AddColumnIfNotExists('xg_student_info', 'ext_field5', 'varchar(200) DEFAULT NULL COMMENT \'扩展字段5\' AFTER `ext_field4`');
|
||||
|
||||
-- 13. 添加索引以提高查询性能
|
||||
SELECT 'Adding indexes for better performance...' as message;
|
||||
|
||||
-- 检查索引是否存在的函数
|
||||
DELIMITER $$
|
||||
|
||||
DROP PROCEDURE IF EXISTS AddIndexIfNotExists$$
|
||||
|
||||
CREATE PROCEDURE AddIndexIfNotExists(
|
||||
IN table_name VARCHAR(128),
|
||||
IN index_name VARCHAR(128),
|
||||
IN index_definition TEXT
|
||||
)
|
||||
BEGIN
|
||||
DECLARE index_exists INT DEFAULT 0;
|
||||
|
||||
-- 检查索引是否存在
|
||||
SELECT COUNT(*) INTO index_exists
|
||||
FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = table_name
|
||||
AND INDEX_NAME = index_name;
|
||||
|
||||
-- 如果索引不存在,则添加
|
||||
IF index_exists = 0 THEN
|
||||
SET @sql = CONCAT('ALTER TABLE `', table_name, '` ADD ', index_definition);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
SELECT CONCAT('Added index: ', index_name) as message;
|
||||
ELSE
|
||||
SELECT CONCAT('Index already exists: ', index_name) as message;
|
||||
END IF;
|
||||
END$$
|
||||
|
||||
DELIMITER ;
|
||||
|
||||
-- 添加索引
|
||||
CALL AddIndexIfNotExists('xg_student_info', 'idx_student_no', 'INDEX `idx_student_no` (`student_no`)');
|
||||
CALL AddIndexIfNotExists('xg_student_info', 'idx_id_card', 'INDEX `idx_id_card` (`id_card`)');
|
||||
CALL AddIndexIfNotExists('xg_student_info', 'idx_name', 'INDEX `idx_name` (`name`)');
|
||||
CALL AddIndexIfNotExists('xg_student_info', 'idx_class_code', 'INDEX `idx_class_code` (`class_code`)');
|
||||
CALL AddIndexIfNotExists('xg_student_info', 'idx_major_code', 'INDEX `idx_major_code` (`major_code`)');
|
||||
CALL AddIndexIfNotExists('xg_student_info', 'idx_college_code', 'INDEX `idx_college_code` (`college_code`)');
|
||||
CALL AddIndexIfNotExists('xg_student_info', 'idx_enrollment_year', 'INDEX `idx_enrollment_year` (`enrollment_year`)');
|
||||
CALL AddIndexIfNotExists('xg_student_info', 'idx_student_status', 'INDEX `idx_student_status` (`student_status`)');
|
||||
CALL AddIndexIfNotExists('xg_student_info', 'idx_info_status', 'INDEX `idx_info_status` (`info_status`)');
|
||||
CALL AddIndexIfNotExists('xg_student_info', 'idx_phone', 'INDEX `idx_phone` (`phone`)');
|
||||
|
||||
-- 清理存储过程
|
||||
DROP PROCEDURE IF EXISTS AddColumnIfNotExists;
|
||||
DROP PROCEDURE IF EXISTS AddIndexIfNotExists;
|
||||
|
||||
-- 完成信息
|
||||
SELECT 'All missing columns have been added successfully!' as message;
|
||||
SELECT 'Please verify the table structure and test the application.' as message;
|
||||
@@ -1,157 +0,0 @@
|
||||
-- ==========================================
|
||||
-- 修复学生信息表缺失字段脚本
|
||||
-- 版本:V2.2.0
|
||||
-- 功能:添加代码中使用但数据库表中缺失的字段
|
||||
-- 作者:Cursor AI
|
||||
-- 时间:2025-01-15
|
||||
-- 问题:数据库表结构与代码实体类不匹配,导致插入失败
|
||||
-- ==========================================
|
||||
|
||||
-- 设置字符集
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ----------------------------
|
||||
-- 修复 xg_student_info 表缺失字段
|
||||
-- ----------------------------
|
||||
|
||||
-- 检查表是否存在
|
||||
SELECT 'Checking xg_student_info table...' as message;
|
||||
|
||||
-- 1. 添加基本信息字段
|
||||
ALTER TABLE `xg_student_info`
|
||||
ADD COLUMN IF NOT EXISTS `nation` varchar(20) DEFAULT NULL COMMENT '民族' AFTER `birth_date`,
|
||||
ADD COLUMN IF NOT EXISTS `name_english` varchar(100) DEFAULT NULL COMMENT '英文姓名' AFTER `name`,
|
||||
ADD COLUMN IF NOT EXISTS `former_name` varchar(50) DEFAULT NULL COMMENT '曾用名' AFTER `name_english`,
|
||||
ADD COLUMN IF NOT EXISTS `name_pinyin` varchar(200) DEFAULT NULL COMMENT '姓名拼音' AFTER `former_name`,
|
||||
ADD COLUMN IF NOT EXISTS `marital_status` varchar(10) DEFAULT NULL COMMENT '婚姻状况:未婚、已婚、离异、丧偶' AFTER `political_status`,
|
||||
ADD COLUMN IF NOT EXISTS `religion` varchar(20) DEFAULT NULL COMMENT '宗教信仰' AFTER `marital_status`,
|
||||
ADD COLUMN IF NOT EXISTS `photo_path` varchar(500) DEFAULT NULL COMMENT '学生照片存储路径' AFTER `photo_url`;
|
||||
|
||||
-- 2. 添加学籍信息字段
|
||||
ALTER TABLE `xg_student_info`
|
||||
ADD COLUMN IF NOT EXISTS `school_system` int(2) DEFAULT 4 COMMENT '学制(年)' AFTER `enrollment_date`,
|
||||
ADD COLUMN IF NOT EXISTS `education_level` varchar(20) DEFAULT NULL COMMENT '学历层次' AFTER `school_system`,
|
||||
ADD COLUMN IF NOT EXISTS `training_type` varchar(20) DEFAULT NULL COMMENT '培养方式:全日制、在职、函授、夜大等' AFTER `education_level`,
|
||||
ADD COLUMN IF NOT EXISTS `admission_category` varchar(20) DEFAULT NULL COMMENT '录取类别:统招、自主招生、专项计划等' AFTER `training_type`,
|
||||
ADD COLUMN IF NOT EXISTS `source_region` varchar(100) DEFAULT NULL COMMENT '生源地区(省市县)' AFTER `admission_category`,
|
||||
ADD COLUMN IF NOT EXISTS `middle_school` varchar(100) DEFAULT NULL COMMENT '毕业中学' AFTER `source_region`;
|
||||
|
||||
-- 3. 添加联系信息字段
|
||||
ALTER TABLE `xg_student_info`
|
||||
ADD COLUMN IF NOT EXISTS `qq` varchar(20) DEFAULT NULL COMMENT 'QQ号码' AFTER `email`,
|
||||
ADD COLUMN IF NOT EXISTS `wechat` varchar(50) DEFAULT NULL COMMENT '微信号' AFTER `qq`,
|
||||
ADD COLUMN IF NOT EXISTS `current_address` varchar(200) DEFAULT NULL COMMENT '现住址' AFTER `wechat`,
|
||||
ADD COLUMN IF NOT EXISTS `postal_code` varchar(10) DEFAULT NULL COMMENT '邮政编码' AFTER `home_address`,
|
||||
ADD COLUMN IF NOT EXISTS `domicile_place` varchar(100) DEFAULT NULL COMMENT '户籍所在地' AFTER `postal_code`;
|
||||
|
||||
-- 4. 添加宿舍信息字段
|
||||
ALTER TABLE `xg_student_info`
|
||||
ADD COLUMN IF NOT EXISTS `dormitory_building` varchar(50) DEFAULT NULL COMMENT '宿舍楼栋' AFTER `domicile_place`,
|
||||
ADD COLUMN IF NOT EXISTS `dormitory_room` varchar(20) DEFAULT NULL COMMENT '宿舍房间' AFTER `dormitory_building`;
|
||||
|
||||
-- 5. 添加紧急联系人信息字段
|
||||
ALTER TABLE `xg_student_info`
|
||||
ADD COLUMN IF NOT EXISTS `emergency_contact_name` varchar(50) DEFAULT NULL COMMENT '紧急联系人姓名' AFTER `dormitory_room`,
|
||||
ADD COLUMN IF NOT EXISTS `emergency_contact_phone` varchar(20) DEFAULT NULL COMMENT '紧急联系人电话' AFTER `emergency_contact_name`,
|
||||
ADD COLUMN IF NOT EXISTS `emergency_contact_relation` varchar(20) DEFAULT NULL COMMENT '紧急联系人关系' AFTER `emergency_contact_phone`;
|
||||
|
||||
-- 6. 添加家庭信息字段
|
||||
ALTER TABLE `xg_student_info`
|
||||
ADD COLUMN IF NOT EXISTS `father_name` varchar(50) DEFAULT NULL COMMENT '父亲姓名' AFTER `emergency_contact_relation`,
|
||||
ADD COLUMN IF NOT EXISTS `father_phone` varchar(20) DEFAULT NULL COMMENT '父亲电话' AFTER `father_name`,
|
||||
ADD COLUMN IF NOT EXISTS `father_work_unit` varchar(100) DEFAULT NULL COMMENT '父亲工作单位' AFTER `father_phone`,
|
||||
ADD COLUMN IF NOT EXISTS `mother_name` varchar(50) DEFAULT NULL COMMENT '母亲姓名' AFTER `father_work_unit`,
|
||||
ADD COLUMN IF NOT EXISTS `mother_phone` varchar(20) DEFAULT NULL COMMENT '母亲电话' AFTER `mother_name`,
|
||||
ADD COLUMN IF NOT EXISTS `mother_work_unit` varchar(100) DEFAULT NULL COMMENT '母亲工作单位' AFTER `mother_phone`,
|
||||
ADD COLUMN IF NOT EXISTS `guardian_name` varchar(50) DEFAULT NULL COMMENT '监护人姓名' AFTER `mother_work_unit`,
|
||||
ADD COLUMN IF NOT EXISTS `guardian_phone` varchar(20) DEFAULT NULL COMMENT '监护人电话' AFTER `guardian_name`,
|
||||
ADD COLUMN IF NOT EXISTS `guardian_relation` varchar(20) DEFAULT NULL COMMENT '监护人关系' AFTER `guardian_phone`,
|
||||
ADD COLUMN IF NOT EXISTS `family_income` varchar(50) DEFAULT NULL COMMENT '家庭收入' AFTER `guardian_relation`,
|
||||
ADD COLUMN IF NOT EXISTS `family_members` int(11) DEFAULT NULL COMMENT '家庭成员数量' AFTER `family_income`,
|
||||
ADD COLUMN IF NOT EXISTS `family_economic_status` varchar(20) DEFAULT NULL COMMENT '家庭经济状况' AFTER `family_members`,
|
||||
ADD COLUMN IF NOT EXISTS `household_register_type` varchar(20) DEFAULT NULL COMMENT '户口类型:农村、城镇' AFTER `family_economic_status`,
|
||||
ADD COLUMN IF NOT EXISTS `hukou_location` varchar(100) DEFAULT NULL COMMENT '户口所在地' AFTER `household_register_type`;
|
||||
|
||||
-- 7. 添加体征信息字段
|
||||
ALTER TABLE `xg_student_info`
|
||||
ADD COLUMN IF NOT EXISTS `height` decimal(5,2) DEFAULT NULL COMMENT '身高(厘米)' AFTER `hukou_location`,
|
||||
ADD COLUMN IF NOT EXISTS `weight` decimal(5,2) DEFAULT NULL COMMENT '体重(公斤)' AFTER `height`,
|
||||
ADD COLUMN IF NOT EXISTS `blood_type` varchar(10) DEFAULT NULL COMMENT '血型' AFTER `weight`,
|
||||
ADD COLUMN IF NOT EXISTS `health_status` varchar(20) DEFAULT NULL COMMENT '健康状况' AFTER `blood_type`,
|
||||
ADD COLUMN IF NOT EXISTS `special_condition` varchar(200) DEFAULT NULL COMMENT '特殊体质或疾病' AFTER `health_status`,
|
||||
ADD COLUMN IF NOT EXISTS `medical_history` varchar(500) DEFAULT NULL COMMENT '病史' AFTER `special_condition`,
|
||||
ADD COLUMN IF NOT EXISTS `allergies` varchar(200) DEFAULT NULL COMMENT '过敏史' AFTER `medical_history`,
|
||||
ADD COLUMN IF NOT EXISTS `disability_type` varchar(50) DEFAULT NULL COMMENT '残疾类型' AFTER `allergies`,
|
||||
ADD COLUMN IF NOT EXISTS `disability_level` varchar(20) DEFAULT NULL COMMENT '残疾等级' AFTER `disability_type`;
|
||||
|
||||
-- 8. 添加银行信息字段
|
||||
ALTER TABLE `xg_student_info`
|
||||
ADD COLUMN IF NOT EXISTS `bank_card_no` varchar(30) DEFAULT NULL COMMENT '银行卡号' AFTER `disability_level`,
|
||||
ADD COLUMN IF NOT EXISTS `bank_name` varchar(100) DEFAULT NULL COMMENT '开户银行' AFTER `bank_card_no`,
|
||||
ADD COLUMN IF NOT EXISTS `bank_branch` varchar(100) DEFAULT NULL COMMENT '开户支行' AFTER `bank_name`,
|
||||
ADD COLUMN IF NOT EXISTS `card_holder_name` varchar(50) DEFAULT NULL COMMENT '持卡人姓名' AFTER `bank_branch`;
|
||||
|
||||
-- 9. 添加特殊标识字段
|
||||
ALTER TABLE `xg_student_info`
|
||||
ADD COLUMN IF NOT EXISTS `is_poor_student` tinyint(1) DEFAULT 0 COMMENT '是否贫困生:0-否,1-是' AFTER `card_holder_name`,
|
||||
ADD COLUMN IF NOT EXISTS `is_minority` tinyint(1) DEFAULT 0 COMMENT '是否少数民族:0-否,1-是' AFTER `is_poor_student`,
|
||||
ADD COLUMN IF NOT EXISTS `is_disabled` tinyint(1) DEFAULT 0 COMMENT '是否残疾:0-否,1-是' AFTER `is_minority`,
|
||||
ADD COLUMN IF NOT EXISTS `is_orphan` tinyint(1) DEFAULT 0 COMMENT '是否孤儿:0-否,1-是' AFTER `is_disabled`,
|
||||
ADD COLUMN IF NOT EXISTS `is_left_behind_child` tinyint(1) DEFAULT 0 COMMENT '是否留守儿童:0-否,1-是' AFTER `is_orphan`,
|
||||
ADD COLUMN IF NOT EXISTS `is_single_child` tinyint(1) DEFAULT 0 COMMENT '是否独生子女:0-否,1-是' AFTER `is_left_behind_child`,
|
||||
ADD COLUMN IF NOT EXISTS `has_loan` tinyint(1) DEFAULT 0 COMMENT '是否有助学贷款:0-否,1-是' AFTER `is_single_child`,
|
||||
ADD COLUMN IF NOT EXISTS `loan_amount` decimal(10,2) DEFAULT NULL COMMENT '助学贷款金额' AFTER `has_loan`;
|
||||
|
||||
-- 10. 添加扩展信息字段
|
||||
ALTER TABLE `xg_student_info`
|
||||
ADD COLUMN IF NOT EXISTS `specialties` text DEFAULT NULL COMMENT '特长爱好' AFTER `loan_amount`,
|
||||
ADD COLUMN IF NOT EXISTS `awards` text DEFAULT NULL COMMENT '获奖情况' AFTER `specialties`,
|
||||
ADD COLUMN IF NOT EXISTS `violations` text DEFAULT NULL COMMENT '违纪记录' AFTER `awards`,
|
||||
ADD COLUMN IF NOT EXISTS `social_activities` text DEFAULT NULL COMMENT '社会活动' AFTER `violations`;
|
||||
|
||||
-- 11. 添加状态管理字段
|
||||
ALTER TABLE `xg_student_info`
|
||||
ADD COLUMN IF NOT EXISTS `info_status` char(1) DEFAULT '1' COMMENT '信息状态:1-正常,2-待审核,3-审核中,4-已驳回,5-已锁定' AFTER `social_activities`,
|
||||
ADD COLUMN IF NOT EXISTS `data_source` varchar(20) DEFAULT 'manual' COMMENT '数据来源:manual-手工录入,import-批量导入,sync-系统同步' AFTER `info_status`,
|
||||
ADD COLUMN IF NOT EXISTS `last_batch_id` bigint(20) DEFAULT NULL COMMENT '最后修改批次ID' AFTER `data_source`,
|
||||
ADD COLUMN IF NOT EXISTS `last_audit_time` datetime DEFAULT NULL COMMENT '最后审核时间' AFTER `last_batch_id`,
|
||||
ADD COLUMN IF NOT EXISTS `is_complete` tinyint(1) DEFAULT 0 COMMENT '信息是否完整:0-不完整,1-完整' AFTER `last_audit_time`,
|
||||
ADD COLUMN IF NOT EXISTS `completion_rate` decimal(5,2) DEFAULT 0.00 COMMENT '完整度百分比' AFTER `is_complete`;
|
||||
|
||||
-- 12. 添加扩展字段
|
||||
ALTER TABLE `xg_student_info`
|
||||
ADD COLUMN IF NOT EXISTS `ext_field1` varchar(200) DEFAULT NULL COMMENT '扩展字段1' AFTER `completion_rate`,
|
||||
ADD COLUMN IF NOT EXISTS `ext_field2` varchar(200) DEFAULT NULL COMMENT '扩展字段2' AFTER `ext_field1`,
|
||||
ADD COLUMN IF NOT EXISTS `ext_field3` varchar(200) DEFAULT NULL COMMENT '扩展字段3' AFTER `ext_field2`,
|
||||
ADD COLUMN IF NOT EXISTS `ext_field4` varchar(200) DEFAULT NULL COMMENT '扩展字段4' AFTER `ext_field3`,
|
||||
ADD COLUMN IF NOT EXISTS `ext_field5` varchar(500) DEFAULT NULL COMMENT '扩展字段5' AFTER `ext_field4`;
|
||||
|
||||
-- 13. 添加索引(如果不存在)
|
||||
CREATE INDEX IF NOT EXISTS `idx_nation` ON `xg_student_info`(`nation`);
|
||||
CREATE INDEX IF NOT EXISTS `idx_political_status` ON `xg_student_info`(`political_status`);
|
||||
CREATE INDEX IF NOT EXISTS `idx_training_type` ON `xg_student_info`(`training_type`);
|
||||
CREATE INDEX IF NOT EXISTS `idx_source_region` ON `xg_student_info`(`source_region`);
|
||||
CREATE INDEX IF NOT EXISTS `idx_is_poor_student` ON `xg_student_info`(`is_poor_student`);
|
||||
CREATE INDEX IF NOT EXISTS `idx_is_minority` ON `xg_student_info`(`is_minority`);
|
||||
CREATE INDEX IF NOT EXISTS `idx_is_disabled` ON `xg_student_info`(`is_disabled`);
|
||||
CREATE INDEX IF NOT EXISTS `idx_completion_rate` ON `xg_student_info`(`completion_rate`);
|
||||
CREATE INDEX IF NOT EXISTS `idx_last_batch_id` ON `xg_student_info`(`last_batch_id`);
|
||||
CREATE INDEX IF NOT EXISTS `idx_data_source` ON `xg_student_info`(`data_source`);
|
||||
|
||||
-- 14. 检查字段是否添加成功
|
||||
SELECT 'Checking if nation column exists...' as message;
|
||||
SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT, COLUMN_COMMENT
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'xg_student_info'
|
||||
AND COLUMN_NAME = 'nation';
|
||||
|
||||
-- 15. 显示表结构
|
||||
SELECT 'Table structure after modification:' as message;
|
||||
SHOW CREATE TABLE `xg_student_info`;
|
||||
|
||||
-- 恢复外键检查
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
||||
SELECT 'xg_student_info table fields fix completed!' as message;
|
||||
@@ -1,178 +0,0 @@
|
||||
-- ==========================================
|
||||
-- 信息采集批次相关表创建脚本
|
||||
-- 版本:V1.0.0
|
||||
-- 创建时间:2025-01-17
|
||||
-- 说明:创建信息采集批次功能所需的关联表
|
||||
-- ==========================================
|
||||
|
||||
USE hzdyjs_xg;
|
||||
|
||||
-- 1. 修改现有批次表结构,增加目标条件字段(如果不存在)
|
||||
ALTER TABLE xg_collection_batch
|
||||
ADD COLUMN IF NOT EXISTS target_grade VARCHAR(50) COMMENT '目标届别(如:2021,2022,2023)' AFTER batch_status,
|
||||
ADD COLUMN IF NOT EXISTS target_college_ids TEXT COMMENT '目标学院ID列表(JSON格式)' AFTER target_grade,
|
||||
ADD COLUMN IF NOT EXISTS target_major_ids TEXT COMMENT '目标专业ID列表(JSON格式)' AFTER target_college_ids,
|
||||
ADD COLUMN IF NOT EXISTS target_class_ids TEXT COMMENT '目标班级ID列表(JSON格式)' AFTER target_major_ids,
|
||||
ADD COLUMN IF NOT EXISTS remind_before_start INT DEFAULT 24 COMMENT '开始前提醒时间(小时)' AFTER target_class_ids,
|
||||
ADD COLUMN IF NOT EXISTS remind_before_end INT DEFAULT 24 COMMENT '结束前提醒时间(小时)' AFTER remind_before_start,
|
||||
ADD COLUMN IF NOT EXISTS auto_close TINYINT DEFAULT 1 COMMENT '是否自动关闭' AFTER remind_before_end,
|
||||
ADD COLUMN IF NOT EXISTS notification_sent TINYINT DEFAULT 0 COMMENT '是否已发送通知' AFTER auto_close,
|
||||
ADD COLUMN IF NOT EXISTS created_by_module VARCHAR(50) DEFAULT 'student_info' COMMENT '创建模块' AFTER notification_sent;
|
||||
|
||||
-- 2. 创建批次学生关联表(用于快速查询和统计)
|
||||
CREATE TABLE IF NOT EXISTS xg_collection_batch_student (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
batch_id BIGINT NOT NULL COMMENT '批次ID',
|
||||
student_id BIGINT NOT NULL COMMENT '学生ID',
|
||||
student_code VARCHAR(50) NOT NULL COMMENT '学号',
|
||||
student_name VARCHAR(100) NOT NULL COMMENT '学生姓名',
|
||||
college_id BIGINT COMMENT '学院ID',
|
||||
college_name VARCHAR(100) COMMENT '学院名称',
|
||||
major_id BIGINT COMMENT '专业ID',
|
||||
major_name VARCHAR(100) COMMENT '专业名称',
|
||||
class_id BIGINT COMMENT '班级ID',
|
||||
class_name VARCHAR(100) COMMENT '班级名称',
|
||||
grade VARCHAR(50) COMMENT '届别',
|
||||
can_edit TINYINT DEFAULT 1 COMMENT '是否可编辑',
|
||||
has_submitted TINYINT DEFAULT 0 COMMENT '是否已提交',
|
||||
submit_time DATETIME COMMENT '提交时间',
|
||||
last_edit_time DATETIME COMMENT '最后编辑时间',
|
||||
edit_count INT DEFAULT 0 COMMENT '编辑次数',
|
||||
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
create_by BIGINT COMMENT '创建者',
|
||||
update_by BIGINT COMMENT '更新者',
|
||||
deleted TINYINT DEFAULT 0 COMMENT '删除标志',
|
||||
tenant_id VARCHAR(20) DEFAULT '000000' COMMENT '租户ID',
|
||||
INDEX idx_batch_id (batch_id),
|
||||
INDEX idx_student_id (student_id),
|
||||
INDEX idx_batch_student (batch_id, student_id),
|
||||
INDEX idx_college_id (college_id),
|
||||
INDEX idx_grade (grade),
|
||||
INDEX idx_create_time (create_time),
|
||||
INDEX idx_has_submitted (has_submitted),
|
||||
INDEX idx_tenant_id (tenant_id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='信息采集批次学生关联表';
|
||||
|
||||
-- 3. 创建批次操作日志表
|
||||
CREATE TABLE IF NOT EXISTS xg_collection_batch_log (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
batch_id BIGINT NOT NULL COMMENT '批次ID',
|
||||
student_id BIGINT COMMENT '学生ID',
|
||||
operation_type VARCHAR(50) NOT NULL COMMENT '操作类型(CREATE,UPDATE,SUBMIT,ADMIN_MODIFY,BATCH_PUBLISH,BATCH_CLOSE)',
|
||||
operation_desc TEXT COMMENT '操作描述',
|
||||
old_data TEXT COMMENT '修改前数据(JSON格式)',
|
||||
new_data TEXT COMMENT '修改后数据(JSON格式)',
|
||||
operator_id BIGINT COMMENT '操作人ID',
|
||||
operator_name VARCHAR(100) COMMENT '操作人姓名',
|
||||
operator_type VARCHAR(50) COMMENT '操作人类型(STUDENT,ADMIN,SYSTEM)',
|
||||
ip_address VARCHAR(50) COMMENT 'IP地址',
|
||||
user_agent TEXT COMMENT '用户代理',
|
||||
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
tenant_id VARCHAR(20) DEFAULT '000000' COMMENT '租户ID',
|
||||
INDEX idx_batch_id (batch_id),
|
||||
INDEX idx_student_id (student_id),
|
||||
INDEX idx_operation_type (operation_type),
|
||||
INDEX idx_create_time (create_time),
|
||||
INDEX idx_operator_id (operator_id),
|
||||
INDEX idx_tenant_id (tenant_id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='信息采集批次操作日志表';
|
||||
|
||||
-- 4. 创建批次权限配置表
|
||||
CREATE TABLE IF NOT EXISTS xg_collection_batch_permission (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
batch_id BIGINT NOT NULL COMMENT '批次ID',
|
||||
permission_type VARCHAR(50) NOT NULL COMMENT '权限类型(EDIT,VIEW,SUBMIT,ADMIN)',
|
||||
role_id BIGINT COMMENT '角色ID',
|
||||
user_id BIGINT COMMENT '用户ID',
|
||||
college_id BIGINT COMMENT '学院ID',
|
||||
is_granted TINYINT DEFAULT 1 COMMENT '是否授权',
|
||||
grant_time DATETIME COMMENT '授权时间',
|
||||
expire_time DATETIME COMMENT '过期时间',
|
||||
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
create_by BIGINT COMMENT '创建者',
|
||||
update_by BIGINT COMMENT '更新者',
|
||||
deleted TINYINT DEFAULT 0 COMMENT '删除标志',
|
||||
tenant_id VARCHAR(20) DEFAULT '000000' COMMENT '租户ID',
|
||||
INDEX idx_batch_id (batch_id),
|
||||
INDEX idx_permission_type (permission_type),
|
||||
INDEX idx_role_id (role_id),
|
||||
INDEX idx_user_id (user_id),
|
||||
INDEX idx_college_id (college_id),
|
||||
INDEX idx_tenant_id (tenant_id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='信息采集批次权限配置表';
|
||||
|
||||
-- 5. 创建批次统计表
|
||||
CREATE TABLE IF NOT EXISTS xg_collection_batch_statistics (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
batch_id BIGINT NOT NULL COMMENT '批次ID',
|
||||
total_students INT DEFAULT 0 COMMENT '总学生数',
|
||||
submitted_students INT DEFAULT 0 COMMENT '已提交学生数',
|
||||
pending_students INT DEFAULT 0 COMMENT '待提交学生数',
|
||||
completion_rate DECIMAL(5,2) DEFAULT 0.00 COMMENT '完成率',
|
||||
college_id BIGINT COMMENT '学院ID(按学院统计时使用)',
|
||||
college_name VARCHAR(100) COMMENT '学院名称',
|
||||
major_id BIGINT COMMENT '专业ID(按专业统计时使用)',
|
||||
major_name VARCHAR(100) COMMENT '专业名称',
|
||||
class_id BIGINT COMMENT '班级ID(按班级统计时使用)',
|
||||
class_name VARCHAR(100) COMMENT '班级名称',
|
||||
grade VARCHAR(50) COMMENT '届别',
|
||||
statistics_type VARCHAR(50) DEFAULT 'TOTAL' COMMENT '统计类型(TOTAL,COLLEGE,MAJOR,CLASS,GRADE)',
|
||||
last_updated DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
tenant_id VARCHAR(20) DEFAULT '000000' COMMENT '租户ID',
|
||||
INDEX idx_batch_id (batch_id),
|
||||
INDEX idx_college_id (college_id),
|
||||
INDEX idx_major_id (major_id),
|
||||
INDEX idx_class_id (class_id),
|
||||
INDEX idx_grade (grade),
|
||||
INDEX idx_statistics_type (statistics_type),
|
||||
INDEX idx_tenant_id (tenant_id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='信息采集批次统计表';
|
||||
|
||||
-- 6. 创建批次定时任务表
|
||||
CREATE TABLE IF NOT EXISTS xg_batch_scheduled_task (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
batch_id BIGINT NOT NULL COMMENT '批次ID',
|
||||
task_type VARCHAR(50) NOT NULL COMMENT '任务类型(REMIND_START,REMIND_END,AUTO_CLOSE)',
|
||||
task_time DATETIME NOT NULL COMMENT '执行时间',
|
||||
task_status VARCHAR(20) DEFAULT 'PENDING' COMMENT '任务状态(PENDING,EXECUTED,FAILED)',
|
||||
execute_time DATETIME COMMENT '实际执行时间',
|
||||
error_message TEXT COMMENT '错误信息',
|
||||
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
tenant_id VARCHAR(20) DEFAULT '000000' COMMENT '租户ID',
|
||||
INDEX idx_batch_id (batch_id),
|
||||
INDEX idx_task_type (task_type),
|
||||
INDEX idx_task_time (task_time),
|
||||
INDEX idx_task_status (task_status),
|
||||
INDEX idx_tenant_id (tenant_id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='信息采集批次定时任务表';
|
||||
|
||||
-- 7. 修改学生信息表,添加批次相关字段(如果不存在)
|
||||
ALTER TABLE xg_student_info
|
||||
ADD COLUMN IF NOT EXISTS last_batch_id BIGINT COMMENT '最后参与的批次ID' AFTER remark,
|
||||
ADD COLUMN IF NOT EXISTS last_edit_batch_id BIGINT COMMENT '最后编辑的批次ID' AFTER last_batch_id,
|
||||
ADD COLUMN IF NOT EXISTS info_lock_status TINYINT DEFAULT 0 COMMENT '信息锁定状态(0:正常,1:锁定)' AFTER last_edit_batch_id,
|
||||
ADD COLUMN IF NOT EXISTS lock_reason VARCHAR(500) COMMENT '锁定原因' AFTER info_lock_status,
|
||||
ADD COLUMN IF NOT EXISTS last_batch_submit_time DATETIME COMMENT '最后批次提交时间' AFTER lock_reason;
|
||||
|
||||
-- 8. 创建相关索引
|
||||
CREATE INDEX IF NOT EXISTS idx_xg_collection_batch_grade ON xg_collection_batch(target_grade);
|
||||
CREATE INDEX IF NOT EXISTS idx_xg_collection_batch_module ON xg_collection_batch(created_by_module);
|
||||
CREATE INDEX IF NOT EXISTS idx_xg_student_info_last_batch ON xg_student_info(last_batch_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_xg_student_info_lock_status ON xg_student_info(info_lock_status);
|
||||
|
||||
-- 9. 插入一些测试数据
|
||||
INSERT INTO xg_collection_batch (id, tenant_id, batch_code, batch_name, batch_type, academic_year, semester, batch_status, start_time, end_time, description, create_by, create_time, update_by, update_time, deleted) VALUES
|
||||
(1745001000000000001, '000000', 'BATCH_2024_1', '2024-2025学年第一学期信息采集', 'annual', '2024-2025', '1', '2', '2024-09-01 00:00:00', '2024-09-30 23:59:59', '2024-2025学年第一学期学生信息采集工作', 1, NOW(), 1, NOW(), 0),
|
||||
(1745001000000000002, '000000', 'BATCH_2024_2', '2024-2025学年第二学期信息采集', 'annual', '2024-2025', '2', '1', '2025-02-15 00:00:00', '2025-03-15 23:59:59', '2024-2025学年第二学期学生信息采集工作', 1, NOW(), 1, NOW(), 0)
|
||||
ON DUPLICATE KEY UPDATE
|
||||
batch_name = VALUES(batch_name),
|
||||
description = VALUES(description),
|
||||
update_time = NOW();
|
||||
|
||||
-- 完成信息
|
||||
SELECT 'Database tables created successfully!' as message;
|
||||
@@ -1,70 +0,0 @@
|
||||
-- 第一阶段:数据库调整执行脚本
|
||||
-- 执行时间:2025-01-13
|
||||
-- 说明:按顺序执行所有数据库调整脚本
|
||||
|
||||
-- 开始事务
|
||||
START TRANSACTION;
|
||||
|
||||
-- 记录开始时间
|
||||
SELECT NOW() as start_time, 'Phase 1: Database Adjustment Started' as message;
|
||||
|
||||
-- 1. 批次表结构增强
|
||||
SOURCE 01-batch-table-enhancement.sql;
|
||||
|
||||
-- 2. 创建批次学生关联表
|
||||
SOURCE 02-batch-student-relation.sql;
|
||||
|
||||
-- 3. 创建批次操作日志表
|
||||
SOURCE 03-batch-log-table.sql;
|
||||
|
||||
-- 4. 学生信息表增强
|
||||
SOURCE 04-student-info-enhancement.sql;
|
||||
|
||||
-- 5. 创建视图和存储过程
|
||||
SOURCE 05-batch-views-and-procedures.sql;
|
||||
|
||||
-- 6. 插入系统配置数据
|
||||
INSERT INTO sys_config (config_name, config_key, config_value, config_type, remark, create_by, create_time) VALUES
|
||||
('学生信息采集批次默认提醒时间', 'student.batch.default.remind.hours', '24', 'Y', '创建批次时的默认提醒时间(小时)', 1, NOW()),
|
||||
('学生信息采集批次自动关闭', 'student.batch.auto.close', 'true', 'Y', '批次是否自动关闭', 1, NOW()),
|
||||
('学生信息采集批次最大编辑次数', 'student.batch.max.edit.count', '10', 'Y', '学生在批次期间最大编辑次数', 1, NOW()),
|
||||
('学生信息采集批次通知开关', 'student.batch.notification.enabled', 'true', 'Y', '是否启用批次通知', 1, NOW())
|
||||
ON DUPLICATE KEY UPDATE config_value = VALUES(config_value);
|
||||
|
||||
-- 7. 验证数据完整性
|
||||
SELECT
|
||||
'Table verification' as check_type,
|
||||
COUNT(*) as record_count,
|
||||
'xg_collection_batch' as table_name
|
||||
FROM xg_collection_batch
|
||||
UNION ALL
|
||||
SELECT
|
||||
'Table verification' as check_type,
|
||||
COUNT(*) as record_count,
|
||||
'xg_collection_batch_student' as table_name
|
||||
FROM xg_collection_batch_student
|
||||
UNION ALL
|
||||
SELECT
|
||||
'Table verification' as check_type,
|
||||
COUNT(*) as record_count,
|
||||
'xg_collection_batch_log' as table_name
|
||||
FROM xg_collection_batch_log;
|
||||
|
||||
-- 8. 检查新增字段
|
||||
SHOW COLUMNS FROM xg_collection_batch LIKE 'target_%';
|
||||
SHOW COLUMNS FROM xg_student_info LIKE 'last_batch_%';
|
||||
|
||||
-- 9. 检查视图
|
||||
SHOW TABLES LIKE 'v_%';
|
||||
|
||||
-- 10. 检查存储过程
|
||||
SHOW PROCEDURE STATUS WHERE Name LIKE 'sp_%';
|
||||
|
||||
-- 记录完成时间
|
||||
SELECT NOW() as end_time, 'Phase 1: Database Adjustment Completed Successfully!' as message;
|
||||
|
||||
-- 提交事务
|
||||
COMMIT;
|
||||
|
||||
-- 如果出错,回滚事务
|
||||
-- ROLLBACK;
|
||||
@@ -1,412 +0,0 @@
|
||||
-- 学生信息采集批次功能重新设计 - 数据库脚本
|
||||
-- 创建时间: 2025-01-13
|
||||
-- 说明: 将信息采集批次功能集成到学生信息管理中,支持按条件创建批次
|
||||
|
||||
-- 1. 修改现有批次表结构,增加目标条件字段
|
||||
ALTER TABLE xg_collection_batch
|
||||
ADD COLUMN target_grade VARCHAR(50) COMMENT '目标届别(如:2021,2022,2023)',
|
||||
ADD COLUMN target_college_ids TEXT COMMENT '目标学院ID列表(JSON格式)',
|
||||
ADD COLUMN target_major_ids TEXT COMMENT '目标专业ID列表(JSON格式)',
|
||||
ADD COLUMN target_class_ids TEXT COMMENT '目标班级ID列表(JSON格式)',
|
||||
ADD COLUMN remind_before_start INT DEFAULT 24 COMMENT '开始前提醒时间(小时)',
|
||||
ADD COLUMN remind_before_end INT DEFAULT 24 COMMENT '结束前提醒时间(小时)',
|
||||
ADD COLUMN auto_close TINYINT DEFAULT 1 COMMENT '是否自动关闭',
|
||||
ADD COLUMN notification_sent TINYINT DEFAULT 0 COMMENT '是否已发送通知',
|
||||
ADD COLUMN created_by_module VARCHAR(50) DEFAULT 'student_info' COMMENT '创建模块';
|
||||
|
||||
-- 2. 创建批次学生关联表(用于快速查询和统计)
|
||||
CREATE TABLE xg_collection_batch_student (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
batch_id BIGINT NOT NULL COMMENT '批次ID',
|
||||
student_id BIGINT NOT NULL COMMENT '学生ID',
|
||||
student_code VARCHAR(50) NOT NULL COMMENT '学号',
|
||||
student_name VARCHAR(100) NOT NULL COMMENT '学生姓名',
|
||||
college_id BIGINT COMMENT '学院ID',
|
||||
college_name VARCHAR(100) COMMENT '学院名称',
|
||||
major_id BIGINT COMMENT '专业ID',
|
||||
major_name VARCHAR(100) COMMENT '专业名称',
|
||||
class_id BIGINT COMMENT '班级ID',
|
||||
class_name VARCHAR(100) COMMENT '班级名称',
|
||||
grade VARCHAR(50) COMMENT '届别',
|
||||
can_edit TINYINT DEFAULT 1 COMMENT '是否可编辑',
|
||||
has_submitted TINYINT DEFAULT 0 COMMENT '是否已提交',
|
||||
submit_time DATETIME COMMENT '提交时间',
|
||||
last_edit_time DATETIME COMMENT '最后编辑时间',
|
||||
edit_count INT DEFAULT 0 COMMENT '编辑次数',
|
||||
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
create_by BIGINT COMMENT '创建者',
|
||||
update_by BIGINT COMMENT '更新者',
|
||||
deleted TINYINT DEFAULT 0 COMMENT '删除标志',
|
||||
tenant_id BIGINT DEFAULT 0 COMMENT '租户ID',
|
||||
INDEX idx_batch_id (batch_id),
|
||||
INDEX idx_student_id (student_id),
|
||||
INDEX idx_batch_student (batch_id, student_id),
|
||||
INDEX idx_college_id (college_id),
|
||||
INDEX idx_grade (grade),
|
||||
INDEX idx_create_time (create_time),
|
||||
FOREIGN KEY (batch_id) REFERENCES xg_collection_batch(id) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='信息采集批次学生关联表';
|
||||
|
||||
-- 3. 创建批次操作日志表
|
||||
CREATE TABLE xg_collection_batch_log (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
batch_id BIGINT NOT NULL COMMENT '批次ID',
|
||||
student_id BIGINT COMMENT '学生ID',
|
||||
operation_type VARCHAR(50) NOT NULL COMMENT '操作类型(CREATE,UPDATE,SUBMIT,ADMIN_MODIFY,BATCH_PUBLISH,BATCH_CLOSE)',
|
||||
operation_desc TEXT COMMENT '操作描述',
|
||||
old_data TEXT COMMENT '修改前数据(JSON格式)',
|
||||
new_data TEXT COMMENT '修改后数据(JSON格式)',
|
||||
operator_id BIGINT COMMENT '操作人ID',
|
||||
operator_name VARCHAR(100) COMMENT '操作人姓名',
|
||||
operator_type VARCHAR(50) COMMENT '操作人类型(STUDENT,ADMIN,SYSTEM)',
|
||||
ip_address VARCHAR(50) COMMENT 'IP地址',
|
||||
user_agent TEXT COMMENT '用户代理',
|
||||
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
tenant_id BIGINT DEFAULT 0 COMMENT '租户ID',
|
||||
INDEX idx_batch_id (batch_id),
|
||||
INDEX idx_student_id (student_id),
|
||||
INDEX idx_operation_type (operation_type),
|
||||
INDEX idx_create_time (create_time),
|
||||
INDEX idx_operator_id (operator_id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='信息采集批次操作日志表';
|
||||
|
||||
-- 4. 创建批次权限配置表
|
||||
CREATE TABLE xg_collection_batch_permission (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
batch_id BIGINT NOT NULL COMMENT '批次ID',
|
||||
permission_type VARCHAR(50) NOT NULL COMMENT '权限类型(EDIT,VIEW,SUBMIT,ADMIN)',
|
||||
role_id BIGINT COMMENT '角色ID',
|
||||
user_id BIGINT COMMENT '用户ID',
|
||||
college_id BIGINT COMMENT '学院ID',
|
||||
is_granted TINYINT DEFAULT 1 COMMENT '是否授权',
|
||||
grant_time DATETIME COMMENT '授权时间',
|
||||
expire_time DATETIME COMMENT '过期时间',
|
||||
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
create_by BIGINT COMMENT '创建者',
|
||||
update_by BIGINT COMMENT '更新者',
|
||||
deleted TINYINT DEFAULT 0 COMMENT '删除标志',
|
||||
tenant_id BIGINT DEFAULT 0 COMMENT '租户ID',
|
||||
INDEX idx_batch_id (batch_id),
|
||||
INDEX idx_permission_type (permission_type),
|
||||
INDEX idx_role_id (role_id),
|
||||
INDEX idx_user_id (user_id),
|
||||
INDEX idx_college_id (college_id),
|
||||
FOREIGN KEY (batch_id) REFERENCES xg_collection_batch(id) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='信息采集批次权限配置表';
|
||||
|
||||
-- 5. 创建批次统计表
|
||||
CREATE TABLE xg_collection_batch_statistics (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
batch_id BIGINT NOT NULL COMMENT '批次ID',
|
||||
total_students INT DEFAULT 0 COMMENT '总学生数',
|
||||
submitted_students INT DEFAULT 0 COMMENT '已提交学生数',
|
||||
pending_students INT DEFAULT 0 COMMENT '待提交学生数',
|
||||
completion_rate DECIMAL(5,2) DEFAULT 0.00 COMMENT '完成率',
|
||||
college_id BIGINT COMMENT '学院ID(按学院统计时使用)',
|
||||
college_name VARCHAR(100) COMMENT '学院名称',
|
||||
major_id BIGINT COMMENT '专业ID(按专业统计时使用)',
|
||||
major_name VARCHAR(100) COMMENT '专业名称',
|
||||
class_id BIGINT COMMENT '班级ID(按班级统计时使用)',
|
||||
class_name VARCHAR(100) COMMENT '班级名称',
|
||||
grade VARCHAR(50) COMMENT '届别',
|
||||
statistics_type VARCHAR(50) DEFAULT 'TOTAL' COMMENT '统计类型(TOTAL,COLLEGE,MAJOR,CLASS,GRADE)',
|
||||
last_updated DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
tenant_id BIGINT DEFAULT 0 COMMENT '租户ID',
|
||||
INDEX idx_batch_id (batch_id),
|
||||
INDEX idx_college_id (college_id),
|
||||
INDEX idx_major_id (major_id),
|
||||
INDEX idx_class_id (class_id),
|
||||
INDEX idx_grade (grade),
|
||||
INDEX idx_statistics_type (statistics_type),
|
||||
FOREIGN KEY (batch_id) REFERENCES xg_collection_batch(id) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='信息采集批次统计表';
|
||||
|
||||
-- 6. 修改学生信息表,添加批次相关字段
|
||||
ALTER TABLE xg_student_info
|
||||
ADD COLUMN last_batch_id BIGINT COMMENT '最后参与的批次ID',
|
||||
ADD COLUMN last_edit_batch_id BIGINT COMMENT '最后编辑的批次ID',
|
||||
ADD COLUMN info_lock_status TINYINT DEFAULT 0 COMMENT '信息锁定状态(0:正常,1:锁定)',
|
||||
ADD COLUMN lock_reason VARCHAR(500) COMMENT '锁定原因',
|
||||
ADD COLUMN last_batch_submit_time DATETIME COMMENT '最后批次提交时间';
|
||||
|
||||
-- 7. 创建视图:当前活跃批次
|
||||
CREATE VIEW v_current_active_batch AS
|
||||
SELECT
|
||||
b.*,
|
||||
COUNT(bs.id) as total_students,
|
||||
SUM(CASE WHEN bs.has_submitted = 1 THEN 1 ELSE 0 END) as submitted_students,
|
||||
ROUND(SUM(CASE WHEN bs.has_submitted = 1 THEN 1 ELSE 0 END) * 100.0 / COUNT(bs.id), 2) as completion_rate
|
||||
FROM xg_collection_batch b
|
||||
LEFT JOIN xg_collection_batch_student bs ON b.id = bs.batch_id AND bs.deleted = 0
|
||||
WHERE b.deleted = 0
|
||||
AND b.status = 'active'
|
||||
AND b.is_published = 1
|
||||
AND NOW() BETWEEN b.start_time AND b.end_time
|
||||
GROUP BY b.id;
|
||||
|
||||
-- 8. 创建视图:学生批次权限
|
||||
CREATE VIEW v_student_batch_permission AS
|
||||
SELECT
|
||||
bs.student_id,
|
||||
bs.student_code,
|
||||
bs.student_name,
|
||||
b.id as batch_id,
|
||||
b.batch_name,
|
||||
b.batch_code,
|
||||
b.start_time,
|
||||
b.end_time,
|
||||
b.status as batch_status,
|
||||
bs.can_edit,
|
||||
bs.has_submitted,
|
||||
bs.submit_time,
|
||||
CASE
|
||||
WHEN b.status != 'active' THEN 0
|
||||
WHEN b.is_published != 1 THEN 0
|
||||
WHEN NOW() < b.start_time THEN 0
|
||||
WHEN NOW() > b.end_time THEN 0
|
||||
WHEN bs.can_edit != 1 THEN 0
|
||||
WHEN bs.has_submitted = 1 THEN 0
|
||||
ELSE 1
|
||||
END as can_edit_now
|
||||
FROM xg_collection_batch_student bs
|
||||
JOIN xg_collection_batch b ON bs.batch_id = b.id
|
||||
WHERE bs.deleted = 0 AND b.deleted = 0;
|
||||
|
||||
-- 9. 创建存储过程:批量生成批次学生关联
|
||||
DELIMITER //
|
||||
CREATE PROCEDURE sp_generate_batch_students(
|
||||
IN p_batch_id BIGINT,
|
||||
IN p_target_grade VARCHAR(50),
|
||||
IN p_target_college_ids TEXT,
|
||||
IN p_target_major_ids TEXT,
|
||||
IN p_target_class_ids TEXT,
|
||||
IN p_creator_id BIGINT
|
||||
)
|
||||
BEGIN
|
||||
DECLARE done INT DEFAULT FALSE;
|
||||
DECLARE v_student_id BIGINT;
|
||||
DECLARE v_student_code VARCHAR(50);
|
||||
DECLARE v_student_name VARCHAR(100);
|
||||
DECLARE v_college_id BIGINT;
|
||||
DECLARE v_college_name VARCHAR(100);
|
||||
DECLARE v_major_id BIGINT;
|
||||
DECLARE v_major_name VARCHAR(100);
|
||||
DECLARE v_class_id BIGINT;
|
||||
DECLARE v_class_name VARCHAR(100);
|
||||
DECLARE v_grade VARCHAR(50);
|
||||
|
||||
-- 声明游标
|
||||
DECLARE student_cursor CURSOR FOR
|
||||
SELECT
|
||||
s.id, s.student_code, s.student_name,
|
||||
s.college_id, c.college_name,
|
||||
s.major_id, m.major_name,
|
||||
s.class_id, cl.class_name,
|
||||
s.grade
|
||||
FROM xg_student_info s
|
||||
LEFT JOIN xg_college c ON s.college_id = c.id
|
||||
LEFT JOIN xg_major m ON s.major_id = m.id
|
||||
LEFT JOIN xg_class_info cl ON s.class_id = cl.id
|
||||
WHERE s.deleted = 0
|
||||
AND (p_target_grade IS NULL OR s.grade = p_target_grade)
|
||||
AND (p_target_college_ids IS NULL OR FIND_IN_SET(s.college_id, p_target_college_ids))
|
||||
AND (p_target_major_ids IS NULL OR FIND_IN_SET(s.major_id, p_target_major_ids))
|
||||
AND (p_target_class_ids IS NULL OR FIND_IN_SET(s.class_id, p_target_class_ids));
|
||||
|
||||
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
|
||||
|
||||
-- 清空该批次的现有学生关联
|
||||
DELETE FROM xg_collection_batch_student WHERE batch_id = p_batch_id;
|
||||
|
||||
-- 打开游标
|
||||
OPEN student_cursor;
|
||||
|
||||
read_loop: LOOP
|
||||
FETCH student_cursor INTO v_student_id, v_student_code, v_student_name,
|
||||
v_college_id, v_college_name, v_major_id, v_major_name,
|
||||
v_class_id, v_class_name, v_grade;
|
||||
|
||||
IF done THEN
|
||||
LEAVE read_loop;
|
||||
END IF;
|
||||
|
||||
-- 插入批次学生关联
|
||||
INSERT INTO xg_collection_batch_student (
|
||||
batch_id, student_id, student_code, student_name,
|
||||
college_id, college_name, major_id, major_name,
|
||||
class_id, class_name, grade, can_edit, has_submitted,
|
||||
create_by, tenant_id
|
||||
) VALUES (
|
||||
p_batch_id, v_student_id, v_student_code, v_student_name,
|
||||
v_college_id, v_college_name, v_major_id, v_major_name,
|
||||
v_class_id, v_class_name, v_grade, 1, 0,
|
||||
p_creator_id, 0
|
||||
);
|
||||
END LOOP;
|
||||
|
||||
CLOSE student_cursor;
|
||||
|
||||
-- 更新批次统计
|
||||
CALL sp_update_batch_statistics(p_batch_id);
|
||||
END //
|
||||
DELIMITER ;
|
||||
|
||||
-- 10. 创建存储过程:更新批次统计
|
||||
DELIMITER //
|
||||
CREATE PROCEDURE sp_update_batch_statistics(IN p_batch_id BIGINT)
|
||||
BEGIN
|
||||
-- 删除现有统计
|
||||
DELETE FROM xg_collection_batch_statistics WHERE batch_id = p_batch_id;
|
||||
|
||||
-- 插入总体统计
|
||||
INSERT INTO xg_collection_batch_statistics (
|
||||
batch_id, total_students, submitted_students, pending_students,
|
||||
completion_rate, statistics_type
|
||||
)
|
||||
SELECT
|
||||
p_batch_id,
|
||||
COUNT(*) as total_students,
|
||||
SUM(CASE WHEN has_submitted = 1 THEN 1 ELSE 0 END) as submitted_students,
|
||||
SUM(CASE WHEN has_submitted = 0 THEN 1 ELSE 0 END) as pending_students,
|
||||
ROUND(SUM(CASE WHEN has_submitted = 1 THEN 1 ELSE 0 END) * 100.0 / COUNT(*), 2) as completion_rate,
|
||||
'TOTAL' as statistics_type
|
||||
FROM xg_collection_batch_student
|
||||
WHERE batch_id = p_batch_id AND deleted = 0;
|
||||
|
||||
-- 插入按学院统计
|
||||
INSERT INTO xg_collection_batch_statistics (
|
||||
batch_id, total_students, submitted_students, pending_students,
|
||||
completion_rate, college_id, college_name, statistics_type
|
||||
)
|
||||
SELECT
|
||||
p_batch_id,
|
||||
COUNT(*) as total_students,
|
||||
SUM(CASE WHEN has_submitted = 1 THEN 1 ELSE 0 END) as submitted_students,
|
||||
SUM(CASE WHEN has_submitted = 0 THEN 1 ELSE 0 END) as pending_students,
|
||||
ROUND(SUM(CASE WHEN has_submitted = 1 THEN 1 ELSE 0 END) * 100.0 / COUNT(*), 2) as completion_rate,
|
||||
college_id,
|
||||
college_name,
|
||||
'COLLEGE' as statistics_type
|
||||
FROM xg_collection_batch_student
|
||||
WHERE batch_id = p_batch_id AND deleted = 0 AND college_id IS NOT NULL
|
||||
GROUP BY college_id, college_name;
|
||||
|
||||
-- 插入按专业统计
|
||||
INSERT INTO xg_collection_batch_statistics (
|
||||
batch_id, total_students, submitted_students, pending_students,
|
||||
completion_rate, college_id, college_name, major_id, major_name, statistics_type
|
||||
)
|
||||
SELECT
|
||||
p_batch_id,
|
||||
COUNT(*) as total_students,
|
||||
SUM(CASE WHEN has_submitted = 1 THEN 1 ELSE 0 END) as submitted_students,
|
||||
SUM(CASE WHEN has_submitted = 0 THEN 1 ELSE 0 END) as pending_students,
|
||||
ROUND(SUM(CASE WHEN has_submitted = 1 THEN 1 ELSE 0 END) * 100.0 / COUNT(*), 2) as completion_rate,
|
||||
college_id,
|
||||
college_name,
|
||||
major_id,
|
||||
major_name,
|
||||
'MAJOR' as statistics_type
|
||||
FROM xg_collection_batch_student
|
||||
WHERE batch_id = p_batch_id AND deleted = 0 AND major_id IS NOT NULL
|
||||
GROUP BY college_id, college_name, major_id, major_name;
|
||||
|
||||
-- 插入按班级统计
|
||||
INSERT INTO xg_collection_batch_statistics (
|
||||
batch_id, total_students, submitted_students, pending_students,
|
||||
completion_rate, college_id, college_name, major_id, major_name,
|
||||
class_id, class_name, statistics_type
|
||||
)
|
||||
SELECT
|
||||
p_batch_id,
|
||||
COUNT(*) as total_students,
|
||||
SUM(CASE WHEN has_submitted = 1 THEN 1 ELSE 0 END) as submitted_students,
|
||||
SUM(CASE WHEN has_submitted = 0 THEN 1 ELSE 0 END) as pending_students,
|
||||
ROUND(SUM(CASE WHEN has_submitted = 1 THEN 1 ELSE 0 END) * 100.0 / COUNT(*), 2) as completion_rate,
|
||||
college_id,
|
||||
college_name,
|
||||
major_id,
|
||||
major_name,
|
||||
class_id,
|
||||
class_name,
|
||||
'CLASS' as statistics_type
|
||||
FROM xg_collection_batch_student
|
||||
WHERE batch_id = p_batch_id AND deleted = 0 AND class_id IS NOT NULL
|
||||
GROUP BY college_id, college_name, major_id, major_name, class_id, class_name;
|
||||
|
||||
-- 插入按届别统计
|
||||
INSERT INTO xg_collection_batch_statistics (
|
||||
batch_id, total_students, submitted_students, pending_students,
|
||||
completion_rate, grade, statistics_type
|
||||
)
|
||||
SELECT
|
||||
p_batch_id,
|
||||
COUNT(*) as total_students,
|
||||
SUM(CASE WHEN has_submitted = 1 THEN 1 ELSE 0 END) as submitted_students,
|
||||
SUM(CASE WHEN has_submitted = 0 THEN 1 ELSE 0 END) as pending_students,
|
||||
ROUND(SUM(CASE WHEN has_submitted = 1 THEN 1 ELSE 0 END) * 100.0 / COUNT(*), 2) as completion_rate,
|
||||
grade,
|
||||
'GRADE' as statistics_type
|
||||
FROM xg_collection_batch_student
|
||||
WHERE batch_id = p_batch_id AND deleted = 0 AND grade IS NOT NULL
|
||||
GROUP BY grade;
|
||||
END //
|
||||
DELIMITER ;
|
||||
|
||||
-- 11. 创建触发器:学生提交时自动更新统计
|
||||
DELIMITER //
|
||||
CREATE TRIGGER tr_batch_student_submit_update
|
||||
AFTER UPDATE ON xg_collection_batch_student
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
IF OLD.has_submitted != NEW.has_submitted THEN
|
||||
CALL sp_update_batch_statistics(NEW.batch_id);
|
||||
END IF;
|
||||
END //
|
||||
DELIMITER ;
|
||||
|
||||
-- 12. 创建索引优化查询性能
|
||||
CREATE INDEX idx_xg_student_info_batch ON xg_student_info(last_batch_id, last_edit_batch_id);
|
||||
CREATE INDEX idx_xg_student_info_grade_college ON xg_student_info(grade, college_id);
|
||||
CREATE INDEX idx_xg_student_info_major_class ON xg_student_info(major_id, class_id);
|
||||
|
||||
-- 13. 插入系统配置数据
|
||||
INSERT INTO sys_config (config_name, config_key, config_value, config_type, remark, create_by, create_time) VALUES
|
||||
('学生信息采集批次默认提醒时间', 'student.batch.default.remind.hours', '24', 'Y', '创建批次时的默认提醒时间(小时)', 1, NOW()),
|
||||
('学生信息采集批次自动关闭', 'student.batch.auto.close', 'true', 'Y', '批次是否自动关闭', 1, NOW()),
|
||||
('学生信息采集批次最大编辑次数', 'student.batch.max.edit.count', '10', 'Y', '学生在批次期间最大编辑次数', 1, NOW()),
|
||||
('学生信息采集批次通知开关', 'student.batch.notification.enabled', 'true', 'Y', '是否启用批次通知', 1, NOW());
|
||||
|
||||
-- 14. 创建定时任务相关表(如果需要)
|
||||
-- 用于自动关闭过期批次、发送提醒通知等
|
||||
CREATE TABLE xg_batch_scheduled_task (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
batch_id BIGINT NOT NULL COMMENT '批次ID',
|
||||
task_type VARCHAR(50) NOT NULL COMMENT '任务类型(REMIND_START,REMIND_END,AUTO_CLOSE)',
|
||||
task_time DATETIME NOT NULL COMMENT '执行时间',
|
||||
task_status VARCHAR(20) DEFAULT 'PENDING' COMMENT '任务状态(PENDING,EXECUTED,FAILED)',
|
||||
execute_time DATETIME COMMENT '实际执行时间',
|
||||
error_message TEXT COMMENT '错误信息',
|
||||
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
INDEX idx_batch_id (batch_id),
|
||||
INDEX idx_task_type (task_type),
|
||||
INDEX idx_task_time (task_time),
|
||||
INDEX idx_task_status (task_status),
|
||||
FOREIGN KEY (batch_id) REFERENCES xg_collection_batch(id) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='信息采集批次定时任务表';
|
||||
|
||||
-- 15. 数据迁移脚本(如果有现有数据)
|
||||
-- 将现有的独立批次数据迁移到新的学生信息管理集成结构中
|
||||
UPDATE xg_collection_batch SET created_by_module = 'student_info' WHERE created_by_module IS NULL;
|
||||
|
||||
-- 16. 创建权限数据
|
||||
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark) VALUES
|
||||
('学生信息采集批次', (SELECT menu_id FROM sys_menu WHERE menu_name = '学生信息管理' LIMIT 1), 2, '', '', 1, 0, 'F', '1', '1', 'xg:studentInfo:batchManage', '', 1, NOW(), '学生信息采集批次管理权限');
|
||||
|
||||
-- 脚本执行完成
|
||||
SELECT 'Database redesign completed successfully!' as message;
|
||||
@@ -1,312 +0,0 @@
|
||||
# 学生信息管理模块完整优化数据库设计说明书
|
||||
|
||||
## 📋 文档信息
|
||||
|
||||
| 项目 | 信息 |
|
||||
|------|------|
|
||||
| **模块名称** | 学生信息管理模块 |
|
||||
| **数据库版本** | V2.0.0 - 完整优化版 |
|
||||
| **创建时间** | 2025-01-14 |
|
||||
| **设计依据** | 学生信息管理需求分析.md + 数据模型补充分析.md |
|
||||
| **技术规范** | 雪花ID + 逻辑删除 + 多租户架构 |
|
||||
|
||||
## 🎯 设计概述
|
||||
|
||||
本次数据库设计基于《学生信息管理需求分析.md》和《数据模型补充分析.md》,对原有数据模型进行了全面优化和补充,实现了从**基础功能覆盖**到**完整业务支持**的全面升级。
|
||||
|
||||
### 🔄 优化策略
|
||||
|
||||
1. **原有表优化**:5个核心业务表完善字段和索引
|
||||
2. **新增补充表**:6个功能增强表支持业务扩展
|
||||
3. **统一规范**:所有表遵循项目数据库建设规范
|
||||
4. **性能优化**:完善索引设计和查询优化
|
||||
|
||||
## 📂 文件结构
|
||||
|
||||
```
|
||||
docs/设计文档/database/
|
||||
├── xg-student-management-complete.sql # 主表结构文件(11个表)
|
||||
├── xg-student-management-dict.sql # 字典数据文件(15个字典类型)
|
||||
├── xg-student-management-menu.sql # 菜单权限文件(73个菜单项)
|
||||
└── xg-student-management-README.md # 设计说明文档
|
||||
```
|
||||
|
||||
## 🗄️ 数据表设计详情
|
||||
|
||||
### 📊 表结构总览
|
||||
|
||||
| 类别 | 表数量 | 表名列表 | 说明 |
|
||||
|------|-------|----------|------|
|
||||
| **原有表优化** | 5个 | xg_student_info, xg_class_info, xg_collection_batch, xg_audit_record, xg_class_student | 完善字段,优化索引 |
|
||||
| **新增补充表** | 6个 | xg_student_info_change_request, xg_data_operation_log, xg_statistics_config, xg_statistics_cache, xg_data_permission, xg_mobile_user_session | 业务功能增强 |
|
||||
| **总计** | **11个** | **完整覆盖8大功能模块** | **雪花ID + 逻辑删除 + 多租户** |
|
||||
|
||||
### 🔧 核心业务表(优化版)
|
||||
|
||||
#### 1. xg_student_info - 学生信息表 ✨**重点优化**
|
||||
|
||||
**优化内容**:
|
||||
- **新增18个关键字段**:英文姓名、曾用名、婚姻状况、户口类型、生源地区、毕业中学、录取类别、家庭经济状况、监护人信息、宿舍信息、留守儿童标识、独生子女标识、残疾类型等级等
|
||||
- **完善体征信息**:身高、体重、血型、健康状况、特殊体质、病史、过敏史、残疾信息
|
||||
- **银行信息完整**:银行卡号、开户银行、开户支行、持卡人姓名
|
||||
- **状态管理增强**:信息完整度计算、数据来源追踪、批次关联
|
||||
- **索引优化**:新增10个复合索引,提升查询性能
|
||||
|
||||
**关键特性**:
|
||||
- 支持13个维度统计分析:二级学院、年龄、专业、政治面貌、民族、生源地、性别、血型、宗教信仰、学籍状态、培养方式、体重、身高
|
||||
- 支持跨业务域综合筛选:成绩、违纪处分、困难生、奖助条件
|
||||
- 完整的审核状态流转:正常、待审核、审核中、已驳回、已锁定
|
||||
- 多数据源支持:手工录入、批量导入、系统同步、API导入
|
||||
|
||||
#### 2. xg_class_info - 班级信息表 ✨**功能完善**
|
||||
|
||||
**优化内容**:
|
||||
- **新增6个管理字段**:班级导师、教室位置、课程安排、班级文化、班级规章
|
||||
- **人员配置完整**:辅导员、班主任、班级导师、班长、副班长
|
||||
- **统计功能增强**:计划容量、当前人数、男女比例、转入转出统计
|
||||
- **联系信息丰富**:办公室位置、教室位置、QQ群、微信群
|
||||
|
||||
#### 3. xg_collection_batch - 信息采集批次表 ✨**配置增强**
|
||||
|
||||
**优化内容**:
|
||||
- **批次配置完善**:目标范围、必填字段、可选字段、审核级别配置
|
||||
- **权限配置**:编辑权限、审核权限、查看权限的JSON配置
|
||||
- **统计功能**:总学生数、已提交数、已审核数、已驳回数、完成率
|
||||
- **自动化支持**:自动提醒、提醒频率、提交后修改控制
|
||||
|
||||
#### 4. xg_audit_record - 审核记录表 ✨**流程完善**
|
||||
|
||||
**优化内容**:
|
||||
- **审核详情增强**:审核类型、修改字段、驳回原因、下一级审核人
|
||||
- **流程状态**:待审核、审核中、已完成、已驳回的完整状态管理
|
||||
- **审核级别**:1-辅导员,2-班主任,3-学院,4-学生处的四级审核
|
||||
|
||||
#### 5. xg_class_student - 班级学生关联表 ✨**职务管理**
|
||||
|
||||
**优化内容**:
|
||||
- **职务体系**:班长、副班长、各类委员、普通成员的完整职务体系
|
||||
- **任期管理**:任职时间、任期结束时间、职务级别
|
||||
- **状态跟踪**:正常、转出、转入、休学、退学的关系状态
|
||||
|
||||
### 🚀 新增补充表(功能增强)
|
||||
|
||||
#### 6. xg_student_info_change_request - 学生信息变更申请表 🆕
|
||||
|
||||
**功能价值**:
|
||||
- **变更流程**:学生申请→审核审批→信息更新的完整变更流程
|
||||
- **变更追踪**:变更字段、原值、新值、变更原因的详细记录
|
||||
- **支撑材料**:变更申请的证明材料管理
|
||||
- **状态管理**:待审核、审核中、已通过、已驳回、已撤回
|
||||
|
||||
#### 7. xg_data_operation_log - 数据导入导出记录表 🆕
|
||||
|
||||
**功能价值**:
|
||||
- **操作追踪**:导入、导出、备份、恢复操作的完整记录
|
||||
- **结果统计**:总记录数、成功记录数、失败记录数、警告记录数
|
||||
- **错误详情**:操作失败的详细错误信息和处理建议
|
||||
- **性能监控**:操作耗时、文件大小、处理效率统计
|
||||
|
||||
#### 8. xg_statistics_config - 统计分析配置表 🆕
|
||||
|
||||
**功能价值**:
|
||||
- **自定义统计**:维度配置、报表模板、图表配置的自定义支持
|
||||
- **权限控制**:查看权限、编辑权限的细粒度控制
|
||||
- **系统配置**:系统预设和用户自定义配置的分离管理
|
||||
|
||||
#### 9. xg_statistics_cache - 统计结果缓存表 🆕
|
||||
|
||||
**功能价值**:
|
||||
- **性能优化**:大数据量统计结果的缓存机制
|
||||
- **命中统计**:缓存命中次数、最后命中时间的效果监控
|
||||
- **过期管理**:自动过期、手动刷新的灵活缓存策略
|
||||
|
||||
#### 10. xg_data_permission - 数据权限配置表 🆕
|
||||
|
||||
**功能价值**:
|
||||
- **细粒度权限**:学院、专业、班级、学生四个层级的数据权限
|
||||
- **权限范围**:全部、自己负责、自定义范围的灵活配置
|
||||
- **权限级别**:查看、编辑、审核、管理四个级别的分级授权
|
||||
- **时效控制**:生效时间、失效时间的权限时效管理
|
||||
|
||||
#### 11. xg_mobile_user_session - 移动端用户会话表 🆕
|
||||
|
||||
**功能价值**:
|
||||
- **移动端支持**:独立的移动端会话管理和状态跟踪
|
||||
- **设备管理**:设备类型、设备ID、应用版本的设备信息管理
|
||||
- **安全监控**:登录时间、活动时间、IP地址的安全审计
|
||||
- **会话统计**:会话时长、活跃状态的使用情况分析
|
||||
|
||||
## 📖 字典数据配置
|
||||
|
||||
### 🔧 字典类型统计
|
||||
|
||||
| 序号 | 字典类型 | 编码 | 数据项数量 | 说明 |
|
||||
|------|----------|------|------------|------|
|
||||
| 1 | 性别 | sys_user_sex | 2项 | 男、女 |
|
||||
| 2 | 学籍状态 | xg_student_status | 5项 | 在籍、休学、复学、退学、毕业 |
|
||||
| 3 | 信息状态 | xg_info_status | 5项 | 正常、待审核、审核中、已驳回、已锁定 |
|
||||
| 4 | 政治面貌 | xg_political_status | 13项 | 党员、团员、群众等 |
|
||||
| 5 | 民族 | xg_nation | 56项 | 56个民族完整列表 |
|
||||
| 6 | 血型 | xg_blood_type | 5项 | A、B、AB、O、未知 |
|
||||
| 7 | 培养方式 | xg_training_type | 6项 | 全日制、在职、函授等 |
|
||||
| 8 | 班级职务 | xg_class_position | 9项 | 班长、副班长、委员等 |
|
||||
| 9 | 批次状态 | xg_batch_status | 5项 | 草稿、发布、进行中等 |
|
||||
| 10 | 审核结果 | xg_audit_result | 3项 | 通过、驳回、退回 |
|
||||
| 11 | 家庭经济状况 | xg_family_economic_status | 4项 | 富裕、一般、困难、特困 |
|
||||
| 12 | 户口类型 | xg_household_type | 2项 | 农业、非农业 |
|
||||
| 13 | 婚姻状况 | xg_marital_status | 4项 | 未婚、已婚、离异、丧偶 |
|
||||
| 14 | 数据来源 | xg_data_source | 4项 | 手工录入、批量导入等 |
|
||||
| 15 | 健康状况 | xg_health_status | 4项 | 健康、一般、较差、残疾 |
|
||||
|
||||
**总计**:15个字典类型,156个字典数据项
|
||||
|
||||
## 🔐 菜单权限配置
|
||||
|
||||
### 🌟 权限体系设计
|
||||
|
||||
| 功能模块 | 主菜单 | 子功能数量 | 权限粒度 | 角色适用 |
|
||||
|----------|--------|------------|----------|----------|
|
||||
| **学生信息管理** | xg:student:list | 8个子功能 | 查询、新增、修改、删除、导入、导出、审核、统计 | 辅导员、班主任、学院管理员、学生处 |
|
||||
| **班级信息管理** | xg:class:list | 8个子功能 | 查询、新增、修改、删除、导出、配置、干部管理、统计 | 辅导员、班主任、学院管理员 |
|
||||
| **信息采集批次** | xg:batch:list | 8个子功能 | 查询、新增、修改、删除、发布、归档、配置、统计 | 学院管理员、学生处 |
|
||||
| **审核流程管理** | xg:audit:list | 8个子功能 | 查询、审核、驳回、退回、批量审核、统计、配置、历史 | 辅导员、班主任、学院管理员、学生处 |
|
||||
| **数据统计分析** | xg:statistics:list | 8个子功能 | 查询、维度统计、报表、图表、导出、自定义、配置、缓存 | 学院管理员、学生处 |
|
||||
| **信息变更申请** | xg:change:list | 8个子功能 | 查询、提交、修改、撤回、审批、驳回、历史、统计 | 学生、辅导员、班主任 |
|
||||
| **数据导入导出** | xg:data:list | 8个子功能 | 查询、导入、导出、备份、恢复、模板、校验、日志 | 学院管理员、学生处 |
|
||||
| **系统配置管理** | - | 9个子功能 | 权限配置、会话管理等系统管理功能 | 系统管理员 |
|
||||
| **学生移动端** | - | 6个子功能 | 个人信息、变更申请、进度查询等移动端功能 | 学生 |
|
||||
|
||||
**总计**:9个主要功能模块,73个菜单项,完整的权限控制体系
|
||||
|
||||
### 🎭 角色权限分配建议
|
||||
|
||||
#### 👨🎓 学生角色
|
||||
- **基础权限**:个人信息查看、个人信息修改
|
||||
- **申请权限**:信息变更申请、审核进度查询
|
||||
- **查看权限**:班级信息查看、批次信息查看
|
||||
|
||||
#### 👨🏫 辅导员角色
|
||||
- **管理权限**:负责学生的信息管理、审核(初级)
|
||||
- **统计权限**:基础统计查询、数据导出
|
||||
- **配置权限**:班级人员配置、班干部管理
|
||||
|
||||
#### 👩🏫 班主任角色
|
||||
- **管理权限**:协助学生信息管理、审核(中级)
|
||||
- **班级权限**:班级信息完整管理
|
||||
- **统计权限**:班级维度统计分析
|
||||
|
||||
#### 🏛️ 学院管理员角色
|
||||
- **综合权限**:学院范围内的完整管理权限
|
||||
- **批次权限**:信息采集批次管理、发布、归档
|
||||
- **统计权限**:多维度统计分析、自定义报表
|
||||
- **数据权限**:批量导入导出、数据备份恢复
|
||||
|
||||
#### 🎓 学生处管理员角色
|
||||
- **最高权限**:全校范围的完整管理权限
|
||||
- **审核权限**:最终审核、流程配置
|
||||
- **系统权限**:统计配置、缓存管理
|
||||
- **监督权限**:全局数据监控、权限配置
|
||||
|
||||
## 🚀 核心技术特性
|
||||
|
||||
### 💎 数据库设计原则
|
||||
|
||||
1. **雪花ID主键**:所有表统一使用`bigint(20)`雪花ID,确保全局唯一性
|
||||
2. **逻辑删除**:统一使用`deleted`字段,值为0表示存在,1表示删除
|
||||
3. **多租户架构**:统一使用`tenant_id`字段,支持多租户数据隔离
|
||||
4. **审计字段**:统一包含`create_by`、`create_time`、`update_by`、`update_time`
|
||||
5. **扩展字段**:核心表预留5个扩展字段,支持业务扩展
|
||||
|
||||
### 🔍 索引优化策略
|
||||
|
||||
1. **主键索引**:所有表的主键使用聚簇索引
|
||||
2. **唯一索引**:业务唯一字段建立复合唯一索引(包含tenant_id)
|
||||
3. **复合索引**:高频查询字段建立复合索引(如:tenant_id + status + deleted)
|
||||
4. **覆盖索引**:常用查询建立覆盖索引,减少回表操作
|
||||
5. **分区索引**:大表按时间分区,提升查询性能
|
||||
|
||||
### 📈 性能优化建议
|
||||
|
||||
#### 🔧 立即实施
|
||||
1. **添加复合索引**:为常用查询字段添加复合索引
|
||||
2. **完善字段**:补充学生信息表的18个关键字段
|
||||
3. **创建新表**:实施6个功能增强表
|
||||
|
||||
#### 🎯 中期优化
|
||||
1. **统计缓存**:实施统计结果缓存机制
|
||||
2. **权限细化**:实施细粒度数据权限控制
|
||||
3. **移动端支持**:完善移动端会话管理
|
||||
|
||||
#### 🚀 长期规划
|
||||
1. **分区表**:大数据量历史表按时间分区
|
||||
2. **读写分离**:统计查询读写分离优化
|
||||
3. **数据归档**:历史数据自动归档策略
|
||||
|
||||
## 📋 实施建议
|
||||
|
||||
### 🎯 实施优先级
|
||||
|
||||
#### 🔴 高优先级(立即实施)
|
||||
1. **学生信息表字段补充**:18个关键字段补充
|
||||
2. **学生信息变更申请表**:支持信息变更审批流程
|
||||
3. **数据导入导出记录表**:记录批量操作历史和结果
|
||||
4. **关键索引补充**:提升查询性能
|
||||
|
||||
#### 🟡 中优先级(1个月内)
|
||||
1. **统计分析配置表**:支持自定义统计配置
|
||||
2. **数据权限配置表**:细粒度数据权限控制
|
||||
3. **统计结果缓存表**:大数据量统计性能优化
|
||||
4. **班级信息表字段补充**:6个管理字段
|
||||
|
||||
#### 🟢 低优先级(3个月内)
|
||||
1. **移动端用户会话表**:独立移动端会话管理
|
||||
2. **分区表优化**:大表按时间分区
|
||||
3. **扩展字典数据**:补充更多业务字典
|
||||
|
||||
### 🔄 数据迁移策略
|
||||
|
||||
1. **备份现有数据**:执行前完整备份现有数据
|
||||
2. **分阶段实施**:先创建新表,再迁移数据,最后切换
|
||||
3. **兼容性保证**:新字段设置默认值,确保向下兼容
|
||||
4. **验证测试**:每个阶段完成后进行功能验证
|
||||
|
||||
### 📊 质量保证
|
||||
|
||||
1. **功能覆盖**:100%覆盖需求分析的8大功能模块
|
||||
2. **性能指标**:查询响应时间<500ms,并发支持>1000用户
|
||||
3. **数据一致性**:事务控制确保数据一致性
|
||||
4. **权限安全**:73个权限点的细粒度控制
|
||||
|
||||
## 📈 预期收益
|
||||
|
||||
### 📊 功能收益
|
||||
- **需求覆盖率**:从85%提升到100%
|
||||
- **功能完整性**:从基础管理到完整业务流程支持
|
||||
- **用户体验**:统一的多端操作体验
|
||||
- **数据价值**:13个维度的深度统计分析
|
||||
|
||||
### 🚀 技术收益
|
||||
- **查询性能**:通过索引优化提升50%以上
|
||||
- **扩展性**:预留扩展字段支持业务发展
|
||||
- **稳定性**:完善的事务控制和错误处理
|
||||
- **安全性**:细粒度权限控制和审计日志
|
||||
|
||||
### 💼 管理收益
|
||||
- **工作效率**:自动化流程减少50%的人工操作
|
||||
- **决策支持**:多维度统计提供数据决策依据
|
||||
- **规范管理**:标准化的业务流程和数据规范
|
||||
- **风险控制**:完整的审核流程和变更追踪
|
||||
|
||||
---
|
||||
|
||||
## 🎉 总结
|
||||
|
||||
本次学生信息管理模块数据库设计完成了从**原有设计**到**完整业务支持**的全面升级:
|
||||
|
||||
- ✅ **11个核心业务表**:5个原有表优化 + 6个新增补充表
|
||||
- ✅ **156个字典数据项**:15个字典类型的完整业务支持
|
||||
- ✅ **73个菜单权限项**:9个功能模块的细粒度权限控制
|
||||
- ✅ **100%需求覆盖**:完整支持8大功能模块的业务需求
|
||||
- ✅ **雪花ID + 逻辑删除 + 多租户**:遵循项目统一技术规范
|
||||
|
||||
通过本次设计,学生信息管理模块将具备完整的业务功能、优异的系统性能和灵活的扩展能力,为学校的数字化校园建设提供坚实的数据基础支撑。
|
||||
@@ -1,755 +0,0 @@
|
||||
-- ==========================================
|
||||
-- 学生信息管理模块完整优化数据表结构
|
||||
-- 版本:V2.0.0 - 完整优化版
|
||||
-- 创建时间:2025-01-14
|
||||
-- 说明:基于需求分析和数据模型补充分析,创建完整的表结构
|
||||
-- 特性:雪花ID、逻辑删除、多租户、完整字段覆盖
|
||||
-- ==========================================
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ===========================================
|
||||
-- 1. 学生信息表(核心表)- 完整优化版
|
||||
-- ===========================================
|
||||
DROP TABLE IF EXISTS `xg_student_info`;
|
||||
CREATE TABLE `xg_student_info` (
|
||||
-- 标准基础字段(必须)
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID(雪花ID)',
|
||||
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
|
||||
`create_dept` bigint(20) DEFAULT NULL 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 '更新时间',
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
|
||||
-- 基本信息字段
|
||||
`student_no` varchar(32) NOT NULL COMMENT '学号',
|
||||
`id_card` varchar(18) DEFAULT NULL COMMENT '身份证号',
|
||||
`name` varchar(50) NOT NULL COMMENT '姓名',
|
||||
`name_english` varchar(100) DEFAULT NULL COMMENT '英文姓名',
|
||||
`former_name` varchar(50) DEFAULT NULL COMMENT '曾用名',
|
||||
`name_pinyin` varchar(200) DEFAULT NULL COMMENT '姓名拼音',
|
||||
`gender` char(1) NOT NULL COMMENT '性别:0-男,1-女',
|
||||
`birth_date` date DEFAULT NULL COMMENT '出生日期',
|
||||
`nation` varchar(20) DEFAULT NULL COMMENT '民族',
|
||||
`political_status` varchar(20) DEFAULT NULL COMMENT '政治面貌',
|
||||
`marital_status` varchar(10) DEFAULT NULL COMMENT '婚姻状况:未婚、已婚、离异、丧偶',
|
||||
`religion` varchar(20) DEFAULT NULL COMMENT '宗教信仰',
|
||||
`photo_url` varchar(500) DEFAULT NULL COMMENT '照片URL',
|
||||
`photo_path` varchar(500) DEFAULT NULL COMMENT '学生照片存储路径',
|
||||
|
||||
-- 学籍信息字段
|
||||
`student_status` char(1) DEFAULT '1' COMMENT '学籍状态:1-在籍,2-休学,3-复学,4-退学,5-毕业',
|
||||
`enrollment_year` int(4) DEFAULT NULL COMMENT '入学年份',
|
||||
`enrollment_date` date DEFAULT NULL COMMENT '入学日期',
|
||||
`school_system` int(2) DEFAULT 4 COMMENT '学制(年)',
|
||||
`education_level` varchar(20) DEFAULT NULL COMMENT '学历层次',
|
||||
`training_type` varchar(20) DEFAULT NULL COMMENT '培养方式:全日制、在职、函授、夜大等',
|
||||
`admission_category` varchar(20) DEFAULT NULL COMMENT '录取类别:统招、自主招生、专项计划等',
|
||||
`source_region` varchar(100) DEFAULT NULL COMMENT '生源地区(省市县)',
|
||||
`middle_school` varchar(100) DEFAULT NULL COMMENT '毕业中学',
|
||||
|
||||
-- 专业班级信息字段
|
||||
`major_code` varchar(20) DEFAULT NULL COMMENT '专业代码',
|
||||
`major_name` varchar(100) DEFAULT NULL COMMENT '专业名称',
|
||||
`class_code` varchar(32) DEFAULT NULL COMMENT '班级代码',
|
||||
`class_name` varchar(100) DEFAULT NULL COMMENT '班级名称',
|
||||
`grade` varchar(10) DEFAULT NULL COMMENT '年级',
|
||||
|
||||
-- 学院信息字段
|
||||
`college_code` varchar(20) DEFAULT NULL COMMENT '学院代码',
|
||||
`college_name` varchar(100) DEFAULT NULL COMMENT '学院名称',
|
||||
|
||||
-- 教师信息字段
|
||||
`counselor_id` bigint(20) DEFAULT NULL COMMENT '辅导员ID',
|
||||
`counselor_name` varchar(50) DEFAULT NULL COMMENT '辅导员姓名',
|
||||
`class_teacher_id` bigint(20) DEFAULT NULL COMMENT '班主任ID',
|
||||
`class_teacher_name` varchar(50) DEFAULT NULL COMMENT '班主任姓名',
|
||||
|
||||
-- 联系信息字段
|
||||
`phone` varchar(20) DEFAULT NULL COMMENT '手机号码',
|
||||
`email` varchar(100) DEFAULT NULL COMMENT '电子邮箱',
|
||||
`qq` varchar(20) DEFAULT NULL COMMENT 'QQ号码',
|
||||
`wechat` varchar(50) DEFAULT NULL COMMENT '微信号',
|
||||
|
||||
-- 地址信息字段
|
||||
`home_address` varchar(200) DEFAULT NULL COMMENT '家庭地址',
|
||||
`current_address` varchar(200) DEFAULT NULL COMMENT '现住址',
|
||||
`postal_code` varchar(10) DEFAULT NULL COMMENT '邮政编码',
|
||||
`household_register_type` varchar(20) DEFAULT NULL COMMENT '户口类型:农业、非农业',
|
||||
`hukou_location` varchar(100) DEFAULT NULL COMMENT '户籍所在地',
|
||||
`dormitory_building` varchar(50) DEFAULT NULL COMMENT '宿舍楼栋',
|
||||
`dormitory_room` varchar(20) DEFAULT NULL COMMENT '宿舍房间号',
|
||||
|
||||
-- 紧急联系人信息字段
|
||||
`emergency_contact_name` varchar(50) DEFAULT NULL COMMENT '紧急联系人姓名',
|
||||
`emergency_contact_phone` varchar(20) DEFAULT NULL COMMENT '紧急联系人电话',
|
||||
`emergency_contact_relation` varchar(20) DEFAULT NULL COMMENT '紧急联系人关系',
|
||||
|
||||
-- 家庭信息字段
|
||||
`father_name` varchar(50) DEFAULT NULL COMMENT '父亲姓名',
|
||||
`father_phone` varchar(20) DEFAULT NULL COMMENT '父亲电话',
|
||||
`father_work_unit` varchar(100) DEFAULT NULL COMMENT '父亲工作单位',
|
||||
`mother_name` varchar(50) DEFAULT NULL COMMENT '母亲姓名',
|
||||
`mother_phone` varchar(20) DEFAULT NULL COMMENT '母亲电话',
|
||||
`mother_work_unit` varchar(100) DEFAULT NULL COMMENT '母亲工作单位',
|
||||
`guardian_name` varchar(50) DEFAULT NULL COMMENT '监护人姓名',
|
||||
`guardian_phone` varchar(20) DEFAULT NULL COMMENT '监护人电话',
|
||||
`guardian_relation` varchar(20) DEFAULT NULL COMMENT '监护人关系',
|
||||
`family_income` varchar(20) DEFAULT NULL COMMENT '家庭年收入',
|
||||
`family_economic_status` varchar(20) DEFAULT NULL COMMENT '家庭经济状况:富裕、一般、困难、特困',
|
||||
`family_members` tinyint(2) DEFAULT NULL COMMENT '家庭成员数量',
|
||||
|
||||
-- 体征信息字段
|
||||
`height` decimal(5,2) DEFAULT NULL COMMENT '身高(cm)',
|
||||
`weight` decimal(5,2) DEFAULT NULL COMMENT '体重(kg)',
|
||||
`blood_type` varchar(10) DEFAULT NULL COMMENT '血型',
|
||||
`health_status` varchar(20) DEFAULT NULL COMMENT '健康状况',
|
||||
`special_condition` varchar(200) DEFAULT NULL COMMENT '特殊体质或疾病',
|
||||
`medical_history` varchar(500) DEFAULT NULL COMMENT '病史',
|
||||
`allergies` varchar(200) DEFAULT NULL COMMENT '过敏史',
|
||||
`disability_type` varchar(50) DEFAULT NULL COMMENT '残疾类型',
|
||||
`disability_level` varchar(20) DEFAULT NULL COMMENT '残疾等级',
|
||||
|
||||
-- 银行信息字段
|
||||
`bank_card_no` varchar(30) DEFAULT NULL COMMENT '银行卡号',
|
||||
`bank_name` varchar(100) DEFAULT NULL COMMENT '开户银行',
|
||||
`bank_branch` varchar(100) DEFAULT NULL COMMENT '开户支行',
|
||||
`card_holder_name` varchar(50) DEFAULT NULL COMMENT '持卡人姓名',
|
||||
|
||||
-- 特殊标识字段
|
||||
`is_poor_student` tinyint(1) DEFAULT 0 COMMENT '是否贫困生:0-否,1-是',
|
||||
`is_minority` tinyint(1) DEFAULT 0 COMMENT '是否少数民族:0-否,1-是',
|
||||
`is_disabled` tinyint(1) DEFAULT 0 COMMENT '是否残疾:0-否,1-是',
|
||||
`is_orphan` tinyint(1) DEFAULT 0 COMMENT '是否孤儿:0-否,1-是',
|
||||
`is_left_behind_child` tinyint(1) DEFAULT 0 COMMENT '是否留守儿童:0-否,1-是',
|
||||
`is_single_child` tinyint(1) DEFAULT 0 COMMENT '是否独生子女:0-否,1-是',
|
||||
`has_loan` tinyint(1) DEFAULT 0 COMMENT '是否有助学贷款:0-否,1-是',
|
||||
`loan_amount` decimal(10,2) DEFAULT NULL COMMENT '助学贷款金额',
|
||||
|
||||
-- 扩展信息字段
|
||||
`specialties` text DEFAULT NULL COMMENT '特长爱好',
|
||||
`awards` text DEFAULT NULL COMMENT '获奖情况',
|
||||
`violations` text DEFAULT NULL COMMENT '违纪记录',
|
||||
`social_activities` text DEFAULT NULL COMMENT '社会活动',
|
||||
|
||||
-- 状态管理字段
|
||||
`info_status` char(1) DEFAULT '1' COMMENT '信息状态:1-正常,2-待审核,3-审核中,4-已驳回,5-已锁定',
|
||||
`data_source` varchar(20) DEFAULT 'manual' COMMENT '数据来源:manual-手工录入,import-批量导入,sync-系统同步',
|
||||
`last_batch_id` bigint(20) DEFAULT NULL COMMENT '最后修改批次ID',
|
||||
`last_audit_time` datetime DEFAULT NULL COMMENT '最后审核时间',
|
||||
`is_complete` tinyint(1) DEFAULT 0 COMMENT '信息是否完整:0-不完整,1-完整',
|
||||
`completion_rate` decimal(5,2) DEFAULT 0.00 COMMENT '完整度百分比',
|
||||
|
||||
-- 扩展字段
|
||||
`ext_field1` varchar(200) DEFAULT NULL COMMENT '扩展字段1',
|
||||
`ext_field2` varchar(200) DEFAULT NULL COMMENT '扩展字段2',
|
||||
`ext_field3` varchar(200) DEFAULT NULL COMMENT '扩展字段3',
|
||||
`ext_field4` varchar(200) DEFAULT NULL COMMENT '扩展字段4',
|
||||
`ext_field5` varchar(500) DEFAULT NULL COMMENT '扩展字段5',
|
||||
|
||||
-- 备注字段
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注信息',
|
||||
|
||||
-- 主键和索引
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE KEY `uk_student_no_tenant` (`student_no`, `tenant_id`),
|
||||
UNIQUE KEY `uk_id_card_tenant` (`id_card`, `tenant_id`),
|
||||
KEY `idx_tenant_id` (`tenant_id`),
|
||||
KEY `idx_deleted` (`deleted`),
|
||||
KEY `idx_name` (`name`),
|
||||
KEY `idx_college_code` (`college_code`),
|
||||
KEY `idx_class_code` (`class_code`),
|
||||
KEY `idx_student_status` (`student_status`),
|
||||
KEY `idx_info_status` (`info_status`),
|
||||
KEY `idx_enrollment_year` (`enrollment_year`),
|
||||
KEY `idx_major_code` (`major_code`),
|
||||
KEY `idx_counselor_id` (`counselor_id`),
|
||||
KEY `idx_class_teacher_id` (`class_teacher_id`),
|
||||
KEY `idx_last_batch_id` (`last_batch_id`),
|
||||
KEY `idx_phone` (`phone`),
|
||||
KEY `idx_create_time` (`create_time`),
|
||||
KEY `idx_college_class` (`college_code`, `class_code`),
|
||||
KEY `idx_status_filter` (`tenant_id`, `student_status`, `info_status`, `deleted`),
|
||||
KEY `idx_grade_college` (`grade`, `college_code`),
|
||||
KEY `idx_completion` (`is_complete`, `completion_rate`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生信息表';
|
||||
|
||||
-- ===========================================
|
||||
-- 2. 班级信息表 - 完整优化版
|
||||
-- ===========================================
|
||||
DROP TABLE IF EXISTS `xg_class_info`;
|
||||
CREATE TABLE `xg_class_info` (
|
||||
-- 标准基础字段(必须)
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID(雪花ID)',
|
||||
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
|
||||
`create_dept` bigint(20) DEFAULT NULL 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 '更新时间',
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
|
||||
-- 班级基础信息
|
||||
`class_code` varchar(32) NOT NULL COMMENT '班级代码',
|
||||
`class_name` varchar(100) NOT NULL COMMENT '班级名称',
|
||||
`class_type` varchar(20) DEFAULT 'regular' COMMENT '班级类型:regular-普通班,honor-荣誉班,experimental-实验班',
|
||||
`grade` varchar(10) NOT NULL COMMENT '年级',
|
||||
`enrollment_year` int(4) NOT NULL COMMENT '入学年份',
|
||||
`graduation_year` int(4) DEFAULT NULL COMMENT '毕业年份',
|
||||
|
||||
-- 专业信息
|
||||
`major_code` varchar(20) DEFAULT NULL COMMENT '专业代码',
|
||||
`major_name` varchar(100) DEFAULT NULL COMMENT '专业名称',
|
||||
`training_type` varchar(20) DEFAULT NULL COMMENT '培养方式:全日制,在职,函授,夜大等',
|
||||
`degree_type` varchar(20) DEFAULT NULL COMMENT '学位类型:学士,硕士,博士,专科',
|
||||
|
||||
-- 学院信息
|
||||
`college_code` varchar(20) DEFAULT NULL COMMENT '学院代码',
|
||||
`college_name` varchar(100) DEFAULT NULL COMMENT '学院名称',
|
||||
|
||||
-- 教师信息
|
||||
`counselor_id` bigint(20) DEFAULT NULL COMMENT '辅导员ID',
|
||||
`counselor_name` varchar(50) DEFAULT NULL COMMENT '辅导员姓名',
|
||||
`class_teacher_id` bigint(20) DEFAULT NULL COMMENT '班主任ID',
|
||||
`class_teacher_name` varchar(50) DEFAULT NULL COMMENT '班主任姓名',
|
||||
`class_advisor_id` bigint(20) DEFAULT NULL COMMENT '班级导师ID',
|
||||
`class_advisor_name` varchar(50) DEFAULT NULL COMMENT '班级导师姓名',
|
||||
|
||||
-- 班干部信息
|
||||
`class_monitor_id` bigint(20) DEFAULT NULL COMMENT '班长ID',
|
||||
`class_monitor_name` varchar(50) DEFAULT NULL COMMENT '班长姓名',
|
||||
`deputy_monitor_id` bigint(20) DEFAULT NULL COMMENT '副班长ID',
|
||||
`deputy_monitor_name` varchar(50) DEFAULT NULL COMMENT '副班长姓名',
|
||||
|
||||
-- 班级状态
|
||||
`class_status` char(1) DEFAULT '1' COMMENT '班级状态:1-正常,2-暂停,3-毕业,4-解散',
|
||||
`is_graduation` tinyint(1) DEFAULT 0 COMMENT '是否已毕业:0-未毕业,1-已毕业',
|
||||
`graduation_date` date DEFAULT NULL COMMENT '毕业日期',
|
||||
|
||||
-- 人数统计
|
||||
`planned_capacity` int(11) DEFAULT 50 COMMENT '计划容量',
|
||||
`current_student_count` int(11) DEFAULT 0 COMMENT '当前学生人数',
|
||||
`max_student_count` int(11) DEFAULT 50 COMMENT '最大学生人数',
|
||||
`male_count` int(11) DEFAULT 0 COMMENT '男生人数',
|
||||
`female_count` int(11) DEFAULT 0 COMMENT '女生人数',
|
||||
`active_count` int(11) DEFAULT 0 COMMENT '在籍人数',
|
||||
`transfer_in_count` int(11) DEFAULT 0 COMMENT '转入人数',
|
||||
`transfer_out_count` int(11) DEFAULT 0 COMMENT '转出人数',
|
||||
`dropout_count` int(11) DEFAULT 0 COMMENT '退学人数',
|
||||
`graduate_count` int(11) DEFAULT 0 COMMENT '毕业人数',
|
||||
|
||||
-- 联系信息
|
||||
`office_location` varchar(200) DEFAULT NULL COMMENT '班级办公室位置',
|
||||
`class_location` varchar(100) DEFAULT NULL COMMENT '班级教室位置',
|
||||
`contact_phone` varchar(20) DEFAULT NULL COMMENT '联系电话',
|
||||
`qq_group` varchar(20) DEFAULT NULL COMMENT 'QQ群号',
|
||||
`wechat_group` varchar(100) DEFAULT NULL COMMENT '微信群',
|
||||
`email` varchar(100) DEFAULT NULL COMMENT '班级邮箱',
|
||||
|
||||
-- 班级管理
|
||||
`class_schedule` text DEFAULT NULL COMMENT '课程安排(JSON格式)',
|
||||
`class_culture` text DEFAULT NULL COMMENT '班级文化建设',
|
||||
`class_rules` text DEFAULT NULL COMMENT '班级规章制度',
|
||||
`class_description` varchar(500) DEFAULT NULL COMMENT '班级描述',
|
||||
|
||||
-- 统计信息
|
||||
`last_count_update` datetime DEFAULT NULL COMMENT '最后统计更新时间',
|
||||
|
||||
-- 扩展字段
|
||||
`ext_field1` varchar(200) DEFAULT NULL COMMENT '扩展字段1',
|
||||
`ext_field2` varchar(200) DEFAULT NULL COMMENT '扩展字段2',
|
||||
`ext_field3` varchar(200) DEFAULT NULL COMMENT '扩展字段3',
|
||||
|
||||
-- 备注字段
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注信息',
|
||||
|
||||
-- 主键和索引
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE KEY `uk_class_code_tenant` (`class_code`, `tenant_id`),
|
||||
KEY `idx_tenant_id` (`tenant_id`),
|
||||
KEY `idx_deleted` (`deleted`),
|
||||
KEY `idx_college_code` (`college_code`),
|
||||
KEY `idx_enrollment_year` (`enrollment_year`),
|
||||
KEY `idx_grade` (`grade`),
|
||||
KEY `idx_major_code` (`major_code`),
|
||||
KEY `idx_counselor_id` (`counselor_id`),
|
||||
KEY `idx_class_teacher_id` (`class_teacher_id`),
|
||||
KEY `idx_class_status` (`class_status`),
|
||||
KEY `idx_college_grade` (`college_code`, `grade`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='班级信息表';
|
||||
|
||||
-- ===========================================
|
||||
-- 3. 信息采集批次表
|
||||
-- ===========================================
|
||||
DROP TABLE IF EXISTS `xg_collection_batch`;
|
||||
CREATE TABLE `xg_collection_batch` (
|
||||
-- 标准基础字段(必须)
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID(雪花ID)',
|
||||
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
|
||||
`create_dept` bigint(20) DEFAULT NULL 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 '更新时间',
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
|
||||
-- 批次基本信息
|
||||
`batch_code` varchar(32) NOT NULL COMMENT '批次编码',
|
||||
`batch_name` varchar(100) NOT NULL COMMENT '批次名称',
|
||||
`batch_type` varchar(20) DEFAULT 'annual' COMMENT '批次类型:annual-年度采集,semester-学期采集,monthly-月度采集,custom-自定义',
|
||||
`academic_year` varchar(20) NOT NULL COMMENT '学年,如2024-2025',
|
||||
`semester` varchar(10) DEFAULT NULL COMMENT '学期:spring-春季,autumn-秋季',
|
||||
|
||||
-- 批次状态
|
||||
`batch_status` char(1) DEFAULT '1' COMMENT '批次状态:1-草稿,2-发布,3-进行中,4-已结束,5-已归档',
|
||||
`publish_time` datetime DEFAULT NULL COMMENT '发布时间',
|
||||
`start_time` datetime DEFAULT NULL COMMENT '开始时间',
|
||||
`end_time` datetime DEFAULT NULL COMMENT '结束时间',
|
||||
`archive_time` datetime DEFAULT NULL COMMENT '归档时间',
|
||||
|
||||
-- 批次配置
|
||||
`target_colleges` text DEFAULT NULL COMMENT '目标学院(JSON格式)',
|
||||
`target_grades` text DEFAULT NULL COMMENT '目标年级(JSON格式)',
|
||||
`target_majors` text DEFAULT NULL COMMENT '目标专业(JSON格式)',
|
||||
`required_fields` text DEFAULT NULL COMMENT '必填字段(JSON格式)',
|
||||
`optional_fields` text DEFAULT NULL COMMENT '可选字段(JSON格式)',
|
||||
`audit_levels` text DEFAULT NULL COMMENT '审核级别配置(JSON格式)',
|
||||
|
||||
-- 统计信息
|
||||
`total_students` int(11) DEFAULT 0 COMMENT '总学生数',
|
||||
`submitted_count` int(11) DEFAULT 0 COMMENT '已提交数',
|
||||
`approved_count` int(11) DEFAULT 0 COMMENT '已审核数',
|
||||
`rejected_count` int(11) DEFAULT 0 COMMENT '已驳回数',
|
||||
`completion_rate` decimal(5,2) DEFAULT 0.00 COMMENT '完成率',
|
||||
|
||||
-- 权限配置
|
||||
`edit_permissions` text DEFAULT NULL COMMENT '编辑权限(JSON格式)',
|
||||
`audit_permissions` text DEFAULT NULL COMMENT '审核权限(JSON格式)',
|
||||
`view_permissions` text DEFAULT NULL COMMENT '查看权限(JSON格式)',
|
||||
|
||||
-- 其他配置
|
||||
`auto_reminder` tinyint(1) DEFAULT 1 COMMENT '自动提醒:0-关闭,1-开启',
|
||||
`reminder_frequency` int(11) DEFAULT 7 COMMENT '提醒频率(天)',
|
||||
`allow_modify_after_submit` tinyint(1) DEFAULT 0 COMMENT '提交后允许修改:0-不允许,1-允许',
|
||||
|
||||
-- 描述和备注
|
||||
`description` varchar(500) DEFAULT NULL COMMENT '批次描述',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注信息',
|
||||
|
||||
-- 主键和索引
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE KEY `uk_batch_code_tenant` (`batch_code`, `tenant_id`),
|
||||
KEY `idx_tenant_id` (`tenant_id`),
|
||||
KEY `idx_deleted` (`deleted`),
|
||||
KEY `idx_batch_status` (`batch_status`),
|
||||
KEY `idx_academic_year` (`academic_year`),
|
||||
KEY `idx_start_end_time` (`start_time`, `end_time`),
|
||||
KEY `idx_publish_time` (`publish_time`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='信息采集批次表';
|
||||
|
||||
-- ===========================================
|
||||
-- 4. 审核记录表
|
||||
-- ===========================================
|
||||
DROP TABLE IF EXISTS `xg_audit_record`;
|
||||
CREATE TABLE `xg_audit_record` (
|
||||
-- 标准基础字段(必须)
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID(雪花ID)',
|
||||
`tenant_id` varchar(20) NOT NULL 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 '更新时间',
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
|
||||
-- 关联信息
|
||||
`batch_id` bigint(20) NOT NULL COMMENT '批次ID',
|
||||
`student_id` bigint(20) NOT NULL COMMENT '学生ID',
|
||||
`student_no` varchar(32) NOT NULL COMMENT '学号',
|
||||
`student_name` varchar(50) NOT NULL COMMENT '学生姓名',
|
||||
|
||||
-- 审核信息
|
||||
`audit_level` tinyint(1) NOT NULL COMMENT '审核级别:1-辅导员,2-班主任,3-学院,4-学生处',
|
||||
`audit_result` char(1) NOT NULL COMMENT '审核结果:1-通过,2-驳回,3-退回',
|
||||
`auditor_id` bigint(20) NOT NULL COMMENT '审核人ID',
|
||||
`auditor_name` varchar(50) NOT NULL COMMENT '审核人姓名',
|
||||
`audit_time` datetime NOT NULL COMMENT '审核时间',
|
||||
`audit_comment` varchar(500) DEFAULT NULL COMMENT '审核意见',
|
||||
|
||||
-- 审核详情
|
||||
`audit_type` varchar(20) DEFAULT 'submit' COMMENT '审核类型:submit-提交审核,modify-修改审核,batch-批量审核',
|
||||
`modified_fields` text DEFAULT NULL COMMENT '修改字段(JSON格式)',
|
||||
`reject_reason` varchar(500) DEFAULT NULL COMMENT '驳回原因',
|
||||
`next_auditor_id` bigint(20) DEFAULT NULL COMMENT '下一级审核人ID',
|
||||
`next_auditor_name` varchar(50) DEFAULT NULL COMMENT '下一级审核人姓名',
|
||||
|
||||
-- 状态信息
|
||||
`is_final` tinyint(1) DEFAULT 0 COMMENT '是否最终审核:0-否,1-是',
|
||||
`workflow_status` varchar(20) DEFAULT 'pending' COMMENT '流程状态:pending-待审核,processing-审核中,completed-已完成,rejected-已驳回',
|
||||
|
||||
-- 备注字段
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注信息',
|
||||
|
||||
-- 主键和索引
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
KEY `idx_tenant_id` (`tenant_id`),
|
||||
KEY `idx_deleted` (`deleted`),
|
||||
KEY `idx_batch_id` (`batch_id`),
|
||||
KEY `idx_student_id` (`student_id`),
|
||||
KEY `idx_auditor_id` (`auditor_id`),
|
||||
KEY `idx_audit_time` (`audit_time`),
|
||||
KEY `idx_audit_result` (`audit_result`),
|
||||
KEY `idx_workflow_status` (`workflow_status`),
|
||||
KEY `idx_batch_level` (`batch_id`, `audit_level`, `audit_result`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='审核记录表';
|
||||
|
||||
-- ===========================================
|
||||
-- 5. 班级学生关联表
|
||||
-- ===========================================
|
||||
DROP TABLE IF EXISTS `xg_class_student`;
|
||||
CREATE TABLE `xg_class_student` (
|
||||
-- 标准基础字段(必须)
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID(雪花ID)',
|
||||
`tenant_id` varchar(20) NOT NULL 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 '更新时间',
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
|
||||
-- 关联信息
|
||||
`class_id` bigint(20) NOT NULL COMMENT '班级ID',
|
||||
`student_id` bigint(20) NOT NULL COMMENT '学生ID',
|
||||
`student_no` varchar(32) NOT NULL COMMENT '学号',
|
||||
`student_name` varchar(50) NOT NULL COMMENT '学生姓名',
|
||||
|
||||
-- 班级职务
|
||||
`class_position` varchar(20) DEFAULT 'member' COMMENT '班级职务:monitor-班长,deputy-副班长,secretary-学习委员,organizer-组织委员,publicity-宣传委员,sports-体育委员,life-生活委员,member-普通成员',
|
||||
`position_level` tinyint(1) DEFAULT 9 COMMENT '职务级别:1-班长,2-副班长,3-委员,9-普通成员',
|
||||
`appointment_time` datetime DEFAULT NULL COMMENT '任职时间',
|
||||
`term_end_time` datetime DEFAULT NULL COMMENT '任期结束时间',
|
||||
|
||||
-- 状态信息
|
||||
`relation_status` char(1) DEFAULT '1' COMMENT '关系状态:1-正常,2-转出,3-转入,4-休学,5-退学',
|
||||
`join_time` datetime DEFAULT NULL COMMENT '加入时间',
|
||||
`leave_time` datetime DEFAULT NULL COMMENT '离开时间',
|
||||
`transfer_reason` varchar(200) DEFAULT NULL COMMENT '转班原因',
|
||||
|
||||
-- 学号顺序
|
||||
`student_order` int(11) DEFAULT 0 COMMENT '班级内学号顺序',
|
||||
|
||||
-- 备注字段
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注信息',
|
||||
|
||||
-- 主键和索引
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE KEY `uk_class_student_tenant` (`class_id`, `student_id`, `tenant_id`),
|
||||
KEY `idx_tenant_id` (`tenant_id`),
|
||||
KEY `idx_deleted` (`deleted`),
|
||||
KEY `idx_student_id` (`student_id`),
|
||||
KEY `idx_class_position` (`class_position`),
|
||||
KEY `idx_relation_status` (`relation_status`),
|
||||
KEY `idx_student_order` (`student_order`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='班级学生关联表';
|
||||
|
||||
-- ===========================================
|
||||
-- 6. 学生信息变更申请表(新增)
|
||||
-- ===========================================
|
||||
DROP TABLE IF EXISTS `xg_student_info_change_request`;
|
||||
CREATE TABLE `xg_student_info_change_request` (
|
||||
-- 标准基础字段(必须)
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID(雪花ID)',
|
||||
`tenant_id` varchar(20) NOT NULL 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 '更新时间',
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
|
||||
-- 申请基本信息
|
||||
`student_id` bigint(20) NOT NULL COMMENT '学生ID',
|
||||
`student_no` varchar(32) NOT NULL COMMENT '学号',
|
||||
`student_name` varchar(50) NOT NULL COMMENT '学生姓名',
|
||||
`change_type` varchar(20) NOT NULL COMMENT '变更类型:info_update-信息更新,status_change-状态变更',
|
||||
`change_fields` text NOT NULL COMMENT '变更字段(JSON格式)',
|
||||
`old_values` text NOT NULL COMMENT '原值(JSON格式)',
|
||||
`new_values` text NOT NULL COMMENT '新值(JSON格式)',
|
||||
`change_reason` varchar(500) NOT NULL COMMENT '变更原因',
|
||||
`supporting_documents` text DEFAULT NULL COMMENT '支撑材料(JSON格式)',
|
||||
|
||||
-- 申请状态
|
||||
`request_status` char(1) DEFAULT '1' COMMENT '申请状态:1-待审核,2-审核中,3-已通过,4-已驳回,5-已撤回',
|
||||
`submit_time` datetime NOT NULL COMMENT '提交时间',
|
||||
`approve_time` datetime DEFAULT NULL COMMENT '审批时间',
|
||||
`approver_id` bigint(20) DEFAULT NULL COMMENT '审批人ID',
|
||||
`approver_name` varchar(50) DEFAULT NULL COMMENT '审批人姓名',
|
||||
`approve_comment` varchar(500) DEFAULT NULL COMMENT '审批意见',
|
||||
|
||||
-- 关联信息
|
||||
`batch_id` bigint(20) DEFAULT NULL COMMENT '关联批次ID',
|
||||
`urgency_level` tinyint(1) DEFAULT 2 COMMENT '紧急程度:1-紧急,2-一般,3-不急',
|
||||
|
||||
-- 备注字段
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注信息',
|
||||
|
||||
-- 主键和索引
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
KEY `idx_tenant_id` (`tenant_id`),
|
||||
KEY `idx_deleted` (`deleted`),
|
||||
KEY `idx_student_id` (`student_id`),
|
||||
KEY `idx_request_status` (`request_status`),
|
||||
KEY `idx_change_type` (`change_type`),
|
||||
KEY `idx_submit_time` (`submit_time`),
|
||||
KEY `idx_batch_id` (`batch_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生信息变更申请表';
|
||||
|
||||
-- ===========================================
|
||||
-- 7. 数据导入导出记录表(新增)
|
||||
-- ===========================================
|
||||
DROP TABLE IF EXISTS `xg_data_operation_log`;
|
||||
CREATE TABLE `xg_data_operation_log` (
|
||||
-- 标准基础字段(必须)
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID(雪花ID)',
|
||||
`tenant_id` varchar(20) NOT NULL 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 '更新时间',
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
|
||||
-- 操作基本信息
|
||||
`operation_type` varchar(20) NOT NULL COMMENT '操作类型:import-导入,export-导出,backup-备份,restore-恢复',
|
||||
`data_type` varchar(20) NOT NULL COMMENT '数据类型:student-学生信息,class-班级信息,batch-批次信息,all-全部',
|
||||
`operation_name` varchar(100) NOT NULL COMMENT '操作名称',
|
||||
`operation_description` varchar(500) DEFAULT NULL COMMENT '操作描述',
|
||||
|
||||
-- 操作状态
|
||||
`operation_status` char(1) DEFAULT '1' COMMENT '操作状态:1-进行中,2-成功,3-失败,4-部分成功',
|
||||
`start_time` datetime NOT NULL COMMENT '开始时间',
|
||||
`end_time` datetime DEFAULT NULL COMMENT '结束时间',
|
||||
`duration` int(11) DEFAULT NULL COMMENT '耗时(秒)',
|
||||
|
||||
-- 文件信息
|
||||
`source_file_name` varchar(200) DEFAULT NULL COMMENT '源文件名',
|
||||
`source_file_path` varchar(500) DEFAULT NULL COMMENT '源文件路径',
|
||||
`target_file_name` varchar(200) DEFAULT NULL COMMENT '目标文件名',
|
||||
`target_file_path` varchar(500) DEFAULT NULL COMMENT '目标文件路径',
|
||||
`file_size` bigint(20) DEFAULT NULL COMMENT '文件大小(字节)',
|
||||
|
||||
-- 数据统计
|
||||
`total_records` int(11) DEFAULT 0 COMMENT '总记录数',
|
||||
`success_records` int(11) DEFAULT 0 COMMENT '成功记录数',
|
||||
`failed_records` int(11) DEFAULT 0 COMMENT '失败记录数',
|
||||
`warning_records` int(11) DEFAULT 0 COMMENT '警告记录数',
|
||||
|
||||
-- 结果信息
|
||||
`result_message` text DEFAULT NULL COMMENT '结果消息',
|
||||
`error_details` text DEFAULT NULL COMMENT '错误详情(JSON格式)',
|
||||
`warning_details` text DEFAULT NULL COMMENT '警告详情(JSON格式)',
|
||||
|
||||
-- 操作人信息
|
||||
`operator_id` bigint(20) NOT NULL COMMENT '操作人ID',
|
||||
`operator_name` varchar(50) NOT NULL COMMENT '操作人姓名',
|
||||
|
||||
-- 关联信息
|
||||
`batch_id` bigint(20) DEFAULT NULL COMMENT '关联批次ID',
|
||||
|
||||
-- 备注字段
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注信息',
|
||||
|
||||
-- 主键和索引
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
KEY `idx_tenant_id` (`tenant_id`),
|
||||
KEY `idx_deleted` (`deleted`),
|
||||
KEY `idx_operation_type` (`operation_type`),
|
||||
KEY `idx_data_type` (`data_type`),
|
||||
KEY `idx_operation_status` (`operation_status`),
|
||||
KEY `idx_operator_id` (`operator_id`),
|
||||
KEY `idx_start_time` (`start_time`),
|
||||
KEY `idx_batch_id` (`batch_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='数据导入导出记录表';
|
||||
|
||||
-- ===========================================
|
||||
-- 8. 统计分析配置表(新增)
|
||||
-- ===========================================
|
||||
DROP TABLE IF EXISTS `xg_statistics_config`;
|
||||
CREATE TABLE `xg_statistics_config` (
|
||||
-- 标准基础字段(必须)
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID(雪花ID)',
|
||||
`tenant_id` varchar(20) NOT NULL 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 '更新时间',
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
|
||||
-- 配置基本信息
|
||||
`config_name` varchar(100) NOT NULL COMMENT '配置名称',
|
||||
`config_code` varchar(50) NOT NULL COMMENT '配置编码',
|
||||
`config_type` varchar(20) NOT NULL COMMENT '配置类型:dimension-维度,report-报表,chart-图表',
|
||||
`config_content` text NOT NULL COMMENT '配置内容(JSON格式)',
|
||||
|
||||
-- 配置属性
|
||||
`is_system` tinyint(1) DEFAULT 0 COMMENT '是否系统配置:0-否,1-是',
|
||||
`is_enabled` tinyint(1) DEFAULT 1 COMMENT '是否启用:0-否,1-是',
|
||||
`sort_order` int(11) DEFAULT 0 COMMENT '排序顺序',
|
||||
|
||||
-- 权限配置
|
||||
`view_permissions` text DEFAULT NULL COMMENT '查看权限(JSON格式)',
|
||||
`edit_permissions` text DEFAULT NULL COMMENT '编辑权限(JSON格式)',
|
||||
|
||||
-- 备注字段
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注信息',
|
||||
|
||||
-- 主键和索引
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE KEY `uk_config_code_tenant` (`config_code`, `tenant_id`),
|
||||
KEY `idx_tenant_id` (`tenant_id`),
|
||||
KEY `idx_deleted` (`deleted`),
|
||||
KEY `idx_config_type` (`config_type`),
|
||||
KEY `idx_is_enabled` (`is_enabled`),
|
||||
KEY `idx_sort_order` (`sort_order`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='统计分析配置表';
|
||||
|
||||
-- ===========================================
|
||||
-- 9. 统计结果缓存表(新增)
|
||||
-- ===========================================
|
||||
DROP TABLE IF EXISTS `xg_statistics_cache`;
|
||||
CREATE TABLE `xg_statistics_cache` (
|
||||
-- 标准基础字段(必须)
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID(雪花ID)',
|
||||
`tenant_id` varchar(20) NOT NULL 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 '更新时间',
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
|
||||
-- 缓存基本信息
|
||||
`cache_key` varchar(200) NOT NULL COMMENT '缓存键',
|
||||
`cache_type` varchar(20) NOT NULL COMMENT '缓存类型:dimension-维度统计,report-报表,chart-图表',
|
||||
`cache_content` longtext NOT NULL COMMENT '缓存内容(JSON格式)',
|
||||
|
||||
-- 缓存时间信息
|
||||
`cache_time` datetime NOT NULL COMMENT '缓存时间',
|
||||
`expire_time` datetime NOT NULL COMMENT '过期时间',
|
||||
`is_expired` tinyint(1) DEFAULT 0 COMMENT '是否过期:0-否,1-是',
|
||||
|
||||
-- 统计信息
|
||||
`hit_count` int(11) DEFAULT 0 COMMENT '命中次数',
|
||||
`last_hit_time` datetime DEFAULT NULL COMMENT '最后命中时间',
|
||||
|
||||
-- 数据大小
|
||||
`data_size` int(11) DEFAULT 0 COMMENT '数据大小(字节)',
|
||||
|
||||
-- 主键和索引
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE KEY `uk_cache_key_tenant` (`cache_key`, `tenant_id`),
|
||||
KEY `idx_tenant_id` (`tenant_id`),
|
||||
KEY `idx_deleted` (`deleted`),
|
||||
KEY `idx_cache_type` (`cache_type`),
|
||||
KEY `idx_expire_time` (`expire_time`),
|
||||
KEY `idx_is_expired` (`is_expired`),
|
||||
KEY `idx_hit_count` (`hit_count`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='统计结果缓存表';
|
||||
|
||||
-- ===========================================
|
||||
-- 10. 数据权限配置表(新增)
|
||||
-- ===========================================
|
||||
DROP TABLE IF EXISTS `xg_data_permission`;
|
||||
CREATE TABLE `xg_data_permission` (
|
||||
-- 标准基础字段(必须)
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID(雪花ID)',
|
||||
`tenant_id` varchar(20) NOT NULL 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 '更新时间',
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
|
||||
-- 权限基本信息
|
||||
`user_id` bigint(20) NOT NULL COMMENT '用户ID',
|
||||
`user_name` varchar(50) NOT NULL COMMENT '用户姓名',
|
||||
`permission_type` varchar(20) NOT NULL COMMENT '权限类型:college-学院,major-专业,class-班级,student-学生',
|
||||
`permission_scope` varchar(20) NOT NULL COMMENT '权限范围:all-全部,own-自己负责,custom-自定义',
|
||||
`scope_values` text DEFAULT NULL COMMENT '权限范围值(JSON格式)',
|
||||
`permission_level` tinyint(1) NOT NULL COMMENT '权限级别:1-查看,2-编辑,3-审核,4-管理',
|
||||
|
||||
-- 权限状态
|
||||
`is_enabled` tinyint(1) DEFAULT 1 COMMENT '是否启用:0-否,1-是',
|
||||
`effective_time` datetime DEFAULT NULL COMMENT '生效时间',
|
||||
`expire_time` datetime DEFAULT NULL COMMENT '失效时间',
|
||||
|
||||
-- 备注字段
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注信息',
|
||||
|
||||
-- 主键和索引
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
KEY `idx_tenant_id` (`tenant_id`),
|
||||
KEY `idx_deleted` (`deleted`),
|
||||
KEY `idx_user_id` (`user_id`),
|
||||
KEY `idx_permission_type` (`permission_type`),
|
||||
KEY `idx_permission_scope` (`permission_scope`),
|
||||
KEY `idx_is_enabled` (`is_enabled`),
|
||||
KEY `idx_effective_expire` (`effective_time`, `expire_time`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='数据权限配置表';
|
||||
|
||||
-- ===========================================
|
||||
-- 11. 移动端用户会话表(新增)
|
||||
-- ===========================================
|
||||
DROP TABLE IF EXISTS `xg_mobile_user_session`;
|
||||
CREATE TABLE `xg_mobile_user_session` (
|
||||
-- 标准基础字段(必须)
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID(雪花ID)',
|
||||
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
|
||||
-- 会话基本信息
|
||||
`user_id` bigint(20) NOT NULL COMMENT '用户ID',
|
||||
`user_name` varchar(50) NOT NULL COMMENT '用户姓名',
|
||||
`user_type` varchar(20) NOT NULL COMMENT '用户类型:student-学生,teacher-教师,admin-管理员',
|
||||
`session_id` varchar(100) NOT NULL COMMENT '会话ID',
|
||||
|
||||
-- 设备信息
|
||||
`device_id` varchar(100) DEFAULT NULL COMMENT '设备ID',
|
||||
`device_type` varchar(20) DEFAULT NULL COMMENT '设备类型:ios-苹果,android-安卓,h5-网页',
|
||||
`app_version` varchar(20) DEFAULT NULL COMMENT '应用版本',
|
||||
`user_agent` varchar(500) DEFAULT NULL COMMENT '用户代理',
|
||||
|
||||
-- 会话时间信息
|
||||
`login_time` datetime NOT NULL COMMENT '登录时间',
|
||||
`last_activity_time` datetime DEFAULT NULL COMMENT '最后活动时间',
|
||||
`logout_time` datetime DEFAULT NULL COMMENT '退出时间',
|
||||
|
||||
-- 网络信息
|
||||
`ip_address` varchar(50) DEFAULT NULL COMMENT 'IP地址',
|
||||
`location` varchar(100) DEFAULT NULL COMMENT '地理位置',
|
||||
|
||||
-- 会话状态
|
||||
`is_active` tinyint(1) DEFAULT 1 COMMENT '是否活跃:0-否,1-是',
|
||||
`session_duration` int(11) DEFAULT 0 COMMENT '会话时长(分钟)',
|
||||
|
||||
-- 主键和索引
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE KEY `uk_session_id` (`session_id`),
|
||||
KEY `idx_tenant_id` (`tenant_id`),
|
||||
KEY `idx_deleted` (`deleted`),
|
||||
KEY `idx_user_id` (`user_id`),
|
||||
KEY `idx_device_id` (`device_id`),
|
||||
KEY `idx_is_active` (`is_active`),
|
||||
KEY `idx_login_time` (`login_time`),
|
||||
KEY `idx_user_type` (`user_type`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='移动端用户会话表';
|
||||
|
||||
-- ===========================================
|
||||
-- 创建表完成提示
|
||||
-- ===========================================
|
||||
SELECT 'XG学生信息管理模块完整优化数据表创建完成!' as message;
|
||||
SELECT '共创建11个核心业务表,包含5个原有表优化和6个新增补充表' as summary;
|
||||
SELECT '所有表都遵循雪花ID、逻辑删除、多租户规范' as features;
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
@@ -1,110 +0,0 @@
|
||||
-- ==========================================
|
||||
-- 学生信息管理模块核心测试数据脚本
|
||||
-- 版本:V1.0.0
|
||||
-- 创建时间:2025-01-14
|
||||
-- 说明:只包含核心字段的简化测试数据
|
||||
-- ==========================================
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
-- ===========================================
|
||||
-- 1. 信息采集批次测试数据
|
||||
-- ===========================================
|
||||
INSERT INTO `xg_collection_batch` (`id`, `tenant_id`, `batch_code`, `batch_name`, `batch_type`, `academic_year`, `semester`, `batch_status`, `publish_time`, `start_time`, `end_time`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `deleted`) VALUES
|
||||
(1745001000000000001, '000000', 'BATCH_2024_1', '2024-2025学年第一学期信息采集', 'annual', '2024-2025', '1', '2', '2024-08-25 09:00:00', '2024-09-01 00:00:00', '2024-09-30 23:59:59', '2024-2025学年第一学期学生信息采集工作', 1, NOW(), 1, NOW(), 0),
|
||||
(1745001000000000002, '000000', 'BATCH_2024_2', '2024-2025学年第二学期信息采集', 'annual', '2024-2025', '2', '1', '2025-02-10 09:00:00', '2025-02-15 00:00:00', '2025-03-15 23:59:59', '2024-2025学年第二学期学生信息采集工作', 1, NOW(), 1, NOW(), 0);
|
||||
|
||||
-- ===========================================
|
||||
-- 2. 班级信息测试数据
|
||||
-- ===========================================
|
||||
INSERT INTO `xg_class_info` (`id`, `tenant_id`, `class_code`, `class_name`, `class_type`, `grade`, `enrollment_year`, `graduation_year`, `major_code`, `major_name`, `training_type`, `degree_type`, `college_code`, `college_name`, `counselor_id`, `counselor_name`, `class_teacher_id`, `class_teacher_name`, `planned_capacity`, `current_student_count`, `male_count`, `female_count`, `class_status`, `class_description`, `create_by`, `create_time`, `update_by`, `update_time`, `deleted`) VALUES
|
||||
(1745002000000000001, '000000', 'CS2021001', '计算机科学与技术2021级1班', 'regular', '2021', 2021, 2025, 'CS', '计算机科学与技术', 'full-time', 'bachelor', 'CS', '计算机科学与技术学院', 1001, '张辅导员', 1002, '李班主任', 45, 3, 2, 1, '1', '计算机科学与技术专业2021级第1班', 1, NOW(), 1, NOW(), 0),
|
||||
(1745002000000000002, '000000', 'SE2021001', '软件工程2021级1班', 'regular', '2021', 2021, 2025, 'SE', '软件工程', 'full-time', 'bachelor', 'CS', '计算机科学与技术学院', 1001, '张辅导员', 1006, '陈班主任', 40, 2, 1, 1, '1', '软件工程专业2021级第1班', 1, NOW(), 1, NOW(), 0),
|
||||
(1745002000000000003, '000000', 'BM2021001', '工商管理2021级1班', 'regular', '2021', 2021, 2025, 'BM', '工商管理', 'full-time', 'bachelor', 'EM', '经济管理学院', 1011, '郑辅导员', 1012, '冯班主任', 50, 2, 1, 1, '1', '工商管理专业2021级第1班', 1, NOW(), 1, NOW(), 0),
|
||||
(1745002000000000004, '000000', 'AC2021001', '会计学2021级1班', 'regular', '2021', 2021, 2025, 'AC', '会计学', 'full-time', 'bachelor', 'EM', '经济管理学院', 1011, '郑辅导员', 1014, '朱班主任', 45, 1, 0, 1, '1', '会计学专业2021级第1班', 1, NOW(), 1, NOW(), 0),
|
||||
(1745002000000000005, '000000', 'EN2021001', '英语2021级1班', 'regular', '2021', 2021, 2025, 'EN', '英语', 'full-time', 'bachelor', 'FL', '外国语学院', 1019, '魏辅导员', 1020, '薛班主任', 30, 1, 0, 1, '1', '英语专业2021级第1班', 1, NOW(), 1, NOW(), 0),
|
||||
(1745002000000000006, '000000', 'ME2021001', '机械设计制造及其自动化2021级1班', 'regular', '2021', 2021, 2025, 'ME', '机械设计制造及其自动化', 'full-time', 'bachelor', 'ME', '机械工程学院', 1024, '龚辅导员', 1025, '段班主任', 45, 1, 1, 0, '1', '机械设计制造及其自动化专业2021级第1班', 1, NOW(), 1, NOW(), 0);
|
||||
|
||||
-- ===========================================
|
||||
-- 3. 学生信息测试数据(核心字段)
|
||||
-- ===========================================
|
||||
INSERT INTO `xg_student_info` (`id`, `tenant_id`, `student_no`, `id_card`, `name`, `name_english`, `name_pinyin`, `gender`, `birth_date`, `nation`, `political_status`, `marital_status`, `student_status`, `enrollment_year`, `enrollment_date`, `school_system`, `education_level`, `training_type`, `admission_category`, `college_code`, `college_name`, `major_code`, `major_name`, `class_code`, `class_name`, `grade`, `phone`, `email`, `qq`, `wechat`, `home_address`, `current_address`, `postal_code`, `household_register_type`, `hukou_location`, `dormitory_building`, `dormitory_room`, `emergency_contact_name`, `emergency_contact_phone`, `guardian_name`, `guardian_phone`, `guardian_relation`, `family_economic_status`, `height`, `weight`, `blood_type`, `health_status`, `bank_name`, `bank_card_no`, `info_status`, `completion_rate`, `last_update_time`, `create_by`, `create_time`, `update_by`, `update_time`, `deleted`) VALUES
|
||||
|
||||
-- 计算机科学与技术2021级1班学生
|
||||
(1745003000000000001, '000000', '202101001', '320101200301011234', '张三', 'Zhang San', 'zhang san', 'M', '2003-01-01', '汉族', '共青团员', '未婚', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', 'CS', '计算机科学与技术学院', 'CS', '计算机科学与技术', 'CS2021001', '计算机科学与技术2021级1班', '2021', '13800138001', 'zhangsan@student.edu.cn', '123456789', 'zhangsan_wx', '江苏省南京市玄武区中山路123号', '学生宿舍1号楼201室', '210000', '城镇', '江苏省南京市', '学生宿舍1号楼', '201', '张父', '13900139001', '张父', '13900139001', '父亲', '中等', 175.5, 65.0, 'A', '健康', '中国银行', '6217000000000001', '1', 95.5, NOW(), 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
(1745003000000000002, '000000', '202101002', '320101200302152345', '李四', 'Li Si', 'li si', 'F', '2003-02-15', '汉族', '中共预备党员', '未婚', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', 'CS', '计算机科学与技术学院', 'CS', '计算机科学与技术', 'CS2021001', '计算机科学与技术2021级1班', '2021', '13800138002', 'lisi@student.edu.cn', '234567890', 'lisi_wx', '江苏省苏州市姑苏区观前街456号', '学生宿舍1号楼202室', '215000', '城镇', '江苏省苏州市', '学生宿舍1号楼', '202', '李母', '13900139002', '李母', '13900139002', '母亲', '良好', 162.0, 50.0, 'B', '健康', '工商银行', '6222000000000002', '1', 98.0, NOW(), 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
(1745003000000000003, '000000', '202101003', '320101200303203456', '王五', 'Wang Wu', 'wang wu', 'M', '2003-03-20', '回族', '共青团员', '未婚', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', 'CS', '计算机科学与技术学院', 'CS', '计算机科学与技术', 'CS2021001', '计算机科学与技术2021级1班', '2021', '13800138003', 'wangwu@student.edu.cn', '345678901', 'wangwu_wx', '宁夏回族自治区银川市兴庆区解放街789号', '学生宿舍1号楼203室', '750000', '农村', '宁夏回族自治区银川市', '学生宿舍1号楼', '203', '王父', '13900139003', '王父', '13900139003', '父亲', '困难', 170.0, 60.0, 'O', '健康', '农业银行', '6228000000000003', '1', 92.0, NOW(), 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 软件工程2021级1班学生
|
||||
(1745003000000000004, '000000', '202101101', '320101200304104567', '赵六', 'Zhao Liu', 'zhao liu', 'F', '2003-04-10', '汉族', '共青团员', '未婚', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', 'CS', '计算机科学与技术学院', 'SE', '软件工程', 'SE2021001', '软件工程2021级1班', '2021', '13800138004', 'zhaoliu@student.edu.cn', '456789012', 'zhaoliu_wx', '山东省济南市历下区泉城路321号', '学生宿舍2号楼101室', '250000', '城镇', '山东省济南市', '学生宿舍2号楼', '101', '赵母', '13900139004', '赵母', '13900139004', '母亲', '中等', 165.0, 52.0, 'AB', '健康', '建设银行', '6236000000000004', '1', 96.5, NOW(), 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
(1745003000000000005, '000000', '202101102', '320101200305256789', '孙七', 'Sun Qi', 'sun qi', 'M', '2003-05-25', '满族', '中共党员', '未婚', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', 'CS', '计算机科学与技术学院', 'SE', '软件工程', 'SE2021001', '软件工程2021级1班', '2021', '13800138005', 'sunqi@student.edu.cn', '567890123', 'sunqi_wx', '辽宁省沈阳市和平区中街654号', '学生宿舍2号楼102室', '110000', '城镇', '辽宁省沈阳市', '学生宿舍2号楼', '102', '孙父', '13900139005', '孙父', '13900139005', '父亲', '良好', 178.0, 70.0, 'A', '健康', '交通银行', '6222600000000005', '1', 97.0, NOW(), 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 工商管理2021级1班学生
|
||||
(1745003000000000006, '000000', '202102001', '320101200306308901', '周八', 'Zhou Ba', 'zhou ba', 'F', '2003-06-30', '汉族', '共青团员', '未婚', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', 'EM', '经济管理学院', 'BM', '工商管理', 'BM2021001', '工商管理2021级1班', '2021', '13800138006', 'zhouba@student.edu.cn', '678901234', 'zhouba_wx', '浙江省杭州市西湖区文三路987号', '学生宿舍3号楼201室', '310000', '城镇', '浙江省杭州市', '学生宿舍3号楼', '201', '周母', '13900139006', '周母', '13900139006', '母亲', '富裕', 160.0, 48.0, 'B', '健康', '招商银行', '6225000000000006', '1', 94.0, NOW(), 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
(1745003000000000007, '000000', '202102002', '320101200307151234', '吴九', 'Wu Jiu', 'wu jiu', 'M', '2003-07-15', '蒙古族', '共青团员', '未婚', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', 'EM', '经济管理学院', 'BM', '工商管理', 'BM2021001', '工商管理2021级1班', '2021', '13800138007', 'wujiu@student.edu.cn', '789012345', 'wujiu_wx', '内蒙古自治区呼和浩特市新城区中山路147号', '学生宿舍3号楼202室', '010000', '农村', '内蒙古自治区呼和浩特市', '学生宿舍3号楼', '202', '吴父', '13900139007', '吴父', '13900139007', '父亲', '中等', 172.0, 65.0, 'O', '健康', '邮储银行', '6217990000000007', '1', 91.5, NOW(), 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 会计学2021级1班学生
|
||||
(1745003000000000008, '000000', '202102101', '320101200308202345', '郑十', 'Zheng Shi', 'zheng shi', 'F', '2003-08-20', '汉族', '中共预备党员', '未婚', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', 'EM', '经济管理学院', 'AC', '会计学', 'AC2021001', '会计学2021级1班', '2021', '13800138008', 'zhengshi@student.edu.cn', '890123456', 'zhengshi_wx', '广东省广州市天河区珠江新城258号', '学生宿舍3号楼203室', '510000', '城镇', '广东省广州市', '学生宿舍3号楼', '203', '郑母', '13900139008', '郑母', '13900139008', '母亲', '良好', 158.0, 46.0, 'A', '健康', '平安银行', '6230580000000008', '1', 99.0, NOW(), 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 英语2021级1班学生
|
||||
(1745003000000000009, '000000', '202103001', '320101200309053456', '王十一', 'Wang Shiyi', 'wang shiyi', 'F', '2003-09-05', '汉族', '共青团员', '未婚', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', 'FL', '外国语学院', 'EN', '英语', 'EN2021001', '英语2021级1班', '2021', '13800138009', 'wangshiyi@student.edu.cn', '901234567', 'wangshiyi_wx', '上海市浦东新区陆家嘴金融街369号', '学生宿舍4号楼101室', '200000', '城镇', '上海市浦东新区', '学生宿舍4号楼', '101', '王母', '13900139009', '王母', '13900139009', '母亲', '富裕', 163.0, 49.0, 'AB', '健康', '上海银行', '6227000000000009', '1', 98.5, NOW(), 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 机械设计制造及其自动化2021级1班学生
|
||||
(1745003000000000010, '000000', '202104001', '320101200310124567', '李十二', 'Li Shier', 'li shier', 'M', '2003-10-12', '汉族', '共青团员', '未婚', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', 'ME', '机械工程学院', 'ME', '机械设计制造及其自动化', 'ME2021001', '机械设计制造及其自动化2021级1班', '2021', '13800138010', 'lishier@student.edu.cn', '012345678', 'lishier_wx', '河南省郑州市金水区花园路741号', '学生宿舍5号楼301室', '450000', '农村', '河南省郑州市', '学生宿舍5号楼', '301', '李父', '13900139010', '李父', '13900139010', '父亲', '困难', 176.0, 68.0, 'B', '健康', '中原银行', '6236950000000010', '1', 93.0, NOW(), 1, NOW(), 1, NOW(), 0);
|
||||
|
||||
-- ===========================================
|
||||
-- 4. 班级学生关联测试数据
|
||||
-- ===========================================
|
||||
INSERT INTO `xg_class_student` (`id`, `tenant_id`, `class_id`, `student_id`, `student_no`, `student_name`, `join_date`, `position`, `position_level`, `status`, `is_monitor`, `is_deputy_monitor`, `is_study_committee`, `is_life_committee`, `is_sports_committee`, `is_culture_committee`, `remarks`, `create_by`, `create_time`, `update_by`, `update_time`, `deleted`) VALUES
|
||||
-- 计算机科学与技术2021级1班关联
|
||||
(1745004000000000001, '000000', 1745002000000000001, 1745003000000000001, '202101001', '张三', '2021-09-01', '学习委员', '班委', '1', '0', '0', '1', '0', '0', '0', '负责班级学习事务', 1, NOW(), 1, NOW(), 0),
|
||||
(1745004000000000002, '000000', 1745002000000000001, 1745003000000000002, '202101002', '李四', '2021-09-01', '班长', '班委', '1', '1', '0', '0', '0', '0', '0', '班级负责人', 1, NOW(), 1, NOW(), 0),
|
||||
(1745004000000000003, '000000', 1745002000000000001, 1745003000000000003, '202101003', '王五', '2021-09-01', '体育委员', '班委', '1', '0', '0', '0', '0', '1', '0', '负责班级体育活动', 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 软件工程2021级1班关联
|
||||
(1745004000000000004, '000000', 1745002000000000002, 1745003000000000004, '202101101', '赵六', '2021-09-01', '文艺委员', '班委', '1', '0', '0', '0', '0', '0', '1', '负责班级文艺活动', 1, NOW(), 1, NOW(), 0),
|
||||
(1745004000000000005, '000000', 1745002000000000002, 1745003000000000005, '202101102', '孙七', '2021-09-01', '班长', '班委', '1', '1', '0', '0', '0', '0', '0', '班级负责人', 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 工商管理2021级1班关联
|
||||
(1745004000000000006, '000000', 1745002000000000003, 1745003000000000006, '202102001', '周八', '2021-09-01', '班长', '班委', '1', '1', '0', '0', '0', '0', '0', '班级负责人', 1, NOW(), 1, NOW(), 0),
|
||||
(1745004000000000007, '000000', 1745002000000000003, 1745003000000000007, '202102002', '吴九', '2021-09-01', '生活委员', '班委', '1', '0', '0', '0', '1', '0', '0', '负责班级生活事务', 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 会计学2021级1班关联
|
||||
(1745004000000000008, '000000', 1745002000000000004, 1745003000000000008, '202102101', '郑十', '2021-09-01', '学习委员', '班委', '1', '0', '0', '1', '0', '0', '0', '负责班级学习事务', 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 英语2021级1班关联
|
||||
(1745004000000000009, '000000', 1745002000000000005, 1745003000000000009, '202103001', '王十一', '2021-09-01', '班长', '班委', '1', '1', '0', '0', '0', '0', '0', '班级负责人', 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 机械设计制造及其自动化2021级1班关联
|
||||
(1745004000000000010, '000000', 1745002000000000006, 1745003000000000010, '202104001', '李十二', '2021-09-01', '生活委员', '班委', '1', '0', '0', '0', '1', '0', '0', '负责班级生活事务', 1, NOW(), 1, NOW(), 0);
|
||||
|
||||
-- ===========================================
|
||||
-- 5. 审核记录测试数据
|
||||
-- ===========================================
|
||||
INSERT INTO `xg_audit_record` (`id`, `tenant_id`, `student_id`, `student_no`, `student_name`, `audit_type`, `audit_level`, `auditor_id`, `auditor_name`, `audit_status`, `audit_time`, `audit_opinion`, `next_auditor_id`, `next_auditor_name`, `batch_id`, `create_by`, `create_time`, `update_by`, `update_time`, `deleted`) VALUES
|
||||
-- 张三的审核记录
|
||||
(1745005000000000001, '000000', 1745003000000000001, '202101001', '张三', '信息审核', '1', 1002, '李班主任', '3', '2024-09-15 10:30:00', '信息完整,审核通过', 1001, '张辅导员', 1745001000000000001, 1, NOW(), 1, NOW(), 0),
|
||||
(1745005000000000002, '000000', 1745003000000000001, '202101001', '张三', '信息审核', '2', 1001, '张辅导员', '3', '2024-09-16 14:20:00', '信息核实无误,审核通过', 2001, '院领导', 1745001000000000001, 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 李四的审核记录
|
||||
(1745005000000000003, '000000', 1745003000000000002, '202101002', '李四', '信息审核', '1', 1002, '李班主任', '3', '2024-09-15 11:00:00', '信息完整,审核通过', 1001, '张辅导员', 1745001000000000001, 1, NOW(), 1, NOW(), 0),
|
||||
(1745005000000000004, '000000', 1745003000000000002, '202101002', '李四', '信息审核', '2', 1001, '张辅导员', '3', '2024-09-16 15:30:00', '信息核实无误,审核通过', 2001, '院领导', 1745001000000000001, 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 王五的审核记录(待审核状态)
|
||||
(1745005000000000005, '000000', 1745003000000000003, '202101003', '王五', '信息审核', '1', 1002, '李班主任', '2', NULL, NULL, NULL, NULL, 1745001000000000001, 1, NOW(), 1, NOW(), 0);
|
||||
|
||||
-- ===========================================
|
||||
-- 验证数据插入
|
||||
-- ===========================================
|
||||
SELECT '✅ 数据插入完成' as status;
|
||||
SELECT CONCAT('📊 信息采集批次: ', COUNT(*), ' 条') as batch_count FROM xg_collection_batch WHERE id >= 1745000000000000000;
|
||||
SELECT CONCAT('🏫 班级信息: ', COUNT(*), ' 个') as class_count FROM xg_class_info WHERE id >= 1745000000000000000;
|
||||
SELECT CONCAT('👨🎓 学生信息: ', COUNT(*), ' 名') as student_count FROM xg_student_info WHERE id >= 1745000000000000000;
|
||||
SELECT CONCAT('🔗 班级关联: ', COUNT(*), ' 条') as relation_count FROM xg_class_student WHERE id >= 1745000000000000000;
|
||||
SELECT CONCAT('📋 审核记录: ', COUNT(*), ' 条') as audit_count FROM xg_audit_record WHERE id >= 1745000000000000000;
|
||||
|
||||
COMMIT;
|
||||
@@ -1,111 +0,0 @@
|
||||
-- ==========================================
|
||||
-- 学生信息管理模块最终测试数据脚本
|
||||
-- 版本:V1.0.0
|
||||
-- 创建时间:2025-01-14
|
||||
-- 说明:完全匹配实际数据表结构的测试数据
|
||||
-- ==========================================
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
-- ===========================================
|
||||
-- 1. 信息采集批次测试数据
|
||||
-- ===========================================
|
||||
INSERT INTO `xg_collection_batch` (`id`, `tenant_id`, `batch_code`, `batch_name`, `batch_type`, `academic_year`, `semester`, `batch_status`, `publish_time`, `start_time`, `end_time`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `deleted`) VALUES
|
||||
(1745001000000000001, '000000', 'BATCH_2024_1', '2024-2025学年第一学期信息采集', 'annual', '2024-2025', '1', '2', '2024-08-25 09:00:00', '2024-09-01 00:00:00', '2024-09-30 23:59:59', '2024-2025学年第一学期学生信息采集工作', 1, NOW(), 1, NOW(), 0),
|
||||
(1745001000000000002, '000000', 'BATCH_2024_2', '2024-2025学年第二学期信息采集', 'annual', '2024-2025', '2', '1', '2025-02-10 09:00:00', '2025-02-15 00:00:00', '2025-03-15 23:59:59', '2024-2025学年第二学期学生信息采集工作', 1, NOW(), 1, NOW(), 0);
|
||||
|
||||
-- ===========================================
|
||||
-- 2. 班级信息测试数据
|
||||
-- ===========================================
|
||||
INSERT INTO `xg_class_info` (`id`, `tenant_id`, `class_code`, `class_name`, `class_type`, `grade`, `enrollment_year`, `graduation_year`, `major_code`, `major_name`, `training_type`, `degree_type`, `college_code`, `college_name`, `counselor_id`, `counselor_name`, `class_teacher_id`, `class_teacher_name`, `planned_capacity`, `current_student_count`, `male_count`, `female_count`, `class_status`, `class_description`, `create_by`, `create_time`, `update_by`, `update_time`, `deleted`) VALUES
|
||||
-- 计算机科学与技术学院
|
||||
(1745002000000000001, '000000', 'CS2021001', '计算机科学与技术2021级1班', 'regular', '2021', 2021, 2025, 'CS', '计算机科学与技术', 'full-time', 'bachelor', 'CS', '计算机科学与技术学院', 1001, '张辅导员', 1002, '李班主任', 45, 3, 2, 1, '1', '计算机科学与技术专业2021级第1班', 1, NOW(), 1, NOW(), 0),
|
||||
(1745002000000000002, '000000', 'SE2021001', '软件工程2021级1班', 'regular', '2021', 2021, 2025, 'SE', '软件工程', 'full-time', 'bachelor', 'CS', '计算机科学与技术学院', 1001, '张辅导员', 1006, '陈班主任', 40, 2, 1, 1, '1', '软件工程专业2021级第1班', 1, NOW(), 1, NOW(), 0),
|
||||
(1745002000000000003, '000000', 'BM2021001', '工商管理2021级1班', 'regular', '2021', 2021, 2025, 'BM', '工商管理', 'full-time', 'bachelor', 'EM', '经济管理学院', 1011, '郑辅导员', 1012, '冯班主任', 50, 2, 1, 1, '1', '工商管理专业2021级第1班', 1, NOW(), 1, NOW(), 0),
|
||||
(1745002000000000004, '000000', 'AC2021001', '会计学2021级1班', 'regular', '2021', 2021, 2025, 'AC', '会计学', 'full-time', 'bachelor', 'EM', '经济管理学院', 1011, '郑辅导员', 1014, '朱班主任', 45, 1, 0, 1, '1', '会计学专业2021级第1班', 1, NOW(), 1, NOW(), 0),
|
||||
(1745002000000000005, '000000', 'EN2021001', '英语2021级1班', 'regular', '2021', 2021, 2025, 'EN', '英语', 'full-time', 'bachelor', 'FL', '外国语学院', 1019, '魏辅导员', 1020, '薛班主任', 30, 1, 0, 1, '1', '英语专业2021级第1班', 1, NOW(), 1, NOW(), 0),
|
||||
(1745002000000000006, '000000', 'ME2021001', '机械设计制造及其自动化2021级1班', 'regular', '2021', 2021, 2025, 'ME', '机械设计制造及其自动化', 'full-time', 'bachelor', 'ME', '机械工程学院', 1024, '龚辅导员', 1025, '段班主任', 45, 1, 1, 0, '1', '机械设计制造及其自动化专业2021级第1班', 1, NOW(), 1, NOW(), 0);
|
||||
|
||||
-- ===========================================
|
||||
-- 3. 学生信息测试数据
|
||||
-- ===========================================
|
||||
INSERT INTO `xg_student_info` (`id`, `tenant_id`, `student_no`, `id_card`, `name`, `name_english`, `name_pinyin`, `gender`, `birth_date`, `nation`, `political_status`, `marital_status`, `religion`, `student_status`, `enrollment_year`, `enrollment_date`, `school_system`, `education_level`, `training_type`, `admission_category`, `college_code`, `college_name`, `major_code`, `major_name`, `class_code`, `class_name`, `grade`, `phone`, `email`, `qq`, `wechat`, `home_address`, `current_address`, `postal_code`, `household_register_type`, `hukou_location`, `dormitory_building`, `dormitory_room`, `emergency_contact_name`, `emergency_contact_phone`, `guardian_name`, `guardian_phone`, `guardian_relation`, `family_economic_status`, `height`, `weight`, `blood_type`, `health_status`, `specialties`, `awards`, `violations`, `social_activities`, `bank_name`, `bank_account`, `account_holder`, `info_status`, `completion_rate`, `last_update_time`, `create_by`, `create_time`, `update_by`, `update_time`, `deleted`) VALUES
|
||||
|
||||
-- 计算机科学与技术2021级1班学生
|
||||
(1745003000000000001, '000000', '202101001', '320101200301011234', '张三', 'Zhang San', 'zhang san', 'M', '2003-01-01', '汉族', '共青团员', '未婚', '无', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', 'CS', '计算机科学与技术学院', 'CS', '计算机科学与技术', 'CS2021001', '计算机科学与技术2021级1班', '2021', '13800138001', 'zhangsan@student.edu.cn', '123456789', 'zhangsan_wx', '江苏省南京市玄武区中山路123号', '学生宿舍1号楼201室', '210000', '城镇', '江苏省南京市', '学生宿舍1号楼', '201', '张父', '13900139001', '张父', '13900139001', '父亲', '中等', 175.5, 65.0, 'A', '健康', '编程、篮球', '2022年程序设计大赛二等奖', '无', '计算机协会会员、志愿者服务队', '中国银行', '6217000000000001', '张三', '1', 95.5, NOW(), 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
(1745003000000000002, '000000', '202101002', '320101200302152345', '李四', 'Li Si', 'li si', 'F', '2003-02-15', '汉族', '中共预备党员', '未婚', '无', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', 'CS', '计算机科学与技术学院', 'CS', '计算机科学与技术', 'CS2021001', '计算机科学与技术2021级1班', '2021', '13800138002', 'lisi@student.edu.cn', '234567890', 'lisi_wx', '江苏省苏州市姑苏区观前街456号', '学生宿舍1号楼202室', '215000', '城镇', '江苏省苏州市', '学生宿舍1号楼', '202', '李母', '13900139002', '李母', '13900139002', '母亲', '良好', 162.0, 50.0, 'B', '健康', '绘画、音乐', '2023年数学建模竞赛一等奖', '无', '学生会学习部部长、社团联合会', '工商银行', '6222000000000002', '李四', '1', 98.0, NOW(), 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
(1745003000000000003, '000000', '202101003', '320101200303203456', '王五', 'Wang Wu', 'wang wu', 'M', '2003-03-20', '回族', '共青团员', '未婚', '伊斯兰教', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', 'CS', '计算机科学与技术学院', 'CS', '计算机科学与技术', 'CS2021001', '计算机科学与技术2021级1班', '2021', '13800138003', 'wangwu@student.edu.cn', '345678901', 'wangwu_wx', '宁夏回族自治区银川市兴庆区解放街789号', '学生宿舍1号楼203室', '750000', '农村', '宁夏回族自治区银川市', '学生宿舍1号楼', '203', '王父', '13900139003', '王父', '13900139003', '父亲', '困难', 170.0, 60.0, 'O', '健康', '足球、演讲', '2022年演讲比赛三等奖', '无', '足球队队员、清真美食社', '农业银行', '6228000000000003', '王五', '1', 92.0, NOW(), 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 软件工程2021级1班学生
|
||||
(1745003000000000004, '000000', '202101101', '320101200304104567', '赵六', 'Zhao Liu', 'zhao liu', 'F', '2003-04-10', '汉族', '共青团员', '未婚', '无', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', 'CS', '计算机科学与技术学院', 'SE', '软件工程', 'SE2021001', '软件工程2021级1班', '2021', '13800138004', 'zhaoliu@student.edu.cn', '456789012', 'zhaoliu_wx', '山东省济南市历下区泉城路321号', '学生宿舍2号楼101室', '250000', '城镇', '山东省济南市', '学生宿舍2号楼', '101', '赵母', '13900139004', '赵母', '13900139004', '母亲', '中等', 165.0, 52.0, 'AB', '健康', '舞蹈、软件开发', '2023年软件设计大赛一等奖', '无', '舞蹈社社长、创新创业协会', '建设银行', '6236000000000004', '赵六', '1', 96.5, NOW(), 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
(1745003000000000005, '000000', '202101102', '320101200305256789', '孙七', 'Sun Qi', 'sun qi', 'M', '2003-05-25', '满族', '中共党员', '未婚', '无', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', 'CS', '计算机科学与技术学院', 'SE', '软件工程', 'SE2021001', '软件工程2021级1班', '2021', '13800138005', 'sunqi@student.edu.cn', '567890123', 'sunqi_wx', '辽宁省沈阳市和平区中街654号', '学生宿舍2号楼102室', '110000', '城镇', '辽宁省沈阳市', '学生宿舍2号楼', '102', '孙父', '13900139005', '孙父', '13900139005', '父亲', '良好', 178.0, 70.0, 'A', '健康', '篮球、编程', '2022年ACM程序设计竞赛银奖', '无', '篮球队队长、程序设计协会副会长', '交通银行', '6222600000000005', '孙七', '1', 97.0, NOW(), 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 工商管理2021级1班学生
|
||||
(1745003000000000006, '000000', '202102001', '320101200306308901', '周八', 'Zhou Ba', 'zhou ba', 'F', '2003-06-30', '汉族', '共青团员', '未婚', '无', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', 'EM', '经济管理学院', 'BM', '工商管理', 'BM2021001', '工商管理2021级1班', '2021', '13800138006', 'zhouba@student.edu.cn', '678901234', 'zhouba_wx', '浙江省杭州市西湖区文三路987号', '学生宿舍3号楼201室', '310000', '城镇', '浙江省杭州市', '学生宿舍3号楼', '201', '周母', '13900139006', '周母', '13900139006', '母亲', '富裕', 160.0, 48.0, 'B', '健康', '管理、钢琴', '2023年商业策划大赛特等奖', '无', '学生会主席、商业策划协会', '招商银行', '6225000000000006', '周八', '1', 94.0, NOW(), 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
(1745003000000000007, '000000', '202102002', '320101200307151234', '吴九', 'Wu Jiu', 'wu jiu', 'M', '2003-07-15', '蒙古族', '共青团员', '未婚', '无', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', 'EM', '经济管理学院', 'BM', '工商管理', 'BM2021001', '工商管理2021级1班', '2021', '13800138007', 'wujiu@student.edu.cn', '789012345', 'wujiu_wx', '内蒙古自治区呼和浩特市新城区中山路147号', '学生宿舍3号楼202室', '010000', '农村', '内蒙古自治区呼和浩特市', '学生宿舍3号楼', '202', '吴父', '13900139007', '吴父', '13900139007', '父亲', '中等', 172.0, 65.0, 'O', '健康', '骑马、摔跤', '2022年民族体育运动会摔跤二等奖', '无', '民族文化社副社长、体育部', '邮储银行', '6217990000000007', '吴九', '1', 91.5, NOW(), 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 会计学2021级1班学生
|
||||
(1745003000000000008, '000000', '202102101', '320101200308202345', '郑十', 'Zheng Shi', 'zheng shi', 'F', '2003-08-20', '汉族', '中共预备党员', '未婚', '无', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', 'EM', '经济管理学院', 'AC', '会计学', 'AC2021001', '会计学2021级1班', '2021', '13800138008', 'zhengshi@student.edu.cn', '890123456', 'zhengshi_wx', '广东省广州市天河区珠江新城258号', '学生宿舍3号楼203室', '510000', '城镇', '广东省广州市', '学生宿舍3号楼', '203', '郑母', '13900139008', '郑母', '13900139008', '母亲', '良好', 158.0, 46.0, 'A', '健康', '会计、书法', '2023年会计技能大赛一等奖', '无', '会计学社社长、书法协会', '平安银行', '6230580000000008', '郑十', '1', 99.0, NOW(), 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 英语2021级1班学生
|
||||
(1745003000000000009, '000000', '202103001', '320101200309053456', '王十一', 'Wang Shiyi', 'wang shiyi', 'F', '2003-09-05', '汉族', '共青团员', '未婚', '无', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', 'FL', '外国语学院', 'EN', '英语', 'EN2021001', '英语2021级1班', '2021', '13800138009', 'wangshiyi@student.edu.cn', '901234567', 'wangshiyi_wx', '上海市浦东新区陆家嘴金融街369号', '学生宿舍4号楼101室', '200000', '城镇', '上海市浦东新区', '学生宿舍4号楼', '101', '王母', '13900139009', '王母', '13900139009', '母亲', '富裕', 163.0, 49.0, 'AB', '健康', '英语口语、钢琴', '2023年全国英语演讲比赛一等奖', '无', '英语角负责人、国际交流协会', '上海银行', '6227000000000009', '王十一', '1', 98.5, NOW(), 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 机械设计制造及其自动化2021级1班学生
|
||||
(1745003000000000010, '000000', '202104001', '320101200310124567', '李十二', 'Li Shier', 'li shier', 'M', '2003-10-12', '汉族', '共青团员', '未婚', '无', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', 'ME', '机械工程学院', 'ME', '机械设计制造及其自动化', 'ME2021001', '机械设计制造及其自动化2021级1班', '2021', '13800138010', 'lishier@student.edu.cn', '012345678', 'lishier_wx', '河南省郑州市金水区花园路741号', '学生宿舍5号楼301室', '450000', '农村', '河南省郑州市', '学生宿舍5号楼', '301', '李父', '13900139010', '李父', '13900139010', '父亲', '困难', 176.0, 68.0, 'B', '健康', '机械设计、维修', '2022年机械创新设计大赛二等奖', '无', '机械创新协会会长、勤工助学', '中原银行', '6236950000000010', '李十二', '1', 93.0, NOW(), 1, NOW(), 1, NOW(), 0);
|
||||
|
||||
-- ===========================================
|
||||
-- 4. 班级学生关联测试数据
|
||||
-- ===========================================
|
||||
INSERT INTO `xg_class_student` (`id`, `tenant_id`, `class_id`, `student_id`, `student_no`, `student_name`, `join_date`, `position`, `position_level`, `status`, `is_monitor`, `is_deputy_monitor`, `is_study_committee`, `is_life_committee`, `is_sports_committee`, `is_culture_committee`, `remarks`, `create_by`, `create_time`, `update_by`, `update_time`, `deleted`) VALUES
|
||||
-- 计算机科学与技术2021级1班关联
|
||||
(1745004000000000001, '000000', 1745002000000000001, 1745003000000000001, '202101001', '张三', '2021-09-01', '学习委员', '班委', '1', '0', '0', '1', '0', '0', '0', '负责班级学习事务', 1, NOW(), 1, NOW(), 0),
|
||||
(1745004000000000002, '000000', 1745002000000000001, 1745003000000000002, '202101002', '李四', '2021-09-01', '班长', '班委', '1', '1', '0', '0', '0', '0', '0', '班级负责人', 1, NOW(), 1, NOW(), 0),
|
||||
(1745004000000000003, '000000', 1745002000000000001, 1745003000000000003, '202101003', '王五', '2021-09-01', '体育委员', '班委', '1', '0', '0', '0', '0', '1', '0', '负责班级体育活动', 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 软件工程2021级1班关联
|
||||
(1745004000000000004, '000000', 1745002000000000002, 1745003000000000004, '202101101', '赵六', '2021-09-01', '文艺委员', '班委', '1', '0', '0', '0', '0', '0', '1', '负责班级文艺活动', 1, NOW(), 1, NOW(), 0),
|
||||
(1745004000000000005, '000000', 1745002000000000002, 1745003000000000005, '202101102', '孙七', '2021-09-01', '班长', '班委', '1', '1', '0', '0', '0', '0', '0', '班级负责人', 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 工商管理2021级1班关联
|
||||
(1745004000000000006, '000000', 1745002000000000003, 1745003000000000006, '202102001', '周八', '2021-09-01', '班长', '班委', '1', '1', '0', '0', '0', '0', '0', '班级负责人', 1, NOW(), 1, NOW(), 0),
|
||||
(1745004000000000007, '000000', 1745002000000000003, 1745003000000000007, '202102002', '吴九', '2021-09-01', '生活委员', '班委', '1', '0', '0', '0', '1', '0', '0', '负责班级生活事务', 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 会计学2021级1班关联
|
||||
(1745004000000000008, '000000', 1745002000000000004, 1745003000000000008, '202102101', '郑十', '2021-09-01', '学习委员', '班委', '1', '0', '0', '1', '0', '0', '0', '负责班级学习事务', 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 英语2021级1班关联
|
||||
(1745004000000000009, '000000', 1745002000000000005, 1745003000000000009, '202103001', '王十一', '2021-09-01', '班长', '班委', '1', '1', '0', '0', '0', '0', '0', '班级负责人', 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 机械设计制造及其自动化2021级1班关联
|
||||
(1745004000000000010, '000000', 1745002000000000006, 1745003000000000010, '202104001', '李十二', '2021-09-01', '生活委员', '班委', '1', '0', '0', '0', '1', '0', '0', '负责班级生活事务', 1, NOW(), 1, NOW(), 0);
|
||||
|
||||
-- ===========================================
|
||||
-- 5. 审核记录测试数据
|
||||
-- ===========================================
|
||||
INSERT INTO `xg_audit_record` (`id`, `tenant_id`, `student_id`, `student_no`, `student_name`, `audit_type`, `audit_level`, `auditor_id`, `auditor_name`, `audit_status`, `audit_time`, `audit_opinion`, `next_auditor_id`, `next_auditor_name`, `batch_id`, `create_by`, `create_time`, `update_by`, `update_time`, `deleted`) VALUES
|
||||
-- 张三的审核记录
|
||||
(1745005000000000001, '000000', 1745003000000000001, '202101001', '张三', '信息审核', '1', 1002, '李班主任', '3', '2024-09-15 10:30:00', '信息完整,审核通过', 1001, '张辅导员', 1745001000000000001, 1, NOW(), 1, NOW(), 0),
|
||||
(1745005000000000002, '000000', 1745003000000000001, '202101001', '张三', '信息审核', '2', 1001, '张辅导员', '3', '2024-09-16 14:20:00', '信息核实无误,审核通过', 2001, '院领导', 1745001000000000001, 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 李四的审核记录
|
||||
(1745005000000000003, '000000', 1745003000000000002, '202101002', '李四', '信息审核', '1', 1002, '李班主任', '3', '2024-09-15 11:00:00', '信息完整,审核通过', 1001, '张辅导员', 1745001000000000001, 1, NOW(), 1, NOW(), 0),
|
||||
(1745005000000000004, '000000', 1745003000000000002, '202101002', '李四', '信息审核', '2', 1001, '张辅导员', '3', '2024-09-16 15:30:00', '信息核实无误,审核通过', 2001, '院领导', 1745001000000000001, 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 王五的审核记录(待审核状态)
|
||||
(1745005000000000005, '000000', 1745003000000000003, '202101003', '王五', '信息审核', '1', 1002, '李班主任', '2', NULL, NULL, NULL, NULL, 1745001000000000001, 1, NOW(), 1, NOW(), 0);
|
||||
|
||||
-- ===========================================
|
||||
-- 验证数据插入
|
||||
-- ===========================================
|
||||
SELECT '数据插入完成' as status;
|
||||
SELECT COUNT(*) as batch_count FROM xg_collection_batch WHERE id >= 1745000000000000000;
|
||||
SELECT COUNT(*) as class_count FROM xg_class_info WHERE id >= 1745000000000000000;
|
||||
SELECT COUNT(*) as student_count FROM xg_student_info WHERE id >= 1745000000000000000;
|
||||
SELECT COUNT(*) as relation_count FROM xg_class_student WHERE id >= 1745000000000000000;
|
||||
SELECT COUNT(*) as audit_count FROM xg_audit_record WHERE id >= 1745000000000000000;
|
||||
|
||||
COMMIT;
|
||||
@@ -1,118 +0,0 @@
|
||||
-- ==========================================
|
||||
-- 学生信息管理模块简化测试数据脚本
|
||||
-- 版本:V1.0.0
|
||||
-- 创建时间:2025-01-14
|
||||
-- 说明:完全符合实际数据表结构的测试数据
|
||||
-- ==========================================
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
-- ===========================================
|
||||
-- 1. 信息采集批次测试数据
|
||||
-- ===========================================
|
||||
INSERT INTO `xg_collection_batch` (`id`, `tenant_id`, `batch_code`, `batch_name`, `batch_type`, `academic_year`, `semester`, `batch_status`, `publish_time`, `start_time`, `end_time`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `deleted`) VALUES
|
||||
(1745001000000000001, '000000', 'BATCH_2024_1', '2024-2025学年第一学期信息采集', 'annual', '2024-2025', '1', '2', '2024-08-25 09:00:00', '2024-09-01 00:00:00', '2024-09-30 23:59:59', '2024-2025学年第一学期学生信息采集工作', 1, NOW(), 1, NOW(), 0),
|
||||
(1745001000000000002, '000000', 'BATCH_2024_2', '2024-2025学年第二学期信息采集', 'annual', '2024-2025', '2', '1', '2025-02-10 09:00:00', '2025-02-15 00:00:00', '2025-03-15 23:59:59', '2024-2025学年第二学期学生信息采集工作', 1, NOW(), 1, NOW(), 0);
|
||||
|
||||
-- ===========================================
|
||||
-- 2. 班级信息测试数据
|
||||
-- ===========================================
|
||||
INSERT INTO `xg_class_info` (`id`, `tenant_id`, `class_code`, `class_name`, `class_type`, `grade`, `enrollment_year`, `graduation_year`, `major_code`, `major_name`, `training_type`, `degree_type`, `college_code`, `college_name`, `counselor_id`, `counselor_name`, `class_teacher_id`, `class_teacher_name`, `planned_capacity`, `current_student_count`, `male_count`, `female_count`, `class_status`, `class_description`, `create_by`, `create_time`, `update_by`, `update_time`, `deleted`) VALUES
|
||||
-- 计算机科学与技术学院
|
||||
(1745002000000000001, '000000', 'CS2021001', '计算机科学与技术2021级1班', 'regular', '2021', 2021, 2025, 'CS', '计算机科学与技术', 'full-time', 'bachelor', 'CS', '计算机科学与技术学院', 1001, '张辅导员', 1002, '李班主任', 45, 3, 2, 1, '1', '计算机科学与技术专业2021级第1班', 1, NOW(), 1, NOW(), 0),
|
||||
(1745002000000000002, '000000', 'SE2021001', '软件工程2021级1班', 'regular', '2021', 2021, 2025, 'SE', '软件工程', 'full-time', 'bachelor', 'CS', '计算机科学与技术学院', 1001, '张辅导员', 1006, '陈班主任', 40, 2, 1, 1, '1', '软件工程专业2021级第1班', 1, NOW(), 1, NOW(), 0),
|
||||
(1745002000000000003, '000000', 'BM2021001', '工商管理2021级1班', 'regular', '2021', 2021, 2025, 'BM', '工商管理', 'full-time', 'bachelor', 'EM', '经济管理学院', 1011, '郑辅导员', 1012, '冯班主任', 50, 2, 1, 1, '1', '工商管理专业2021级第1班', 1, NOW(), 1, NOW(), 0),
|
||||
(1745002000000000004, '000000', 'AC2021001', '会计学2021级1班', 'regular', '2021', 2021, 2025, 'AC', '会计学', 'full-time', 'bachelor', 'EM', '经济管理学院', 1011, '郑辅导员', 1014, '朱班主任', 45, 1, 0, 1, '1', '会计学专业2021级第1班', 1, NOW(), 1, NOW(), 0),
|
||||
(1745002000000000005, '000000', 'EN2021001', '英语2021级1班', 'regular', '2021', 2021, 2025, 'EN', '英语', 'full-time', 'bachelor', 'FL', '外国语学院', 1019, '魏辅导员', 1020, '薛班主任', 30, 1, 0, 1, '1', '英语专业2021级第1班', 1, NOW(), 1, NOW(), 0),
|
||||
(1745002000000000006, '000000', 'ME2021001', '机械设计制造及其自动化2021级1班', 'regular', '2021', 2021, 2025, 'ME', '机械设计制造及其自动化', 'full-time', 'bachelor', 'ME', '机械工程学院', 1024, '龚辅导员', 1025, '段班主任', 45, 1, 1, 0, '1', '机械设计制造及其自动化专业2021级第1班', 1, NOW(), 1, NOW(), 0);
|
||||
|
||||
-- ===========================================
|
||||
-- 3. 学生信息测试数据
|
||||
-- ===========================================
|
||||
INSERT INTO `xg_student_info` (`id`, `tenant_id`, `student_no`, `id_card`, `name`, `name_english`, `name_pinyin`, `gender`, `birth_date`, `nation`, `political_status`, `marital_status`, `religion`, `student_status`, `enrollment_year`, `enrollment_date`, `school_system`, `education_level`, `training_type`, `admission_category`, `college_code`, `college_name`, `major_code`, `major_name`, `class_code`, `class_name`, `grade`, `mobile_phone`, `email`, `qq`, `wechat`, `home_address`, `current_address`, `postal_code`, `household_register_type`, `hukou_location`, `dormitory_building`, `dormitory_room`, `emergency_contact`, `emergency_phone`, `guardian_name`, `guardian_phone`, `guardian_relation`, `family_economic_status`, `height`, `weight`, `blood_type`, `health_status`, `specialties`, `awards`, `violations`, `social_activities`, `bank_name`, `bank_account`, `account_holder`, `info_status`, `completion_rate`, `last_update_time`, `create_by`, `create_time`, `update_by`, `update_time`, `deleted`) VALUES
|
||||
|
||||
-- 计算机科学与技术2021级1班学生
|
||||
(1745003000000000001, '000000', '202101001', '320101200301011234', '张三', 'Zhang San', 'zhang san', 'M', '2003-01-01', '汉族', '共青团员', '未婚', '无', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', 'CS', '计算机科学与技术学院', 'CS', '计算机科学与技术', 'CS2021001', '计算机科学与技术2021级1班', '2021', '13800138001', 'zhangsan@student.edu.cn', '123456789', 'zhangsan_wx', '江苏省南京市玄武区中山路123号', '学生宿舍1号楼201室', '210000', '城镇', '江苏省南京市', '学生宿舍1号楼', '201', '张父', '13900139001', '张父', '13900139001', '父亲', '中等', 175.5, 65.0, 'A', '健康', '编程、篮球', '2022年程序设计大赛二等奖', '无', '计算机协会会员、志愿者服务队', '中国银行', '6217000000000001', '张三', '1', 95.5, NOW(), 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
(1745003000000000002, '000000', '202101002', '320101200302152345', '李四', 'Li Si', 'li si', 'F', '2003-02-15', '汉族', '中共预备党员', '未婚', '无', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', 'CS', '计算机科学与技术学院', 'CS', '计算机科学与技术', 'CS2021001', '计算机科学与技术2021级1班', '2021', '13800138002', 'lisi@student.edu.cn', '234567890', 'lisi_wx', '江苏省苏州市姑苏区观前街456号', '学生宿舍1号楼202室', '215000', '城镇', '江苏省苏州市', '学生宿舍1号楼', '202', '李母', '13900139002', '李母', '13900139002', '母亲', '良好', 162.0, 50.0, 'B', '健康', '绘画、音乐', '2023年数学建模竞赛一等奖', '无', '学生会学习部部长、社团联合会', '工商银行', '6222000000000002', '李四', '1', 98.0, NOW(), 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
(1745003000000000003, '000000', '202101003', '320101200303203456', '王五', 'Wang Wu', 'wang wu', 'M', '2003-03-20', '回族', '共青团员', '未婚', '伊斯兰教', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', 'CS', '计算机科学与技术学院', 'CS', '计算机科学与技术', 'CS2021001', '计算机科学与技术2021级1班', '2021', '13800138003', 'wangwu@student.edu.cn', '345678901', 'wangwu_wx', '宁夏回族自治区银川市兴庆区解放街789号', '学生宿舍1号楼203室', '750000', '农村', '宁夏回族自治区银川市', '学生宿舍1号楼', '203', '王父', '13900139003', '王父', '13900139003', '父亲', '困难', 170.0, 60.0, 'O', '健康', '足球、演讲', '2022年演讲比赛三等奖', '无', '足球队队员、清真美食社', '农业银行', '6228000000000003', '王五', '1', 92.0, NOW(), 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 软件工程2021级1班学生
|
||||
(1745003000000000004, '000000', '202101101', '320101200304104567', '赵六', 'Zhao Liu', 'zhao liu', 'F', '2003-04-10', '汉族', '共青团员', '未婚', '无', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', 'CS', '计算机科学与技术学院', 'SE', '软件工程', 'SE2021001', '软件工程2021级1班', '2021', '13800138004', 'zhaoliu@student.edu.cn', '456789012', 'zhaoliu_wx', '山东省济南市历下区泉城路321号', '学生宿舍2号楼101室', '250000', '城镇', '山东省济南市', '学生宿舍2号楼', '101', '赵母', '13900139004', '赵母', '13900139004', '母亲', '中等', 165.0, 52.0, 'AB', '健康', '舞蹈、软件开发', '2023年软件设计大赛一等奖', '无', '舞蹈社社长、创新创业协会', '建设银行', '6236000000000004', '赵六', '1', 96.5, NOW(), 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
(1745003000000000005, '000000', '202101102', '320101200305256789', '孙七', 'Sun Qi', 'sun qi', 'M', '2003-05-25', '满族', '中共党员', '未婚', '无', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', 'CS', '计算机科学与技术学院', 'SE', '软件工程', 'SE2021001', '软件工程2021级1班', '2021', '13800138005', 'sunqi@student.edu.cn', '567890123', 'sunqi_wx', '辽宁省沈阳市和平区中街654号', '学生宿舍2号楼102室', '110000', '城镇', '辽宁省沈阳市', '学生宿舍2号楼', '102', '孙父', '13900139005', '孙父', '13900139005', '父亲', '良好', 178.0, 70.0, 'A', '健康', '篮球、编程', '2022年ACM程序设计竞赛银奖', '无', '篮球队队长、程序设计协会副会长', '交通银行', '6222600000000005', '孙七', '1', 97.0, NOW(), 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 工商管理2021级1班学生
|
||||
(1745003000000000006, '000000', '202102001', '320101200306308901', '周八', 'Zhou Ba', 'zhou ba', 'F', '2003-06-30', '汉族', '共青团员', '未婚', '无', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', 'EM', '经济管理学院', 'BM', '工商管理', 'BM2021001', '工商管理2021级1班', '2021', '13800138006', 'zhouba@student.edu.cn', '678901234', 'zhouba_wx', '浙江省杭州市西湖区文三路987号', '学生宿舍3号楼201室', '310000', '城镇', '浙江省杭州市', '学生宿舍3号楼', '201', '周母', '13900139006', '周母', '13900139006', '母亲', '富裕', 160.0, 48.0, 'B', '健康', '管理、钢琴', '2023年商业策划大赛特等奖', '无', '学生会主席、商业策划协会', '招商银行', '6225000000000006', '周八', '1', 94.0, NOW(), 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
(1745003000000000007, '000000', '202102002', '320101200307151234', '吴九', 'Wu Jiu', 'wu jiu', 'M', '2003-07-15', '蒙古族', '共青团员', '未婚', '无', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', 'EM', '经济管理学院', 'BM', '工商管理', 'BM2021001', '工商管理2021级1班', '2021', '13800138007', 'wujiu@student.edu.cn', '789012345', 'wujiu_wx', '内蒙古自治区呼和浩特市新城区中山路147号', '学生宿舍3号楼202室', '010000', '农村', '内蒙古自治区呼和浩特市', '学生宿舍3号楼', '202', '吴父', '13900139007', '吴父', '13900139007', '父亲', '中等', 172.0, 65.0, 'O', '健康', '骑马、摔跤', '2022年民族体育运动会摔跤二等奖', '无', '民族文化社副社长、体育部', '邮储银行', '6217990000000007', '吴九', '1', 91.5, NOW(), 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 会计学2021级1班学生
|
||||
(1745003000000000008, '000000', '202102101', '320101200308202345', '郑十', 'Zheng Shi', 'zheng shi', 'F', '2003-08-20', '汉族', '中共预备党员', '未婚', '无', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', 'EM', '经济管理学院', 'AC', '会计学', 'AC2021001', '会计学2021级1班', '2021', '13800138008', 'zhengshi@student.edu.cn', '890123456', 'zhengshi_wx', '广东省广州市天河区珠江新城258号', '学生宿舍3号楼203室', '510000', '城镇', '广东省广州市', '学生宿舍3号楼', '203', '郑母', '13900139008', '郑母', '13900139008', '母亲', '良好', 158.0, 46.0, 'A', '健康', '会计、书法', '2023年会计技能大赛一等奖', '无', '会计学社社长、书法协会', '平安银行', '6230580000000008', '郑十', '1', 99.0, NOW(), 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 英语2021级1班学生
|
||||
(1745003000000000009, '000000', '202103001', '320101200309053456', '王十一', 'Wang Shiyi', 'wang shiyi', 'F', '2003-09-05', '汉族', '共青团员', '未婚', '无', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', 'FL', '外国语学院', 'EN', '英语', 'EN2021001', '英语2021级1班', '2021', '13800138009', 'wangshiyi@student.edu.cn', '901234567', 'wangshiyi_wx', '上海市浦东新区陆家嘴金融街369号', '学生宿舍4号楼101室', '200000', '城镇', '上海市浦东新区', '学生宿舍4号楼', '101', '王母', '13900139009', '王母', '13900139009', '母亲', '富裕', 163.0, 49.0, 'AB', '健康', '英语口语、钢琴', '2023年全国英语演讲比赛一等奖', '无', '英语角负责人、国际交流协会', '上海银行', '6227000000000009', '王十一', '1', 98.5, NOW(), 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 机械设计制造及其自动化2021级1班学生
|
||||
(1745003000000000010, '000000', '202104001', '320101200310124567', '李十二', 'Li Shier', 'li shier', 'M', '2003-10-12', '汉族', '共青团员', '未婚', '无', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', 'ME', '机械工程学院', 'ME', '机械设计制造及其自动化', 'ME2021001', '机械设计制造及其自动化2021级1班', '2021', '13800138010', 'lishier@student.edu.cn', '012345678', 'lishier_wx', '河南省郑州市金水区花园路741号', '学生宿舍5号楼301室', '450000', '农村', '河南省郑州市', '学生宿舍5号楼', '301', '李父', '13900139010', '李父', '13900139010', '父亲', '困难', 176.0, 68.0, 'B', '健康', '机械设计、维修', '2022年机械创新设计大赛二等奖', '无', '机械创新协会会长、勤工助学', '中原银行', '6236950000000010', '李十二', '1', 93.0, NOW(), 1, NOW(), 1, NOW(), 0);
|
||||
|
||||
-- ===========================================
|
||||
-- 4. 班级学生关联测试数据
|
||||
-- ===========================================
|
||||
INSERT INTO `xg_class_student` (`id`, `tenant_id`, `class_id`, `student_id`, `student_no`, `student_name`, `join_date`, `position`, `position_level`, `status`, `is_monitor`, `is_deputy_monitor`, `is_study_committee`, `is_life_committee`, `is_sports_committee`, `is_culture_committee`, `remarks`, `create_by`, `create_time`, `update_by`, `update_time`, `deleted`) VALUES
|
||||
-- 计算机科学与技术2021级1班关联
|
||||
(1745004000000000001, '000000', 1745002000000000001, 1745003000000000001, '202101001', '张三', '2021-09-01', '学习委员', '班委', '1', '0', '0', '1', '0', '0', '0', '负责班级学习事务', 1, NOW(), 1, NOW(), 0),
|
||||
(1745004000000000002, '000000', 1745002000000000001, 1745003000000000002, '202101002', '李四', '2021-09-01', '班长', '班委', '1', '1', '0', '0', '0', '0', '0', '班级负责人', 1, NOW(), 1, NOW(), 0),
|
||||
(1745004000000000003, '000000', 1745002000000000001, 1745003000000000003, '202101003', '王五', '2021-09-01', '体育委员', '班委', '1', '0', '0', '0', '0', '1', '0', '负责班级体育活动', 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 软件工程2021级1班关联
|
||||
(1745004000000000004, '000000', 1745002000000000002, 1745003000000000004, '202101101', '赵六', '2021-09-01', '文艺委员', '班委', '1', '0', '0', '0', '0', '0', '1', '负责班级文艺活动', 1, NOW(), 1, NOW(), 0),
|
||||
(1745004000000000005, '000000', 1745002000000000002, 1745003000000000005, '202101102', '孙七', '2021-09-01', '班长', '班委', '1', '1', '0', '0', '0', '0', '0', '班级负责人', 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 工商管理2021级1班关联
|
||||
(1745004000000000006, '000000', 1745002000000000003, 1745003000000000006, '202102001', '周八', '2021-09-01', '班长', '班委', '1', '1', '0', '0', '0', '0', '0', '班级负责人', 1, NOW(), 1, NOW(), 0),
|
||||
(1745004000000000007, '000000', 1745002000000000003, 1745003000000000007, '202102002', '吴九', '2021-09-01', '生活委员', '班委', '1', '0', '0', '0', '1', '0', '0', '负责班级生活事务', 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 会计学2021级1班关联
|
||||
(1745004000000000008, '000000', 1745002000000000004, 1745003000000000008, '202102101', '郑十', '2021-09-01', '学习委员', '班委', '1', '0', '0', '1', '0', '0', '0', '负责班级学习事务', 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 英语2021级1班关联
|
||||
(1745004000000000009, '000000', 1745002000000000005, 1745003000000000009, '202103001', '王十一', '2021-09-01', '班长', '班委', '1', '1', '0', '0', '0', '0', '0', '班级负责人', 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 机械设计制造及其自动化2021级1班关联
|
||||
(1745004000000000010, '000000', 1745002000000000006, 1745003000000000010, '202104001', '李十二', '2021-09-01', '生活委员', '班委', '1', '0', '0', '0', '1', '0', '0', '负责班级生活事务', 1, NOW(), 1, NOW(), 0);
|
||||
|
||||
-- ===========================================
|
||||
-- 5. 审核记录测试数据
|
||||
-- ===========================================
|
||||
INSERT INTO `xg_audit_record` (`id`, `tenant_id`, `student_id`, `student_no`, `student_name`, `audit_type`, `audit_level`, `auditor_id`, `auditor_name`, `audit_status`, `audit_time`, `audit_opinion`, `next_auditor_id`, `next_auditor_name`, `batch_id`, `create_by`, `create_time`, `update_by`, `update_time`, `deleted`) VALUES
|
||||
-- 张三的审核记录
|
||||
(1745005000000000001, '000000', 1745003000000000001, '202101001', '张三', '信息审核', '1', 1002, '李班主任', '3', '2024-09-15 10:30:00', '信息完整,审核通过', 1001, '张辅导员', 1745001000000000001, 1, NOW(), 1, NOW(), 0),
|
||||
(1745005000000000002, '000000', 1745003000000000001, '202101001', '张三', '信息审核', '2', 1001, '张辅导员', '3', '2024-09-16 14:20:00', '信息核实无误,审核通过', 2001, '院领导', 1745001000000000001, 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 李四的审核记录
|
||||
(1745005000000000003, '000000', 1745003000000000002, '202101002', '李四', '信息审核', '1', 1002, '李班主任', '3', '2024-09-15 11:00:00', '信息完整,审核通过', 1001, '张辅导员', 1745001000000000001, 1, NOW(), 1, NOW(), 0),
|
||||
(1745005000000000004, '000000', 1745003000000000002, '202101002', '李四', '信息审核', '2', 1001, '张辅导员', '3', '2024-09-16 15:30:00', '信息核实无误,审核通过', 2001, '院领导', 1745001000000000001, 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 王五的审核记录(待审核状态)
|
||||
(1745005000000000005, '000000', 1745003000000000003, '202101003', '王五', '信息审核', '1', 1002, '李班主任', '2', NULL, NULL, NULL, NULL, 1745001000000000001, 1, NOW(), 1, NOW(), 0);
|
||||
|
||||
-- ===========================================
|
||||
-- 数据统计信息
|
||||
-- ===========================================
|
||||
-- 测试数据统计:
|
||||
-- 1. 信息采集批次:2条
|
||||
-- 2. 班级信息:6个班级(涵盖5个学院)
|
||||
-- 3. 学生信息:10名学生(涵盖不同专业、年级、性别、民族、政治面貌)
|
||||
-- 4. 班级学生关联:10条关联记录
|
||||
-- 5. 审核记录:5条审核记录
|
||||
|
||||
-- 数据特点:
|
||||
-- ✅ 完全符合实际表结构
|
||||
-- ✅ 数据逻辑性强
|
||||
-- ✅ 覆盖面广
|
||||
-- ✅ 关联完整
|
||||
-- ✅ 测试友好
|
||||
|
||||
COMMIT;
|
||||
@@ -1,130 +0,0 @@
|
||||
-- ==========================================
|
||||
-- 学生信息管理模块测试数据脚本 (修正版)
|
||||
-- 版本:V1.1.0
|
||||
-- 创建时间:2025-01-14
|
||||
-- 说明:基于实际数据表结构创建测试数据
|
||||
-- 特性:数据逻辑性强、覆盖面广、符合实际业务场景
|
||||
-- ==========================================
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
-- ===========================================
|
||||
-- 1. 信息采集批次测试数据
|
||||
-- ===========================================
|
||||
INSERT INTO `xg_collection_batch` (`id`, `tenant_id`, `batch_code`, `batch_name`, `batch_type`, `academic_year`, `semester`, `batch_status`, `publish_time`, `start_time`, `end_time`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `deleted`) VALUES
|
||||
(1745001000000000001, '000000', 'BATCH_2024_1', '2024-2025学年第一学期信息采集', 'annual', '2024-2025', '1', '2', '2024-08-25 09:00:00', '2024-09-01 00:00:00', '2024-09-30 23:59:59', '2024-2025学年第一学期学生信息采集工作', 1, NOW(), 1, NOW(), 0),
|
||||
(1745001000000000002, '000000', 'BATCH_2024_2', '2024-2025学年第二学期信息采集', 'annual', '2024-2025', '2', '1', '2025-02-10 09:00:00', '2025-02-15 00:00:00', '2025-03-15 23:59:59', '2024-2025学年第二学期学生信息采集工作', 1, NOW(), 1, NOW(), 0),
|
||||
(1745001000000000003, '000000', 'BATCH_2024_NEW', '2024年新生信息采集', 'freshman', '2024-2025', '1', '3', '2024-08-10 09:00:00', '2024-08-15 00:00:00', '2024-09-15 23:59:59', '2024年新生入学信息采集工作', 1, NOW(), 1, NOW(), 0);
|
||||
|
||||
-- ===========================================
|
||||
-- 2. 班级信息测试数据
|
||||
-- ===========================================
|
||||
INSERT INTO `xg_class_info` (`id`, `tenant_id`, `class_code`, `class_name`, `class_type`, `grade`, `enrollment_year`, `graduation_year`, `major_code`, `major_name`, `training_type`, `degree_type`, `college_code`, `college_name`, `class_capacity`, `current_count`, `male_count`, `female_count`, `counselor_id`, `counselor_name`, `class_teacher_id`, `class_teacher_name`, `class_status`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `deleted`) VALUES
|
||||
-- 计算机科学与技术学院
|
||||
(1745002000000000001, '000000', 'CS2021001', '计算机科学与技术2021级1班', 'regular', '2021', 2021, 2025, 'CS', '计算机科学与技术', 'full-time', 'bachelor', 'CS', '计算机科学与技术学院', 45, 42, 28, 14, 1001, '张辅导员', 1002, '李班主任', '1', '计算机科学与技术专业2021级第1班', 1, NOW(), 1, NOW(), 0),
|
||||
(1745002000000000002, '000000', 'CS2021002', '计算机科学与技术2021级2班', 'regular', '2021', 2021, 2025, 'CS', '计算机科学与技术', 'full-time', 'bachelor', 'CS', '计算机科学与技术学院', 45, 43, 29, 14, 1001, '张辅导员', 1004, '赵班主任', '1', '计算机科学与技术专业2021级第2班', 1, NOW(), 1, NOW(), 0),
|
||||
(1745002000000000003, '000000', 'SE2021001', '软件工程2021级1班', 'regular', '2021', 2021, 2025, 'SE', '软件工程', 'full-time', 'bachelor', 'CS', '计算机科学与技术学院', 40, 38, 24, 14, 1001, '张辅导员', 1006, '陈班主任', '1', '软件工程专业2021级第1班', 1, NOW(), 1, NOW(), 0),
|
||||
(1745002000000000004, '000000', 'DS2022001', '数据科学与大数据技术2022级1班', 'regular', '2022', 2022, 2026, 'DS', '数据科学与大数据技术', 'full-time', 'bachelor', 'CS', '计算机科学与技术学院', 35, 33, 21, 12, 1008, '孙辅导员', 1009, '周班主任', '1', '数据科学与大数据技术专业2022级第1班', 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 经济管理学院
|
||||
(1745002000000000005, '000000', 'BM2021001', '工商管理2021级1班', 'regular', '2021', 2021, 2025, 'BM', '工商管理', 'full-time', 'bachelor', 'EM', '经济管理学院', 50, 48, 18, 30, 1011, '郑辅导员', 1012, '冯班主任', '1', '工商管理专业2021级第1班', 1, NOW(), 1, NOW(), 0),
|
||||
(1745002000000000006, '000000', 'AC2021001', '会计学2021级1班', 'regular', '2021', 2021, 2025, 'AC', '会计学', 'full-time', 'bachelor', 'EM', '经济管理学院', 45, 44, 12, 32, 1011, '郑辅导员', 1014, '朱班主任', '1', '会计学专业2021级第1班', 1, NOW(), 1, NOW(), 0),
|
||||
(1745002000000000007, '000000', 'FI2022001', '金融学2022级1班', 'regular', '2022', 2022, 2026, 'FI', '金融学', 'full-time', 'bachelor', 'EM', '经济管理学院', 40, 39, 15, 24, 1016, '蒋辅导员', 1017, '韩班主任', '1', '金融学专业2022级第1班', 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 外国语学院
|
||||
(1745002000000000008, '000000', 'EN2021001', '英语2021级1班', 'regular', '2021', 2021, 2025, 'EN', '英语', 'full-time', 'bachelor', 'FL', '外国语学院', 30, 28, 6, 22, 1019, '魏辅导员', 1020, '薛班主任', '1', '英语专业2021级第1班', 1, NOW(), 1, NOW(), 0),
|
||||
(1745002000000000009, '000000', 'JP2022001', '日语2022级1班', 'regular', '2022', 2022, 2026, 'JP', '日语', 'full-time', 'bachelor', 'FL', '外国语学院', 25, 24, 5, 19, 1019, '魏辅导员', 1022, '贺班主任', '1', '日语专业2022级第1班', 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 机械工程学院
|
||||
(1745002000000000010, '000000', 'ME2021001', '机械设计制造及其自动化2021级1班', 'regular', '2021', 2021, 2025, 'ME', '机械设计制造及其自动化', 'full-time', 'bachelor', 'ME', '机械工程学院', 45, 43, 38, 5, 1024, '龚辅导员', 1025, '段班主任', '1', '机械设计制造及其自动化专业2021级第1班', 1, NOW(), 1, NOW(), 0);
|
||||
|
||||
-- ===========================================
|
||||
-- 3. 学生信息测试数据
|
||||
-- ===========================================
|
||||
INSERT INTO `xg_student_info` (`id`, `tenant_id`, `student_no`, `id_card`, `name`, `name_english`, `name_pinyin`, `gender`, `birth_date`, `nation`, `political_status`, `marital_status`, `religion`, `student_status`, `enrollment_year`, `enrollment_date`, `school_system`, `education_level`, `training_type`, `admission_category`, `college_code`, `college_name`, `major_code`, `major_name`, `class_code`, `class_name`, `grade`, `mobile_phone`, `email`, `qq`, `wechat`, `home_address`, `current_address`, `postal_code`, `household_register_type`, `hukou_location`, `dormitory_building`, `dormitory_room`, `emergency_contact`, `emergency_phone`, `guardian_name`, `guardian_phone`, `guardian_relation`, `family_economic_status`, `height`, `weight`, `blood_type`, `health_status`, `specialties`, `awards`, `violations`, `social_activities`, `bank_name`, `bank_account`, `account_holder`, `info_status`, `completion_rate`, `last_update_time`, `create_by`, `create_time`, `update_by`, `update_time`, `deleted`) VALUES
|
||||
|
||||
-- 计算机科学与技术2021级1班学生
|
||||
(1745003000000000001, '000000', '202101001', '320101200301011234', '张三', 'Zhang San', 'zhang san', 'M', '2003-01-01', '汉族', '共青团员', '未婚', '无', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', 'CS', '计算机科学与技术学院', 'CS', '计算机科学与技术', 'CS2021001', '计算机科学与技术2021级1班', '2021', '13800138001', 'zhangsan@student.edu.cn', '123456789', 'zhangsan_wx', '江苏省南京市玄武区中山路123号', '学生宿舍1号楼201室', '210000', '城镇', '江苏省南京市', '学生宿舍1号楼', '201', '张父', '13900139001', '张父', '13900139001', '父亲', '中等', 175.5, 65.0, 'A', '健康', '编程、篮球', '2022年程序设计大赛二等奖', '无', '计算机协会会员、志愿者服务队', '中国银行', '6217000000000001', '张三', '1', 95.5, NOW(), 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
(1745003000000000002, '000000', '202101002', '320101200302152345', '李四', 'Li Si', 'li si', 'F', '2003-02-15', '汉族', '中共预备党员', '未婚', '无', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', 'CS', '计算机科学与技术学院', 'CS', '计算机科学与技术', 'CS2021001', '计算机科学与技术2021级1班', '2021', '13800138002', 'lisi@student.edu.cn', '234567890', 'lisi_wx', '江苏省苏州市姑苏区观前街456号', '学生宿舍1号楼202室', '215000', '城镇', '江苏省苏州市', '工商银行', '6222000000000002', '李四', '1', 98.0, NOW(), 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
(1745003000000000003, '000000', '202101003', '320101200303203456', '王五', 'Wang Wu', 'wang wu', 'M', '2003-03-20', '回族', '共青团员', '未婚', '伊斯兰教', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', 'CS', '计算机科学与技术学院', 'CS', '计算机科学与技术', 'CS2021001', '计算机科学与技术2021级1班', '2021', '13800138003', 'wangwu@student.edu.cn', '345678901', 'wangwu_wx', '宁夏回族自治区银川市兴庆区解放街789号', '学生宿舍1号楼203室', '750000', '农村', '宁夏回族自治区银川市', '学生宿舍1号楼', '203', '王父', '13900139003', '王父', '13900139003', '父亲', '困难', 170.0, 60.0, 'O', '健康', '足球、演讲', '2022年演讲比赛三等奖', '无', '足球队队员、清真美食社', '农业银行', '6228000000000003', '王五', '1', 92.0, NOW(), 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 软件工程2021级1班学生
|
||||
(1745003000000000004, '000000', '202101101', '320101200304104567', '赵六', 'Zhao Liu', 'zhao liu', 'F', '2003-04-10', '汉族', '共青团员', '未婚', '无', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', 'CS', '计算机科学与技术学院', 'SE', '软件工程', 'SE2021001', '软件工程2021级1班', '2021', '13800138004', 'zhaoliu@student.edu.cn', '456789012', 'zhaoliu_wx', '山东省济南市历下区泉城路321号', '学生宿舍2号楼101室', '250000', '城镇', '山东省济南市', '学生宿舍2号楼', '101', '赵母', '13900139004', '赵母', '13900139004', '母亲', '中等', 165.0, 52.0, 'AB', '健康', '舞蹈、软件开发', '2023年软件设计大赛一等奖', '无', '舞蹈社社长、创新创业协会', '建设银行', '6236000000000004', '赵六', '1', 96.5, NOW(), 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
(1745003000000000005, '000000', '202101102', '320101200305256789', '孙七', 'Sun Qi', 'sun qi', 'M', '2003-05-25', '满族', '中共党员', '未婚', '无', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', 'CS', '计算机科学与技术学院', 'SE', '软件工程', 'SE2021001', '软件工程2021级1班', '2021', '13800138005', 'sunqi@student.edu.cn', '567890123', 'sunqi_wx', '辽宁省沈阳市和平区中街654号', '学生宿舍2号楼102室', '110000', '城镇', '辽宁省沈阳市', '学生宿舍2号楼', '102', '孙父', '13900139005', '孙父', '13900139005', '父亲', '良好', 178.0, 70.0, 'A', '健康', '篮球、编程', '2022年ACM程序设计竞赛银奖', '无', '篮球队队长、程序设计协会副会长', '交通银行', '6222600000000005', '孙七', '1', 97.0, NOW(), 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 工商管理2021级1班学生
|
||||
(1745003000000000006, '000000', '202102001', '320101200306308901', '周八', 'Zhou Ba', 'zhou ba', 'F', '2003-06-30', '汉族', '共青团员', '未婚', '无', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', 'EM', '经济管理学院', 'BM', '工商管理', 'BM2021001', '工商管理2021级1班', '2021', '13800138006', 'zhouba@student.edu.cn', '678901234', 'zhouba_wx', '浙江省杭州市西湖区文三路987号', '学生宿舍3号楼201室', '310000', '城镇', '浙江省杭州市', '学生宿舍3号楼', '201', '周母', '13900139006', '周母', '13900139006', '母亲', '富裕', 160.0, 48.0, 'B', '健康', '管理、钢琴', '2023年商业策划大赛特等奖', '无', '学生会主席、商业策划协会', '招商银行', '6225000000000006', '周八', '1', 94.0, NOW(), 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
(1745003000000000007, '000000', '202102002', '320101200307151234', '吴九', 'Wu Jiu', 'wu jiu', 'M', '2003-07-15', '蒙古族', '共青团员', '未婚', '无', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', 'EM', '经济管理学院', 'BM', '工商管理', 'BM2021001', '工商管理2021级1班', '2021', '13800138007', 'wujiu@student.edu.cn', '789012345', 'wujiu_wx', '内蒙古自治区呼和浩特市新城区中山路147号', '学生宿舍3号楼202室', '010000', '农村', '内蒙古自治区呼和浩特市', '学生宿舍3号楼', '202', '吴父', '13900139007', '吴父', '13900139007', '父亲', '中等', 172.0, 65.0, 'O', '健康', '骑马、摔跤', '2022年民族体育运动会摔跤二等奖', '无', '民族文化社副社长、体育部', '邮储银行', '6217990000000007', '吴九', '1', 91.5, NOW(), 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 会计学2021级1班学生
|
||||
(1745003000000000008, '000000', '202102101', '320101200308202345', '郑十', 'Zheng Shi', 'zheng shi', 'F', '2003-08-20', '汉族', '中共预备党员', '未婚', '无', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', 'EM', '经济管理学院', 'AC', '会计学', 'AC2021001', '会计学2021级1班', '2021', '13800138008', 'zhengshi@student.edu.cn', '890123456', 'zhengshi_wx', '广东省广州市天河区珠江新城258号', '学生宿舍3号楼203室', '510000', '城镇', '广东省广州市', '学生宿舍3号楼', '203', '郑母', '13900139008', '郑母', '13900139008', '母亲', '良好', 158.0, 46.0, 'A', '健康', '会计、书法', '2023年会计技能大赛一等奖', '无', '会计学社社长、书法协会', '平安银行', '6230580000000008', '郑十', '1', 99.0, NOW(), 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 英语2021级1班学生
|
||||
(1745003000000000009, '000000', '202103001', '320101200309053456', '王十一', 'Wang Shiyi', 'wang shiyi', 'F', '2003-09-05', '汉族', '共青团员', '未婚', '无', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', 'FL', '外国语学院', 'EN', '英语', 'EN2021001', '英语2021级1班', '2021', '13800138009', 'wangshiyi@student.edu.cn', '901234567', 'wangshiyi_wx', '上海市浦东新区陆家嘴金融街369号', '学生宿舍4号楼101室', '200000', '城镇', '上海市浦东新区', '学生宿舍4号楼', '101', '王母', '13900139009', '王母', '13900139009', '母亲', '富裕', 163.0, 49.0, 'AB', '健康', '英语口语、钢琴', '2023年全国英语演讲比赛一等奖', '无', '英语角负责人、国际交流协会', '上海银行', '6227000000000009', '王十一', '1', 98.5, NOW(), 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 机械设计制造及其自动化2021级1班学生
|
||||
(1745003000000000010, '000000', '202104001', '320101200310124567', '李十二', 'Li Shier', 'li shier', 'M', '2003-10-12', '汉族', '共青团员', '未婚', '无', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', 'ME', '机械工程学院', 'ME', '机械设计制造及其自动化', 'ME2021001', '机械设计制造及其自动化2021级1班', '2021', '13800138010', 'lishier@student.edu.cn', '012345678', 'lishier_wx', '河南省郑州市金水区花园路741号', '学生宿舍5号楼301室', '450000', '农村', '河南省郑州市', '学生宿舍5号楼', '301', '李父', '13900139010', '李父', '13900139010', '父亲', '困难', 176.0, 68.0, 'B', '健康', '机械设计、维修', '2022年机械创新设计大赛二等奖', '无', '机械创新协会会长、勤工助学', '中原银行', '6236950000000010', '李十二', '1', 93.0, NOW(), 1, NOW(), 1, NOW(), 0);
|
||||
|
||||
-- ===========================================
|
||||
-- 4. 班级学生关联测试数据
|
||||
-- ===========================================
|
||||
INSERT INTO `xg_class_student` (`id`, `tenant_id`, `class_id`, `student_id`, `student_no`, `student_name`, `join_date`, `position`, `position_level`, `status`, `is_monitor`, `is_deputy_monitor`, `is_study_committee`, `is_life_committee`, `is_sports_committee`, `is_culture_committee`, `remarks`, `create_by`, `create_time`, `update_by`, `update_time`, `deleted`) VALUES
|
||||
-- 计算机科学与技术2021级1班关联
|
||||
(1745004000000000001, '000000', 1745002000000000001, 1745003000000000001, '202101001', '张三', '2021-09-01', '学习委员', '班委', '1', '0', '0', '1', '0', '0', '0', '负责班级学习事务', 1, NOW(), 1, NOW(), 0),
|
||||
(1745004000000000002, '000000', 1745002000000000001, 1745003000000000002, '202101002', '李四', '2021-09-01', '班长', '班委', '1', '1', '0', '0', '0', '0', '0', '班级负责人', 1, NOW(), 1, NOW(), 0),
|
||||
(1745004000000000003, '000000', 1745002000000000001, 1745003000000000003, '202101003', '王五', '2021-09-01', '体育委员', '班委', '1', '0', '0', '0', '0', '1', '0', '负责班级体育活动', 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 软件工程2021级1班关联
|
||||
(1745004000000000004, '000000', 1745002000000000003, 1745003000000000004, '202101101', '赵六', '2021-09-01', '文艺委员', '班委', '1', '0', '0', '0', '0', '0', '1', '负责班级文艺活动', 1, NOW(), 1, NOW(), 0),
|
||||
(1745004000000000005, '000000', 1745002000000000003, 1745003000000000005, '202101102', '孙七', '2021-09-01', '班长', '班委', '1', '1', '0', '0', '0', '0', '0', '班级负责人', 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 工商管理2021级1班关联
|
||||
(1745004000000000006, '000000', 1745002000000000005, 1745003000000000006, '202102001', '周八', '2021-09-01', '班长', '班委', '1', '1', '0', '0', '0', '0', '0', '班级负责人', 1, NOW(), 1, NOW(), 0),
|
||||
(1745004000000000007, '000000', 1745002000000000005, 1745003000000000007, '202102002', '吴九', '2021-09-01', '生活委员', '班委', '1', '0', '0', '0', '1', '0', '0', '负责班级生活事务', 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 会计学2021级1班关联
|
||||
(1745004000000000008, '000000', 1745002000000000006, 1745003000000000008, '202102101', '郑十', '2021-09-01', '学习委员', '班委', '1', '0', '0', '1', '0', '0', '0', '负责班级学习事务', 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 英语2021级1班关联
|
||||
(1745004000000000009, '000000', 1745002000000000008, 1745003000000000009, '202103001', '王十一', '2021-09-01', '班长', '班委', '1', '1', '0', '0', '0', '0', '0', '班级负责人', 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 机械设计制造及其自动化2021级1班关联
|
||||
(1745004000000000010, '000000', 1745002000000000010, 1745003000000000010, '202104001', '李十二', '2021-09-01', '生活委员', '班委', '1', '0', '0', '0', '1', '0', '0', '负责班级生活事务', 1, NOW(), 1, NOW(), 0);
|
||||
|
||||
-- ===========================================
|
||||
-- 5. 审核记录测试数据
|
||||
-- ===========================================
|
||||
INSERT INTO `xg_audit_record` (`id`, `tenant_id`, `student_id`, `student_no`, `student_name`, `audit_type`, `audit_level`, `auditor_id`, `auditor_name`, `audit_status`, `audit_time`, `audit_opinion`, `next_auditor_id`, `next_auditor_name`, `batch_id`, `create_by`, `create_time`, `update_by`, `update_time`, `deleted`) VALUES
|
||||
-- 张三的审核记录
|
||||
(1745005000000000001, '000000', 1745003000000000001, '202101001', '张三', '信息审核', '1', 1002, '李班主任', '3', '2024-09-15 10:30:00', '信息完整,审核通过', 1001, '张辅导员', 1745001000000000001, 1, NOW(), 1, NOW(), 0),
|
||||
(1745005000000000002, '000000', 1745003000000000001, '202101001', '张三', '信息审核', '2', 1001, '张辅导员', '3', '2024-09-16 14:20:00', '信息核实无误,审核通过', 2001, '院领导', 1745001000000000001, 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 李四的审核记录
|
||||
(1745005000000000003, '000000', 1745003000000000002, '202101002', '李四', '信息审核', '1', 1002, '李班主任', '3', '2024-09-15 11:00:00', '信息完整,审核通过', 1001, '张辅导员', 1745001000000000001, 1, NOW(), 1, NOW(), 0),
|
||||
(1745005000000000004, '000000', 1745003000000000002, '202101002', '李四', '信息审核', '2', 1001, '张辅导员', '3', '2024-09-16 15:30:00', '信息核实无误,审核通过', 2001, '院领导', 1745001000000000001, 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 王五的审核记录(待审核状态)
|
||||
(1745005000000000005, '000000', 1745003000000000003, '202101003', '王五', '信息审核', '1', 1002, '李班主任', '2', NULL, NULL, NULL, NULL, 1745001000000000001, 1, NOW(), 1, NOW(), 0);
|
||||
|
||||
-- ===========================================
|
||||
-- 数据统计信息
|
||||
-- ===========================================
|
||||
-- 测试数据统计:
|
||||
-- 1. 信息采集批次:3条
|
||||
-- 2. 班级信息:10个班级(涵盖5个学院)
|
||||
-- 3. 学生信息:10名学生(涵盖不同专业、年级、性别、民族、政治面貌)
|
||||
-- 4. 班级学生关联:10条关联记录
|
||||
-- 5. 审核记录:5条审核记录
|
||||
|
||||
-- 数据特点:
|
||||
-- ✅ 数据逻辑性强:学号、身份证号、入学时间等符合实际规律
|
||||
-- ✅ 覆盖面广:涵盖不同学院、专业、年级、性别、民族、政治面貌
|
||||
-- ✅ 关联完整:班级、学生、审核等数据相互关联
|
||||
-- ✅ 业务场景真实:包含审核流程、班级管理等实际业务
|
||||
-- ✅ 测试友好:数据量适中,便于功能测试和演示
|
||||
|
||||
COMMIT;
|
||||
@@ -1,175 +0,0 @@
|
||||
-- ==========================================
|
||||
-- 学生信息管理模块测试数据脚本
|
||||
-- 版本:V1.0.0
|
||||
-- 创建时间:2025-01-14
|
||||
-- 说明:为学生信息管理模块创建合理的测试数据
|
||||
-- 特性:数据逻辑性强、覆盖面广、符合实际业务场景
|
||||
-- ==========================================
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
-- ===========================================
|
||||
-- 1. 信息采集批次测试数据
|
||||
-- ===========================================
|
||||
INSERT INTO `xg_collection_batch` (`id`, `tenant_id`, `batch_name`, `batch_code`, `academic_year`, `semester`, `batch_type`, `start_date`, `end_date`, `status`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `deleted`) VALUES
|
||||
(1745001000000000001, '000000', '2024-2025学年第一学期信息采集', 'BATCH_2024_1', '2024-2025', '1', '常规采集', '2024-09-01', '2024-09-30', '2', '2024-2025学年第一学期学生信息采集工作', 1, NOW(), 1, NOW(), 0),
|
||||
(1745001000000000002, '000000', '2024-2025学年第二学期信息采集', 'BATCH_2024_2', '2024-2025', '2', '常规采集', '2025-02-15', '2025-03-15', '1', '2024-2025学年第二学期学生信息采集工作', 1, NOW(), 1, NOW(), 0),
|
||||
(1745001000000000003, '000000', '2024年新生信息采集', 'BATCH_2024_NEW', '2024-2025', '1', '新生采集', '2024-08-15', '2024-09-15', '3', '2024年新生入学信息采集工作', 1, NOW(), 1, NOW(), 0);
|
||||
|
||||
-- ===========================================
|
||||
-- 2. 班级信息测试数据
|
||||
-- ===========================================
|
||||
INSERT INTO `xg_class_info` (`id`, `tenant_id`, `class_name`, `class_code`, `class_type`, `grade`, `major`, `college`, `enrollment_year`, `class_capacity`, `current_count`, `male_count`, `female_count`, `counselor_id`, `counselor_name`, `class_teacher_id`, `class_teacher_name`, `class_advisor_id`, `class_advisor_name`, `classroom_location`, `class_status`, `class_description`, `create_by`, `create_time`, `update_by`, `update_time`, `deleted`) VALUES
|
||||
-- 计算机科学与技术学院
|
||||
(1745002000000000001, '000000', '计算机科学与技术2021级1班', 'CS2021001', '本科班', '2021', '计算机科学与技术', '计算机科学与技术学院', 2021, 45, 42, 28, 14, 1001, '张辅导员', 1002, '李班主任', 1003, '王导师', '教学楼A-301', '1', '计算机科学与技术专业2021级第1班', 1, NOW(), 1, NOW(), 0),
|
||||
(1745002000000000002, '000000', '计算机科学与技术2021级2班', 'CS2021002', '本科班', '2021', '计算机科学与技术', '计算机科学与技术学院', 2021, 45, 43, 29, 14, 1001, '张辅导员', 1004, '赵班主任', 1005, '刘导师', '教学楼A-302', '1', '计算机科学与技术专业2021级第2班', 1, NOW(), 1, NOW(), 0),
|
||||
(1745002000000000003, '000000', '软件工程2021级1班', 'SE2021001', '本科班', '2021', '软件工程', '计算机科学与技术学院', 2021, 40, 38, 24, 14, 1001, '张辅导员', 1006, '陈班主任', 1007, '杨导师', '教学楼A-303', '1', '软件工程专业2021级第1班', 1, NOW(), 1, NOW(), 0),
|
||||
(1745002000000000004, '000000', '数据科学与大数据技术2022级1班', 'DS2022001', '本科班', '2022', '数据科学与大数据技术', '计算机科学与技术学院', 2022, 35, 33, 21, 12, 1008, '孙辅导员', 1009, '周班主任', 1010, '吴导师', '教学楼A-304', '1', '数据科学与大数据技术专业2022级第1班', 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 经济管理学院
|
||||
(1745002000000000005, '000000', '工商管理2021级1班', 'BM2021001', '本科班', '2021', '工商管理', '经济管理学院', 2021, 50, 48, 18, 30, 1011, '郑辅导员', 1012, '冯班主任', 1013, '何导师', '教学楼B-201', '1', '工商管理专业2021级第1班', 1, NOW(), 1, NOW(), 0),
|
||||
(1745002000000000006, '000000', '会计学2021级1班', 'AC2021001', '本科班', '2021', '会计学', '经济管理学院', 2021, 45, 44, 12, 32, 1011, '郑辅导员', 1014, '朱班主任', 1015, '许导师', '教学楼B-202', '1', '会计学专业2021级第1班', 1, NOW(), 1, NOW(), 0),
|
||||
(1745002000000000007, '000000', '金融学2022级1班', 'FI2022001', '本科班', '2022', '金融学', '经济管理学院', 2022, 40, 39, 15, 24, 1016, '蒋辅导员', 1017, '韩班主任', 1018, '曹导师', '教学楼B-203', '1', '金融学专业2022级第1班', 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 外国语学院
|
||||
(1745002000000000008, '000000', '英语2021级1班', 'EN2021001', '本科班', '2021', '英语', '外国语学院', 2021, 30, 28, 6, 22, 1019, '魏辅导员', 1020, '薛班主任', 1021, '雷导师', '教学楼C-101', '1', '英语专业2021级第1班', 1, NOW(), 1, NOW(), 0),
|
||||
(1745002000000000009, '000000', '日语2022级1班', 'JP2022001', '本科班', '2022', '日语', '外国语学院', 2022, 25, 24, 5, 19, 1019, '魏辅导员', 1022, '贺班主任', 1023, '石导师', '教学楼C-102', '1', '日语专业2022级第1班', 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 机械工程学院
|
||||
(1745002000000000010, '000000', '机械设计制造及其自动化2021级1班', 'ME2021001', '本科班', '2021', '机械设计制造及其自动化', '机械工程学院', 2021, 45, 43, 38, 5, 1024, '龚辅导员', 1025, '段班主任', 1026, '汤导师', '教学楼D-301', '1', '机械设计制造及其自动化专业2021级第1班', 1, NOW(), 1, NOW(), 0);
|
||||
|
||||
-- ===========================================
|
||||
-- 3. 学生信息测试数据
|
||||
-- ===========================================
|
||||
INSERT INTO `xg_student_info` (`id`, `tenant_id`, `student_no`, `id_card`, `name`, `name_english`, `name_pinyin`, `gender`, `birth_date`, `nation`, `political_status`, `marital_status`, `religion`, `student_status`, `enrollment_year`, `enrollment_date`, `school_system`, `education_level`, `training_type`, `admission_category`, `college`, `major`, `class_name`, `grade`, `mobile_phone`, `email`, `qq`, `wechat`, `home_address`, `current_address`, `postal_code`, `household_register_type`, `hukou_location`, `dormitory_building`, `dormitory_room`, `emergency_contact`, `emergency_phone`, `guardian_name`, `guardian_phone`, `guardian_relation`, `family_economic_status`, `height`, `weight`, `blood_type`, `health_status`, `specialties`, `awards`, `violations`, `social_activities`, `bank_name`, `bank_account`, `account_holder`, `info_status`, `completion_rate`, `last_update_time`, `create_by`, `create_time`, `update_by`, `update_time`, `deleted`) VALUES
|
||||
|
||||
-- 计算机科学与技术2021级1班学生
|
||||
(1745003000000000001, '000000', '202101001', '320101200301011234', '张三', 'Zhang San', 'zhang san', 'M', '2003-01-01', '汉族', '共青团员', '未婚', '无', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', '计算机科学与技术学院', '计算机科学与技术', '计算机科学与技术2021级1班', '2021', '13800138001', 'zhangsan@student.edu.cn', '123456789', 'zhangsan_wx', '江苏省南京市玄武区中山路123号', '学生宿舍1号楼201室', '210000', '城镇', '江苏省南京市', '学生宿舍1号楼', '201', '张父', '13900139001', '张父', '13900139001', '父亲', '中等', 175.5, 65.0, 'A', '健康', '编程、篮球', '2022年程序设计大赛二等奖', '无', '计算机协会会员、志愿者服务队', '中国银行', '6217000000000001', '张三', '1', 95.5, NOW(), 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
(1745003000000000002, '000000', '202101002', '320101200302152345', '李四', 'Li Si', 'li si', 'F', '2003-02-15', '汉族', '中共预备党员', '未婚', '无', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', '计算机科学与技术学院', '计算机科学与技术', '计算机科学与技术2021级1班', '2021', '13800138002', 'lisi@student.edu.cn', '234567890', 'lisi_wx', '江苏省苏州市姑苏区观前街456号', '学生宿舍1号楼202室', '215000', '城镇', '江苏省苏州市', '学生宿舍1号楼', '202', '李母', '13900139002', '李母', '13900139002', '母亲', '良好', 162.0, 50.0, 'B', '健康', '绘画、音乐', '2023年数学建模竞赛一等奖', '无', '学生会学习部部长、社团联合会', '工商银行', '6222000000000002', '李四', '1', 98.0, NOW(), 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
(1745003000000000003, '000000', '202101003', '320101200303203456', '王五', 'Wang Wu', 'wang wu', 'M', '2003-03-20', '回族', '共青团员', '未婚', '伊斯兰教', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', '计算机科学与技术学院', '计算机科学与技术', '计算机科学与技术2021级1班', '2021', '13800138003', 'wangwu@student.edu.cn', '345678901', 'wangwu_wx', '宁夏回族自治区银川市兴庆区解放街789号', '学生宿舍1号楼203室', '750000', '农村', '宁夏回族自治区银川市', '学生宿舍1号楼', '203', '王父', '13900139003', '王父', '13900139003', '父亲', '困难', 170.0, 60.0, 'O', '健康', '足球、演讲', '2022年演讲比赛三等奖', '无', '足球队队员、清真美食社', '农业银行', '6228000000000003', '王五', '1', 92.0, NOW(), 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 软件工程2021级1班学生
|
||||
(1745003000000000004, '000000', '202101101', '320101200304104567', '赵六', 'Zhao Liu', 'zhao liu', 'F', '2003-04-10', '汉族', '共青团员', '未婚', '无', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', '计算机科学与技术学院', '软件工程', '软件工程2021级1班', '2021', '13800138004', 'zhaoliu@student.edu.cn', '456789012', 'zhaoliu_wx', '山东省济南市历下区泉城路321号', '学生宿舍2号楼101室', '250000', '城镇', '山东省济南市', '学生宿舍2号楼', '101', '赵母', '13900139004', '赵母', '13900139004', '母亲', '中等', 165.0, 52.0, 'AB', '健康', '舞蹈、软件开发', '2023年软件设计大赛一等奖', '无', '舞蹈社社长、创新创业协会', '建设银行', '6236000000000004', '赵六', '1', 96.5, NOW(), 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
(1745003000000000005, '000000', '202101102', '320101200305256789', '孙七', 'Sun Qi', 'sun qi', 'M', '2003-05-25', '满族', '中共党员', '未婚', '无', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', '计算机科学与技术学院', '软件工程', '软件工程2021级1班', '2021', '13800138005', 'sunqi@student.edu.cn', '567890123', 'sunqi_wx', '辽宁省沈阳市和平区中街654号', '学生宿舍2号楼102室', '110000', '城镇', '辽宁省沈阳市', '学生宿舍2号楼', '102', '孙父', '13900139005', '孙父', '13900139005', '父亲', '良好', 178.0, 70.0, 'A', '健康', '篮球、编程', '2022年ACM程序设计竞赛银奖', '无', '篮球队队长、程序设计协会副会长', '交通银行', '6222600000000005', '孙七', '1', 97.0, NOW(), 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 工商管理2021级1班学生
|
||||
(1745003000000000006, '000000', '202102001', '320101200306308901', '周八', 'Zhou Ba', 'zhou ba', 'F', '2003-06-30', '汉族', '共青团员', '未婚', '无', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', '经济管理学院', '工商管理', '工商管理2021级1班', '2021', '13800138006', 'zhouba@student.edu.cn', '678901234', 'zhouba_wx', '浙江省杭州市西湖区文三路987号', '学生宿舍3号楼201室', '310000', '城镇', '浙江省杭州市', '学生宿舍3号楼', '201', '周母', '13900139006', '周母', '13900139006', '母亲', '富裕', 160.0, 48.0, 'B', '健康', '管理、钢琴', '2023年商业策划大赛特等奖', '无', '学生会主席、商业策划协会', '招商银行', '6225000000000006', '周八', '1', 94.0, NOW(), 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
(1745003000000000007, '000000', '202102002', '320101200307151234', '吴九', 'Wu Jiu', 'wu jiu', 'M', '2003-07-15', '蒙古族', '共青团员', '未婚', '无', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', '经济管理学院', '工商管理', '工商管理2021级1班', '2021', '13800138007', 'wujiu@student.edu.cn', '789012345', 'wujiu_wx', '内蒙古自治区呼和浩特市新城区中山路147号', '学生宿舍3号楼202室', '010000', '农村', '内蒙古自治区呼和浩特市', '学生宿舍3号楼', '202', '吴父', '13900139007', '吴父', '13900139007', '父亲', '中等', 172.0, 65.0, 'O', '健康', '骑马、摔跤', '2022年民族体育运动会摔跤二等奖', '无', '民族文化社副社长、体育部', '邮储银行', '6217990000000007', '吴九', '1', 91.5, NOW(), 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 会计学2021级1班学生
|
||||
(1745003000000000008, '000000', '202102101', '320101200308202345', '郑十', 'Zheng Shi', 'zheng shi', 'F', '2003-08-20', '汉族', '中共预备党员', '未婚', '无', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', '经济管理学院', '会计学', '会计学2021级1班', '2021', '13800138008', 'zhengshi@student.edu.cn', '890123456', 'zhengshi_wx', '广东省广州市天河区珠江新城258号', '学生宿舍3号楼203室', '510000', '城镇', '广东省广州市', '学生宿舍3号楼', '203', '郑母', '13900139008', '郑母', '13900139008', '母亲', '良好', 158.0, 46.0, 'A', '健康', '会计、书法', '2023年会计技能大赛一等奖', '无', '会计学社社长、书法协会', '平安银行', '6230580000000008', '郑十', '1', 99.0, NOW(), 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 英语2021级1班学生
|
||||
(1745003000000000009, '000000', '202103001', '320101200309053456', '王十一', 'Wang Shiyi', 'wang shiyi', 'F', '2003-09-05', '汉族', '共青团员', '未婚', '无', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', '外国语学院', '英语', '英语2021级1班', '2021', '13800138009', 'wangshiyi@student.edu.cn', '901234567', 'wangshiyi_wx', '上海市浦东新区陆家嘴金融街369号', '学生宿舍4号楼101室', '200000', '城镇', '上海市浦东新区', '学生宿舍4号楼', '101', '王母', '13900139009', '王母', '13900139009', '母亲', '富裕', 163.0, 49.0, 'AB', '健康', '英语口语、钢琴', '2023年全国英语演讲比赛一等奖', '无', '英语角负责人、国际交流协会', '上海银行', '6227000000000009', '王十一', '1', 98.5, NOW(), 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 机械设计制造及其自动化2021级1班学生
|
||||
(1745003000000000010, '000000', '202104001', '320101200310124567', '李十二', 'Li Shier', 'li shier', 'M', '2003-10-12', '汉族', '共青团员', '未婚', '无', '1', 2021, '2021-09-01', 4, '本科', '全日制', '统招', '机械工程学院', '机械设计制造及其自动化', '机械设计制造及其自动化2021级1班', '2021', '13800138010', 'lishier@student.edu.cn', '012345678', 'lishier_wx', '河南省郑州市金水区花园路741号', '学生宿舍5号楼301室', '450000', '农村', '河南省郑州市', '学生宿舍5号楼', '301', '李父', '13900139010', '李父', '13900139010', '父亲', '困难', 176.0, 68.0, 'B', '健康', '机械设计、维修', '2022年机械创新设计大赛二等奖', '无', '机械创新协会会长、勤工助学', '中原银行', '6236950000000010', '李十二', '1', 93.0, NOW(), 1, NOW(), 1, NOW(), 0);
|
||||
|
||||
-- ===========================================
|
||||
-- 4. 班级学生关联测试数据
|
||||
-- ===========================================
|
||||
INSERT INTO `xg_class_student` (`id`, `tenant_id`, `class_id`, `student_id`, `student_no`, `student_name`, `join_date`, `leave_date`, `position`, `position_level`, `status`, `is_monitor`, `is_deputy_monitor`, `is_study_committee`, `is_life_committee`, `is_sports_committee`, `is_culture_committee`, `remarks`, `create_by`, `create_time`, `update_by`, `update_time`, `deleted`) VALUES
|
||||
-- 计算机科学与技术2021级1班关联
|
||||
(1745004000000000001, '000000', 1745002000000000001, 1745003000000000001, '202101001', '张三', '2021-09-01', NULL, '学习委员', '班委', '1', '0', '0', '1', '0', '0', '0', '负责班级学习事务', 1, NOW(), 1, NOW(), 0),
|
||||
(1745004000000000002, '000000', 1745002000000000001, 1745003000000000002, '202101002', '李四', '2021-09-01', NULL, '班长', '班委', '1', '1', '0', '0', '0', '0', '0', '班级负责人', 1, NOW(), 1, NOW(), 0),
|
||||
(1745004000000000003, '000000', 1745002000000000001, 1745003000000000003, '202101003', '王五', '2021-09-01', NULL, '体育委员', '班委', '1', '0', '0', '0', '0', '1', '0', '负责班级体育活动', 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 软件工程2021级1班关联
|
||||
(1745004000000000004, '000000', 1745002000000000003, 1745003000000000004, '202101101', '赵六', '2021-09-01', NULL, '文艺委员', '班委', '1', '0', '0', '0', '0', '0', '1', '负责班级文艺活动', 1, NOW(), 1, NOW(), 0),
|
||||
(1745004000000000005, '000000', 1745002000000000003, 1745003000000000005, '202101102', '孙七', '2021-09-01', NULL, '班长', '班委', '1', '1', '0', '0', '0', '0', '0', '班级负责人', 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 工商管理2021级1班关联
|
||||
(1745004000000000006, '000000', 1745002000000000005, 1745003000000000006, '202102001', '周八', '2021-09-01', NULL, '班长', '班委', '1', '1', '0', '0', '0', '0', '0', '班级负责人', 1, NOW(), 1, NOW(), 0),
|
||||
(1745004000000000007, '000000', 1745002000000000005, 1745003000000000007, '202102002', '吴九', '2021-09-01', NULL, '生活委员', '班委', '1', '0', '0', '0', '1', '0', '0', '负责班级生活事务', 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 会计学2021级1班关联
|
||||
(1745004000000000008, '000000', 1745002000000000006, 1745003000000000008, '202102101', '郑十', '2021-09-01', NULL, '学习委员', '班委', '1', '0', '0', '1', '0', '0', '0', '负责班级学习事务', 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 英语2021级1班关联
|
||||
(1745004000000000009, '000000', 1745002000000000008, 1745003000000000009, '202103001', '王十一', '2021-09-01', NULL, '班长', '班委', '1', '1', '0', '0', '0', '0', '0', '班级负责人', 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 机械设计制造及其自动化2021级1班关联
|
||||
(1745004000000000010, '000000', 1745002000000000010, 1745003000000000010, '202104001', '李十二', '2021-09-01', NULL, '生活委员', '班委', '1', '0', '0', '0', '1', '0', '0', '负责班级生活事务', 1, NOW(), 1, NOW(), 0);
|
||||
|
||||
-- ===========================================
|
||||
-- 5. 审核记录测试数据
|
||||
-- ===========================================
|
||||
INSERT INTO `xg_audit_record` (`id`, `tenant_id`, `student_id`, `student_no`, `student_name`, `audit_type`, `audit_level`, `auditor_id`, `auditor_name`, `audit_status`, `audit_time`, `audit_opinion`, `next_auditor_id`, `next_auditor_name`, `batch_id`, `create_by`, `create_time`, `update_by`, `update_time`, `deleted`) VALUES
|
||||
-- 张三的审核记录
|
||||
(1745005000000000001, '000000', 1745003000000000001, '202101001', '张三', '信息审核', '1', 1002, '李班主任', '3', '2024-09-15 10:30:00', '信息完整,审核通过', 1001, '张辅导员', 1745001000000000001, 1, NOW(), 1, NOW(), 0),
|
||||
(1745005000000000002, '000000', 1745003000000000001, '202101001', '张三', '信息审核', '2', 1001, '张辅导员', '3', '2024-09-16 14:20:00', '信息核实无误,审核通过', 2001, '院领导', 1745001000000000001, 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 李四的审核记录
|
||||
(1745005000000000003, '000000', 1745003000000000002, '202101002', '李四', '信息审核', '1', 1002, '李班主任', '3', '2024-09-15 11:00:00', '信息完整,审核通过', 1001, '张辅导员', 1745001000000000001, 1, NOW(), 1, NOW(), 0),
|
||||
(1745005000000000004, '000000', 1745003000000000002, '202101002', '李四', '信息审核', '2', 1001, '张辅导员', '3', '2024-09-16 15:30:00', '信息核实无误,审核通过', 2001, '院领导', 1745001000000000001, 1, NOW(), 1, NOW(), 0),
|
||||
|
||||
-- 王五的审核记录(待审核状态)
|
||||
(1745005000000000005, '000000', 1745003000000000003, '202101003', '王五', '信息审核', '1', 1002, '李班主任', '2', NULL, NULL, NULL, NULL, 1745001000000000001, 1, NOW(), 1, NOW(), 0);
|
||||
|
||||
-- ===========================================
|
||||
-- 6. 数据操作日志测试数据
|
||||
-- ===========================================
|
||||
INSERT INTO `xg_data_operation_log` (`id`, `tenant_id`, `operation_type`, `operation_desc`, `operator_id`, `operator_name`, `operation_time`, `affected_count`, `success_count`, `fail_count`, `file_name`, `file_path`, `file_size`, `operation_result`, `error_message`, `batch_id`, `create_by`, `create_time`, `update_by`, `update_time`, `deleted`) VALUES
|
||||
(1745006000000000001, '000000', '批量导入', '2024年新生信息批量导入', 1, '系统管理员', '2024-09-01 09:00:00', 1000, 980, 20, '2024新生信息.xlsx', '/upload/student/2024新生信息.xlsx', 2048000, '导入成功', '20条数据格式错误', 1745001000000000003, 1, NOW(), 1, NOW(), 0),
|
||||
(1745006000000000002, '000000', '批量导出', '2024-2025学年第一学期学生信息导出', 1, '系统管理员', '2024-09-30 16:00:00', 3500, 3500, 0, '学生信息导出_20240930.xlsx', '/export/student/学生信息导出_20240930.xlsx', 5120000, '导出成功', NULL, 1745001000000000001, 1, NOW(), 1, NOW(), 0);
|
||||
|
||||
-- ===========================================
|
||||
-- 7. 统计分析配置测试数据
|
||||
-- ===========================================
|
||||
INSERT INTO `xg_statistics_config` (`id`, `tenant_id`, `config_name`, `config_code`, `config_type`, `dimension_fields`, `group_fields`, `aggregate_fields`, `filter_conditions`, `chart_type`, `is_default`, `status`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `deleted`) VALUES
|
||||
(1745007000000000001, '000000', '性别分布统计', 'GENDER_STAT', '基础统计', 'gender', 'gender', 'COUNT(*)', '{"student_status": "1"}', 'pie', '1', '1', '学生性别分布统计分析', 1, NOW(), 1, NOW(), 0),
|
||||
(1745007000000000002, '000000', '学院专业分布统计', 'COLLEGE_MAJOR_STAT', '基础统计', 'college,major', 'college,major', 'COUNT(*)', '{"student_status": "1"}', 'bar', '1', '1', '各学院专业学生分布统计', 1, NOW(), 1, NOW(), 0),
|
||||
(1745007000000000003, '000000', '政治面貌分布统计', 'POLITICAL_STAT', '基础统计', 'political_status', 'political_status', 'COUNT(*)', '{"student_status": "1"}', 'doughnut', '1', '1', '学生政治面貌分布统计', 1, NOW(), 1, NOW(), 0),
|
||||
(1745007000000000004, '000000', '生源地分布统计', 'ORIGIN_STAT', '基础统计', 'origin_province', 'origin_province', 'COUNT(*)', '{"student_status": "1"}', 'map', '1', '1', '学生生源地分布统计', 1, NOW(), 1, NOW(), 0);
|
||||
|
||||
-- ===========================================
|
||||
-- 8. 统计结果缓存测试数据
|
||||
-- ===========================================
|
||||
INSERT INTO `xg_statistics_cache` (`id`, `tenant_id`, `config_id`, `cache_key`, `cache_data`, `cache_time`, `expire_time`, `hit_count`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `deleted`) VALUES
|
||||
(1745008000000000001, '000000', 1745007000000000001, 'GENDER_STAT_20250114', '{"male": 1850, "female": 1650, "total": 3500}', NOW(), DATE_ADD(NOW(), INTERVAL 1 DAY), 25, '1', 1, NOW(), 1, NOW(), 0),
|
||||
(1745008000000000002, '000000', 1745007000000000002, 'COLLEGE_MAJOR_STAT_20250114', '{"计算机科学与技术学院": {"计算机科学与技术": 420, "软件工程": 380, "数据科学与大数据技术": 330}, "经济管理学院": {"工商管理": 480, "会计学": 440, "金融学": 390}}', NOW(), DATE_ADD(NOW(), INTERVAL 1 DAY), 18, '1', 1, NOW(), 1, NOW(), 0);
|
||||
|
||||
-- ===========================================
|
||||
-- 9. 数据权限配置测试数据
|
||||
-- ===========================================
|
||||
INSERT INTO `xg_data_permission` (`id`, `tenant_id`, `user_id`, `user_name`, `permission_type`, `permission_scope`, `data_range`, `filter_conditions`, `status`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `deleted`) VALUES
|
||||
(1745009000000000001, '000000', 1001, '张辅导员', '辅导员权限', '学院范围', '{"college": "计算机科学与技术学院"}', '{"counselor_id": 1001}', '1', '计算机科学与技术学院辅导员数据权限', 1, NOW(), 1, NOW(), 0),
|
||||
(1745009000000000002, '000000', 1011, '郑辅导员', '辅导员权限', '学院范围', '{"college": "经济管理学院"}', '{"counselor_id": 1011}', '1', '经济管理学院辅导员数据权限', 1, NOW(), 1, NOW(), 0),
|
||||
(1745009000000000003, '000000', 1002, '李班主任', '班主任权限', '班级范围', '{"class_id": 1745002000000000001}', '{"class_teacher_id": 1002}', '1', '计算机科学与技术2021级1班班主任数据权限', 1, NOW(), 1, NOW(), 0),
|
||||
(1745009000000000004, '000000', 2001, '院领导', '学院管理员权限', '学院范围', '{"college": "计算机科学与技术学院"}', '{}', '1', '计算机科学与技术学院管理员数据权限', 1, NOW(), 1, NOW(), 0);
|
||||
|
||||
-- ===========================================
|
||||
-- 10. 移动端用户会话测试数据
|
||||
-- ===========================================
|
||||
INSERT INTO `xg_mobile_user_session` (`id`, `tenant_id`, `user_id`, `user_name`, `user_type`, `device_id`, `device_type`, `session_token`, `login_time`, `last_active_time`, `expire_time`, `login_ip`, `user_agent`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `deleted`) VALUES
|
||||
(1745010000000000001, '000000', 1745003000000000001, '张三', '学生', 'DEVICE_001', 'Android', 'TOKEN_ZHANGSAN_001', '2025-01-14 08:00:00', '2025-01-14 09:30:00', '2025-01-21 08:00:00', '192.168.1.100', 'Mozilla/5.0 (Linux; Android 12) Mobile App', '1', 1, NOW(), 1, NOW(), 0),
|
||||
(1745010000000000002, '000000', 1745003000000000002, '李四', '学生', 'DEVICE_002', 'iOS', 'TOKEN_LISI_002', '2025-01-14 08:30:00', '2025-01-14 09:45:00', '2025-01-21 08:30:00', '192.168.1.101', 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_0) Mobile App', '1', 1, NOW(), 1, NOW(), 0),
|
||||
(1745010000000000003, '000000', 1001, '张辅导员', '教师', 'DEVICE_003', 'Android', 'TOKEN_TEACHER_001', '2025-01-14 07:30:00', '2025-01-14 09:00:00', '2025-01-21 07:30:00', '192.168.1.102', 'Mozilla/5.0 (Linux; Android 13) Mobile App', '1', 1, NOW(), 1, NOW(), 0);
|
||||
|
||||
-- ===========================================
|
||||
-- 数据统计信息
|
||||
-- ===========================================
|
||||
-- 测试数据统计:
|
||||
-- 1. 信息采集批次:3条
|
||||
-- 2. 班级信息:10个班级(涵盖5个学院)
|
||||
-- 3. 学生信息:10名学生(涵盖不同专业、年级、性别、民族、政治面貌)
|
||||
-- 4. 班级学生关联:10条关联记录
|
||||
-- 5. 审核记录:5条审核记录
|
||||
-- 6. 数据操作日志:2条操作记录
|
||||
-- 7. 统计分析配置:4个统计配置
|
||||
-- 8. 统计结果缓存:2条缓存记录
|
||||
-- 9. 数据权限配置:4个权限配置
|
||||
-- 10. 移动端用户会话:3个会话记录
|
||||
|
||||
-- 数据特点:
|
||||
-- ✅ 数据逻辑性强:学号、身份证号、入学时间等符合实际规律
|
||||
-- ✅ 覆盖面广:涵盖不同学院、专业、年级、性别、民族、政治面貌
|
||||
-- ✅ 关联完整:班级、学生、审核、权限等数据相互关联
|
||||
-- ✅ 业务场景真实:包含审核流程、统计分析、权限管理等实际业务
|
||||
-- ✅ 测试友好:数据量适中,便于功能测试和演示
|
||||
|
||||
COMMIT;
|
||||
@@ -1,411 +0,0 @@
|
||||
# 学生信息管理数据模型补充分析报告
|
||||
|
||||
## 📋 文档信息
|
||||
|
||||
| 项目 | 信息 |
|
||||
|------|------|
|
||||
| **文档名称** | 学生信息管理数据模型补充分析报告 |
|
||||
| **版本** | V1.0.0 |
|
||||
| **创建时间** | 2025-01-14 |
|
||||
| **分析依据** | 学生信息管理需求分析.md |
|
||||
| **现有数据模型** | 09-student-management-module.sql |
|
||||
|
||||
## 🎯 分析概述
|
||||
|
||||
通过对比《学生信息管理需求分析.md》和现有数据模型设计,发现现有数据模型基本满足需求,但在以下几个方面需要补充和完善:
|
||||
|
||||
## 📊 需求覆盖度分析
|
||||
|
||||
### ✅ 已满足的需求
|
||||
|
||||
1. **学生基本信息管理** - 90% 覆盖
|
||||
- ✅ 基本信息字段完整
|
||||
- ✅ 学籍信息字段完整
|
||||
- ✅ 联系信息字段完整
|
||||
- ✅ 家庭信息字段完整
|
||||
- ✅ 体征信息字段完整
|
||||
- ✅ 银行卡信息字段完整
|
||||
|
||||
2. **班级信息管理** - 95% 覆盖
|
||||
- ✅ 班级基础信息完整
|
||||
- ✅ 人员配置管理完整
|
||||
- ✅ 班级规模统计完整
|
||||
|
||||
3. **信息采集批次管理** - 85% 覆盖
|
||||
- ✅ 批次基本信息完整
|
||||
- ✅ 批次状态管理完整
|
||||
- ✅ 批次权限配置完整
|
||||
|
||||
4. **多级审核流程管理** - 90% 覆盖
|
||||
- ✅ 审核记录表完整
|
||||
- ✅ 审核状态跟踪完整
|
||||
- ✅ 审核历史记录完整
|
||||
|
||||
## 🔍 发现的数据模型缺陷
|
||||
|
||||
### 1. 🚨 关键字段缺失
|
||||
|
||||
#### 1.1 学生信息表缺失字段
|
||||
|
||||
**需求要求但数据模型缺失的字段**:
|
||||
|
||||
```sql
|
||||
-- 需要补充的字段
|
||||
ALTER TABLE `xg_student_info`
|
||||
ADD COLUMN `photo_path` varchar(500) DEFAULT NULL COMMENT '学生照片存储路径' AFTER `photo_url`,
|
||||
ADD COLUMN `name_english` varchar(100) DEFAULT NULL COMMENT '英文姓名' AFTER `name`,
|
||||
ADD COLUMN `former_name` varchar(50) DEFAULT NULL COMMENT '曾用名' AFTER `name_english`,
|
||||
ADD COLUMN `marital_status` varchar(10) DEFAULT NULL COMMENT '婚姻状况:未婚、已婚、离异、丧偶' AFTER `political_status`,
|
||||
ADD COLUMN `household_register_type` varchar(20) DEFAULT NULL COMMENT '户口类型:农业、非农业' AFTER `hukou_location`,
|
||||
ADD COLUMN `source_region` varchar(100) DEFAULT NULL COMMENT '生源地区(省市县)' AFTER `native_place`,
|
||||
ADD COLUMN `middle_school` varchar(100) DEFAULT NULL COMMENT '毕业中学' AFTER `high_school`,
|
||||
ADD COLUMN `admission_category` varchar(20) DEFAULT NULL COMMENT '录取类别:统招、自主招生、专项计划等' AFTER `admission_rank`,
|
||||
ADD COLUMN `family_economic_status` varchar(20) DEFAULT NULL COMMENT '家庭经济状况:富裕、一般、困难、特困' AFTER `family_income`,
|
||||
ADD COLUMN `guardian_name` varchar(50) DEFAULT NULL COMMENT '监护人姓名' AFTER `mother_work`,
|
||||
ADD COLUMN `guardian_phone` varchar(20) DEFAULT NULL COMMENT '监护人电话' AFTER `guardian_name`,
|
||||
ADD COLUMN `guardian_relation` varchar(20) DEFAULT NULL COMMENT '监护人关系' AFTER `guardian_phone`,
|
||||
ADD COLUMN `dormitory_building` varchar(50) DEFAULT NULL COMMENT '宿舍楼栋' AFTER `current_address`,
|
||||
ADD COLUMN `dormitory_room` varchar(20) DEFAULT NULL COMMENT '宿舍房间号' AFTER `dormitory_building`,
|
||||
ADD COLUMN `is_left_behind_child` tinyint(1) DEFAULT 0 COMMENT '是否留守儿童:0-否,1-是' AFTER `allergies`,
|
||||
ADD COLUMN `is_single_child` tinyint(1) DEFAULT 0 COMMENT '是否独生子女:0-否,1-是' AFTER `is_left_behind_child`,
|
||||
ADD COLUMN `disability_type` varchar(50) DEFAULT NULL COMMENT '残疾类型' AFTER `medical_history`,
|
||||
ADD COLUMN `disability_level` varchar(20) DEFAULT NULL COMMENT '残疾等级' AFTER `disability_type`;
|
||||
```
|
||||
|
||||
#### 1.2 班级信息表缺失字段
|
||||
|
||||
```sql
|
||||
-- 需要补充的字段
|
||||
ALTER TABLE `xg_class_info`
|
||||
ADD COLUMN `class_advisor_id` bigint(20) DEFAULT NULL COMMENT '班级导师ID' AFTER `head_teacher_name`,
|
||||
ADD COLUMN `class_advisor_name` varchar(50) DEFAULT NULL COMMENT '班级导师姓名' AFTER `class_advisor_id`,
|
||||
ADD COLUMN `class_location` varchar(100) DEFAULT NULL COMMENT '班级教室位置' AFTER `office_location`,
|
||||
ADD COLUMN `class_schedule` text DEFAULT NULL COMMENT '课程安排(JSON格式)' AFTER `class_location`,
|
||||
ADD COLUMN `class_culture` text DEFAULT NULL COMMENT '班级文化建设' AFTER `description`,
|
||||
ADD COLUMN `class_rules` text DEFAULT NULL COMMENT '班级规章制度' AFTER `class_culture`;
|
||||
```
|
||||
|
||||
### 2. 🔄 业务流程支持不足
|
||||
|
||||
#### 2.1 缺少学生信息变更申请表
|
||||
|
||||
**需求**:学生需要能够申请修改信息,需要审批流程
|
||||
|
||||
```sql
|
||||
-- 新增:学生信息变更申请表
|
||||
CREATE TABLE `xg_student_info_change_request` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
|
||||
`student_id` bigint(20) NOT NULL COMMENT '学生ID',
|
||||
`student_no` varchar(32) NOT NULL COMMENT '学号',
|
||||
`student_name` varchar(50) NOT NULL COMMENT '学生姓名',
|
||||
`change_type` varchar(20) NOT NULL COMMENT '变更类型:info_update-信息更新,status_change-状态变更',
|
||||
`change_fields` text NOT NULL COMMENT '变更字段(JSON格式)',
|
||||
`old_values` text NOT NULL COMMENT '原值(JSON格式)',
|
||||
`new_values` text NOT NULL COMMENT '新值(JSON格式)',
|
||||
`change_reason` varchar(500) NOT NULL COMMENT '变更原因',
|
||||
`supporting_documents` text DEFAULT NULL COMMENT '支撑材料(JSON格式)',
|
||||
`request_status` char(1) DEFAULT '1' COMMENT '申请状态:1-待审核,2-审核中,3-已通过,4-已驳回,5-已撤回',
|
||||
`submit_time` datetime NOT NULL COMMENT '提交时间',
|
||||
`approve_time` datetime DEFAULT NULL COMMENT '审批时间',
|
||||
`approver_id` bigint(20) DEFAULT NULL COMMENT '审批人ID',
|
||||
`approver_name` varchar(50) DEFAULT NULL COMMENT '审批人姓名',
|
||||
`approve_comment` varchar(500) DEFAULT NULL COMMENT '审批意见',
|
||||
`batch_id` bigint(20) DEFAULT NULL COMMENT '关联批次ID',
|
||||
`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 '更新时间',
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_student_id` (`student_id`),
|
||||
KEY `idx_request_status` (`request_status`),
|
||||
KEY `idx_submit_time` (`submit_time`),
|
||||
KEY `idx_batch_id` (`batch_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生信息变更申请表';
|
||||
```
|
||||
|
||||
#### 2.2 缺少数据导入导出记录表
|
||||
|
||||
**需求**:需要记录批量导入导出操作的历史和结果
|
||||
|
||||
```sql
|
||||
-- 新增:数据导入导出记录表
|
||||
CREATE TABLE `xg_data_import_export_log` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
|
||||
`operation_type` varchar(20) NOT NULL COMMENT '操作类型:import-导入,export-导出',
|
||||
`data_type` varchar(20) NOT NULL COMMENT '数据类型:student-学生,class-班级,batch-批次',
|
||||
`file_name` varchar(200) NOT NULL COMMENT '文件名称',
|
||||
`file_path` varchar(500) DEFAULT NULL COMMENT '文件路径',
|
||||
`file_size` bigint(20) DEFAULT NULL COMMENT '文件大小(字节)',
|
||||
`total_records` int(11) DEFAULT 0 COMMENT '总记录数',
|
||||
`success_records` int(11) DEFAULT 0 COMMENT '成功记录数',
|
||||
`failed_records` int(11) DEFAULT 0 COMMENT '失败记录数',
|
||||
`error_details` text DEFAULT NULL COMMENT '错误详情(JSON格式)',
|
||||
`operation_status` char(1) DEFAULT '1' COMMENT '操作状态:1-进行中,2-成功,3-失败,4-部分成功',
|
||||
`start_time` datetime NOT NULL COMMENT '开始时间',
|
||||
`end_time` datetime DEFAULT NULL COMMENT '结束时间',
|
||||
`duration` int(11) DEFAULT NULL COMMENT '耗时(秒)',
|
||||
`operator_id` bigint(20) NOT NULL COMMENT '操作人ID',
|
||||
`operator_name` varchar(50) NOT NULL COMMENT '操作人姓名',
|
||||
`batch_id` bigint(20) DEFAULT NULL COMMENT '关联批次ID',
|
||||
`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 '更新时间',
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_operation_type` (`operation_type`),
|
||||
KEY `idx_data_type` (`data_type`),
|
||||
KEY `idx_operation_status` (`operation_status`),
|
||||
KEY `idx_operator_id` (`operator_id`),
|
||||
KEY `idx_start_time` (`start_time`),
|
||||
KEY `idx_batch_id` (`batch_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='数据导入导出记录表';
|
||||
```
|
||||
|
||||
### 3. 📊 统计分析功能增强
|
||||
|
||||
#### 3.1 缺少统计分析配置表
|
||||
|
||||
**需求**:支持自定义统计分析配置和报表模板
|
||||
|
||||
```sql
|
||||
-- 新增:统计分析配置表
|
||||
CREATE TABLE `xg_statistics_config` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
|
||||
`config_name` varchar(100) NOT NULL COMMENT '配置名称',
|
||||
`config_code` varchar(50) NOT NULL COMMENT '配置编码',
|
||||
`config_type` varchar(20) NOT NULL COMMENT '配置类型:dimension-维度,report-报表,chart-图表',
|
||||
`config_content` text NOT NULL COMMENT '配置内容(JSON格式)',
|
||||
`is_system` tinyint(1) DEFAULT 0 COMMENT '是否系统配置:0-否,1-是',
|
||||
`is_enabled` tinyint(1) DEFAULT 1 COMMENT '是否启用:0-否,1-是',
|
||||
`sort_order` int(11) DEFAULT 0 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 '更新时间',
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_config_code` (`config_code`, `tenant_id`),
|
||||
KEY `idx_config_type` (`config_type`),
|
||||
KEY `idx_is_enabled` (`is_enabled`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='统计分析配置表';
|
||||
```
|
||||
|
||||
#### 3.2 缺少统计结果缓存表
|
||||
|
||||
**需求**:大数据量统计需要缓存机制提升性能
|
||||
|
||||
```sql
|
||||
-- 新增:统计结果缓存表
|
||||
CREATE TABLE `xg_statistics_cache` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
|
||||
`cache_key` varchar(200) NOT NULL COMMENT '缓存键',
|
||||
`cache_type` varchar(20) NOT NULL COMMENT '缓存类型:dimension-维度统计,report-报表,chart-图表',
|
||||
`cache_content` longtext NOT NULL COMMENT '缓存内容(JSON格式)',
|
||||
`cache_time` datetime NOT NULL COMMENT '缓存时间',
|
||||
`expire_time` datetime NOT NULL COMMENT '过期时间',
|
||||
`is_expired` tinyint(1) DEFAULT 0 COMMENT '是否过期:0-否,1-是',
|
||||
`hit_count` int(11) DEFAULT 0 COMMENT '命中次数',
|
||||
`last_hit_time` datetime DEFAULT NULL 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 '更新时间',
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_cache_key` (`cache_key`, `tenant_id`),
|
||||
KEY `idx_cache_type` (`cache_type`),
|
||||
KEY `idx_expire_time` (`expire_time`),
|
||||
KEY `idx_is_expired` (`is_expired`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='统计结果缓存表';
|
||||
```
|
||||
|
||||
### 4. 🔐 权限管理增强
|
||||
|
||||
#### 4.1 缺少数据权限配置表
|
||||
|
||||
**需求**:需要细粒度的数据权限控制
|
||||
|
||||
```sql
|
||||
-- 新增:数据权限配置表
|
||||
CREATE TABLE `xg_data_permission` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
|
||||
`user_id` bigint(20) NOT NULL COMMENT '用户ID',
|
||||
`user_name` varchar(50) NOT NULL COMMENT '用户姓名',
|
||||
`permission_type` varchar(20) NOT NULL COMMENT '权限类型:college-学院,major-专业,class-班级,student-学生',
|
||||
`permission_scope` varchar(20) NOT NULL COMMENT '权限范围:all-全部,own-自己负责,custom-自定义',
|
||||
`scope_values` text DEFAULT NULL COMMENT '权限范围值(JSON格式)',
|
||||
`permission_level` tinyint(1) NOT NULL COMMENT '权限级别:1-查看,2-编辑,3-审核,4-管理',
|
||||
`is_enabled` tinyint(1) DEFAULT 1 COMMENT '是否启用:0-否,1-是',
|
||||
`effective_time` datetime DEFAULT NULL COMMENT '生效时间',
|
||||
`expire_time` datetime DEFAULT NULL 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 '更新时间',
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_user_id` (`user_id`),
|
||||
KEY `idx_permission_type` (`permission_type`),
|
||||
KEY `idx_permission_scope` (`permission_scope`),
|
||||
KEY `idx_is_enabled` (`is_enabled`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='数据权限配置表';
|
||||
```
|
||||
|
||||
### 5. 📱 移动端支持增强
|
||||
|
||||
#### 5.1 缺少移动端用户会话表
|
||||
|
||||
**需求**:移动端需要独立的会话管理
|
||||
|
||||
```sql
|
||||
-- 新增:移动端用户会话表
|
||||
CREATE TABLE `xg_mobile_user_session` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
|
||||
`user_id` bigint(20) NOT NULL COMMENT '用户ID',
|
||||
`user_name` varchar(50) NOT NULL COMMENT '用户姓名',
|
||||
`user_type` varchar(20) NOT NULL COMMENT '用户类型:student-学生,teacher-教师,admin-管理员',
|
||||
`session_id` varchar(100) NOT NULL COMMENT '会话ID',
|
||||
`device_id` varchar(100) DEFAULT NULL COMMENT '设备ID',
|
||||
`device_type` varchar(20) DEFAULT NULL COMMENT '设备类型:ios-苹果,android-安卓,h5-网页',
|
||||
`app_version` varchar(20) DEFAULT NULL COMMENT '应用版本',
|
||||
`login_time` datetime NOT NULL COMMENT '登录时间',
|
||||
`last_activity_time` datetime DEFAULT NULL COMMENT '最后活动时间',
|
||||
`logout_time` datetime DEFAULT NULL COMMENT '退出时间',
|
||||
`ip_address` varchar(50) DEFAULT NULL COMMENT 'IP地址',
|
||||
`user_agent` varchar(500) DEFAULT NULL COMMENT '用户代理',
|
||||
`is_active` tinyint(1) DEFAULT 1 COMMENT '是否活跃:0-否,1-是',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_session_id` (`session_id`),
|
||||
KEY `idx_user_id` (`user_id`),
|
||||
KEY `idx_device_id` (`device_id`),
|
||||
KEY `idx_is_active` (`is_active`),
|
||||
KEY `idx_login_time` (`login_time`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='移动端用户会话表';
|
||||
```
|
||||
|
||||
## 📈 性能优化建议
|
||||
|
||||
### 1. 索引优化
|
||||
|
||||
#### 1.1 学生信息表索引补充
|
||||
|
||||
```sql
|
||||
-- 补充学生信息表索引
|
||||
ALTER TABLE `xg_student_info`
|
||||
ADD INDEX `idx_name_pinyin` (`name`, `name_pinyin`),
|
||||
ADD INDEX `idx_enrollment_info` (`enrollment_year`, `major`, `class_name`),
|
||||
ADD INDEX `idx_family_info` (`is_poor_student`, `is_minority`, `is_disabled`),
|
||||
ADD INDEX `idx_contact_info` (`phone`, `email`),
|
||||
ADD INDEX `idx_audit_info` (`info_status`, `last_update_batch`, `data_source`);
|
||||
```
|
||||
|
||||
#### 1.2 批次管理表索引补充
|
||||
|
||||
```sql
|
||||
-- 补充批次管理表索引
|
||||
ALTER TABLE `xg_collection_batch`
|
||||
ADD INDEX `idx_batch_time` (`start_time`, `end_time`, `batch_status`),
|
||||
ADD INDEX `idx_target_scope` (`target_colleges`, `target_majors`, `target_grades`);
|
||||
```
|
||||
|
||||
### 2. 分区表建议
|
||||
|
||||
**大数据量表建议分区**:
|
||||
|
||||
```sql
|
||||
-- 审核记录表按时间分区
|
||||
ALTER TABLE `xg_audit_record`
|
||||
PARTITION BY RANGE (YEAR(create_time)) (
|
||||
PARTITION p2024 VALUES LESS THAN (2025),
|
||||
PARTITION p2025 VALUES LESS THAN (2026),
|
||||
PARTITION p2026 VALUES LESS THAN (2027),
|
||||
PARTITION p_future VALUES LESS THAN MAXVALUE
|
||||
);
|
||||
|
||||
-- 学生信息变更记录表按时间分区
|
||||
ALTER TABLE `xg_student_info_history`
|
||||
PARTITION BY RANGE (YEAR(change_time)) (
|
||||
PARTITION p2024 VALUES LESS THAN (2025),
|
||||
PARTITION p2025 VALUES LESS THAN (2026),
|
||||
PARTITION p2026 VALUES LESS THAN (2027),
|
||||
PARTITION p_future VALUES LESS THAN MAXVALUE
|
||||
);
|
||||
```
|
||||
|
||||
## 🔧 数据字典补充
|
||||
|
||||
### 新增字典类型
|
||||
|
||||
```sql
|
||||
-- 补充字典数据
|
||||
INSERT INTO `sys_dict_type` VALUES
|
||||
('xg_marital_status', '婚姻状况', '1', 'admin', NOW(), '', NULL, '学生婚姻状况'),
|
||||
('xg_household_register_type', '户口类型', '1', 'admin', NOW(), '', NULL, '户口类型'),
|
||||
('xg_admission_category', '录取类别', '1', 'admin', NOW(), '', NULL, '录取类别'),
|
||||
('xg_family_economic_status', '家庭经济状况', '1', 'admin', NOW(), '', NULL, '家庭经济状况'),
|
||||
('xg_disability_type', '残疾类型', '1', 'admin', NOW(), '', NULL, '残疾类型'),
|
||||
('xg_disability_level', '残疾等级', '1', 'admin', NOW(), '', NULL, '残疾等级'),
|
||||
('xg_request_status', '申请状态', '1', 'admin', NOW(), '', NULL, '变更申请状态'),
|
||||
('xg_operation_status', '操作状态', '1', 'admin', NOW(), '', NULL, '导入导出操作状态'),
|
||||
('xg_permission_type', '权限类型', '1', 'admin', NOW(), '', NULL, '数据权限类型'),
|
||||
('xg_permission_scope', '权限范围', '1', 'admin', NOW(), '', NULL, '数据权限范围');
|
||||
```
|
||||
|
||||
## 🎯 实施建议
|
||||
|
||||
### 优先级排序
|
||||
|
||||
#### 🔴 高优先级(必须实施)
|
||||
1. **学生信息表字段补充** - 支持完整的学生信息管理
|
||||
2. **学生信息变更申请表** - 支持信息变更审批流程
|
||||
3. **数据导入导出记录表** - 支持批量操作记录
|
||||
4. **关键索引补充** - 提升查询性能
|
||||
|
||||
#### 🟡 中优先级(建议实施)
|
||||
1. **统计分析配置表** - 支持自定义统计分析
|
||||
2. **数据权限配置表** - 支持细粒度权限控制
|
||||
3. **统计结果缓存表** - 提升大数据量统计性能
|
||||
4. **班级信息表字段补充** - 完善班级管理功能
|
||||
|
||||
#### 🟢 低优先级(可选实施)
|
||||
1. **移动端用户会话表** - 移动端独立会话管理
|
||||
2. **分区表优化** - 超大数据量时考虑
|
||||
3. **扩展字典数据** - 根据实际使用情况补充
|
||||
|
||||
### 实施步骤
|
||||
|
||||
1. **第一阶段**:补充关键字段和索引
|
||||
2. **第二阶段**:新增业务支持表
|
||||
3. **第三阶段**:性能优化和扩展功能
|
||||
4. **第四阶段**:数据字典和权限完善
|
||||
|
||||
## 📝 总结
|
||||
|
||||
现有数据模型设计基本满足需求分析的要求,但在以下方面需要补充:
|
||||
|
||||
1. **字段完整性**:补充学生信息表的关键字段
|
||||
2. **业务流程**:新增变更申请和导入导出记录表
|
||||
3. **性能优化**:补充关键索引和缓存机制
|
||||
4. **权限管理**:增强数据权限控制
|
||||
5. **移动端支持**:完善移动端功能支持
|
||||
|
||||
通过这些补充,数据模型将能够更好地支持学生信息管理系统的完整功能需求。
|
||||
|
||||
---
|
||||
|
||||
**文档维护**:本文档将根据实际开发进展和需求变化进行持续更新。
|
||||
Reference in new issue
Block a user