diff --git a/src/main/java/com/sztzjy/financial_bigdata/controller/tea/TeaGradeManageController.java b/src/main/java/com/sztzjy/financial_bigdata/controller/tea/TeaGradeManageController.java
index 0368180..0b207c5 100644
--- a/src/main/java/com/sztzjy/financial_bigdata/controller/tea/TeaGradeManageController.java
+++ b/src/main/java/com/sztzjy/financial_bigdata/controller/tea/TeaGradeManageController.java
@@ -148,7 +148,16 @@ public class TeaGradeManageController {
                                                                         @RequestParam(required = false) String classId,
                                                                         @RequestParam(required = false) String examManageId) {
         List<TeaExamAndUserDto> list = getTeaExamAndUserDtos(schoolId, keyWord, classId, examManageId);
-        list.sort(new TeaGradeManageServiceImpl.StuUserDtoComparator()); //比较器按得分排序
+        // 先对列表按照 totalScore 进行降序排序
+        list.sort((a, b) -> {
+            BigDecimal scoreA = Optional.ofNullable(a.getTotalScore()).orElse(BigDecimal.ZERO);
+            BigDecimal scoreB = Optional.ofNullable(b.getTotalScore()).orElse(BigDecimal.ZERO);
+            return scoreB.compareTo(scoreA);
+        });
+        // 遍历排序后的列表,给每个对象设置 scoreRank 字段
+        for (int i = 0; i < list.size(); i++) {
+            list.get(i).setScoreRank(i + 1);  // 排名从1开始
+        }
         PageInfo<TeaExamAndUserDto> pageInfo = PageUtil.pageHelper(list, index, size);
         return new ResultEntity<>(pageInfo);
     }
@@ -162,7 +171,7 @@ public class TeaGradeManageController {
     }
 
 
-//    @GetMapping("/exportExam")
+    //    @GetMapping("/exportExam")
 //    @ApiOperation("考试模式--页面单个考试导出")
     public void exportExam() {
         //TODO 待写 页面单个考试导出
@@ -315,6 +324,8 @@ public class TeaGradeManageController {
         StuUserExample.Criteria stuUserCriteria = stuUserExample.createCriteria();
         StuUserExample.Criteria stuUserCriteria1 = stuUserExample.createCriteria();
         stuUserCriteria.andSchoolIdEqualTo(schoolId);
+        stuUserCriteria.andRoleIdEqualTo(4);
+        stuUserCriteria1.andRoleIdEqualTo(4);
         stuUserCriteria1.andSchoolIdEqualTo(schoolId);
         List<TeaExamAndUserDto> list = new ArrayList();
         if (StringUtils.isNotBlank(keyWord)) {
@@ -341,11 +352,22 @@ public class TeaGradeManageController {
             if (StringUtils.isNotBlank(examManageId)) {
                 studentExamCriteria.andExamManageIdEqualTo(examManageId);
             }
-            List<StuStudentExam> stuStudentExams = studentExamMapper.selectByExample(studentExamExample);
-            for (StuStudentExam stuStudentExam : stuStudentExams) {
-                teaExamAndUserDto.setObjectiveScore(stuStudentExam.getObjectiveScore());
-                teaExamAndUserDto.setCaseScore(stuStudentExam.getCaseScore());
-                teaExamAndUserDto.setTotalScore(stuStudentExam.getTotalScore());
+            StuStudentExamExample example = new StuStudentExamExample();
+            example.createCriteria().andUseridEqualTo(userid).andExamManageIdEqualTo(examManageId);
+            List<StuStudentExamWithBLOBs> stuStudentExams = studentExamMapper.selectByExampleWithBLOBs(example);
+            if (!stuStudentExams.isEmpty()) {
+                StuStudentExamWithBLOBs stuStudentExam = stuStudentExams.get(0);
+                if (stuStudentExam != null) {
+                    if (stuStudentExam.getObjectiveScore() != null) {
+                        teaExamAndUserDto.setObjectiveScore(stuStudentExam.getObjectiveScore());
+                    }
+                    if (stuStudentExam.getCaseScore() != null) {
+                        teaExamAndUserDto.setCaseScore(stuStudentExam.getCaseScore());
+                    }
+                    if (stuStudentExam.getTotalScore() != null) {
+                        teaExamAndUserDto.setTotalScore(stuStudentExam.getTotalScore());
+                    }
+                }
             }
             list.add(teaExamAndUserDto);
         }
diff --git a/src/main/java/com/sztzjy/financial_bigdata/service/tea/impl/TeaGradeManageServiceImpl.java b/src/main/java/com/sztzjy/financial_bigdata/service/tea/impl/TeaGradeManageServiceImpl.java
index 15a29db..e43ae66 100644
--- a/src/main/java/com/sztzjy/financial_bigdata/service/tea/impl/TeaGradeManageServiceImpl.java
+++ b/src/main/java/com/sztzjy/financial_bigdata/service/tea/impl/TeaGradeManageServiceImpl.java
@@ -51,6 +51,7 @@ public class TeaGradeManageServiceImpl implements ITeaGradeManageService {
     @Override
     public PageInfo<TeaTrainingInfoDTO> getTrainingInfo(Integer index, Integer size, String schoolId, String keyWord, String classId, String userId) {
         List<TeaTrainingInfoDTO> list = getTeaTrainingInfoDTOS(schoolId, keyWord, classId, userId);
+        assert list != null;
         list.sort(new TotalScoreComparator());
         int i = 0;
         for (TeaTrainingInfoDTO teaTrainingInfoDTO : list) {
@@ -362,8 +363,10 @@ public class TeaGradeManageServiceImpl implements ITeaGradeManageService {
                 //封装参数
                 BigDecimal chapterNum = sysCourseChapterMapper.selectChapterBySchoolId(schoolId);
                 if (totalScore.intValue() != 0) {
-                   BigDecimal score = totalScore.divide(chapterNum,2,RoundingMode.HALF_UP);//已完成的模块分数/总模块数量
+                    BigDecimal score = totalScore.divide(chapterNum, 2, RoundingMode.HALF_UP);//已完成的模块分数/总模块数量
                     teaTrainingInfoDTO.setTotalScore(score);
+                }else {
+                    teaTrainingInfoDTO.setTotalScore(BigDecimal.ZERO);
                 }
                 if (allProgress.intValue() != 0 && stuTrainings.size() != 0) {
                     BigDecimal divide = allProgress.divide(BigDecimal.valueOf(stuTrainings.size()), 2, RoundingMode.HALF_UP);
@@ -385,7 +388,7 @@ public class TeaGradeManageServiceImpl implements ITeaGradeManageService {
             } else if (o2 == null) {
                 return 1;
             } else {
-                return Integer.compare(o2.getTotalScore().intValueExact(), o1.getTotalScore().intValueExact());
+                return Integer.compare(o2.getTotalScore().intValue(), o1.getTotalScore().intValue());
             }
         }
     }