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<>();
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);
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;
}
}