From 97b4eadbcfbb1679d57fd3954993e0eaad6a8262 Mon Sep 17 00:00:00 2001 From: lihongjie0209 Date: Mon, 18 Mar 2024 10:55:52 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E7=94=9F=E6=88=90=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E6=A0=91=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/cn/lihongjie/coal/Codegen.java | 138 ++++++++++++------- 1 file changed, 88 insertions(+), 50 deletions(-) diff --git a/src/main/java/cn/lihongjie/coal/Codegen.java b/src/main/java/cn/lihongjie/coal/Codegen.java index 21a26cfc..03cc0674 100644 --- a/src/main/java/cn/lihongjie/coal/Codegen.java +++ b/src/main/java/cn/lihongjie/coal/Codegen.java @@ -353,12 +353,10 @@ public class Codegen { .addMember( "value", "{@$T(target = \"children\", qualifiedByName = \"toTreeDto\")}", - Mapping.class) .build()) .addAnnotation( - AnnotationSpec.builder( - Named.class) + AnnotationSpec.builder(Named.class) .addMember("value", "$S", "toTreeDto") .build()) .returns(ClassName.get(dtoPackage, treeDto.name)) @@ -366,7 +364,6 @@ public class Codegen { ClassName.get(entityPackage, entity.name), "entity") .build()) - .addMethod( MethodSpec.methodBuilder("toTreeDtoExcludeChildren") .addModifiers(Modifier.PUBLIC, Modifier.ABSTRACT) @@ -375,10 +372,8 @@ public class Codegen { .addMember( "value", "{@$T(target = \"children\",ignore=true)}", - Mapping.class) .build()) - .returns(ClassName.get(dtoPackage, treeDto.name)) .addParameter( ClassName.get(entityPackage, entity.name), @@ -613,14 +608,17 @@ public class Codegen { .addMethod( MethodSpec.methodBuilder("getRoots") .addModifiers(Modifier.PUBLIC) - .addParameter(ClassName.get(CommonQuery.class), "request") + .addParameter( + ClassName.get(CommonQuery.class), "request") .returns( ParameterizedTypeName.get( ClassName.get(List.class), ClassName.get( dtoPackage, treeDto.name))) - .addCode(CodeBlock.builder() - .add(""" + .addCode( + CodeBlock.builder() + .add( + """ if ($T.isEmpty(request.getItems())){ $T roots = this.repository.findAll( (root, query, criteriaBuilder) -> criteriaBuilder.isNull(root.get("parent"))); @@ -662,45 +660,49 @@ public class Codegen { """, - ClassName.get( - CollectionUtils.class), - ParameterizedTypeName.get( - ClassName.get(List.class), ClassName.get( - entityPackage, entity.name)), - ClassName.get( - Collectors.class), - ParameterizedTypeName.get( - ClassName.get(Page.class), + CollectionUtils.class), + ParameterizedTypeName.get( + ClassName.get( + List.class), + ClassName.get( + entityPackage, + entity.name)), + ClassName.get(Collectors.class), + ParameterizedTypeName.get( + ClassName.get( + Page.class), + ClassName.get( + entityPackage, + entity.name)), ClassName.get( - entityPackage, entity.name)), - ClassName.get(PageRequest.class), - ClassName.get(Sort.class), - - ParameterizedTypeName.get( - ClassName.get(List.class), - ClassName.get(String.class)), - ClassName.get( - entityPackage, entity.name), - ClassName.get( - Collectors.class), - ParameterizedTypeName.get( - ClassName.get(List.class), + PageRequest.class), + ClassName.get(Sort.class), + ParameterizedTypeName.get( + ClassName.get( + List.class), + ClassName.get( + String.class)), ClassName.get( - dtoPackage, treeDto.name)), - ClassName.get( - Collectors.class), - ClassName.get(StreamSupport.class), - ClassName.get(TreeUtils.class), - ClassName.get(dtoPackage, treeDto.name), - ClassName.get(ArrayList.class), - ClassName.get(Collectors.class)) - .build() - - - ) - - + entityPackage, + entity.name), + ClassName.get(Collectors.class), + ParameterizedTypeName.get( + ClassName.get( + List.class), + ClassName.get( + dtoPackage, + treeDto.name)), + ClassName.get(Collectors.class), + ClassName.get( + StreamSupport.class), + ClassName.get(TreeUtils.class), + ClassName.get( + dtoPackage, + treeDto.name), + ClassName.get(ArrayList.class), + ClassName.get(Collectors.class)) + .build()) .build()) .addMethod( MethodSpec.methodBuilder("getTreeByIds") @@ -720,8 +722,7 @@ public class Codegen { return roots.stream().map(de -> this.mapper.toTreeDto(de)).collect($T.toList()) """, ClassName.get(ArrayList.class), - ClassName.get( - Collectors.class)) + ClassName.get(Collectors.class)) .build()) .build(); } @@ -909,7 +910,8 @@ public class Codegen { .addModifiers(Modifier.PUBLIC) .addParameter( ParameterSpec.builder( - ClassName.get(CommonQuery.class), "request") + ClassName.get(CommonQuery.class), + "request") .addAnnotation(RequestBody.class) .build()) .returns( @@ -951,11 +953,47 @@ public class Codegen { saveFile(controllerPackage, controllerBuilder.build()); - genScript(lModuleName, controllerPackage, controllerBuilder.build()); + if (tree) { + genTreeScript(lModuleName, controllerPackage, controllerBuilder.build()); + } else { + genEnumScript(lModuleName, controllerPackage, controllerBuilder.build()); + } } @SneakyThrows - private static void genScript( + private static void genTreeScript( + String lModuleName, String controllerPackage, TypeSpec controller) { + var script = + """ + + package scripts.dict + + import cn.lihongjie.coal.base.dto.CommonQuery + import %s + import org.springframework.context.ApplicationContext + + ApplicationContext ioc = ioc; + + def controller = ioc.getBean(%s.class) + + + + + return controller.roots(new CommonQuery()) + + + """ + .formatted(controllerPackage + "." + controller.name, controller.name); + + Files.writeString( + Path.of( + "src/main/resources/scripts/dict/tree/%sTree.groovy" + .formatted(lModuleName)), + script); + } + + @SneakyThrows + private static void genEnumScript( String lModuleName, String controllerPackage, TypeSpec controller) { var script =