Sfoglia il codice sorgente

题库增加题目数量,题型数量

yangfeng 1 anno fa
parent
commit
13d5632053

+ 9 - 0
web/src/main/java/com/ynfy/buss/exam/question/mapper/QuestionMapper.java

@@ -83,4 +83,13 @@ public interface QuestionMapper extends BaseMapper<Question> {
      */
     List<QuestionDTO> countQuestionNumByType(String repositoryId);
 
+
+    /**
+     * 统计题库、题型的题目数量
+     *
+     * @param repositoryIds
+     * @return
+     */
+    List<QuestionDTO> countQuestionType(@Param("repositoryIds") List<String> repositoryIds);
+
 }

+ 20 - 0
web/src/main/java/com/ynfy/buss/exam/question/mapper/xml/QuestionMapper.xml

@@ -304,4 +304,24 @@
         GROUP BY
             type
     </select>
+
+    <select id="countQuestionType" resultType="com.ynfy.buss.exam.question.dto.QuestionDTO">
+        SELECT
+            repository_id as repositoryId,
+            type,
+            COUNT(*) as num
+        FROM
+        question
+        <where>
+            <if test="repositoryIds !=null and repositoryIds.size()>0">
+                AND repository_id IN
+                <foreach collection="repositoryIds" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+        </where>
+        GROUP BY
+          repository_id,
+          type
+    </select>
 </mapper>

+ 8 - 0
web/src/main/java/com/ynfy/buss/exam/question/service/IQuestionService.java

@@ -133,4 +133,12 @@ public interface IQuestionService extends IService<Question> {
     void setQuestionAnswer(List<Question> questionList);
 
     void castExcel(MultipartFile file) throws Exception;
+
+    /**
+     * 统计题库、题型的题目数量
+     *
+     * @param repositoryIds
+     * @return
+     */
+    List<QuestionDTO> countQuestionType(List<String> repositoryIds);
 }

+ 11 - 0
web/src/main/java/com/ynfy/buss/exam/question/service/impl/QuestionServiceImpl.java

@@ -657,4 +657,15 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
             questionAnswerService.saveBatch(questionAnswerList);
         }
     }
+
+    /**
+     * 统计题库、题型的题目数量
+     *
+     * @param repositoryIds
+     * @return
+     */
+    @Override
+    public List<QuestionDTO> countQuestionType(List<String> repositoryIds) {
+        return questionMapper.countQuestionType(repositoryIds);
+    }
 }

+ 21 - 7
web/src/main/java/com/ynfy/buss/exam/repository/controller/RepositoryController.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 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;
@@ -22,6 +23,7 @@ import org.springframework.web.bind.annotation.*;
 import javax.servlet.http.HttpServletRequest;
 import java.util.Arrays;
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 import java.util.stream.Collectors;
 
@@ -73,13 +75,25 @@ public class RepositoryController extends JeecgController<Repository, IRepositor
         QueryWrapper<Repository> queryWrapper = QueryGenerator.initQueryWrapper(repository, req.getParameterMap());
         Page<Repository> page = new Page<Repository>(pageNo, pageSize);
         IPage<Repository> pageList = repositoryService.page(page, queryWrapper);
-        if (!CollectionUtils.isEmpty(pageList.getRecords())) {
-            List<String> idList = pageList.getRecords().stream().map(Repository::getId).collect(Collectors.toList());
-            List<QuestionDTO> questionDTOList = questionService.countQuestionByRepository(idList);
-            pageList.getRecords().forEach(repo -> {
-                QuestionDTO questionDTO = questionDTOList.stream().filter(q -> q.getRepositoryId().equals(repo.getId())).findFirst().orElse(null);
-                if (!Objects.isNull(questionDTO)) {
-                    repo.setNum(questionDTO.getNum());
+        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(",");
+                        }
+                    }
+                    l.setQuestionRemark(str.toString());
                 }
             });
         }

+ 5 - 0
web/src/main/java/com/ynfy/buss/exam/repository/entity/Repository.java

@@ -92,6 +92,11 @@ public class Repository implements Serializable {
     @TableField(exist = false)
     private List<QuestionDTO> questionDTOList;
 
+    /**
+     * 题目备注
+     */
+    @TableField(exist = false)
+    private String questionRemark;
 
     @Override
     public boolean equals(Object o) {