From a820ec5dc1682ac0a31fcbdba3eb4d2c0fe74b64 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期二, 16 七月 2024 17:11:45 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 src/main/java/com/mindskip/xzs/repository/ExamPaperAnswerMapper.java             |    2 +-
 src/main/java/com/mindskip/xzs/service/impl/ExamPaperAnswerServiceImpl.java      |   14 +++++++-------
 src/main/resources/mapper/ExamTemplatesMapper.xml                                |    3 ++-
 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/java/com/mindskip/xzs/domain/vo/ExamTemplatesVO.java                    |    2 +-
 src/main/resources/mapper/ExamPaperAnswerMapper.xml                              |   10 ++++++----
 9 files changed, 29 insertions(+), 16 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/domain/vo/ExamTemplatesVO.java b/src/main/java/com/mindskip/xzs/domain/vo/ExamTemplatesVO.java
index 3d4423e..ab8904c 100644
--- a/src/main/java/com/mindskip/xzs/domain/vo/ExamTemplatesVO.java
+++ b/src/main/java/com/mindskip/xzs/domain/vo/ExamTemplatesVO.java
@@ -46,6 +46,6 @@
     /**
      * 鏃堕棿鍛ㄦ湡
      */
-    private List<LocalDateTime> period;
+    private List<String> period;
 
 }
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>
diff --git a/src/main/resources/mapper/ExamTemplatesMapper.xml b/src/main/resources/mapper/ExamTemplatesMapper.xml
index 8dffc26..d685c3d 100644
--- a/src/main/resources/mapper/ExamTemplatesMapper.xml
+++ b/src/main/resources/mapper/ExamTemplatesMapper.xml
@@ -62,6 +62,7 @@
         left join t_exam_templates_user u on e.id = u.templates_id
         LEFT JOIN t_exam_templates_subject ts ON e.id = ts.templates_id
         LEFT JOIN t_subject s ON ts.subject_id = s.id
+        LEFT JOIN t_user_department tud ON e.create_user = tud.user_id
         <where>
             <if test="status != null">
                 and e.status = 0
@@ -73,7 +74,7 @@
                 and u.user_id = #{userId}
             </if>
             <if test="deptId != null and deptId.size() > 0">
-                and e.dept_id in <foreach collection="deptId" item="item" separator="," open="(" close=")"> #{item} </foreach>
+                and tud.department_id in <foreach collection="deptId" item="item" separator="," open="(" close=")"> #{item} </foreach>
             </if>
             <if test="name != null and name != ''">
                 and INSTR(e.name, #{name})

--
Gitblit v1.8.0