From 5e1c1176189459456106e4b867a75f68e75139a2 Mon Sep 17 00:00:00 2001 From: lihongjie0209 Date: Sun, 5 May 2024 11:51:50 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/CoalWashingDailyAnalysisDto.java | 9 ++ .../coal/common/SpecificationUtils.java | 130 ++++++++++++++++++ .../deviceCategory/dto/DeviceCategoryDto.java | 2 +- .../dto/DeviceCategoryTreeDto.java | 2 +- .../entity/DeviceCategoryEntity.java | 7 +- 5 files changed, 143 insertions(+), 7 deletions(-) create mode 100644 src/main/java/cn/lihongjie/coal/common/SpecificationUtils.java diff --git a/src/main/java/cn/lihongjie/coal/coalWashingDailyAnalysis/dto/CoalWashingDailyAnalysisDto.java b/src/main/java/cn/lihongjie/coal/coalWashingDailyAnalysis/dto/CoalWashingDailyAnalysisDto.java index 4f909413..9c410412 100644 --- a/src/main/java/cn/lihongjie/coal/coalWashingDailyAnalysis/dto/CoalWashingDailyAnalysisDto.java +++ b/src/main/java/cn/lihongjie/coal/coalWashingDailyAnalysis/dto/CoalWashingDailyAnalysisDto.java @@ -18,6 +18,7 @@ import lombok.Data; import org.hibernate.annotations.Comment; import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.List; /** */ @@ -33,6 +34,14 @@ public class CoalWashingDailyAnalysisDto extends OrgCommonDto { @DictTranslate(dictKey = DictCode.ARCHIVESTATUS) private String archiveStatusName; + @Comment("开机时间") + private LocalDateTime startTime; + + @Comment("停机时间") + private LocalDateTime endTime; + + @Comment("皮带秤设备组") + private String pdcDeviceGroup; @ElementCollection diff --git a/src/main/java/cn/lihongjie/coal/common/SpecificationUtils.java b/src/main/java/cn/lihongjie/coal/common/SpecificationUtils.java new file mode 100644 index 00000000..40e72607 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/common/SpecificationUtils.java @@ -0,0 +1,130 @@ +package cn.lihongjie.coal.common; + +import jakarta.persistence.criteria.Expression; +import jakarta.persistence.criteria.Path; +import jakarta.persistence.criteria.Root; + +import lombok.experimental.UtilityClass; + +import org.springframework.data.jpa.domain.Specification; + +import java.util.*; + +@UtilityClass +public class SpecificationUtils { + + public static Specification like(String field, String value) { + return (root, query, cb) -> cb.like(getExpression(root, field), "%" + value + "%"); + } + + public static Expression getExpression(Root root, String field) { + if (field.contains(".")) { + String[] fields = field.split("\\."); + Path expression = root.get(fields[0]); + for (int i = 1; i < fields.length; i++) { + expression = expression.get(fields[i]); + } + return expression; + } else { + return root.get(field); + } + } + + public static Specification llike(String field, String value) { + return (root, query, cb) -> cb.like(getExpression(root, field), "%" + value); + } + + public static Specification rlike(String field, String value) { + return (root, query, cb) -> cb.like(getExpression(root, field), value + "%"); + } + + public static Specification eq(String field, Object value) { + return (root, query, cb) -> cb.equal(getExpression(root, field), value); + } + + public static Specification in(String field, Collection value) { + return (root, query, cb) -> getExpression(root, field).in(value); + } + + public static Specification in(String field, Object... value) { + return (root, query, cb) -> getExpression(root, field).in(value); + } + + public static Specification notIn(String field, Collection value) { + return (root, query, cb) -> cb.not(getExpression(root, field).in(value)); + } + + public static Specification notIn(String field, Object... value) { + return (root, query, cb) -> cb.not(getExpression(root, field).in(value)); + } + + public static Specification isNull(String field) { + return (root, query, cb) -> cb.isNull(getExpression(root, field)); + } + + public static Specification isNotNull(String field) { + return (root, query, cb) -> cb.isNotNull(getExpression(root, field)); + } + + // lt + public static Specification lt(String field, Object value) { + return (root, query, cb) -> cb.lessThan(getExpression(root, field), (Comparable) value); + } + + // le + public static Specification le(String field, Object value) { + return (root, query, cb) -> cb.lessThanOrEqualTo(getExpression(root, field), (Comparable) value); + } + + // gt + public static Specification gt(String field, Object value) { + return (root, query, cb) -> cb.greaterThan(getExpression(root, field), (Comparable) value); + } + + // ge + public static Specification ge(String field, Object value) { + return (root, query, cb) -> + cb.greaterThanOrEqualTo(getExpression(root, field), (Comparable) value); + } + + // is true + public static Specification isTrue(String field) { + return (root, query, cb) -> cb.isTrue(getExpression(root, field)); + } + + // is false + public static Specification isFalse(String field) { + return (root, query, cb) -> cb.isFalse(getExpression(root, field)); + } + + // is empty + public static Specification isEmpty(String field) { + return (root, query, cb) -> cb.isEmpty(getExpression(root, field)); + } + + public static Specification or(Specification... specs) { + return Arrays.stream(specs) + .reduce( + (a, b) -> + (root, query, cb) -> + cb.or( + a.toPredicate(root, query, cb), + b.toPredicate(root, query, cb))) + .orElse(null); + } + + public static Specification and(Specification... specs) { + return Arrays.stream(specs) + .reduce( + (a, b) -> + (root, query, cb) -> + cb.and( + a.toPredicate(root, query, cb), + b.toPredicate(root, query, cb))) + .orElse(null); + } + + public static Specification not(Specification spec) { + return (root, query, cb) -> cb.not(spec.toPredicate(root, query, cb)); + } +} diff --git a/src/main/java/cn/lihongjie/coal/deviceCategory/dto/DeviceCategoryDto.java b/src/main/java/cn/lihongjie/coal/deviceCategory/dto/DeviceCategoryDto.java index 01906c96..2671e57c 100644 --- a/src/main/java/cn/lihongjie/coal/deviceCategory/dto/DeviceCategoryDto.java +++ b/src/main/java/cn/lihongjie/coal/deviceCategory/dto/DeviceCategoryDto.java @@ -10,7 +10,7 @@ import java.util.List; @Data public class DeviceCategoryDto extends OrgCommonDto { private String parent; - private List user; + private List users; private List allDeviceIds; private List childrenDeviceIds; diff --git a/src/main/java/cn/lihongjie/coal/deviceCategory/dto/DeviceCategoryTreeDto.java b/src/main/java/cn/lihongjie/coal/deviceCategory/dto/DeviceCategoryTreeDto.java index 6a7e217e..aca7639b 100644 --- a/src/main/java/cn/lihongjie/coal/deviceCategory/dto/DeviceCategoryTreeDto.java +++ b/src/main/java/cn/lihongjie/coal/deviceCategory/dto/DeviceCategoryTreeDto.java @@ -10,7 +10,7 @@ import java.util.List; @Data public class DeviceCategoryTreeDto extends OrgCommonDto { - private List user; + private List users; private List allDeviceIds; private List childrenDeviceIds; diff --git a/src/main/java/cn/lihongjie/coal/deviceCategory/entity/DeviceCategoryEntity.java b/src/main/java/cn/lihongjie/coal/deviceCategory/entity/DeviceCategoryEntity.java index 378e2acf..4155821b 100644 --- a/src/main/java/cn/lihongjie/coal/deviceCategory/entity/DeviceCategoryEntity.java +++ b/src/main/java/cn/lihongjie/coal/deviceCategory/entity/DeviceCategoryEntity.java @@ -3,10 +3,7 @@ package cn.lihongjie.coal.deviceCategory.entity; import cn.lihongjie.coal.base.entity.OrgCommonEntity; import cn.lihongjie.coal.user.entity.UserEntity; -import jakarta.persistence.CascadeType; -import jakarta.persistence.Entity; -import jakarta.persistence.ManyToOne; -import jakarta.persistence.OneToMany; +import jakarta.persistence.*; import lombok.Data; @@ -17,7 +14,7 @@ import java.util.List; public class DeviceCategoryEntity extends OrgCommonEntity { - @OneToMany + @ManyToMany private List users;