From 8cc9559b0a1509e655acf8f939318368a1fe95d6 Mon Sep 17 00:00:00 2001 From: 龚焕茏 <2842157468@qq.com> Date: 星期二, 02 七月 2024 10:58:34 +0800 Subject: [PATCH] feat:新增考试记录题目查看 --- src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java | 36 +++++++++++++++++++++--------------- 1 files changed, 21 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java b/src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java index 635e59f..b5cec94 100644 --- a/src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java +++ b/src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java @@ -32,6 +32,7 @@ import com.ycl.jxkg.rabbitmq.msg.ExamStatusMsg; import com.ycl.jxkg.rabbitmq.product.Producer; import com.ycl.jxkg.server.WebsocketServer; +import com.ycl.jxkg.service.ExamPaperScoreService; import com.ycl.jxkg.service.ExamPaperService; import com.ycl.jxkg.service.ExamService; import com.ycl.jxkg.utils.DateTimeUtil; @@ -70,6 +71,8 @@ private final WebsocketServer websocketServer; private final UserMapper userMapper; private final ExamPaperScoreMapper examPaperScoreMapper; + private final ExamPaperScoreService examPaperScoreService; + private final Producer producer; /** @@ -505,9 +508,8 @@ Date now = new Date(); one.setExamSubmit(JSON.toJSONString(submitData.getTitleList())); one.setUpdateTime(now); - long doTimeL = now.getTime() - one.getCreateTime().getTime(); - Integer doTime = (int) doTimeL; - one.setDoTime(doTime); + int doTimeInSeconds = (int) (now.getTime() - one.getCreateTime().getTime()) / 1000; + one.setDoTime(doTimeInSeconds); one.setStatus(status); examSubmitTempMapper.updateById(one); } else { @@ -541,7 +543,7 @@ // 鍙傝�冧絾鏈畬鎴愭彁浜や汉鏁� Integer joinButNotFinishedNum = Math.toIntExact(examSubmitTempList.stream().filter(item -> ExamSubmitTempStatusEnum.temp.equals(item.getStatus())).count()); - List<StudentExamInfoVO> studentExamList = classesUserMapper.getClassesUserList(exam.getClassesId()); + List<StudentExamInfoVO> studentExamList = classesUserMapper.getClassesUserList(exam.getId(), exam.getClassesId()); // 搴旇�冧汉鏁� Integer shouldUserNum = studentExamList.size(); @@ -656,7 +658,7 @@ if (StringUtils.isEmpty(doQuestionVO.getQuestionAnswer())) { return Result.fail(SystemCode.InnerError.getCode(), "棰樼洰id涓猴細" + doQuestionVO.getId() + "鐨勯鐩己灏戠瓟妗堬紝璇峰厛瀹屽杽"); } - trueOrFalse(score,doQuestionVO, navbarVO, doQuestionVO.getQuestionAnswer().equals(doQuestionVO.getAnswer())); + score = trueOrFalse(score, doQuestionVO, navbarVO, doQuestionVO.getQuestionAnswer().equals(doQuestionVO.getAnswer())); } /* 濡傛灉鏄閫� */ else if (QuestionTypeEnum.MultipleChoice.getCode().equals(questionType)) { @@ -672,7 +674,7 @@ List<String> questionAnswerList = Arrays.asList(questionAnswer.split(",")); //瀛︾敓绛旀涓虹┖锛屽垽鏂负閿� if (CollectionUtils.isEmpty(answerList)) { - trueOrFalse(score,doQuestionVO, navbarVO, false); + score = trueOrFalse(score, doQuestionVO, navbarVO, false); num++; navbar.add(navbarVO); continue; @@ -683,7 +685,7 @@ Set<String> set2 = new HashSet<>(questionAnswerList); //绛旀瀹屽叏涓�鑷达紝婊″垎 if (set1.equals(set2)) { - trueOrFalse(score,doQuestionVO, navbarVO, true); + score = trueOrFalse(score, doQuestionVO, navbarVO, true); num++; navbar.add(navbarVO); continue; @@ -693,20 +695,20 @@ } //濡傛灉澶氶�夊緱鍒嗙被鍨嬩负 绛旈敊涓嶅緱鍒� if (Integer.valueOf(DeductTypeEnum.AllCorrect.getCode()).equals(paperMarkVO.getDeductType())) { - trueOrFalse(score,doQuestionVO, navbarVO, false); + score = trueOrFalse(score, doQuestionVO, navbarVO, false); } //濡傛灉澶氶�夊緱鍒嗙被鍨嬩负 婕忛�夊緱鍥哄畾鍒嗗��,鍖呭惈閿欒閫夐」涓嶅緱鍒� else if (Integer.valueOf(DeductTypeEnum.PartCorrect.getCode()).equals(paperMarkVO.getDeductType())) { //瀛︾敓绛旀绉婚櫎鎵�鏈夋纭瓟妗堬紝濡傛灉杩樻湁鍏冪礌璇存槑鍖呭惈閿欒閫夐」 answerList.removeAll(questionAnswerList); if (!CollectionUtils.isEmpty(answerList)) { - trueOrFalse(score,doQuestionVO, navbarVO, false); + score = trueOrFalse(score, doQuestionVO, navbarVO, false); } else { navbarVO.setRight(false); doQuestionVO.setRight(false); //婕忛�夊緱鍥哄畾鍒� - score = score.add(paperMarkVO.getDeductScore()); doQuestionVO.setScore(paperMarkVO.getDeductScore()); + score = score.add(doQuestionVO.getScore()); } } //濡傛灉澶氶�夊緱鍒嗙被鍨嬩负 姣忓涓�棰樺緱鐩稿簲鍒嗗��,鍖呭惈閿欒閫夐」涓嶅緱鍒� @@ -714,12 +716,13 @@ //瀛︾敓绛旀绉婚櫎鎵�鏈夋纭瓟妗堬紝濡傛灉杩樻湁鍏冪礌璇存槑鍖呭惈閿欒閫夐」 answerList.removeAll(questionAnswerList); if (!CollectionUtils.isEmpty(answerList)) { - trueOrFalse(score,doQuestionVO, navbarVO, false); + score = trueOrFalse(score, doQuestionVO, navbarVO, false); } else { navbarVO.setRight(false); doQuestionVO.setRight(false); //婕忛�夊緱鍒� doQuestionVO.setScore(paperMarkVO.getDeductScore().multiply(new BigDecimal(answerCount))); + score = score.add(doQuestionVO.getScore()); } } } @@ -737,7 +740,7 @@ List<String> questionAnswerList = Arrays.asList(questionAnswer.split(",")); //瀛︾敓绛旀涓虹┖锛屽垽鏂负閿� if (CollectionUtils.isEmpty(answerList)) { - trueOrFalse(score,doQuestionVO, navbarVO, false); + score = trueOrFalse(score, doQuestionVO, navbarVO, false); num++; navbar.add(navbarVO); continue; @@ -746,7 +749,7 @@ int questionAnswerCount = questionAnswerList.size(); //绛旀瀹屽叏涓�鑷达紝婊″垎 if (answerList.equals(questionAnswerList)) { - trueOrFalse(score,doQuestionVO, navbarVO, true); + score = trueOrFalse(score, doQuestionVO, navbarVO, true); } else { navbarVO.setRight(false); doQuestionVO.setRight(false); @@ -764,6 +767,7 @@ //濉┖寰楀垎 BigDecimal gapScore = scoreEach.multiply(new BigDecimal(count)); doQuestionVO.setScore(gapScore); + score = score.add(doQuestionVO.getScore()); } } @@ -773,11 +777,12 @@ } paperMarkVO.setTitleItems(titleItems); paperMarkVO.setNavbar(navbar); + paperMarkVO.setScore(score + ""); return null; } //璁剧疆鍏ㄥ鎴栧叏閿� - private void trueOrFalse(BigDecimal score,DoQuestionVO doQuestionVO, ExamPaperMarkNavbarVO orderVO, Boolean isCorrect) { + private BigDecimal trueOrFalse(BigDecimal score, DoQuestionVO doQuestionVO, ExamPaperMarkNavbarVO orderVO, Boolean isCorrect) { if (isCorrect) { //姝g‘ orderVO.setRight(isCorrect); @@ -790,6 +795,7 @@ doQuestionVO.setRight(isCorrect); doQuestionVO.setScore(BigDecimal.ZERO); } + return score; } //灏佽闃呭嵎杩斿洖鏁版嵁 @@ -827,7 +833,7 @@ long questionCorrect = 0; long questionCount = 0; if (!CollectionUtils.isEmpty(examPaperMark.getNavbar())) { - questionCorrect = examPaperMark.getNavbar().stream().filter(ExamPaperMarkNavbarVO::getRight).count(); + questionCorrect = examPaperMark.getNavbar().stream().filter(vo -> vo.getRight()!=null && vo.getRight()).count(); questionCount = examPaperMark.getNavbar().size(); } examPaperScore.setQuestionCorrect(Integer.valueOf(questionCorrect + "")); -- Gitblit v1.8.0