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