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)