1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
Specification<DataDO> specification = (root, query, builder) -> {
List<Predicate> list = new ArrayList<>();
Predicate isDeletedPredicate = builder.equal(root.get("isDeleted"), 0);
list.add(isDeletedPredicate);
Predicate publishPredicate = builder.equal(root.get("publishStatus"), DataPublishStatusEnum.PUBLISH_SUCCESS.getCode());
list.add(publishPredicate);
// 添加名称搜索条件
addNamePredicate(dataSearchVO, root, builder, list);
// 添加标签搜索条件
addLabelPredicate(dataSearchVO, root, builder, list);
// 添加数据类型搜索条件
addDataTypePredicate(dataSearchVO, root, builder, list);
// 添加空间搜索条件
addGeometryPredicate(dataSearchVO.getGeometry(), builder, root, list);
// 添加行政区范围搜索条件
addGeometryPredicate(dataSearchVO.getPacGeometry(), builder, root, list);
// 添加发布时间搜索条件
addTimesPredicate(dataSearchVO.getPublishTime(), builder, root, "publishTime", list);
// 添加创建时间搜索条件
addTimesPredicate(dataSearchVO.getCreateTime(), builder, root, "createTime", list);
Predicate predicate = builder.and(list.toArray(new Predicate[0]));
return query.where(predicate).getRestriction();
};
return dataMapper.findAll(specification, pageable);
|