Merge remote-tracking branch 'origin/master'
| | |
| | | + " 得分:" + scoreVm |
| | | + " 耗时:" + ExamUtil.secondToVM(examPaperAnswer.getDoTime()); |
| | | userEventLog.setContent(content); |
| | | examPaperAnswerInfo.setTemplateId(examPaperSubmitVM.getTemplatesId()); |
| | | eventPublisher.publishEvent(new CalculateExamPaperAnswerCompleteEvent(examPaperAnswerInfo)); |
| | | eventPublisher.publishEvent(new UserEvent(userEventLog)); |
| | | //首页随机试卷操作 |
| | |
| | | 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; |
| | |
| | | /** |
| | | * 时间周期 |
| | | */ |
| | | private List<LocalDateTime> period; |
| | | private List<String> period; |
| | | |
| | | } |
| | |
| | | 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); |
| | |
| | | * @param examPaperAnswer 答卷 |
| | | * @return 最高成绩答卷 |
| | | */ |
| | | ExamPaperAnswer getTemplateOtherExamAnswer(ExamPaperAnswer examPaperAnswer); |
| | | ExamPaperAnswer getTemplateOtherExamAnswer(@Param("examPaperAnswer") ExamPaperAnswer examPaperAnswer, @Param("templateId") Integer templateId); |
| | | |
| | | /** |
| | | * 根据试卷id获取最高成绩答卷 |
| | |
| | | * 获取之前的成绩,取最优成绩 |
| | | * @param examPaperAnswer 本次答卷 |
| | | */ |
| | | void maxGrade(ExamPaperAnswer examPaperAnswer); |
| | | void maxGrade(ExamPaperAnswer examPaperAnswer, Integer templateId); |
| | | } |
| | |
| | | } |
| | | |
| | | @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); |
| | | } |
| | | } |
| | | |
| | |
| | | <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> |
| | |
| | | |
| | | <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> |
| | |
| | | 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 |
| | |
| | | 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}) |