Browse Source

Merge remote-tracking branch 'origin/master' into dev_v5.0.3

deason 1 year ago
parent
commit
eddb1a8fac

+ 17 - 15
examcloud-core-oe-admin-api-provider/src/main/java/cn/com/qmth/examcloud/core/oe/admin/api/provider/SyncExamDataCloudServiceProvider.java

@@ -196,14 +196,6 @@ public class SyncExamDataCloudServiceProvider extends ControllerSupport implemen
 
         startTime = this.debugCost("5 同步考试分数表", transitionExamRecordDataId, startTime);
 
-        //计算最终分数
-        String examType = ExamCacheTransferHelper.getDefaultCachedExam(transitionExamRecordData.getExamId()).getExamType();
-        if (ExamType.ONLINE.name().equals(examType) || ExamType.ONLINE_HOMEWORK.name().equals(examType)
-                || ExamType.OFFLINE.name().equals(examType)) {
-            examStudentFinalScoreService.calcAndSaveFinalScore(examStudentId);
-        }
-
-        startTime = this.debugCost("6 计算最终考试分数", transitionExamRecordDataId, startTime);
 
         //同步断点续考记录表
         if (null != req.getExamContinuedRecords() && !req.getExamContinuedRecords().isEmpty()) {
@@ -226,7 +218,7 @@ public class SyncExamDataCloudServiceProvider extends ControllerSupport implemen
             }
         }
 
-        startTime = this.debugCost("7 同步抓拍照片结果(同步抓拍的数据)", transitionExamRecordDataId, startTime);
+        startTime = this.debugCost("6 同步抓拍照片结果(同步抓拍的数据)", transitionExamRecordDataId, startTime);
 
         //同步抓拍照片结果(异步抓拍的数据)
         if (null != req.getExamCaptures()) {
@@ -234,7 +226,7 @@ public class SyncExamDataCloudServiceProvider extends ControllerSupport implemen
             syncExamCapture(req.getExamCaptures(), realExamRecordDataId);
         }
 
-        startTime = this.debugCost("8 同步抓拍照片结果(异步抓拍的数据)", transitionExamRecordDataId, startTime);
+        startTime = this.debugCost("7 同步抓拍照片结果(异步抓拍的数据)", transitionExamRecordDataId, startTime);
 
         //同步face id活体检测数据
         if (null != req.getExamFaceLivenessVerifies()) {
@@ -242,7 +234,7 @@ public class SyncExamDataCloudServiceProvider extends ControllerSupport implemen
             syncExamFaceLivenessVerify(req.getExamFaceLivenessVerifies(), realExamRecordDataId);
         }
 
-        startTime = this.debugCost("9 同步face id活体检测数据", transitionExamRecordDataId, startTime);
+        startTime = this.debugCost("8 同步face id活体检测数据", transitionExamRecordDataId, startTime);
 
         //同步新活检
         if (null != req.getFaceBiopsy()) {
@@ -253,17 +245,17 @@ public class SyncExamDataCloudServiceProvider extends ControllerSupport implemen
         //同步C端活体检测记录
         syncFaceLiveVerifyRecords(req.getFaceLiveVerifyRecords(), realExamRecordDataId);
 
-        startTime = this.debugCost("10 同步face id活体检测数据", transitionExamRecordDataId, startTime);
+        startTime = this.debugCost("9 同步face id活体检测数据", transitionExamRecordDataId, startTime);
 
         //同步考试记录对应的试卷结构
         syncExamRecordPaperStruct(req.getExamRecordPaperStruct(), realExamRecordDataId);
 
-        startTime = this.debugCost("11 同步考试记录对应的试卷结构", transitionExamRecordDataId, startTime);
+        startTime = this.debugCost("10 同步考试记录对应的试卷结构", transitionExamRecordDataId, startTime);
 
         //同步作答记录
         syncExamRecordQuestions(req.getExamRecordQuestions(), realExamRecordDataId);
 
-        startTime = this.debugCost("12 同步作答记录", transitionExamRecordDataId, startTime);
+        startTime = this.debugCost("11 同步作答记录", transitionExamRecordDataId, startTime);
 
         //如果开启了活检
         if (FaceBiopsyHelper.isFaceEnable(transitionExamRecordData.getRootOrgId(), transitionExamRecordData.getExamId(), transitionExamRecordData.getStudentId())) {
@@ -272,10 +264,20 @@ public class SyncExamDataCloudServiceProvider extends ControllerSupport implemen
             saveAutoAudit(transitionExamRecordData, isNoPhotoAndIllegality, realExamRecordDataId);
         }
 
-        startTime = this.debugCost("13 如果开启了活检,计算违纪自动审核结果", transitionExamRecordDataId, startTime);
+        startTime = this.debugCost("12 如果开启了活检,计算违纪自动审核结果", transitionExamRecordDataId, startTime);
         
         //若开启审核全通过
         auditPassExamRecordData(transitionExamRecordData.getExamId(), realExamRecordDataId);
+        
+        //***************这个步骤必须放在最后,所有改变违纪、警告、审核状态的操作之后********************************
+        //计算最终分数
+        String examType = ExamCacheTransferHelper.getDefaultCachedExam(transitionExamRecordData.getExamId()).getExamType();
+        if (ExamType.ONLINE.name().equals(examType) || ExamType.ONLINE_HOMEWORK.name().equals(examType)
+                || ExamType.OFFLINE.name().equals(examType)) {
+            examStudentFinalScoreService.calcAndSaveFinalScore(examStudentId);
+        }
+
+        startTime = this.debugCost("13 计算最终考试分数", transitionExamRecordDataId, startTime);
 
         //同步后续处理
         processAfterSyncExamData(realExamRecordDataId, examScoreId, transitionExamRecordData.getObjectiveScore(),