Эх сурвалжийг харах

兼容计算最终分数的历史数据

lideyin 5 жил өмнө
parent
commit
c9a8768524

+ 1 - 1
examcloud-core-oe-admin-api-provider/src/main/java/cn/com/qmth/examcloud/core/oe/admin/api/provider/ExamScoreDataCloudServiceProvider.java

@@ -413,7 +413,7 @@ public class ExamScoreDataCloudServiceProvider extends ControllerSupport impleme
                 examStudentFinalScoreService.getFinalEffectiveExamScore(examStudent.getExamStudentId());
 
         //如果查到最终有分数数据,则直接返回
-        if (finalExamScore != null) {
+        if (null != finalExamScore) {
             ScoreDataBean scoreDataBean = buildScoreDataBean(identityNumber, courseBean,
                     finalExamScore.getTotalScore(), finalExamScore.getExamRecordDataId());
             resp.setScoreDataBean(scoreDataBean);

+ 1 - 1
examcloud-core-oe-admin-service/src/main/java/cn/com/qmth/examcloud/core/oe/admin/service/ExamStudentFinalScoreService.java

@@ -9,7 +9,7 @@ import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamStudentFinalScoreEntit
  * @Version 1.0
  */
 public interface ExamStudentFinalScoreService {
-    void calculateFinalScore(Long examStudentId);
+    ExamStudentFinalScoreEntity calculateFinalScore(Long examStudentId);
 
     ExamStudentFinalScoreEntity getFinalEffectiveExamScore(Long examStudentId);
 }

+ 13 - 5
examcloud-core-oe-admin-service/src/main/java/cn/com/qmth/examcloud/core/oe/admin/service/impl/ExamStudentFinalScoreServiceImpl.java

@@ -40,7 +40,7 @@ public class ExamStudentFinalScoreServiceImpl implements ExamStudentFinalScoreSe
     private ExamStudentFinalScoreRepo examStudentFinalScoreRepo;
 
     @Override
-    public void calculateFinalScore(Long examStudentId) {
+    public ExamStudentFinalScoreEntity calculateFinalScore(Long examStudentId) {
         ExamStudentEntity examStudent = examStudentRepo.findByExamStudentId(examStudentId);
         String markingType = ExamCacheTransferHelper.
                 getDefaultCachedExamProperty(examStudent.getExamId(), ExamProperties.MARKING_TYPE.name()).getValue();
@@ -51,16 +51,23 @@ public class ExamStudentFinalScoreServiceImpl implements ExamStudentFinalScoreSe
         ExamScoreEntity finalEffectiveExamScore = getFinalEffectiveExamScore(allExamRecordDataList, examType, markingType);
 
         //保存最终考试结果
-        saveExamStudentFinalScore(examStudent.getExamStudentId(), finalEffectiveExamScore);
+        return saveExamStudentFinalScore(examStudent.getExamStudentId(), finalEffectiveExamScore);
     }
 
 
     @Override
     public ExamStudentFinalScoreEntity getFinalEffectiveExamScore(Long examStudentId) {
-        return examStudentFinalScoreRepo.findByExamStudentId(examStudentId);
+        ExamStudentFinalScoreEntity finalExamScore = examStudentFinalScoreRepo.findByExamStudentId(examStudentId);
+
+        if (null != finalExamScore) {
+            return finalExamScore;
+        }
+
+        //历史数据弥补:如果数据不存在,则重新计算并保存
+        return this.calculateFinalScore(examStudentId);
     }
 
-    private void saveExamStudentFinalScore(Long examStudentId, final ExamScoreEntity finalEffectiveExamScore) {
+    private ExamStudentFinalScoreEntity saveExamStudentFinalScore(Long examStudentId, final ExamScoreEntity finalEffectiveExamScore) {
         ExamStudentFinalScoreEntity finalScoreEntity
                 = examStudentFinalScoreRepo.findByExamStudentId(examStudentId);
         if (finalScoreEntity == null) {
@@ -75,7 +82,8 @@ public class ExamStudentFinalScoreServiceImpl implements ExamStudentFinalScoreSe
         finalScoreEntity.setSuccPercent(finalEffectiveExamScore.getSuccPercent());
         finalScoreEntity.setTotalScore(finalEffectiveExamScore.getTotalScore());
 
-        examStudentFinalScoreRepo.save(finalScoreEntity);
+        return examStudentFinalScoreRepo.save(finalScoreEntity);
+
     }