This commit is contained in:
2024-10-12 09:43:39 +08:00
parent 7a8558df05
commit 6828ed658c
2 changed files with 39 additions and 21 deletions

View File

@@ -139,8 +139,6 @@ public class CommonQuery {
} }
} }
for (Class supportType : supportTypes) { for (Class supportType : supportTypes) {
if (Comparable.class.isAssignableFrom(supportType)) { if (Comparable.class.isAssignableFrom(supportType)) {
@@ -372,16 +370,29 @@ public class CommonQuery {
y -> y ->
ObjectUtils.defaultIfNull(y.not, false) ObjectUtils.defaultIfNull(y.not, false)
? getPredicate( ? getPredicate(
root,
criteriaBuilder,
y,
conversionService).not()
: getPredicate(
root, root,
criteriaBuilder, criteriaBuilder,
y, y,
conversionService) conversionService)
) .not()
: y.includeNull != null
&& y.includeNull
? criteriaBuilder.or(
criteriaBuilder
.isNull(
parseKey(
root,
y.key)),
getPredicate(
root,
criteriaBuilder,
y,
conversionService))
: getPredicate(
root,
criteriaBuilder,
y,
conversionService))
.toArray(Predicate[]::new); .toArray(Predicate[]::new);
orPredicates.add(criteriaBuilder.and(predicates)); orPredicates.add(criteriaBuilder.and(predicates));
@@ -717,5 +728,6 @@ public class CommonQuery {
private String min; private String min;
private String max; private String max;
private String type; private String type;
private Boolean includeNull;
} }
} }

View File

@@ -335,21 +335,27 @@ where 二次过磅时间>='%s' and 二次过磅时间<='%s'
Specification specification = query.specification(conversionService); Specification specification = query.specification(conversionService);
Specification and = specification.and(
new Specification() {
@Override
public Predicate toPredicate(
Root root,
CriteriaQuery query,
CriteriaBuilder criteriaBuilder) {
return criteriaBuilder.or(
criteriaBuilder.isNull(root.get("invalid")),
criteriaBuilder.isFalse(root.get("invalid")));
}
});
Page<WeightDeviceDataEntity> page = Page<WeightDeviceDataEntity> page =
repository.findAll( repository.findAll(
specification.and( and.or(new Specification() {
new Specification() { @Override
@Override public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder criteriaBuilder) {
public Predicate toPredicate( return criteriaBuilder.isNull(root.get("ecgbTime"));
Root root, }
CriteriaQuery query, }),
CriteriaBuilder criteriaBuilder) {
return criteriaBuilder.or(
criteriaBuilder.isNull(root.get("invalid")),
criteriaBuilder.isFalse(root.get("invalid")));
}
}),
PageRequest.of( PageRequest.of(
query.getPageNo(), query.getPageNo(),
query.getPageSize(), query.getPageSize(),