龚焕茏
2024-07-16 65c6651f36f292674ad5f3966937dd22e5968326
feat:补考保留最高分
7个文件已修改
75 ■■■■■ 已修改文件
src/main/java/com/mindskip/xzs/listener/CalculateExamPaperAnswerListener.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/repository/ExamPaperAnswerMapper.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/service/ExamPaperAnswerService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/service/impl/ExamPaperAnswerServiceImpl.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/viewmodel/admin/exam/ExamPaperPageRequestVM.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/ExamPaperAnswerMapper.xml 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/ExamPaperMapper.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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>