public PageModel<FileEntity> getFiles(FileDto fileDto) {
        // 获取当前页码
        Integer pageNo = fileDto.getCurPage();
        // 获取页码大小
        Integer pageSize = fileDto.getPageSize();
        // 保证当前页码合法性
        pageNo = (null == pageNo || pageNo <= 0) ? 0 : (pageNo - 1);
        // 默认一页十条数据
        pageSize = (null == pageSize) ? 10 : pageSize;
        // 分页查询,字段排序
        Pageable pageable = PageRequest.of(pageNo, pageSize, Sort.by("id").descending());
        // 字段查询,模糊匹配
        Specification<FileEntity> specification = (root, query, criteriaBuilder) -> {
            List<Predicate> predicates = new ArrayList<>();
            // 文件名称
            // root.get("fileName") 是实体字段属性,不是数据库字段
            String fileName = fileDto.getFileName();
            if(StringUtils.isNotBlank(fileName)){
                predicates.add(criteriaBuilder.like(root.get("fileName"), "%" + fileName + "%"));
            }

            // 文件入库状态
            Integer fileSaveStatus = fileDto.getFileSaveStatus();
            if(null != fileSaveStatus){
                predicates.add(criteriaBuilder.equal(root.get("fileSaveStatus"), fileSaveStatus));
            }

            // 解析时间 大于等于
            Date startFileAnalysisTime = fileDto.getStartFileAnalysisTime();
            if(null != startFileAnalysisTime){
                predicates.add(criteriaBuilder.greaterThanOrEqualTo(root.get("fileAnalysisTime").as(Date.class), startFileAnalysisTime));
            }
            // 解析时间 小于等于
            Date endFileAnalysisTime = fileDto.getEndFileAnalysisTime();
            if(null != endFileAnalysisTime){
                predicates.add(criteriaBuilder.lessThanOrEqualTo(root.get("fileAnalysisTime").as(Date.class), endFileAnalysisTime));
            }

            //返回查询条件
            return criteriaBuilder.and(predicates.toArray(new Predicate[predicates.size()]));
        };
        Page<FileEntity> fileEntitys = fileServiceDao.findAll(specification, pageable);
        // Page<AppReportMappingEntity> pageAll = appReportMappingDao.findAll(specification, pageable);
        return new PageModel(fileEntitys.getTotalElements(), fileEntitys.getTotalPages(), pageNo, pageSize, fileEntitys.getContent());
    }
@Data
@NoArgsConstructor
@AllArgsConstructor
public class PageModel<T> {
    private long totalRows;
    private long totalPages;
    private int curPage;
    private int pageSize;
    private List<T> result;

    public static PageModel transModel(Page page, List content) {
        PageModel pageModel = new PageModel();
        pageModel.setTotalRows(page.getTotalElements());
        pageModel.setTotalPages(page.getTotalPages());
        pageModel.setCurPage(page.getPageable().getPageNumber() + 1);
        pageModel.setPageSize(page.getPageable().getPageSize());
        pageModel.setResult(content);
        return pageModel;
    }
}
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐