From b1ccbf71763763da77e881918c252b118c64f950 Mon Sep 17 00:00:00 2001 From: lihongjie0209 Date: Tue, 19 Mar 2024 10:52:54 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E5=88=86=E7=B1=BB=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E8=AE=BE=E5=A4=87=E6=95=B0=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../deviceCategory/dto/DeviceCategoryDto.java | 7 +++++++ .../dto/DeviceCategoryTreeDto.java | 6 ++++++ .../entity/DeviceCategoryEntity.java | 19 +++++++++++++++++++ 3 files changed, 32 insertions(+) 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 28977f89..430c9ee3 100644 --- a/src/main/java/cn/lihongjie/coal/deviceCategory/dto/DeviceCategoryDto.java +++ b/src/main/java/cn/lihongjie/coal/deviceCategory/dto/DeviceCategoryDto.java @@ -4,7 +4,14 @@ import cn.lihongjie.coal.base.dto.OrgCommonDto; import lombok.Data; +import java.util.List; + @Data public class DeviceCategoryDto extends OrgCommonDto { private String parent; + private List allDeviceIds; + + private List childrenDeviceIds; + + private List selfDeviceIds; } 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 0fcbeb20..ee358a9f 100644 --- a/src/main/java/cn/lihongjie/coal/deviceCategory/dto/DeviceCategoryTreeDto.java +++ b/src/main/java/cn/lihongjie/coal/deviceCategory/dto/DeviceCategoryTreeDto.java @@ -8,6 +8,12 @@ import java.util.List; @Data public class DeviceCategoryTreeDto extends OrgCommonDto { + + private List allDeviceIds; + + private List childrenDeviceIds; + + private List selfDeviceIds; private List children; private String parent; 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 495ce62a..e45bc894 100644 --- a/src/main/java/cn/lihongjie/coal/deviceCategory/entity/DeviceCategoryEntity.java +++ b/src/main/java/cn/lihongjie/coal/deviceCategory/entity/DeviceCategoryEntity.java @@ -2,6 +2,8 @@ package cn.lihongjie.coal.deviceCategory.entity; import cn.lihongjie.coal.base.entity.OrgCommonEntity; +import io.hypersistence.utils.hibernate.type.array.ListArrayType; + import jakarta.persistence.CascadeType; import jakarta.persistence.Entity; import jakarta.persistence.ManyToOne; @@ -9,11 +11,28 @@ import jakarta.persistence.OneToMany; import lombok.Data; +import org.hibernate.annotations.Formula; +import org.hibernate.annotations.Type; + import java.util.List; @Data @Entity public class DeviceCategoryEntity extends OrgCommonEntity { + + @Type(ListArrayType.class) + @Formula("(select array_agg(e.id) from t_device e where e.category_id = any(self_and_children_ids('t_device_category', id, true)))") + private List allDeviceIds; + + @Type(ListArrayType.class) + @Formula("(select array_agg(e.id) from t_device e where e.category_id = any(self_and_children_ids('t_device_category', id, false)))") + private List childrenDeviceIds; + + @Type(ListArrayType.class) + @Formula("(select array_agg(e.id) from t_device e where e.category_id = id)") + private List selfDeviceIds; + + @ManyToOne private DeviceCategoryEntity parent; @OneToMany(mappedBy = "parent", cascade = CascadeType.ALL)