From 6828ed658c65cbe1aa0e5ef8ea8dfe2ecf22e548 Mon Sep 17 00:00:00 2001 From: lihongjie0209 Date: Sat, 12 Oct 2024 09:43:39 +0800 Subject: [PATCH] bugfix --- .../lihongjie/coal/base/dto/CommonQuery.java | 28 +++++++++++----- .../service/WeightDeviceDataService.java | 32 +++++++++++-------- 2 files changed, 39 insertions(+), 21 deletions(-) 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(),