调整人员: Cursor AI
调整时间: 2025-01-27 16:45:00
调整类型: Bug修复
影响模块: 奖学金名额分配管理
奖学金名额分配页面列表中的以下字段显示为空:
parent_quota_id字段关联到了错误的表Service层使用了MyBatis-Plus的selectVoPage()自动方法,该方法不会执行XML中定义的自定义SQL查询,导致关联字段无法正确获取。
selectQuotaPageList()和selectQuotaList()方法backend/ruoyi-modules/ruoyi-jcbt/src/main/resources/mapper/JcbtScholarshipQuotaMapper.xml
-- 修复前(错误)
left join sys_dept pd on q.parent_quota_id = pd.dept_id
-- 修复后(正确)
left join jcbt_scholarship_quota pq on q.parent_quota_id = pq.id
left join sys_dept pd on pq.target_dept_id = pd.dept_id
说明: parent_quota_id应该关联另一个名额分配记录的ID,而不是直接关联部门表。
-- 修复前(错误)
st.level as scholarship_level
-- 修复后(正确)
st.level_type as scholarship_level
说明: 奖学金类型表中的字段名是level_type,不是level。
backend/sql/test_scholarship_basic_data.sql
奖学金批次: [空白]
奖学金类型: [空白]
分配级别: [空白]
目标部门: [空白]
状态: [空白]
奖学金批次: 2024学年第一学期奖学金评定
奖学金类型: 国家奖学金
分配级别: 全校
目标部门: [根据实际配置显示]
状态: 生效
执行测试脚本检查数据:
-- 执行测试脚本
source backend/sql/test_scholarship_basic_data.sql
-- 验证关联查询
SELECT
q.id,
b.batch_name,
st.type_name as scholarship_type_name,
q.allocation_level,
q.total_quota,
q.status
FROM jcbt_scholarship_quota q
LEFT JOIN jcbt_scholarship_batch b ON q.batch_id = b.id
LEFT JOIN jcbt_scholarship_type st ON q.scholarship_type_id = st.id
WHERE q.deleted = 0;
前端表格列使用了错误的字段名:
allocationLevel,应该使用allocationLevelNamestatus,应该使用statusName修改前端表格列定义,直接使用后端SQL中转换后的中文名称字段
执行SQL脚本: ```bash
mysql -u root -p hzdyjs_xg < backend/sql/insert_test_data_simple.sql
# 方式2: 使用完整脚本 mysql -u root -p hzdyjs_xg < backend/sql/test_scholarship_basic_data.sql
2. **重新编译后端**:
```bash
cd backend
mvn clean compile
重启后端服务:
# 停止当前服务
# 重新启动服务
-- 原始错误的关联逻辑
jcbt_scholarship_quota.parent_quota_id -> sys_dept.dept_id
-- 修复后的正确关联逻辑
jcbt_scholarship_quota.parent_quota_id -> jcbt_scholarship_quota.id
jcbt_scholarship_quota.target_dept_id -> sys_dept.dept_id
-- 确保字段名与表结构一致
jcbt_scholarship_type.level_type AS scholarship_level
jcbt_scholarship_type.type_name AS scholarship_type_name
INSERT IGNORE避免重复插入变更完成时间: 2025-01-27 16:45:00
下一步操作: 需要手动执行SQL脚本并重启服务
验证预期: 列表页面所有字段正常显示