diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/controller/RepoBizController.java b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/controller/RepoBizController.java index 9c8e7e88..aee92008 100644 --- a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/controller/RepoBizController.java +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/controller/RepoBizController.java @@ -21,9 +21,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; +import java.util.*; +import java.util.stream.Collectors; @RestController @@ -77,7 +76,34 @@ public class RepoBizController { @Operation(summary = "查询题库下题目") public Result> questionList(@PathVariable String repoId) { List list = questionRepoService.questionList(repoId); - return Result.ok(questionService.listByIds(list)); + List questions = questionService.listByIds(list); + //获取复选题id + List type5Ids = questions.stream() + .filter(question -> question.getType() == 5) + .map(Question::getId) + .collect(Collectors.toList()); + //获取复选题所包含的题目 + List type5Questions = new ArrayList<>(); + if (!type5Ids.isEmpty()) { + type5Questions = questionService.list( + new LambdaQueryWrapper() + .in(Question::getParentId, type5Ids) + ); + } + // 创建一个映射,用于快速查找父ID对应的子题目 + Map> parentToChildrenMap = type5Questions.stream() + .collect(Collectors.groupingBy(Question::getParentId)); + + // 将子题目添加到原始列表中,保持原有顺序 + List resultQuestions = new ArrayList<>(); + for (Question question : questions) { + resultQuestions.add(question); + if (question.getType() == 5) { + List children = parentToChildrenMap.getOrDefault(question.getId(), Collections.emptyList()); + resultQuestions.addAll(children); + } + } + return Result.ok(resultQuestions); } @GetMapping("course_list") @@ -96,19 +122,52 @@ public class RepoBizController { @GetMapping("/repoList/{questionId}") @Operation(summary = "查询题目详情") public Result questionDetail(@PathVariable String questionId,@RequestParam Integer type) { - if (type == 1 || type == 2 || type == 3) { - return Result.ok(choiceDetail(questionId)); - }else if(type == 4 || type == 5) { + if (type == 0 || type == 1 || type == 2) { + List questionOptions = choiceDetail(questionId); + return Result.ok(questionOptions); + }else if(type == 3 || type == 4) { return Result.ok(answerDetail(questionId)); }else { - return Result.ok(questionService.list( + //查询复合题所包含的题目 + List list = questionService.list( new LambdaQueryWrapper(). eq(Question::getParentId, questionId) - ) ); + //根据题目类型进行分组(false:选择多选判断题,true:填空简答题) + Map> groupedQuestions = list.stream() + .collect(Collectors.partitioningBy( + q -> q.getType() > 2 + )); + Map>> questionOptionMap = new HashMap<>(); + //获取选择题,多选题,判断题答案 + List question = groupedQuestions.get(false); + if(!question.isEmpty()){ + Map> questionListHashMap = new HashMap<>(); + question.forEach(q -> { + ArrayList objects = new ArrayList<>(); + objects.add(q); + objects.add(choiceDetail(q.getId())); + questionListHashMap.put(q.getId(), objects); + }); + questionOptionMap.put("questionOption", questionListHashMap); + } + //获取填空题,简答题答案 + List question1 = groupedQuestions.get(true); + if(!question1.isEmpty()){ + Map> questionAnswerMap = new HashMap<>(); + question1.forEach(q -> { + ArrayList objects = new ArrayList<>(); + objects.add(q); + objects.add(answerDetail(q.getId())); + questionAnswerMap.put(q.getId(), objects); + }); + questionOptionMap.put("questionAnswer", questionAnswerMap); + } + return Result.ok(questionOptionMap); } } + //查询选择题,多选题,判断题答案 public List choiceDetail(String questionId) { return questionOptionService.list( new LambdaQueryWrapper(). @@ -117,7 +176,7 @@ public class RepoBizController { ); } - + //查询填空题,简答题答案 public List answerDetail(String questionId) { return questionAnswerService.list( new LambdaQueryWrapper(). diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/question/controller/QuestionController.java b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/question/controller/QuestionController.java index b7262f81..08921abe 100644 --- a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/question/controller/QuestionController.java +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/question/controller/QuestionController.java @@ -119,6 +119,7 @@ public class QuestionController extends JeecgController delete(@RequestParam(name="id",required=true) String id) { Question question = questionService.getById(id); questionService.removeById(id);