|
@@ -6,10 +6,14 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.ynfy.buss.exam.exam.dto.ExamAnswerDTO;
|
|
|
+import com.ynfy.buss.exam.exam.service.IExamService;
|
|
|
+import com.ynfy.buss.exam.question.entity.Question;
|
|
|
import com.ynfy.buss.exam.question.enums.QuestionType;
|
|
|
+import com.ynfy.buss.exam.question.service.IQuestionService;
|
|
|
import com.ynfy.buss.practice.userpractice.entity.UserPractice;
|
|
|
import com.ynfy.buss.practice.userpractice.entity.dto.PracticeQuestionDTO;
|
|
|
import com.ynfy.buss.practice.userpractice.entity.dto.UserPracticeDTO;
|
|
|
+import com.ynfy.buss.practice.userpractice.entity.dto.UserPracticeResultDTO;
|
|
|
import com.ynfy.buss.practice.userpractice.enums.PracticeMode;
|
|
|
import com.ynfy.buss.practice.userpractice.mapper.UserPracticeMapper;
|
|
|
import com.ynfy.buss.practice.userpractice.service.IUserPracticeService;
|
|
@@ -23,10 +27,8 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Date;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Objects;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
@Service
|
|
|
public class UserPracticeServiceImpl extends ServiceImpl<UserPracticeMapper, UserPractice> implements IUserPracticeService {
|
|
@@ -34,6 +36,12 @@ public class UserPracticeServiceImpl extends ServiceImpl<UserPracticeMapper, Use
|
|
|
@Autowired
|
|
|
private IUserPracticeQuestionService userPracticeQuestionService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private IQuestionService questionService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IExamService examService;
|
|
|
+
|
|
|
/**
|
|
|
* 获取用户最近的练习
|
|
|
*
|
|
@@ -109,4 +117,34 @@ public class UserPracticeServiceImpl extends ServiceImpl<UserPracticeMapper, Use
|
|
|
}
|
|
|
return userPracticeId;
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取练习结果
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public UserPracticeResultDTO getPracticeResult(String id) {
|
|
|
+ UserPracticeResultDTO dto = new UserPracticeResultDTO();
|
|
|
+ UserPractice userPractice = getById(id);
|
|
|
+ dto.setUserPractice(userPractice);
|
|
|
+ List<UserPracticeQuestion> userPracticeQuestionList = userPracticeQuestionService.listByUserPracticeId(id);
|
|
|
+ List<String> questionIdList = userPracticeQuestionList.stream().map(UserPracticeQuestion::getQuestionId).collect(Collectors.toList());
|
|
|
+ List<Question> questionList = questionService.listByIds(questionIdList);
|
|
|
+ questionService.setQuestionAnswer(questionList);
|
|
|
+ Map<String, Question> questionMap = questionList.stream().collect(Collectors.toMap(Question::getId, a -> a, (k1, k2) -> k1));
|
|
|
+ for (UserPracticeQuestion userPracticeQuestion : userPracticeQuestionList) {
|
|
|
+ if (!Objects.isNull(questionMap) && !Objects.isNull(questionMap.get(userPracticeQuestion.getQuestionId()))) {
|
|
|
+ Question question = questionMap.get(userPracticeQuestion.getQuestionId());
|
|
|
+ //渲染填空题的题干,填充进答案
|
|
|
+ if (QuestionType.BLANK.getCode().equals(userPracticeQuestion.getQuestionType())) {
|
|
|
+ examService.renderBlank(question, userPracticeQuestion.getAnswer());
|
|
|
+ }
|
|
|
+ userPracticeQuestion.setQuestion(question);
|
|
|
+ userPracticeQuestion.setQuestionTypeName(QuestionType.getByCode(userPracticeQuestion.getQuestionType()).getValue());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ dto.setQuestionList(userPracticeQuestionList);
|
|
|
+ return dto;
|
|
|
+ }
|
|
|
}
|