From 93af1c6ffb9ae0e894689ad3a37b548e57d54cff Mon Sep 17 00:00:00 2001 From: linzhijie <19970921lzj> Date: 星期四, 11 三月 2021 19:10:07 +0800 Subject: [PATCH] 有注释的测评系统业务代码 --- src/main/java/com/ots/project/exam/service/impl/ExamPaperAnswerServiceImpl.java | 137 ++++++++++++++++++++++++++++++++------------- 1 files changed, 97 insertions(+), 40 deletions(-) diff --git a/src/main/java/com/ots/project/exam/service/impl/ExamPaperAnswerServiceImpl.java b/src/main/java/com/ots/project/exam/service/impl/ExamPaperAnswerServiceImpl.java index de8fd52..2e84856 100644 --- a/src/main/java/com/ots/project/exam/service/impl/ExamPaperAnswerServiceImpl.java +++ b/src/main/java/com/ots/project/exam/service/impl/ExamPaperAnswerServiceImpl.java @@ -1,4 +1,5 @@ package com.ots.project.exam.service.impl; + import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.ots.common.enums.QuestionTypeEnum; @@ -26,15 +27,18 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; + import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.stream.Collectors; + @Service public class ExamPaperAnswerServiceImpl implements ExamPaperAnswerService { private static final Logger log = LoggerFactory.getLogger(ExamPaperAnswerServiceImpl.class); + @Autowired private TExamPaperMapper examPaperMapper; @Autowired @@ -43,6 +47,7 @@ private ITTextContentService textContentService; @Autowired private TQuestionMapper questionMapper; + @Override public ExamPaperAnswerInfo calculateExamPaperAnswer(ExamPaperSubmitVM examPaperSubmitVM, ExamUser user) { ExamPaperAnswerInfo examPaperAnswerInfo = new ExamPaperAnswerInfo(); @@ -52,85 +57,103 @@ List<ExamPaperTitleItemObject> examPaperTitleItemObjects = JsonUtil.toJsonListObject(frameTextContent, ExamPaperTitleItemObject.class); List<Integer> questionIds = examPaperTitleItemObjects.stream().flatMap(t -> t.getQuestionItems().stream().map(q -> q.getId())).collect(Collectors.toList()); List<TQuestion> questions = questionMapper.selectByIds(questionIds); - + + // 鏄惁璺冲埌涓嬩竴娈� setWhichPart(examPaperSubmitVM, examPaperAnswerInfo, examPaperTitleItemObjects, questions); + examPaperAnswerInfo.setExamPaper(examPaper); + return examPaperAnswerInfo; } - + + // 鍒ゆ柇鏄惁璺冲埌涓嬩竴娈� private void setWhichPart(ExamPaperSubmitVM examPaperSubmitVM, ExamPaperAnswerInfo examPaperAnswerInfo, List<ExamPaperTitleItemObject> examPaperTitleItemObjects, List<TQuestion> questions) { - + // 鍒嗙墖涓嶈冻澶氬皯鍒嗕笉鑳界瓟棰�,绛旈鏈簲璇ョ殑鍒嗘暟鏄惁鍒颁簡闃�鍊笺�� if (Objects.isNull(examPaperSubmitVM.getPartOrder())) { return; } int answerPartOrder = examPaperSubmitVM.getPartOrder(); + SubmitReport submitReport = new SubmitReport(); if (Objects.isNull(answerPartOrder)) { submitReport.setJump("this"); examPaperAnswerInfo.setSubmitReport(submitReport); return; } - + + // 璁$畻鏄惁寰楀垎 List<ExamPaperSubmitItemVM> answerItems = examPaperSubmitVM.getAnswerItems(); - - + + // 鐢ㄦ埛绛旂殑閫夐」 + // (questionId, content绛旂殑椤�) Map<Integer, String> answerContentMap = getAnswerContentMap(answerItems); - + + // 鍘熷鍒嗙墖 Map<Integer, QuestionPart> partMap = getParts(examPaperTitleItemObjects); - - + + // 閭d竴棰樻槸閭d竴鐗� + // (questionId, partOrder) Map<Integer, Integer> questionPartOrdeMap = getQuestionPartOrdeMap(examPaperTitleItemObjects); - - + // 鐢ㄦ埛绛斿灏戝垎寰楀垎 + // (partOrder, score) Map<Integer, Integer> partAnswerScoreMap = new HashMap<>(); - - + // 鏈鏈潵搴旇寰楀灏戝垎 + // (partOrder, score) Map<Integer, Integer> partQuestionScoreMap = new HashMap<>(); - + // 鐢ㄦ埛鏈鑰楁椂 Map<Integer, Integer> partAnswerTimeMap = new HashMap<>(); + setAnswerScoreMap(questions, answerContentMap, questionPartOrdeMap, partAnswerScoreMap, partQuestionScoreMap); - - - - - - - - - - - - + // 鏈簲寰楀灏戝垎鍒颁簡闃�鍊笺�� +// System.out.println("鏈搴旇寰楀灏戝垎锛�" + partQuestionScoreMap.get(answerPartOrder)); +// System.out.println("鏈鏈�浣庡垎锛�" + partMap.get(answerPartOrder).getLowestScore()); +// System.out.println("鑷繁寰楀垎锛�" + partAnswerScoreMap.get(answerPartOrder)); +// if (Objects.nonNull(answerPartOrder) && partQuestionScoreMap.get(answerPartOrder) >= partMap.get(answerPartOrder).getLowestScore()) { +// if (partAnswerScoreMap.get(answerPartOrder) < partQuestionScoreMap.get(answerPartOrder)) { +// submitReport.setJump("next"); +// } else { +// submitReport.setJump("this"); +// } +// } else { +// submitReport.setJump("this"); +// } examPaperAnswerInfo.setSubmitReport(submitReport); - + // 鏃堕棿鐨勫垽鏂� + } + private void setAnswerScoreMap(List<TQuestion> questions, Map<Integer, String> answerContentMap, Map<Integer, Integer> questionPartOrdeMap, Map<Integer, Integer> partAnswerScoreMap, Map<Integer, Integer> partQuestionScoreMap) { for (TQuestion tQuestion : questions) { - + // 棰樼洰鐨勬 int partOrder = questionPartOrdeMap.get(tQuestion.getId().intValue()); - + + // 鍒濆鍊奸泦鍚� if (Objects.isNull(partQuestionScoreMap.get(partOrder))){ partQuestionScoreMap.put(partOrder, 0); } + if (Objects.isNull(partAnswerScoreMap.get(partOrder))) { partAnswerScoreMap.put(partOrder, 0); } - - + + // 鏈潵搴旇鐨勫灏戝垎 + // 鐢ㄦ埛鑳界瓟澶氬皯鍒嗗緱鍒� if (Objects.nonNull(answerContentMap.get(tQuestion.getId().intValue()))) { setAnswerScoreMap(partQuestionScoreMap, tQuestion, partOrder); } - - - + // 鍒嗘暟鐨勫垽鏂� +// System.out.println("棰樼洰鍙凤細" + tQuestion.getId().intValue()); +// System.out.println("棰樼洰鐨勬纭瓟妗堬細" + tQuestion.getCorrect()); +// System.out.println("鑷繁閫夋嫨锛�" + answerContentMap.get(tQuestion.getId().intValue())); if (Objects.equals(tQuestion.getCorrect(), answerContentMap.get(tQuestion.getId().intValue()))) { - + // 鐢ㄦ埛鑳界瓟澶氬皯鍒嗗緱鍒� setAnswerScoreMap(partAnswerScoreMap, tQuestion, partOrder); } } } + private Map<Integer, Integer> getQuestionPartOrdeMap(List<ExamPaperTitleItemObject> examPaperTitleItemObjects) { Map<Integer, Integer> questionPartOrdeMap = new HashMap<>(); for (ExamPaperTitleItemObject examPaperTitleItemObject : examPaperTitleItemObjects) { @@ -141,15 +164,17 @@ } return questionPartOrdeMap; } + private Map<Integer, QuestionPart> getParts(List<ExamPaperTitleItemObject> examPaperTitleItemObjects) { List<QuestionPart> parts = examPaperTitleItemObjects.get(0).getParts(); - + // (partOrder, questionPart) Map<Integer, QuestionPart> partMap = new HashMap<>(); for (QuestionPart questionPart : parts) { partMap.put(questionPart.getPartOrder(), questionPart); } return partMap; } + private Map<Integer, String> getAnswerContentMap(List<ExamPaperSubmitItemVM> answerItems) { Map<Integer, String> answerContentMap = new HashMap<>(); answerItems.stream().forEach(answerItem ->{ @@ -157,6 +182,7 @@ }); return answerContentMap; } + private void setAnswerScoreMap(Map<Integer, Integer> partQuestionScoreMap, TQuestion tQuestion, int partOrder) { int questonScore = Objects.nonNull(tQuestion.getScore()) ? tQuestion.getScore().intValue() : 0; if (Objects.nonNull(partQuestionScoreMap.get(partOrder))) { @@ -166,13 +192,24 @@ partQuestionScoreMap.put(partOrder, questonScore); } } - + + /** + * 鐢ㄦ埛鎻愪氦绛旀鐨勮浆鍖栧瓨鍌ㄥ璞� + * + * @param question question + * @param customerQuestionAnswer customerQuestionAnswer + * @param examPaper examPaper + * @param itemOrder itemOrder + * @param user user + * @param now now + * @return ExamPaperQuestionCustomerAnswer + */ private ExamPaperQuestionCustomerAnswer ExamPaperQuestionCustomerAnswerFromVM(TQuestion question, ExamPaperSubmitItemVM customerQuestionAnswer, TExamPaper examPaper, Integer itemOrder, ExamUser user, Date now) { ExamPaperQuestionCustomerAnswer examPaperQuestionCustomerAnswer = new ExamPaperQuestionCustomerAnswer(); examPaperQuestionCustomerAnswer.setQuestionId(question.getId().intValue()); examPaperQuestionCustomerAnswer.setExamPaperId(examPaper.getId().intValue()); - - + // examPaperQuestionCustomerAnswer.setWhichPart(question.getScore().intValue()); + // examPaperQuestionCustomerAnswer.setSubjectId(examPaper.getSubjectId().intValue()); examPaperQuestionCustomerAnswer.setItemOrder(itemOrder); examPaperQuestionCustomerAnswer.setCreateTime(now); examPaperQuestionCustomerAnswer.setCreateUser(user.getId()); @@ -185,7 +222,14 @@ } return examPaperQuestionCustomerAnswer; } - + + /** + * 鍒ゆ柇鎻愪氦绛旀鏄惁姝g‘锛屼繚鐣欑敤鎴锋彁浜ょ殑绛旀 + * + * @param examPaperQuestionCustomerAnswer examPaperQuestionCustomerAnswer + * @param question question + * @param customerQuestionAnswer customerQuestionAnswer + */ private void setSpecialFromVM(ExamPaperQuestionCustomerAnswer examPaperQuestionCustomerAnswer, TQuestion question, ExamPaperSubmitItemVM customerQuestionAnswer) { QuestionTypeEnum questionTypeEnum = QuestionTypeEnum.fromCode(examPaperQuestionCustomerAnswer.getQuestionType()); switch (questionTypeEnum) { @@ -212,47 +256,60 @@ break; } } + + @Override public PageInfo<ExamPaperAnswer> studentPage(ExamPaperAnswerPageVM requestVM) { return PageHelper.startPage(requestVM.getPageIndex(), requestVM.getPageSize(), "id desc").doSelectPageInfo(() -> examPaperAnswerMapper.studentPage(requestVM)); } + + @Override public String judge(ExamPaperSubmitVM examPaperSubmitVM) { return null; } + @Override public ExamPaperSubmitVM examPaperAnswerToVM(Integer id) { return null; } + @Override public Integer selectAllCount() { return null; } + @Override public List<Integer> selectMothCount() { return null; } + @Override public int deleteById(Integer id) { return 0; } + @Override public int insert(ExamPaperAnswer record) { return examPaperAnswerMapper.insertSelective(record); } + @Override public int insertByFilter(ExamPaperAnswer record) { return examPaperAnswerMapper.insertSelective(record); } + @Override public ExamPaperAnswer selectById(Integer id) { return null; } + @Override public int updateByIdFilter(ExamPaperAnswer record) { return 0; } + @Override public int updateById(ExamPaperAnswer record) { return 0; -- Gitblit v1.9.1