From a820ec5dc1682ac0a31fcbdba3eb4d2c0fe74b64 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期二, 16 七月 2024 17:11:45 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/main/java/com/mindskip/xzs/repository/ExamPaperAnswerMapper.java | 2 +- src/main/java/com/mindskip/xzs/service/impl/ExamPaperAnswerServiceImpl.java | 14 +++++++------- src/main/resources/mapper/ExamTemplatesMapper.xml | 3 ++- src/main/java/com/mindskip/xzs/controller/student/ExamPaperAnswerController.java | 1 + src/main/java/com/mindskip/xzs/listener/CalculateExamPaperAnswerListener.java | 2 +- src/main/java/com/mindskip/xzs/service/ExamPaperAnswerService.java | 2 +- src/main/java/com/mindskip/xzs/domain/ExamPaperAnswerInfo.java | 9 +++++++++ src/main/java/com/mindskip/xzs/domain/vo/ExamTemplatesVO.java | 2 +- src/main/resources/mapper/ExamPaperAnswerMapper.xml | 10 ++++++---- 9 files changed, 29 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/mindskip/xzs/controller/student/ExamPaperAnswerController.java b/src/main/java/com/mindskip/xzs/controller/student/ExamPaperAnswerController.java index d08fe72..320f2f5 100644 --- a/src/main/java/com/mindskip/xzs/controller/student/ExamPaperAnswerController.java +++ b/src/main/java/com/mindskip/xzs/controller/student/ExamPaperAnswerController.java @@ -87,6 +87,7 @@ + " 寰楀垎锛�" + scoreVm + " 鑰楁椂锛�" + ExamUtil.secondToVM(examPaperAnswer.getDoTime()); userEventLog.setContent(content); + examPaperAnswerInfo.setTemplateId(examPaperSubmitVM.getTemplatesId()); eventPublisher.publishEvent(new CalculateExamPaperAnswerCompleteEvent(examPaperAnswerInfo)); eventPublisher.publishEvent(new UserEvent(userEventLog)); //棣栭〉闅忔満璇曞嵎鎿嶄綔 diff --git a/src/main/java/com/mindskip/xzs/domain/ExamPaperAnswerInfo.java b/src/main/java/com/mindskip/xzs/domain/ExamPaperAnswerInfo.java index dd705be..5e48d9a 100644 --- a/src/main/java/com/mindskip/xzs/domain/ExamPaperAnswerInfo.java +++ b/src/main/java/com/mindskip/xzs/domain/ExamPaperAnswerInfo.java @@ -7,6 +7,15 @@ 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; diff --git a/src/main/java/com/mindskip/xzs/domain/vo/ExamTemplatesVO.java b/src/main/java/com/mindskip/xzs/domain/vo/ExamTemplatesVO.java index 3d4423e..ab8904c 100644 --- a/src/main/java/com/mindskip/xzs/domain/vo/ExamTemplatesVO.java +++ b/src/main/java/com/mindskip/xzs/domain/vo/ExamTemplatesVO.java @@ -46,6 +46,6 @@ /** * 鏃堕棿鍛ㄦ湡 */ - private List<LocalDateTime> period; + private List<String> period; } diff --git a/src/main/java/com/mindskip/xzs/listener/CalculateExamPaperAnswerListener.java b/src/main/java/com/mindskip/xzs/listener/CalculateExamPaperAnswerListener.java index 5776629..b76f717 100644 --- a/src/main/java/com/mindskip/xzs/listener/CalculateExamPaperAnswerListener.java +++ b/src/main/java/com/mindskip/xzs/listener/CalculateExamPaperAnswerListener.java @@ -60,7 +60,7 @@ 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); diff --git a/src/main/java/com/mindskip/xzs/repository/ExamPaperAnswerMapper.java b/src/main/java/com/mindskip/xzs/repository/ExamPaperAnswerMapper.java index bfbbe5a..531b846 100644 --- a/src/main/java/com/mindskip/xzs/repository/ExamPaperAnswerMapper.java +++ b/src/main/java/com/mindskip/xzs/repository/ExamPaperAnswerMapper.java @@ -77,7 +77,7 @@ * @param examPaperAnswer 绛斿嵎 * @return 鏈�楂樻垚缁╃瓟鍗� */ - ExamPaperAnswer getTemplateOtherExamAnswer(ExamPaperAnswer examPaperAnswer); + ExamPaperAnswer getTemplateOtherExamAnswer(@Param("examPaperAnswer") ExamPaperAnswer examPaperAnswer, @Param("templateId") Integer templateId); /** * 鏍规嵁璇曞嵎id鑾峰彇鏈�楂樻垚缁╃瓟鍗� diff --git a/src/main/java/com/mindskip/xzs/service/ExamPaperAnswerService.java b/src/main/java/com/mindskip/xzs/service/ExamPaperAnswerService.java index 6f4211d..388a450 100644 --- a/src/main/java/com/mindskip/xzs/service/ExamPaperAnswerService.java +++ b/src/main/java/com/mindskip/xzs/service/ExamPaperAnswerService.java @@ -77,5 +77,5 @@ * 鑾峰彇涔嬪墠鐨勬垚缁╋紝鍙栨渶浼樻垚缁� * @param examPaperAnswer 鏈绛斿嵎 */ - void maxGrade(ExamPaperAnswer examPaperAnswer); + void maxGrade(ExamPaperAnswer examPaperAnswer, Integer templateId); } 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 deb23cf..4fd310a 100644 --- a/src/main/java/com/mindskip/xzs/service/impl/ExamPaperAnswerServiceImpl.java +++ b/src/main/java/com/mindskip/xzs/service/impl/ExamPaperAnswerServiceImpl.java @@ -404,25 +404,25 @@ } @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); } } diff --git a/src/main/resources/mapper/ExamPaperAnswerMapper.xml b/src/main/resources/mapper/ExamPaperAnswerMapper.xml index ea34ff9..6692f25 100644 --- a/src/main/resources/mapper/ExamPaperAnswerMapper.xml +++ b/src/main/resources/mapper/ExamPaperAnswerMapper.xml @@ -209,6 +209,9 @@ <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> @@ -659,14 +662,13 @@ <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> diff --git a/src/main/resources/mapper/ExamTemplatesMapper.xml b/src/main/resources/mapper/ExamTemplatesMapper.xml index 8dffc26..d685c3d 100644 --- a/src/main/resources/mapper/ExamTemplatesMapper.xml +++ b/src/main/resources/mapper/ExamTemplatesMapper.xml @@ -62,6 +62,7 @@ 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 @@ -73,7 +74,7 @@ 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}) -- Gitblit v1.8.0