From b3b8de1b34dacee4c569fb46c27493a3d9125232 Mon Sep 17 00:00:00 2001
From: 龚焕茏 <2842157468@qq.com>
Date: 星期二, 16 七月 2024 15:15:36 +0800
Subject: [PATCH] fix:补考最高分-本次未提交成绩查不到,改为传值判断

---
 src/main/java/com/mindskip/xzs/repository/ExamPaperAnswerMapper.java             |    2 +-
 src/main/java/com/mindskip/xzs/service/impl/ExamPaperAnswerServiceImpl.java      |   14 +++++++-------
 src/main/java/com/mindskip/xzs/controller/student/ExamPaperAnswerController.java |    1 +
 src/main/java/com/mindskip/xzs/listener/CalculateExamPaperAnswerListener.java    |    2 +-
 src/main/java/com/mindskip/xzs/service/ExamPaperAnswerService.java               |    2 +-
 src/main/java/com/mindskip/xzs/domain/ExamPaperAnswerInfo.java                   |    9 +++++++++
 src/main/resources/mapper/ExamPaperAnswerMapper.xml                              |   10 ++++++----
 7 files changed, 26 insertions(+), 14 deletions(-)

diff --git a/src/main/java/com/mindskip/xzs/controller/student/ExamPaperAnswerController.java b/src/main/java/com/mindskip/xzs/controller/student/ExamPaperAnswerController.java
index d08fe72..320f2f5 100644
--- a/src/main/java/com/mindskip/xzs/controller/student/ExamPaperAnswerController.java
+++ b/src/main/java/com/mindskip/xzs/controller/student/ExamPaperAnswerController.java
@@ -87,6 +87,7 @@
                 + " 寰楀垎锛�" + scoreVm
                 + " 鑰楁椂锛�" + ExamUtil.secondToVM(examPaperAnswer.getDoTime());
         userEventLog.setContent(content);
+        examPaperAnswerInfo.setTemplateId(examPaperSubmitVM.getTemplatesId());
         eventPublisher.publishEvent(new CalculateExamPaperAnswerCompleteEvent(examPaperAnswerInfo));
         eventPublisher.publishEvent(new UserEvent(userEventLog));
         //棣栭〉闅忔満璇曞嵎鎿嶄綔
diff --git a/src/main/java/com/mindskip/xzs/domain/ExamPaperAnswerInfo.java b/src/main/java/com/mindskip/xzs/domain/ExamPaperAnswerInfo.java
index dd705be..5e48d9a 100644
--- a/src/main/java/com/mindskip/xzs/domain/ExamPaperAnswerInfo.java
+++ b/src/main/java/com/mindskip/xzs/domain/ExamPaperAnswerInfo.java
@@ -7,6 +7,15 @@
     public ExamPaper examPaper;
     public ExamPaperAnswer examPaperAnswer;
     public List<ExamPaperQuestionCustomerAnswer> examPaperQuestionCustomerAnswers;
+    public Integer templateId;
+
+    public Integer getTemplateId() {
+        return templateId;
+    }
+
+    public void setTemplateId(Integer templateId) {
+        this.templateId = templateId;
+    }
 
     public ExamPaper getExamPaper() {
         return examPaper;
diff --git a/src/main/java/com/mindskip/xzs/listener/CalculateExamPaperAnswerListener.java b/src/main/java/com/mindskip/xzs/listener/CalculateExamPaperAnswerListener.java
index 5776629..b76f717 100644
--- a/src/main/java/com/mindskip/xzs/listener/CalculateExamPaperAnswerListener.java
+++ b/src/main/java/com/mindskip/xzs/listener/CalculateExamPaperAnswerListener.java
@@ -60,7 +60,7 @@
         examPaperAnswerService.insertByFilter(examPaperAnswer);
 
         // 鏈�浼樻垚缁╂湁鏁堬紝鍏朵綑鏃犳晥
-        examPaperAnswerService.maxGrade(examPaperAnswer);
+        examPaperAnswerService.maxGrade(examPaperAnswer, examPaperAnswerInfo.getTemplateId());
 
         examPaperQuestionCustomerAnswers.stream().filter(a -> QuestionTypeEnum.needSaveTextContent(a.getQuestionType())).forEach(d -> {
             TextContent textContent = new TextContent(d.getAnswer(), now);
diff --git a/src/main/java/com/mindskip/xzs/repository/ExamPaperAnswerMapper.java b/src/main/java/com/mindskip/xzs/repository/ExamPaperAnswerMapper.java
index bfbbe5a..531b846 100644
--- a/src/main/java/com/mindskip/xzs/repository/ExamPaperAnswerMapper.java
+++ b/src/main/java/com/mindskip/xzs/repository/ExamPaperAnswerMapper.java
@@ -77,7 +77,7 @@
      * @param examPaperAnswer 绛斿嵎
      * @return 鏈�楂樻垚缁╃瓟鍗�
      */
-    ExamPaperAnswer getTemplateOtherExamAnswer(ExamPaperAnswer examPaperAnswer);
+    ExamPaperAnswer getTemplateOtherExamAnswer(@Param("examPaperAnswer") ExamPaperAnswer examPaperAnswer, @Param("templateId") Integer templateId);
 
     /**
      * 鏍规嵁璇曞嵎id鑾峰彇鏈�楂樻垚缁╃瓟鍗�
diff --git a/src/main/java/com/mindskip/xzs/service/ExamPaperAnswerService.java b/src/main/java/com/mindskip/xzs/service/ExamPaperAnswerService.java
index 6f4211d..388a450 100644
--- a/src/main/java/com/mindskip/xzs/service/ExamPaperAnswerService.java
+++ b/src/main/java/com/mindskip/xzs/service/ExamPaperAnswerService.java
@@ -77,5 +77,5 @@
      * 鑾峰彇涔嬪墠鐨勬垚缁╋紝鍙栨渶浼樻垚缁�
      * @param examPaperAnswer 鏈绛斿嵎
      */
-    void maxGrade(ExamPaperAnswer examPaperAnswer);
+    void maxGrade(ExamPaperAnswer examPaperAnswer, Integer templateId);
 }
diff --git a/src/main/java/com/mindskip/xzs/service/impl/ExamPaperAnswerServiceImpl.java b/src/main/java/com/mindskip/xzs/service/impl/ExamPaperAnswerServiceImpl.java
index deb23cf..4fd310a 100644
--- a/src/main/java/com/mindskip/xzs/service/impl/ExamPaperAnswerServiceImpl.java
+++ b/src/main/java/com/mindskip/xzs/service/impl/ExamPaperAnswerServiceImpl.java
@@ -404,25 +404,25 @@
     }
 
     @Override
-    public void maxGrade(ExamPaperAnswer examPaperAnswer) {
-        // 鑾峰彇鏌愪竴鍦鸿�冭瘯鐨勬渶楂樻垚缁�
+    public void maxGrade(ExamPaperAnswer examPaperAnswer, Integer templateId) {
+        // 鑾峰彇鏌愪竴鍦鸿�冭瘯鏇剧粡鐨勬渶楂樻垚缁�
         ExamPaperAnswer maxGrade;
         if (Objects.equals(examPaperAnswer.getPaperType(), 7)) {
-            maxGrade = examPaperAnswerMapper.getTemplateOtherExamAnswer(examPaperAnswer);
+            maxGrade = examPaperAnswerMapper.getTemplateOtherExamAnswer(examPaperAnswer, templateId);
         } else {
             maxGrade = examPaperAnswerMapper.getPaperOtherExamAnswer(examPaperAnswer);
         }
         if (Objects.isNull(maxGrade)) {
             return;
         }
-        // 鏈涓嶆槸鏈�楂樺垎
-        if (!Objects.equals(maxGrade.getId(), examPaperAnswer.getId())) {
+        // 鏈鑰冭瘯鍒嗘暟涓嶅涔嬪墠锛屾湰娆℃棤鏁�
+        if (maxGrade.getUserScore() > examPaperAnswer.getUserScore()) {
             // 涔嬪墠鐨勬垚缁╂湁鏁�
             maxGrade.setInvalid(AnswerInvalidEnum.VALID);
-            examPaperAnswerMapper.updateByPrimaryKey(maxGrade);
+            examPaperAnswerMapper.updateByPrimaryKeySelective(maxGrade);
             // 鏈鐨勪笉鏄渶楂樺垎锛屾棤鏁�
             examPaperAnswer.setInvalid(AnswerInvalidEnum.INVALID);
-            examPaperAnswerMapper.updateByPrimaryKey(examPaperAnswer);
+            examPaperAnswerMapper.updateByPrimaryKeySelective(examPaperAnswer);
         }
     }
 
diff --git a/src/main/resources/mapper/ExamPaperAnswerMapper.xml b/src/main/resources/mapper/ExamPaperAnswerMapper.xml
index ea34ff9..6692f25 100644
--- a/src/main/resources/mapper/ExamPaperAnswerMapper.xml
+++ b/src/main/resources/mapper/ExamPaperAnswerMapper.xml
@@ -209,6 +209,9 @@
       <if test="taskExamId != null">
         task_exam_id = #{taskExamId,jdbcType=INTEGER},
       </if>
+      <if test="invalid != null">
+        invalid = #{invalid},
+      </if>
     </set>
     where id = #{id,jdbcType=INTEGER}
   </update>
@@ -659,14 +662,13 @@
 
   <select id="getTemplateOtherExamAnswer" resultType="com.mindskip.xzs.domain.ExamPaperAnswer">
     SELECT id, user_score FROM t_exam_paper_answer WHERE exam_paper_id IN
-        (SELECT exam_paper_id FROM t_exam_templates_user_count WHERE user_id = #{createUser} AND exam_templates_id =
-            (SELECT exam_templates_id FROM t_exam_templates_user_count WHERE exam_paper_id = #{examPaperId} LIMIT 1))
-    HAVING MAX(user_score) ORDER BY create_time DESC LIMIT 1
+        (SELECT exam_paper_id FROM t_exam_templates_user_count WHERE user_id = #{examPaperAnswer.createUser} AND exam_templates_id = #{templateId})
+    ORDER BY user_score DESC LIMIT 1
   </select>
 
   <select id="getPaperOtherExamAnswer" resultType="com.mindskip.xzs.domain.ExamPaperAnswer">
     SELECT id, user_score FROM t_exam_paper_answer WHERE exam_paper_id = #{examPaperId} AND create_user = #{createUser}
-    HAVING MAX(user_score) ORDER BY create_time DESC LIMIT 1
+    ORDER BY user_score DESC LIMIT 1
   </select>
 
 </mapper>

--
Gitblit v1.8.0