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