wuzhen update

This commit is contained in:
wuzhen committed 2025-08-10 00:24:31 +08:00
1 parent bab7b53074
commit a2222f63cb
284 files changed
+48629 -3473

No files matched your search

@@ -0,0 +1,169 @@
# 奖学金审核功能问题调试指南
## 🔍 问题描述
奖学金申请审核时报错:"学生学号不能为空",需要通过日志定位具体问题环节。
## 📋 已添加的调试日志
### 前端日志 (浏览器控制台)
- 🔍 `[DEBUG] handleApprove 开始执行` - 批准操作开始
- 🔍 `[DEBUG] 传入的row数据` - 表格行数据
- 🔍 `[DEBUG] getScholarshipApplication 响应` - 获取详情接口响应
- 🔍 `[DEBUG] 提取的fullData` - 从响应中提取的完整数据
- 🔍 `[DEBUG] 准备更新的数据 updateData` - 准备发送给后端的数据
- 🔍 `[DEBUG] 关键字段检查` - 检查关键字段是否存在
- 🔍 `[DEBUG] updateScholarshipApplication 响应` - 更新接口响应
- ❌ `[ERROR] handleApprove 出错` - 如果有错误
### 后端日志 (后端控制台)
- 🔍 `[DEBUG] Controller.edit 开始执行` - Controller接收请求
- 🔍 `[DEBUG] 接收到的BO对象` - 后端接收到的数据
- 🔍 `[DEBUG] Service.updateByBo 开始执行` - Service层开始处理
- 🔍 `[DEBUG] 转换后的Entity对象` - BO转Entity后的数据
- 🔍 `[DEBUG] validEntityBeforeSave 开始执行` - 数据校验开始
- 🔍 `[DEBUG] 校验学生学号` - 具体校验每个字段
- ❌ `[ERROR] 学生学号为空!` - 如果校验失败
## 🧪 测试步骤
### 1. 准备测试环境
```bash
# 确保前后端服务已启动
# 前端:http://localhost
# 后端:http://localhost:8080
```
### 2. 打开浏览器开发者工具
- 按F12打开开发者工具
- 切换到"Console"标签页
- 清空控制台日志
### 3. 执行审核操作
1. 访问奖学金审核页面:`http://localhost/jcbt/scholarship/review`
2. 找到一个状态为"已提交"的申请记录
3. 点击"批准"按钮
4. 观察前端控制台日志输出
### 4. 查看后端日志
- 查看后端控制台输出
- 重点关注包含 `🔍 [DEBUG]` 和 `❌ [ERROR]` 的日志
## 🔍 关键检查点
### 前端数据流检查
1. **表格行数据** - 确认 `row` 包含完整的申请信息
2. **获取详情响应** - 确认API返回完整数据
3. **字段映射** - 确认 `studentNo`、`studentName` 等字段存在
4. **发送数据** - 确认发送给后端的数据完整
### 后端数据处理检查
1. **Controller接收** - 确认后端正确接收到数据
2. **BO对象字段** - 检查BO中的关键字段值
3. **Entity转换** - 检查BO转Entity后字段是否丢失
4. **数据校验** - 定位具体在哪个字段校验时失败
## 📊 日志分析示例
### 正常情况的日志流程
```
前端:
🔍 [DEBUG] handleApprove 开始执行
🔍 [DEBUG] 传入的row数据: {"id": 123, "studentNo": "2021001", "studentName": "张三", ...}
🔍 [DEBUG] 关键字段检查:
- id: 123
- studentNo: 2021001
- studentName: 张三
- status: APPROVED
后端:
🔍 [DEBUG] Controller.edit 开始执行
🔍 [DEBUG] BO关键字段检查:
- id: 123
- studentNo: 2021001
- studentName: 张三
- status: APPROVED
🔍 [DEBUG] 数据库更新结果: true
```
### 异常情况的日志流程
```
前端:
🔍 [DEBUG] 准备更新的数据 updateData: {"id": 123, "studentNo": null, ...}
❌ [ERROR] handleApprove 出错: 请求失败
后端:
🔍 [DEBUG] BO关键字段检查:
- studentNo: null ← 发现问题
❌ [ERROR] 学生学号为空!
```
## 🎯 问题定位策略
### 根据日志定位问题环节
1. **如果前端 `传入的row数据` 中 `studentNo` 为空**
- 问题:表格数据源有问题
- 解决:检查列表查询接口
2. **如果 `getScholarshipApplication 响应` 中 `studentNo` 为空**
- 问题:详情查询接口返回数据不完整
- 解决:检查后端详情查询逻辑
3. **如果前端数据正常,但后端BO中 `studentNo` 为空**
- 问题:字段映射问题
- 解决:检查前后端字段名是否一致
4. **如果BO正常,但Entity中 `studentNo` 为空**
- 问题:BO到Entity转换问题
- 解决:检查MapStruct映射配置
## 📝 测试报告模板
请按以下格式提供测试结果:
```
### 测试环境
- 前端地址:http://localhost
- 后端地址:http://localhost:8080
- 测试时间:2025-01-XX XX:XX:XX
### 前端日志 (关键部分)
```
🔍 [DEBUG] 传入的row数据: {...}
🔍 [DEBUG] 关键字段检查:
- id: XXX
- studentNo: XXX
- studentName: XXX
```
### 后端日志 (关键部分)
```
🔍 [DEBUG] BO关键字段检查:
- id: XXX
- studentNo: XXX
- studentName: XXX
```
### 错误信息
```
❌ [ERROR] 具体错误信息
```
### 问题定位
- [ ] 前端表格数据正常
- [ ] 详情接口响应正常
- [ ] 前端发送数据正常
- [ ] 后端接收数据正常
- [ ] BO转Entity正常
- [ ] 数据校验通过
```
## 🚀 修复方案
根据日志分析结果,已实施以下修复:
1. **字段映射统一** - 前端统一使用 `status` 字段
2. **BO类增强** - 添加 `status` 字段并与 `currentStatus` 同步
3. **数据完整性** - 确保关键字段在整个流程中不丢失
测试完成后,如果问题仍然存在,请提供完整的日志信息以便进一步分析。