JPA 分页 条件 查询
public Page<ReportTask> getListByPage(ReportTaskQueryDto reportTaskQueryDto) { final Integer offset = reportTaskQueryDto.getOffset(); final Integer limit = reportTaskQueryDto.getLimit(); Sort sort = Sort.sort(ReportTask.class).by(ReportTask::getCreateTime).descending(); PageRequest pageRequest = PageRequest.of(offset, limit, sort); Specification<ReportTask> specification = (root, query, criteriaBuilder) -> { Predicate predicate = criteriaBuilder.conjunction(); List<Expression<Boolean>> expressions = predicate.getExpressions(); if (!Objects.isNull(reportTaskQueryDto.getTaskName())) { expressions.add(criteriaBuilder.like(root.get("taskName"), "%" + reportTaskQueryDto.getTaskName() + "%")); } if (!Objects.isNull(reportTaskQueryDto.getStatus())) { expressions.add(criteriaBuilder.equal(root.get("status"), reportTaskQueryDto.getStatus())); } return predicate; }; return reportTaskRepository.findAll(specification, pageRequest); }
public Page<Topo> topoList(QueryDto queryDto) { // 当前登录用户所拥有的角色,角色所拥有的资产管理的单位id集合 如果为null,则表示全部 Set<String> orgIds = dataPermissionHelper.orgDataPermission(); PageRequest pageRequest = PageRequest.of(queryDto.getOffset(), queryDto.getLimit(), Sort.sort(Topo.class).by(Topo::getUpdateTime).descending()); Specification<Topo> specification = (root, query, criteriaBuilder) -> { Predicate predicate = criteriaBuilder.conjunction(); List<Expression<Boolean>> expressions = predicate.getExpressions(); if (StringUtils.isNotBlank(queryDto.getSearch())) { expressions.add(criteriaBuilder.like(root.get("name"), "%" + queryDto.getSearch() + "%")); } if (queryDto.getStartTime() != null && queryDto.getEndTime() != null) { expressions.add(criteriaBuilder.greaterThanOrEqualTo(root.get("createTime"), queryDto.getStartTime())); expressions.add(criteriaBuilder.lessThanOrEqualTo(root.get("createTime"), queryDto.getEndTime())); } if (StringUtils.isNotBlank(queryDto.getOrganizationId())) { expressions.add(criteriaBuilder.equal(root.get("organizationId"), queryDto.getOrganizationId())); } if (queryDto.getTypes() != null) { expressions.add(criteriaBuilder.equal(root.get("types"), queryDto.getTypes())); } if (orgIds != null && !orgIds.isEmpty()) { CriteriaBuilder.In<Object> preIn = criteriaBuilder.in(root.get("organizationId")); for (String orgId : orgIds) { preIn.value(orgId); } expressions.add(preIn); } expressions.add(criteriaBuilder.equal(root.get("isDelete"), 0)); if (queryDto.getId() != null && !queryDto.getId().equals("0")) { CriteriaBuilder.In<Object> preIn = criteriaBuilder.in(root.get("id")); List<Long> idList = new ArrayList<>(); if (!queryDto.getNodeType().equals("node")) { idList.add(Long.valueOf(queryDto.getId())); } else { // 获取级联拓扑ID try { idList.addAll(getIdList(queryDto.getId())); } catch (CascadeException e) { e.printStackTrace(); } } for (Long id : idList) { preIn.value(id); } expressions.add(preIn); } return predicate; }; return topoRepository.findAll(specification, pageRequest); }