Files
hzdyjs/docs/变更管理/code-adjust-record-2025-07-25-wuzhen.md
T
2025-07-24 21:03:00 +08:00

3.2 KiB
Raw Blame History

代码调整记录

基本信息

  • 日期: 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 类中没有对应的字段,这些数据无法被正确映射并保存到数据库,导致学院相关信息无法保存。

解决方案

  1. 在 ZsjyEnrollmentInfoBo 类中添加 collegeName 和 collegeId 字段及其 getter/setter 方法
  2. 更新 buildQueryWrapper 方法,添加对这两个字段的查询条件处理
  3. 创建 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 脚本,用于检查并添加数据库字段(脚本内容见文件)。

修复验证

  1. 编译后端代码确保无编译错误
  2. 执行 SQL 脚本确保数据库表结构正确
  3. 重启应用并测试招生报名信息的添加和编辑功能,验证学院信息是否能正确保存

相关文件

  • 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类同步更新,保持字段一致性。