diff --git a/src/main/java/cn/lihongjie/coal/base/dto/CommonQuery.java b/src/main/java/cn/lihongjie/coal/base/dto/CommonQuery.java index 1231382f..042ae056 100644 --- a/src/main/java/cn/lihongjie/coal/base/dto/CommonQuery.java +++ b/src/main/java/cn/lihongjie/coal/base/dto/CommonQuery.java @@ -139,8 +139,6 @@ public class CommonQuery { } } - - for (Class supportType : supportTypes) { if (Comparable.class.isAssignableFrom(supportType)) { @@ -372,16 +370,29 @@ public class CommonQuery { y -> ObjectUtils.defaultIfNull(y.not, false) ? getPredicate( - root, - criteriaBuilder, - y, - conversionService).not() - : getPredicate( root, criteriaBuilder, y, 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); orPredicates.add(criteriaBuilder.and(predicates)); @@ -717,5 +728,6 @@ public class CommonQuery { private String min; private String max; private String type; + private Boolean includeNull; } } diff --git a/src/main/java/cn/lihongjie/coal/weightDeviceData/service/WeightDeviceDataService.java b/src/main/java/cn/lihongjie/coal/weightDeviceData/service/WeightDeviceDataService.java index d7e39b2c..5017808f 100644 --- a/src/main/java/cn/lihongjie/coal/weightDeviceData/service/WeightDeviceDataService.java +++ b/src/main/java/cn/lihongjie/coal/weightDeviceData/service/WeightDeviceDataService.java @@ -335,21 +335,27 @@ where 二次过磅时间>='%s' and 二次过磅时间<='%s' 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 page = repository.findAll( - 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"))); - } - }), + and.or(new Specification() { + @Override + public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder criteriaBuilder) { + return criteriaBuilder.isNull(root.get("ecgbTime")); + } + }), PageRequest.of( query.getPageNo(), query.getPageSize(),