Ver código fonte

修复 交卷。

tom 5 meses atrás
pai
commit
924f55267f

+ 43 - 5
ruoyi-sim/src/main/java/com/ruoyi/sim/service/impl/CommSendService.java

@@ -9,6 +9,7 @@ import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.io.IOException;
 import java.io.InputStream;
@@ -154,16 +155,53 @@ public class CommSendService {
             readOneFaultResistance(s, ref, f);
         });
 
-        // realExamService.updateOneState(re.getExamId(), RealExam.State.SUBMITTED);
+        submit(re.getExamId());
         {
-            RealExam re1 = realExamService.selectRealExamByExamId(re.getExamId());
-            re.setExamStatus(RealExam.State.SUBMITTED);
-            re.setEndTime(DateUtils.getNowDate());
-            realExamService.updateRealExam(re1);
+            calculateScoreAsync(re.getExamId());
         }
     }
 
     /**
+     * @param examId
+     */
+    @Transactional
+    public void submit(long examId) {
+        l.info("submit");
+        RealExam re1 = realExamService.selectRealExamByExamId(examId);
+        re1.setExamStatus(RealExam.State.SUBMITTED);
+        re1.setEndTime(DateUtils.getNowDate());
+        realExamService.updateRealExam(re1);
+    }
+
+    @Async("tp-comm")
+    public void readOneExamAtLastAsync(RealExam re) {
+        readOneExamAtLast(re);
+    }
+
+    // todo:
+    // @Async
+    public void calculateScoreAsync(Long realExamId) {
+        calculateScore(realExamId);
+    }
+
+    /**
+     * 计算减分(不包括超时)。汇总到deduction_total_score字段。
+     *
+     * @param realExamId
+     */
+    public void calculateScore(Long realExamId) {
+        realExamService.updateOneState(realExamId, RealExam.State.CALCULATING_SCORE);
+        int minus = 0;
+        // 排除故障部分 + 维修报告选择部分
+        realExamFaultService.calculateMinusByRealExamId(realExamId);
+        // 超时部分
+        int timeoutMinute = 0;
+        //
+        realExamService.updateOneState(realExamId, RealExam.State.GOT_REPORT);
+    }
+
+
+    /**
      * todo:????
      * 定时任务。
      */

+ 1 - 0
ruoyi-sim/src/main/java/com/ruoyi/sim/service/impl/RealExamFaultService.java

@@ -236,6 +236,7 @@ public class RealExamFaultService {
         RealExamFault q = new RealExamFault();
         q.setExamId(examId);
         q.setRefType(RealExamFault.Type.TYPE_2);
+        q.setFlag(RealExamFault.Flag.YES);
         List<RealExamFault> list1 = selectRealExamFaultList(q);
         List<RealExamFaultVo> list2 = new ArrayList<>();
         list1.forEach(ref -> {

+ 2 - 24
ruoyi-sim/src/main/java/com/ruoyi/sim/service/impl/RealExamService.java

@@ -151,28 +151,6 @@ public class RealExamService {
     }
 
     /**
-     * 计算减分(不包括超时)。汇总到deduction_total_score字段。
-     *
-     * @param realExamId
-     */
-    public void calculateScore(Long realExamId) {
-        updateOneState(realExamId, RealExam.State.CALCULATING_SCORE);
-        int minus = 0;
-        // 排除故障部分 + 维修报告选择部分
-        realExamFaultService.calculateMinusByRealExamId(realExamId);
-        // 超时部分
-        int timeoutMinute = 0;
-        //
-        updateOneState(realExamId, RealExam.State.GOT_REPORT);
-    }
-
-    // todo:
-    // @Async
-    public void calculateScoreAsync(Long realExamId) {
-        calculateScore(realExamId);
-    }
-
-    /**
      * [学生]进入考试。
      *
      * @return
@@ -311,8 +289,8 @@ public class RealExamService {
         // 最后读取一下模拟器电阻值。
         // todo:
         RealExam re1 = selectRealExamByExamId(examId);
-        commSendService.readOneExamAtLast(re1);
-        calculateScoreAsync(examId);
+        commSendService.readOneExamAtLastAsync(re1);
+
         return AjaxResult.success(re1);
     }