From 65c6651f36f292674ad5f3966937dd22e5968326 Mon Sep 17 00:00:00 2001
From: 龚焕茏 <2842157468@qq.com>
Date: 星期二, 16 七月 2024 09:07:35 +0800
Subject: [PATCH] feat:补考保留最高分
---
src/main/java/com/mindskip/xzs/viewmodel/admin/exam/ExamPaperPageRequestVM.java | 10 +++++
src/main/java/com/mindskip/xzs/repository/ExamPaperAnswerMapper.java | 15 +++++++
src/main/java/com/mindskip/xzs/service/impl/ExamPaperAnswerServiceImpl.java | 22 +++++++++++
src/main/resources/mapper/ExamPaperMapper.xml | 3 +
src/main/java/com/mindskip/xzs/listener/CalculateExamPaperAnswerListener.java | 8 ++-
src/main/java/com/mindskip/xzs/service/ExamPaperAnswerService.java | 6 +++
src/main/resources/mapper/ExamPaperAnswerMapper.xml | 11 +++++
7 files changed, 72 insertions(+), 3 deletions(-)
diff --git a/src/main/java/com/mindskip/xzs/listener/CalculateExamPaperAnswerListener.java b/src/main/java/com/mindskip/xzs/listener/CalculateExamPaperAnswerListener.java
index 6aac35e..5776629 100644
--- a/src/main/java/com/mindskip/xzs/listener/CalculateExamPaperAnswerListener.java
+++ b/src/main/java/com/mindskip/xzs/listener/CalculateExamPaperAnswerListener.java
@@ -58,15 +58,17 @@
List<ExamPaperQuestionCustomerAnswer> examPaperQuestionCustomerAnswers = examPaperAnswerInfo.getExamPaperQuestionCustomerAnswers();
examPaperAnswerService.insertByFilter(examPaperAnswer);
+
+ // 鏈�浼樻垚缁╂湁鏁堬紝鍏朵綑鏃犳晥
+ examPaperAnswerService.maxGrade(examPaperAnswer);
+
examPaperQuestionCustomerAnswers.stream().filter(a -> QuestionTypeEnum.needSaveTextContent(a.getQuestionType())).forEach(d -> {
TextContent textContent = new TextContent(d.getAnswer(), now);
textContentService.insertByFilter(textContent);
d.setTextContentId(textContent.getId());
d.setAnswer(null);
});
- examPaperQuestionCustomerAnswers.forEach(d -> {
- d.setExamPaperAnswerId(examPaperAnswer.getId());
- });
+ examPaperQuestionCustomerAnswers.forEach(d -> d.setExamPaperAnswerId(examPaperAnswer.getId()));
examPaperQuestionCustomerAnswerService.insertList(examPaperQuestionCustomerAnswers);
switch (ExamPaperTypeEnum.fromCode(examPaper.getPaperType())) {
diff --git a/src/main/java/com/mindskip/xzs/repository/ExamPaperAnswerMapper.java b/src/main/java/com/mindskip/xzs/repository/ExamPaperAnswerMapper.java
index 8fe8d1a..bfbbe5a 100644
--- a/src/main/java/com/mindskip/xzs/repository/ExamPaperAnswerMapper.java
+++ b/src/main/java/com/mindskip/xzs/repository/ExamPaperAnswerMapper.java
@@ -70,4 +70,19 @@
ExamPaperDataExportVO totalByPaper(ExamPaperDataVO examPaperDataVO);
Integer getExamTotal(ExamPaperStatisticVO examPaperStatisticVO);
+
+
+ /**
+ * 鏍规嵁绛斿嵎璇曞嵎id鑾峰彇鏈�楂樻垚缁╃瓟鍗�
+ * @param examPaperAnswer 绛斿嵎
+ * @return 鏈�楂樻垚缁╃瓟鍗�
+ */
+ ExamPaperAnswer getTemplateOtherExamAnswer(ExamPaperAnswer examPaperAnswer);
+
+ /**
+ * 鏍规嵁璇曞嵎id鑾峰彇鏈�楂樻垚缁╃瓟鍗�
+ * @param examPaperAnswer 绛斿嵎
+ * @return 鏈�楂樻垚缁╃瓟鍗�
+ */
+ ExamPaperAnswer getPaperOtherExamAnswer(ExamPaperAnswer examPaperAnswer);
}
diff --git a/src/main/java/com/mindskip/xzs/service/ExamPaperAnswerService.java b/src/main/java/com/mindskip/xzs/service/ExamPaperAnswerService.java
index c62006d..6f4211d 100644
--- a/src/main/java/com/mindskip/xzs/service/ExamPaperAnswerService.java
+++ b/src/main/java/com/mindskip/xzs/service/ExamPaperAnswerService.java
@@ -72,4 +72,10 @@
Map<String, Object> data(ExamPaperDataVO examPaperDataVO);
List<ExamPaperDataExportVO> dataExport(ExamPaperDataVO examPaperDataVO);
+
+ /**
+ * 鑾峰彇涔嬪墠鐨勬垚缁╋紝鍙栨渶浼樻垚缁�
+ * @param examPaperAnswer 鏈绛斿嵎
+ */
+ void maxGrade(ExamPaperAnswer examPaperAnswer);
}
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 3f362f2..efce24b 100644
--- a/src/main/java/com/mindskip/xzs/service/impl/ExamPaperAnswerServiceImpl.java
+++ b/src/main/java/com/mindskip/xzs/service/impl/ExamPaperAnswerServiceImpl.java
@@ -3,6 +3,7 @@
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.mindskip.xzs.domain.*;
+import com.mindskip.xzs.domain.enums.AnswerInvalidEnum;
import com.mindskip.xzs.domain.enums.ExamPaperAnswerStatusEnum;
import com.mindskip.xzs.domain.enums.ExamPaperTypeEnum;
import com.mindskip.xzs.domain.enums.QuestionTypeEnum;
@@ -401,4 +402,25 @@
return dataByPaper;
}
}
+
+ @Override
+ public void maxGrade(ExamPaperAnswer examPaperAnswer) {
+ // 鑾峰彇鏌愪竴鍦鸿�冭瘯鐨勬渶楂樻垚缁�
+ ExamPaperAnswer maxGrade;
+ if (Objects.equals(examPaperAnswer.getPaperType(), 7)) {
+ maxGrade = examPaperAnswerMapper.getTemplateOtherExamAnswer(examPaperAnswer);
+ } else {
+ maxGrade = examPaperAnswerMapper.getPaperOtherExamAnswer(examPaperAnswer);
+ }
+ // 鏈涓嶆槸鏈�楂樺垎
+ if (!Objects.equals(maxGrade.getId(), examPaperAnswer.getId())) {
+ // 涔嬪墠鐨勬垚缁╂湁鏁�
+ maxGrade.setInvalid(AnswerInvalidEnum.VALID);
+ examPaperAnswerMapper.updateByPrimaryKey(maxGrade);
+ // 鏈鐨勪笉鏄渶楂樺垎锛屾棤鏁�
+ examPaperAnswer.setInvalid(AnswerInvalidEnum.INVALID);
+ examPaperAnswerMapper.updateByPrimaryKey(examPaperAnswer);
+ }
+ }
+
}
diff --git a/src/main/java/com/mindskip/xzs/viewmodel/admin/exam/ExamPaperPageRequestVM.java b/src/main/java/com/mindskip/xzs/viewmodel/admin/exam/ExamPaperPageRequestVM.java
index be7a2b6..26fbfd6 100644
--- a/src/main/java/com/mindskip/xzs/viewmodel/admin/exam/ExamPaperPageRequestVM.java
+++ b/src/main/java/com/mindskip/xzs/viewmodel/admin/exam/ExamPaperPageRequestVM.java
@@ -21,6 +21,16 @@
private List<Integer> deptIds;
+ private String name;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
public List<Integer> getDeptIds() {
return deptIds;
}
diff --git a/src/main/resources/mapper/ExamPaperAnswerMapper.xml b/src/main/resources/mapper/ExamPaperAnswerMapper.xml
index bb5749d..9103800 100644
--- a/src/main/resources/mapper/ExamPaperAnswerMapper.xml
+++ b/src/main/resources/mapper/ExamPaperAnswerMapper.xml
@@ -657,5 +657,16 @@
)
</select>
+ <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>
+
+ <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
+ </select>
</mapper>
diff --git a/src/main/resources/mapper/ExamPaperMapper.xml b/src/main/resources/mapper/ExamPaperMapper.xml
index 514994d..587632c 100644
--- a/src/main/resources/mapper/ExamPaperMapper.xml
+++ b/src/main/resources/mapper/ExamPaperMapper.xml
@@ -276,6 +276,9 @@
<if test="type != null ">
and e.type= #{type}
</if>
+ <if test="name != null and name != ''">
+ AND INSTR(name, #{name})
+ </if>
</where>
group by e.id
</select>
--
Gitblit v1.8.0