diff --git a/src/main/java/cn/lihongjie/coal/base/dto/TreeDto.java b/src/main/java/cn/lihongjie/coal/base/dto/TreeDto.java index ba86d081..3ad65c84 100644 --- a/src/main/java/cn/lihongjie/coal/base/dto/TreeDto.java +++ b/src/main/java/cn/lihongjie/coal/base/dto/TreeDto.java @@ -12,6 +12,7 @@ import lombok.NoArgsConstructor; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.stream.Stream; import java.util.stream.StreamSupport; @Data @@ -28,17 +29,40 @@ public class TreeDto { private List children; + public static List buildList(Object object, boolean flatten) { - - public static List buildList(Object object){ - + List ans; if (object instanceof Iterable) { - return buildList0((Iterable) object); + ans = buildList0((Iterable) object); + } else { + + + ans = buildList0(Arrays.asList(object)); + } - return buildList0(Arrays.asList(object)); + if (flatten) { + ans = flatten(ans); + } + return ans; + } + + private static List flatten(List ans) { + + return ans.stream().flatMap(x -> { + + + if (x.getChildren() != null) { + + return Stream.concat(Stream.of(x), flatten(x.getChildren()).stream()); + } else { + return Stream.of(x); + } + + }).toList(); + } @@ -70,7 +94,7 @@ public class TreeDto { private static List getChildren(Object x) { if (x instanceof TreeDto) { - return ((TreeDto) x).getChildren().stream().map( TreeDto::buildTree).toList(); + return ((TreeDto) x).getChildren().stream().map(TreeDto::buildTree).toList(); } diff --git a/src/main/java/cn/lihongjie/coal/dictionary/dto/CreateDictionaryDto.java b/src/main/java/cn/lihongjie/coal/dictionary/dto/CreateDictionaryDto.java index 91931777..acb6fe08 100644 --- a/src/main/java/cn/lihongjie/coal/dictionary/dto/CreateDictionaryDto.java +++ b/src/main/java/cn/lihongjie/coal/dictionary/dto/CreateDictionaryDto.java @@ -14,6 +14,8 @@ public class CreateDictionaryDto extends CommonDto + private String componentType; + private String componentTypeName; @Comment("字典类型 1 静态字典 2 动态字典") private String dictType; diff --git a/src/main/java/cn/lihongjie/coal/dictionary/dto/DictionaryDto.java b/src/main/java/cn/lihongjie/coal/dictionary/dto/DictionaryDto.java index 20cec51f..ca6d2b73 100644 --- a/src/main/java/cn/lihongjie/coal/dictionary/dto/DictionaryDto.java +++ b/src/main/java/cn/lihongjie/coal/dictionary/dto/DictionaryDto.java @@ -13,6 +13,8 @@ public class DictionaryDto extends CommonDto private String dictType; private String dictTypeName; + private String componentType; + private String componentTypeName; private ScriptEntity script; diff --git a/src/main/java/cn/lihongjie/coal/dictionary/dto/UpdateDictionaryDto.java b/src/main/java/cn/lihongjie/coal/dictionary/dto/UpdateDictionaryDto.java index 0578851d..e2ae9e54 100644 --- a/src/main/java/cn/lihongjie/coal/dictionary/dto/UpdateDictionaryDto.java +++ b/src/main/java/cn/lihongjie/coal/dictionary/dto/UpdateDictionaryDto.java @@ -12,8 +12,9 @@ public class UpdateDictionaryDto extends CommonDto { + private String componentType; + private String componentTypeName; - @Comment("字典类型 1 静态字典 2 动态字典") private String dictType; @OneToOne diff --git a/src/main/java/cn/lihongjie/coal/dictionary/entity/DictionaryEntity.java b/src/main/java/cn/lihongjie/coal/dictionary/entity/DictionaryEntity.java index 019d68a9..8f9f9882 100644 --- a/src/main/java/cn/lihongjie/coal/dictionary/entity/DictionaryEntity.java +++ b/src/main/java/cn/lihongjie/coal/dictionary/entity/DictionaryEntity.java @@ -38,6 +38,21 @@ public class DictionaryEntity extends CommonEntity { " and i.code = dict_type)") private String dictTypeName; + + + + @Comment("字典类型 1 枚举 2 树") + private String componentType; + + + @Formula("(select i.name\n" + + "from t_dictionary d,\n" + + " t_dictionary_item i\n" + + "where d.id = i.dictionary_id\n" + + " and d.code = 'dict.componentType'\n" + + " and i.code = component_type)") + private String componentTypeName; + @OneToOne @Comment("动态字典关联的脚本") private ScriptEntity script; diff --git a/src/main/java/cn/lihongjie/coal/dictionary/service/DictionaryService.java b/src/main/java/cn/lihongjie/coal/dictionary/service/DictionaryService.java index 49096445..a6f2ba15 100644 --- a/src/main/java/cn/lihongjie/coal/dictionary/service/DictionaryService.java +++ b/src/main/java/cn/lihongjie/coal/dictionary/service/DictionaryService.java @@ -54,10 +54,10 @@ public class DictionaryService extends BaseService tree(DictTreeRequest request) { DictionaryEntity dict = this.repository.findByCode(request.getCode()); - + boolean flatten = StringUtils.equalsIgnoreCase(dict.getComponentType(), "1"); if (dict.getDictType().equalsIgnoreCase("1")) { - return TreeDto.buildList(dict.getItem()); + return TreeDto.buildList(dict.getItem(), flatten); } if (dict.getDictType().equalsIgnoreCase("2")) { @@ -69,7 +69,7 @@ public class DictionaryService extends BaseService