|
@@ -0,0 +1,85 @@
|
|
|
+package com.ynfy.app.api.v1.controller;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.ynfy.app.api.v1.entity.dto.RepositoryDTO;
|
|
|
+import com.ynfy.buss.exam.question.dto.QuestionDTO;
|
|
|
+import com.ynfy.buss.exam.question.enums.QuestionType;
|
|
|
+import com.ynfy.buss.exam.question.service.IQuestionService;
|
|
|
+import com.ynfy.buss.exam.repository.entity.Repository;
|
|
|
+import com.ynfy.buss.exam.repository.service.IRepositoryService;
|
|
|
+import io.swagger.annotations.ApiOperation;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.jeecg.common.api.vo.Result;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.util.CollectionUtils;
|
|
|
+import org.springframework.web.bind.annotation.*;
|
|
|
+
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+@Slf4j
|
|
|
+@RestController
|
|
|
+@RequestMapping("/api/v1/repository")
|
|
|
+public class ApiRepositoryController extends ApiBaseController {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ public IRepositoryService repositoryService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IQuestionService questionService;
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取列表
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @PostMapping("/list")
|
|
|
+ public Result<IPage<Repository>> list(@RequestBody RepositoryDTO repositoryDTO) {
|
|
|
+ Page<Repository> page = new Page<>(repositoryDTO.getPageNo(), repositoryDTO.getPageSize());
|
|
|
+ LambdaQueryWrapper<Repository> query = new LambdaQueryWrapper<>();
|
|
|
+ query.like(Repository::getTitle, repositoryDTO.getRepositoryTitle());
|
|
|
+ IPage<Repository> pageList = repositoryService.page(page, query);
|
|
|
+ List<Repository> list = pageList.getRecords();
|
|
|
+ if (!CollectionUtils.isEmpty(list)) {
|
|
|
+ List<String> idList = list.stream().map(Repository::getId).collect(Collectors.toList());
|
|
|
+ List<QuestionDTO> questionDTOList = questionService.countQuestionType(idList);
|
|
|
+ Map<String, List<QuestionDTO>> map = questionDTOList.stream().collect(Collectors
|
|
|
+ .groupingBy(QuestionDTO::getRepositoryId, Collectors.toList()));
|
|
|
+ list.forEach(l -> {
|
|
|
+ List<QuestionDTO> dtoList = map.get(l.getId());
|
|
|
+ if (!CollectionUtils.isEmpty(dtoList)) {
|
|
|
+ l.setNum(dtoList.stream().mapToInt(QuestionDTO::getNum).sum());
|
|
|
+ StringBuilder str = new StringBuilder();
|
|
|
+ int index = 0;
|
|
|
+ for (QuestionDTO dto : dtoList) {
|
|
|
+ str.append(QuestionType.getByCode(dto.getType()).getValue()).append(dto.getNum()).append("题");
|
|
|
+ if (index < dtoList.size() - 1) {
|
|
|
+ str.append(",");
|
|
|
+ }
|
|
|
+ index++;
|
|
|
+ }
|
|
|
+ l.setQuestionRemark(str.toString());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ return Result.OK(pageList);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 计算指定题库的题目题型数量
|
|
|
+ *
|
|
|
+ * @param id
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @ApiOperation(value = "计算指定题库的题目题型数量", notes = "计算指定题库的题目题型数量")
|
|
|
+ @GetMapping(value = "/getById")
|
|
|
+ public Result<Repository> getById(@RequestParam String id) {
|
|
|
+ Repository repository = repositoryService.getById(id);
|
|
|
+ repository.setQuestionDTOList(questionService.countQuestionNumByType(id));
|
|
|
+ return Result.OK(repository);
|
|
|
+ }
|
|
|
+}
|