3.2 KiB
代码调整记录
基本信息
- 日期: 2025-07-25 16:30:00
- 调整人: wuzhen
- 影响模块: 招生报名信息管理
- 变更类型: Bug修复
问题描述
在招生报名信息管理模块中,前端添加或编辑表单时填写的"所属学院"和"学院代码"无法成功保存到数据库。前端正确收集了这些字段的值,数据库表结构中也已存在对应的 college_name 和 college_id 字段,但是数据始终无法成功保存。
问题根因
经过分析,发现虽然数据库表 zsjy_enrollment_info 中已添加了 college_name 和 college_id 字段,实体类 ZsjyEnrollmentInfo 和视图对象 ZsjyEnrollmentInfoVo 中也已包含了这些字段,但是业务对象类 ZsjyEnrollmentInfoBo 中缺少了这两个字段的定义。
由于 MyBatis-Plus 的对象映射机制,当前端提交数据到后端时,由于 BO 类中没有对应的字段,这些数据无法被正确映射并保存到数据库,导致学院相关信息无法保存。
解决方案
- 在
ZsjyEnrollmentInfoBo类中添加collegeName和collegeId字段及其 getter/setter 方法 - 更新
buildQueryWrapper方法,添加对这两个字段的查询条件处理 - 创建 SQL 脚本确保数据库表结构正确
变更内容
1. 业务对象类修改
在 backend/ruoyi-modules/ruoyi-zsjy/src/main/java/org/dromara/zsjy/domain/bo/ZsjyEnrollmentInfoBo.java 中添加:
/**
* 学院名称
*/
private String collegeName;
/**
* 学院代码
*/
private String collegeId;
// getter 和 setter 方法
public String getCollegeName() {
return collegeName;
}
public void setCollegeName(String collegeName) {
this.collegeName = collegeName;
}
public String getCollegeId() {
return collegeId;
}
public void setCollegeId(String collegeId) {
this.collegeId = collegeId;
}
2. 查询构建方法修改
在 backend/ruoyi-modules/ruoyi-zsjy/src/main/java/org/dromara/zsjy/service/impl/ZsjyEnrollmentInfoServiceImpl.java 的 buildQueryWrapper 方法中添加:
lqw.like(StringUtils.isNotBlank(bo.getCollegeName()), ZsjyEnrollmentInfo::getCollegeName, bo.getCollegeName());
lqw.eq(StringUtils.isNotBlank(bo.getCollegeId()), ZsjyEnrollmentInfo::getCollegeId, bo.getCollegeId());
3. 创建SQL脚本
创建 backend/script/sql/fix-enrollment-college-fields.sql 脚本,用于检查并添加数据库字段(脚本内容见文件)。
修复验证
- 编译后端代码确保无编译错误
- 执行 SQL 脚本确保数据库表结构正确
- 重启应用并测试招生报名信息的添加和编辑功能,验证学院信息是否能正确保存
相关文件
- backend/ruoyi-modules/ruoyi-zsjy/src/main/java/org/dromara/zsjy/domain/bo/ZsjyEnrollmentInfoBo.java
- backend/ruoyi-modules/ruoyi-zsjy/src/main/java/org/dromara/zsjy/service/impl/ZsjyEnrollmentInfoServiceImpl.java
- backend/script/sql/fix-enrollment-college-fields.sql
- docs/设计文档/database/后勤管理/add-college-fields-mysql.sql (原始添加字段的SQL)
注意事项
此问题是由于在添加数据库字段时,未同步更新所有相关的后端类文件导致的。在今后添加新字段时,需确保数据库表、实体类、BO类和VO类同步更新,保持字段一致性。