wenminjie
2026-07-15 999e0159112d9405bad7fcd839b339e006a3530d
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TTrainLibraryServiceImpl.java
@@ -35,24 +35,42 @@
    @Override
    public PageInfo<TTrainLibraryVO> pageList(TTrainLibraryQuery query, String roleType) {
        PageInfo<TTrainLibraryVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
        List<TTrainLibraryVO> list = this.baseMapper.pageList(query,pageInfo);
        // 1. 查询所有符合条件的数据(不分页)
        List<TTrainLibraryVO> allList = this.baseMapper.listAll(query);
        List<TTrainLibraryVO> resultList = new ArrayList<>();
        for (TTrainLibraryVO tTrainLibraryVO : list) {
            if (StringUtils.isNotEmpty(tTrainLibraryVO.getProjectId())) {
                TProjectTeam byId = projectTeamService.getById(tTrainLibraryVO.getProjectId());
                //未封存的数据
                if (byId != null && ("2".equals(roleType) || byId.getStatus() == 1)) {  // 只处理status为1的数据
                    tTrainLibraryVO.setProjectName(byId.getTeamName());
                    resultList.add(tTrainLibraryVO);
        // 2. 在内存中过滤 + 补充 projectName
        List<TTrainLibraryVO> filteredList = new ArrayList<>();
        for (TTrainLibraryVO vo : allList) {
            if (StringUtils.isNotEmpty(vo.getProjectId())) {
                TProjectTeam byId = projectTeamService.getById(vo.getProjectId());
                // 未封存的数据:roleType=2 或 status=1
                if (byId != null && ("2".equals(roleType) || byId.getStatus() == 1)) {
                    vo.setProjectName(byId.getTeamName());
                    filteredList.add(vo);
                }
            }
        }
        pageInfo.setRecords(resultList);
        pageInfo.setTotal(resultList.size());  // 重新设置总记录数
        // 3. 手动分页(在内存中截取)
        int total = filteredList.size();
        int pageNum = query.getPageNum();
        int pageSize = query.getPageSize();
        int start = (pageNum - 1) * pageSize;
        int end = Math.min(start + pageSize, total);
        // 处理边界情况
        List<TTrainLibraryVO> pageList = new ArrayList<>();
        if (start < total) {
            pageList = filteredList.subList(start, end);
        }
        // 4. 构建 PageInfo 返回
        PageInfo<TTrainLibraryVO> pageInfo = new PageInfo<>();
        pageInfo.setRecords(pageList);
        pageInfo.setTotal(total);
        pageInfo.setPages((int) Math.ceil((double) total / pageSize));
        pageInfo.setHasNextPage(pageNum < (int) Math.ceil((double) total / pageSize));
        return pageInfo;
    }