| | |
| | | import com.mindskip.xzs.base.RestResponse; |
| | | import com.mindskip.xzs.context.WebContext; |
| | | import com.mindskip.xzs.domain.ExamPaperAnswer; |
| | | import com.mindskip.xzs.domain.PracticeQuestionCondition; |
| | | import com.mindskip.xzs.domain.Question; |
| | | import com.mindskip.xzs.domain.SelfPractice; |
| | | import com.mindskip.xzs.domain.enums.PracticeQuestionTypeEnum; |
| | |
| | | import com.mindskip.xzs.domain.vo.QuestionVO; |
| | | import com.mindskip.xzs.domain.vo.SelfPracticeVO; |
| | | import com.mindskip.xzs.domain.vo.SubjectQuestionVO; |
| | | import com.mindskip.xzs.repository.QuestionMapper; |
| | | import com.mindskip.xzs.repository.QuestionSubjectMapper; |
| | | import com.mindskip.xzs.repository.SelfPracticeMapper; |
| | | import com.mindskip.xzs.repository.SubjectMapper; |
| | | import com.mindskip.xzs.repository.*; |
| | | import com.mindskip.xzs.service.SelfPracticeService; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.beans.BeanUtils; |
| | |
| | | private final WebContext webContext; |
| | | private final QuestionSubjectMapper questionSubjectMapper; |
| | | private final SubjectMapper subjectMapper; |
| | | private final QuestionMapper questionMapper; |
| | | private final PracticeQuestionConditionMapper practiceQuestionConditionMapper; |
| | | |
| | | @Override |
| | | public RestResponse add(SelfPracticeVO vo) { |
| | |
| | | PageInfo<SelfPracticeVO> info = PageHelper.startPage(query.getPageNum(), query.getPageSize()).doSelectPageInfo(() -> |
| | | selfPracticeMapper.page(query)); |
| | | info.getList().stream().forEach(item -> { |
| | | // 查询课目名、课目总体数 |
| | | List<Integer> subjects = JSON.parseArray(item.getSubjectString(), Integer.class); |
| | | item.setSubjects(subjects); |
| | | List<String> subjectNames = subjectMapper.selectSubjectName(subjects); |
| | |
| | | item.setSubjectNames(subjectNames.stream().collect(Collectors.joining("、"))); |
| | | } |
| | | item.setTotalQuestionNum(questionSubjectMapper.countQuestionNum(subjects)); |
| | | // 查询已经做了多少 |
| | | PracticeQuestionCondition practiceQuestionCondition = practiceQuestionConditionMapper.selectByPracticeId(item.getId()); |
| | | if (Objects.nonNull(practiceQuestionCondition)) { |
| | | List<PracticeQuestionCondition.QuestionFinishCondition> questionFinishConditions = JSON.parseArray(practiceQuestionCondition.getContent(), PracticeQuestionCondition.QuestionFinishCondition.class); |
| | | item.setDoNum(questionFinishConditions.size()); |
| | | } else { |
| | | item.setDoNum(0); |
| | | } |
| | | }); |
| | | return RestResponse.ok(info); |
| | | } |
| | |
| | | List<SubjectQuestionVO> list = new ArrayList<>(2); |
| | | // 顺序做题,把选择的题库的题(id)全部查出来,前端有个序号面板,点击哪道题做哪道 |
| | | for (Integer subjectId : subjectIds) { |
| | | // 查课目名字 |
| | | String subjectName = subjectMapper.selectSubjectNameById(subjectId); |
| | | // todo根据做题记录查询做没做过 |
| | | List<Integer> questionIds = new ArrayList<>(); |
| | | if (PracticeQuestionTypeEnum.ALL.getValue().equals(en.getQuestionType())) { |
| | | questionIds = questionSubjectMapper.questionsBySubjectId(subjectId); |
| | | } else { |
| | | questionIds = questionSubjectMapper.questionsBySubjectIdAndQuestionType(subjectId, PracticeQuestionTypeEnum.getDataBaseValueByValue(en.getQuestionType())); |
| | | } |
| | | // 根据做题记录增加标识,页面渲染做没做过,做对没有 |
| | | PracticeQuestionCondition practiceQuestionCondition = practiceQuestionConditionMapper.selectByPracticeId(id); |
| | | List<PracticeQuestionCondition.QuestionFinishCondition> questionFinishConditions = new ArrayList<>(48); |
| | | if (Objects.nonNull(practiceQuestionCondition)) { // json反序列化得到做题情况 |
| | | questionFinishConditions = JSON.parseArray(practiceQuestionCondition.getContent(), PracticeQuestionCondition.QuestionFinishCondition.class); |
| | | } |
| | | List<PracticeQuestionCondition.QuestionFinishCondition> finalQuestionFinishConditions = questionFinishConditions; |
| | | // 组装前端数据 |
| | | List<PracticeQuestionCondition.QuestionFinishCondition> questionData = questionIds.stream().map(questionId -> { |
| | | PracticeQuestionCondition.QuestionFinishCondition questionPractice = new PracticeQuestionCondition.QuestionFinishCondition(); |
| | | questionPractice.setQuestionId(questionId); |
| | | for (PracticeQuestionCondition.QuestionFinishCondition questionFinishCondition : finalQuestionFinishConditions) { |
| | | if (questionFinishCondition.getQuestionId().equals(questionId)) { |
| | | questionPractice.setRight(questionFinishCondition.getRight()); |
| | | questionPractice.setAnswer(questionFinishCondition.getAnswer()); |
| | | questionPractice.setHasDo(questionFinishCondition.getHasDo()); |
| | | } |
| | | } |
| | | return questionPractice; |
| | | }).collect(Collectors.toList()); |
| | | // 返回响应数据 |
| | | SubjectQuestionVO subjectQuestionVO = new SubjectQuestionVO(); |
| | | subjectQuestionVO.setSubjectId(subjectId); |
| | | subjectQuestionVO.setSubjectName(subjectName); |
| | | subjectQuestionVO.setQuestionIds(questionIds); |
| | | subjectQuestionVO.setQuestionConditions(questionData); |
| | | list.add(subjectQuestionVO); |
| | | } |
| | | return RestResponse.ok(list); |