From 78fb314b8f1e25d134617bbec4412ad84e1a73a0 Mon Sep 17 00:00:00 2001 From: tomsun28 Date: Sun, 19 Dec 2021 22:10:19 +0800 Subject: [PATCH] =?UTF-8?q?[alert,manager]=20bugfix-=E5=A4=9A=E6=9D=A1?= =?UTF-8?q?=E4=BB=B6=E6=9F=A5=E8=AF=A2=E6=9C=89=E6=9D=A1=E4=BB=B6=E6=9C=AA?= =?UTF-8?q?=E7=94=9F=E6=95=88=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/AlertDefinesController.java | 12 ++++--- .../alert/controller/AlertsController.java | 23 +++++++------ .../controller/MonitorsController.java | 34 ++++++++++--------- 3 files changed, 38 insertions(+), 31 deletions(-) diff --git a/alerter/src/main/java/com/usthe/alert/controller/AlertDefinesController.java b/alerter/src/main/java/com/usthe/alert/controller/AlertDefinesController.java index fe0a1a2..97903ce 100644 --- a/alerter/src/main/java/com/usthe/alert/controller/AlertDefinesController.java +++ b/alerter/src/main/java/com/usthe/alert/controller/AlertDefinesController.java @@ -20,6 +20,7 @@ import org.springframework.web.bind.annotation.RestController; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.Predicate; +import java.util.ArrayList; import java.util.HashSet; import java.util.List; @@ -49,19 +50,20 @@ public class AlertDefinesController { @ApiParam(value = "列表分页数量", example = "8") @RequestParam(defaultValue = "8") int pageSize) { Specification specification = (root, query, criteriaBuilder) -> { - Predicate predicate = criteriaBuilder.conjunction(); + List andList = new ArrayList<>(); if (ids != null && !ids.isEmpty()) { CriteriaBuilder.In inPredicate= criteriaBuilder.in(root.get("id")); for (long id : ids) { inPredicate.value(id); } - predicate = criteriaBuilder.and(inPredicate); + andList.add(inPredicate); } if (priority != null) { - Predicate predicateApp = criteriaBuilder.equal(root.get("priority"), priority); - predicate = criteriaBuilder.and(predicateApp); + Predicate predicate = criteriaBuilder.equal(root.get("priority"), priority); + andList.add(predicate); } - return predicate; + Predicate[] predicates = new Predicate[andList.size()]; + return criteriaBuilder.and(andList.toArray(predicates)); }; // 分页是必须的 Sort sortExp = Sort.by(new Sort.Order(Sort.Direction.fromString(order), sort)); diff --git a/alerter/src/main/java/com/usthe/alert/controller/AlertsController.java b/alerter/src/main/java/com/usthe/alert/controller/AlertsController.java index bd8c9e1..a969444 100644 --- a/alerter/src/main/java/com/usthe/alert/controller/AlertsController.java +++ b/alerter/src/main/java/com/usthe/alert/controller/AlertsController.java @@ -22,6 +22,7 @@ import org.springframework.web.bind.annotation.RestController; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.Predicate; +import java.util.ArrayList; import java.util.HashSet; import java.util.List; @@ -54,31 +55,33 @@ public class AlertsController { @ApiParam(value = "列表分页数量", example = "8") @RequestParam(defaultValue = "8") int pageSize) { Specification specification = (root, query, criteriaBuilder) -> { - Predicate predicate = criteriaBuilder.conjunction(); + List andList = new ArrayList<>(); + if (ids != null && !ids.isEmpty()) { CriteriaBuilder.In inPredicate= criteriaBuilder.in(root.get("id")); for (long id : ids) { inPredicate.value(id); } - predicate = criteriaBuilder.and(inPredicate); + andList.add(inPredicate); } if (monitorId != null) { - Predicate predicateApp = criteriaBuilder.equal(root.get("monitorId"), monitorId); - predicate = criteriaBuilder.and(predicateApp); + Predicate predicate = criteriaBuilder.equal(root.get("monitorId"), monitorId); + andList.add(predicate); } if (priority != null) { - Predicate predicateApp = criteriaBuilder.equal(root.get("priority"), priority); - predicate = criteriaBuilder.and(predicateApp); + Predicate predicate = criteriaBuilder.equal(root.get("priority"), priority); + andList.add(predicate); } if (status != null) { - Predicate predicateApp = criteriaBuilder.equal(root.get("status"), status); - predicate = criteriaBuilder.and(predicateApp); + Predicate predicate = criteriaBuilder.equal(root.get("status"), status); + andList.add(predicate); } if (content != null && !"".equals(content)) { Predicate predicateContent = criteriaBuilder.like(root.get("content"), "%" + content + "%"); - predicate = criteriaBuilder.and(predicateContent); + andList.add(predicateContent); } - return predicate; + Predicate[] predicates = new Predicate[andList.size()]; + return criteriaBuilder.and(andList.toArray(predicates)); }; Sort sortExp = Sort.by(new Sort.Order(Sort.Direction.fromString(order), sort)); PageRequest pageRequest = PageRequest.of(pageIndex, pageSize, sortExp); diff --git a/manager/src/main/java/com/usthe/manager/controller/MonitorsController.java b/manager/src/main/java/com/usthe/manager/controller/MonitorsController.java index 2df5281..b10f114 100644 --- a/manager/src/main/java/com/usthe/manager/controller/MonitorsController.java +++ b/manager/src/main/java/com/usthe/manager/controller/MonitorsController.java @@ -22,6 +22,7 @@ import org.springframework.web.bind.annotation.RestController; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.Predicate; +import java.util.ArrayList; import java.util.HashSet; import java.util.List; @@ -53,33 +54,34 @@ public class MonitorsController { @ApiParam(value = "列表分页数量", example = "8") @RequestParam(defaultValue = "8") int pageSize) { Specification specification = (root, query, criteriaBuilder) -> { - Predicate predicate = criteriaBuilder.conjunction(); + List andList = new ArrayList<>(); if (ids != null && !ids.isEmpty()) { CriteriaBuilder.In inPredicate= criteriaBuilder.in(root.get("id")); for (long id : ids) { inPredicate.value(id); } - predicate = criteriaBuilder.and(inPredicate); + andList.add(inPredicate); } if (app != null && !"".equals(app)) { Predicate predicateApp = criteriaBuilder.equal(root.get("app"), app); - predicate = criteriaBuilder.and(predicateApp); + andList.add(predicateApp); } - if (name != null && !"".equals(name) && host != null && !"".equals(host)) { - Predicate predicateName = criteriaBuilder.like(root.get("name"), "%" + name + "%"); + Predicate[] andPredicates = new Predicate[andList.size()]; + Predicate andPredicate = criteriaBuilder.and(andList.toArray(andPredicates)); + + List orList = new ArrayList<>(); + if (host != null && !"".equals(host)) { Predicate predicateHost = criteriaBuilder.like(root.get("host"), "%" + host + "%"); - predicate = criteriaBuilder.or(predicateName, predicateHost); - } else { - if (host != null && !"".equals(host)) { - Predicate predicateHost = criteriaBuilder.like(root.get("host"), "%" + host + "%"); - predicate = criteriaBuilder.and(predicateHost); - } - if (name != null && !"".equals(name)) { - Predicate predicateName = criteriaBuilder.like(root.get("name"), "%" + name + "%"); - predicate = criteriaBuilder.and(predicateName); - } + orList.add(predicateHost); } - return predicate; + if (name != null && !"".equals(name)) { + Predicate predicateName = criteriaBuilder.like(root.get("name"), "%" + name + "%"); + orList.add(predicateName); + } + Predicate[] orPredicates = new Predicate[orList.size()]; + Predicate orPredicate = criteriaBuilder.and(orList.toArray(orPredicates)); + + return query.where(andPredicate,orPredicate).getRestriction(); }; // 分页是必须的 Sort sortExp = Sort.by(new Sort.Order(Sort.Direction.fromString(order), sort));