{"code":500,"msg":"学生评分数据不能为空","data":null}
前端发送的API请求中,学生评分数据字段名为 studentData,但后端BO类 XgDormHygieneCheckCompleteBo 中期望的字段名为 studentScores,导致后端验证失败。
文件: web/src/api/xg/xgss/dormHygieneCheck/dormHygieneCheck/types.ts
修改内容:
// 修复前
export interface DormHygieneCheckCompleteForm extends DormHygieneCheckForm {
studentData?: DormHygieneStudentScoreForm[];
}
// 修复后
export interface DormHygieneCheckCompleteForm extends DormHygieneCheckForm {
studentScores?: DormHygieneStudentScoreForm[];
}
文件: web/src/views/xg/xgss/dormHygieneCheck/dormHygieneCheck/DormHygieneCheckDialog.vue
修改内容:
// 修复前
const studentData = roomStudents.value.map((student: any) => ({
studentId: student.studentId,
// ... 其他字段
}));
const submitData: DormHygieneCheckCompleteForm = {
...form,
studentData: studentData
};
// 修复后
const studentScores = roomStudents.value.map((student: any) => ({
studentId: Number(student.studentId), // 确保是数字类型
studentName: student.studentName,
studentNo: student.studentNo,
className: student.className,
majorName: student.majorName,
collegeName: student.collegeName,
bedId: student.bedId ? Number(student.bedId) : undefined,
bedCode: student.bedName,
studentScore: student.student_score ? Number(student.student_score) : undefined,
attendanceStatus: student.attendance_status,
studentGrade: student.student_grade,
isResponsiblePerson: student.isResponsiblePerson ? Number(student.isResponsiblePerson) : 0,
scoreRemarks: student.scoreRemarks || '',
improvementNotes: student.improvementNotes || ''
}));
const submitData: DormHygieneCheckCompleteForm = {
...form,
studentScores: studentScores
};
studentData → 修复后: studentScoresstudentScores ✅Number())Number())Number())@Valid
@NotEmpty(message = "学生评分数据不能为空", groups = { AddGroup.class, EditGroup.class })
private List<XgDormHygieneStudentScoreBo> studentScores;
{
"checkTitle": "20250816宿舍卫生检查",
"checkDate": "2025-08-16 13:31:58",
"checkerId": 1,
"checkerName": "疯狂的狮子1Li",
"checkType": "1",
"checkLevel": "1",
"roomId": "1947682802646568962",
"roomCode": "1101寝室",
"roomName": "1101寝室",
"buildingId": "1947658035881234434",
"buildingName": "1号楼",
"areaId": "1947656427264987137",
"areaName": "女生宿舍区",
"campusId": "1946815553291304962",
"campusName": "西溪校区",
"totalScore": "95",
"hygieneGrade": "A",
"attachmentIds": "1956710620841684994,1956710620841684995,1956710620841684996",
"checkSummary": "123",
"improvementSuggestions": "123",
"checkRemarks": "123123123",
"studentScores": [ // ✅ 修复:使用正确的字段名
{
"studentId": 1949111889824882689, // ✅ 修复:数字类型
"studentName": "张新",
"studentNo": "2025ZY24113",
"className": "中药241",
"majorName": "中药",
"collegeName": "人文学院",
"bedCode": "2上",
"studentScore": 95.0, // ✅ 修复:数字类型
"attendanceStatus": "1",
"studentGrade": "A",
"isResponsiblePerson": 0, // ✅ 修复:数字类型
"scoreRemarks": "",
"improvementNotes": ""
}
]
}
文件: test/宿舍卫生检查API修复测试.py
包含完整的测试数据和验证逻辑,可用于验证修复效果。
web/src/api/xg/xgss/dormHygieneCheck/dormHygieneCheck/types.tsweb/src/views/xg/xgss/dormHygieneCheck/dormHygieneCheck/DormHygieneCheckDialog.vuetest/宿舍卫生检查API修复测试.pydocs/开发文档/宿舍卫生检查API字段名修复报告.mdstudentScores通过修复前端字段名和数据类型,解决了"学生评分数据不能为空"的错误。主要修复点:
studentData → studentScores修复后,API请求应该能够正常通过后端验证,成功保存宿舍卫生检查记录和学生评分数据。