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())) { 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); } 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); } 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); } } } 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; } 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> 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>