Browse Source

获取题库题目数量

yangfeng 1 year ago
parent
commit
a8a2f294a1

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

@@ -66,4 +66,13 @@ public interface QuestionMapper extends BaseMapper<Question> {
 
 
     IPage<Question> selectPageList(IPage<Question> page, @Param("question") Question question);
     IPage<Question> selectPageList(IPage<Question> page, @Param("question") Question question);
 
 
+
+    /**
+     * 统计题库题目数量
+     *
+     * @param repositoryIds
+     * @return
+     */
+    List<QuestionDTO> countQuestionByRepository(@Param("repositoryIds") List<String> repositoryIds);
+
 }
 }

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

@@ -274,4 +274,21 @@
             </where>
             </where>
         </foreach>
         </foreach>
     </select>
     </select>
+    <select id="countQuestionByRepository" resultType="com.ynfy.buss.exam.question.dto.QuestionDTO">
+        SELECT
+            repository_id as repositoryId,
+            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
+    </select>
 </mapper>
 </mapper>

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

@@ -104,4 +104,12 @@ public interface IQuestionService extends IService<Question> {
      * 根据条件分页查询
      * 根据条件分页查询
      */
      */
     IPage<Question> selectPageList(IPage<Question> page, Question question);
     IPage<Question> selectPageList(IPage<Question> page, Question question);
+
+    /**
+     * 统计题库题目数量
+     *
+     * @param repositoryIds
+     * @return
+     */
+    List<QuestionDTO> countQuestionByRepository(List<String> repositoryIds);
 }
 }

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

@@ -533,4 +533,15 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
     public IPage<Question> selectPageList(IPage<Question> page, Question question) {
     public IPage<Question> selectPageList(IPage<Question> page, Question question) {
         return questionMapper.selectPageList(page, question);
         return questionMapper.selectPageList(page, question);
     }
     }
+
+    /**
+     * 统计题库题目数量
+     *
+     * @param repositoryIds
+     * @return
+     */
+    @Override
+    public List<QuestionDTO> countQuestionByRepository(List<String> repositoryIds) {
+        return questionMapper.countQuestionByRepository(repositoryIds);
+    }
 }
 }

+ 19 - 1
web/src/main/java/com/ynfy/buss/exam/repository/controller/RepositoryController.java

@@ -3,6 +3,8 @@ package com.ynfy.buss.exam.repository.controller;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ynfy.buss.exam.question.dto.QuestionDTO;
+import com.ynfy.buss.exam.question.service.IQuestionService;
 import com.ynfy.buss.exam.repository.entity.Repository;
 import com.ynfy.buss.exam.repository.entity.Repository;
 import com.ynfy.buss.exam.repository.service.IRepositoryService;
 import com.ynfy.buss.exam.repository.service.IRepositoryService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.Api;
@@ -14,11 +16,14 @@ import org.jeecg.common.aspect.annotation.AutoLog;
 import org.jeecg.common.system.base.controller.JeecgController;
 import org.jeecg.common.system.base.controller.JeecgController;
 import org.jeecg.common.system.query.QueryGenerator;
 import org.jeecg.common.system.query.QueryGenerator;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletRequest;
 import java.util.Arrays;
 import java.util.Arrays;
 import java.util.List;
 import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
 
 
 /**
 /**
  * @Description: repository
  * @Description: repository
@@ -34,6 +39,9 @@ public class RepositoryController extends JeecgController<Repository, IRepositor
     @Autowired
     @Autowired
     private IRepositoryService repositoryService;
     private IRepositoryService repositoryService;
 
 
+    @Autowired
+    private IQuestionService questionService;
+
     /**
     /**
      * 列表查询
      * 列表查询
      *
      *
@@ -57,7 +65,7 @@ public class RepositoryController extends JeecgController<Repository, IRepositor
      */
      */
     @ApiOperation(value = "题库-分页列表查询", notes = "题库-分页列表查询")
     @ApiOperation(value = "题库-分页列表查询", notes = "题库-分页列表查询")
     @GetMapping(value = "/list")
     @GetMapping(value = "/list")
-    @RequiresPermissions("repository:list")
+    //@RequiresPermissions("repository:list")
     public Result<IPage<Repository>> queryPageList(Repository repository,
     public Result<IPage<Repository>> queryPageList(Repository repository,
                                                    @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
                                                    @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
                                                    @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
                                                    @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
@@ -65,6 +73,16 @@ public class RepositoryController extends JeecgController<Repository, IRepositor
         QueryWrapper<Repository> queryWrapper = QueryGenerator.initQueryWrapper(repository, req.getParameterMap());
         QueryWrapper<Repository> queryWrapper = QueryGenerator.initQueryWrapper(repository, req.getParameterMap());
         Page<Repository> page = new Page<Repository>(pageNo, pageSize);
         Page<Repository> page = new Page<Repository>(pageNo, pageSize);
         IPage<Repository> pageList = repositoryService.page(page, queryWrapper);
         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());
+                }
+            });
+        }
         return Result.OK(pageList);
         return Result.OK(pageList);
     }
     }
 
 

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

@@ -1,6 +1,7 @@
 package com.ynfy.buss.exam.repository.entity;
 package com.ynfy.buss.exam.repository.entity;
 
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonFormat;
@@ -80,6 +81,12 @@ public class Repository implements Serializable {
     @ApiModelProperty(value = "updateBy")
     @ApiModelProperty(value = "updateBy")
     private String updateBy;
     private String updateBy;
 
 
+    /**
+     * 题目数量
+     */
+    @TableField(exist = false)
+    private Integer num;
+
 
 
     @Override
     @Override
     public boolean equals(Object o) {
     public boolean equals(Object o) {