From cf25647acf8e2e9882cd260e77cb079720f9b71f Mon Sep 17 00:00:00 2001 From: dqjdda <201507802@qq.com> Date: Tue, 26 Nov 2019 16:09:19 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BB=A3=E7=A0=81=E7=94=9F?= =?UTF-8?q?=E6=88=90=E9=A2=84=E8=A7=88=E7=9A=84sql=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../me/zhengjie/rest/GeneratorController.java | 2 + .../me/zhengjie/service/GeneratorService.java | 10 +- .../service/impl/GeneratorServiceImpl.java | 16 ++- .../main/java/me/zhengjie/utils/GenUtil.java | 107 +++++++++++------- sql/eladmin-gen.sql | 1 + 5 files changed, 93 insertions(+), 43 deletions(-) diff --git a/eladmin-generator/src/main/java/me/zhengjie/rest/GeneratorController.java b/eladmin-generator/src/main/java/me/zhengjie/rest/GeneratorController.java index 497766ae..17c0c36e 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/rest/GeneratorController.java +++ b/eladmin-generator/src/main/java/me/zhengjie/rest/GeneratorController.java @@ -75,6 +75,8 @@ public class GeneratorController { // 生成代码 case 0: generatorService.generator(genConfigService.find(tableName), generatorService.getColumns(tableName)); break; + // 预览 + case 1: return generatorService.preview(genConfigService.find(tableName), generatorService.getColumns(tableName)); default: break; } return new ResponseEntity(HttpStatus.OK); diff --git a/eladmin-generator/src/main/java/me/zhengjie/service/GeneratorService.java b/eladmin-generator/src/main/java/me/zhengjie/service/GeneratorService.java index 027d2bdd..18d731f6 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/service/GeneratorService.java +++ b/eladmin-generator/src/main/java/me/zhengjie/service/GeneratorService.java @@ -2,6 +2,7 @@ package me.zhengjie.service; import me.zhengjie.domain.GenConfig; import me.zhengjie.domain.ColumnInfo; +import org.springframework.http.ResponseEntity; import org.springframework.scheduling.annotation.Async; import java.util.List; @@ -50,7 +51,14 @@ public interface GeneratorService { * 代码生成 * @param genConfig 配置信息 * @param columns 字段信息 + */ + void generator(GenConfig genConfig, List columns); + + /** + * 预览 + * @param genConfig 配置信息 + * @param columns 字段信息 * @return / */ - Object generator(GenConfig genConfig, List columns); + ResponseEntity preview(GenConfig genConfig, List columns); } diff --git a/eladmin-generator/src/main/java/me/zhengjie/service/impl/GeneratorServiceImpl.java b/eladmin-generator/src/main/java/me/zhengjie/service/impl/GeneratorServiceImpl.java index 4a2168a0..42707aa6 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/service/impl/GeneratorServiceImpl.java +++ b/eladmin-generator/src/main/java/me/zhengjie/service/impl/GeneratorServiceImpl.java @@ -11,6 +11,8 @@ import me.zhengjie.service.GeneratorService; import me.zhengjie.utils.GenUtil; import me.zhengjie.utils.PageUtil; import me.zhengjie.utils.StringUtils; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; @@ -18,6 +20,7 @@ import javax.persistence.Query; import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.Map; /** * @author Zheng Jie @@ -113,17 +116,24 @@ public class GeneratorServiceImpl implements GeneratorService { } @Override - public Object generator(GenConfig genConfig, List columns) { + public void generator(GenConfig genConfig, List columns) { if(genConfig.getId() == null){ throw new BadRequestException("请先配置生成器"); } try { - // 查询是否存在关联实体字段信息 GenUtil.generatorCode(columns, genConfig); } catch (IOException e) { e.printStackTrace(); throw new BadRequestException("生成失败,请手动处理已生成的文件"); } - return null; + } + + @Override + public ResponseEntity preview(GenConfig genConfig, List columns) { + if(genConfig.getId() == null){ + throw new BadRequestException("请先配置生成器"); + } + List> genList = GenUtil.preview(columns, genConfig); + return new ResponseEntity<>(genList, HttpStatus.OK); } } diff --git a/eladmin-generator/src/main/java/me/zhengjie/utils/GenUtil.java b/eladmin-generator/src/main/java/me/zhengjie/utils/GenUtil.java index d5acc0f6..676847ba 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/utils/GenUtil.java +++ b/eladmin-generator/src/main/java/me/zhengjie/utils/GenUtil.java @@ -11,10 +11,7 @@ import java.io.FileWriter; import java.io.IOException; import java.io.Writer; import java.time.LocalDate; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** * 代码生成 @@ -61,7 +58,72 @@ public class GenUtil { return templateNames; } + public static List> preview(List columns, GenConfig genConfig) { + Map genMap = getGenMap(columns, genConfig); + List> genList = new ArrayList<>(); + // 获取后端模版 + List templates = getAdminTemplateNames(); + TemplateEngine engine = TemplateUtil.createEngine(new TemplateConfig("template", TemplateConfig.ResourceMode.CLASSPATH)); + for (String templateName : templates) { + Map map = new HashMap<>(1); + Template template = engine.getTemplate("generator/admin/"+templateName+".ftl"); + map.put("content", template.render(genMap)); + map.put("name", templateName); + genList.add(map); + } + // 获取前端模版 + templates = getFrontTemplateNames(); + for (String templateName : templates) { + Map map = new HashMap<>(1); + Template template = engine.getTemplate("generator/front/"+templateName+".ftl"); + map.put(templateName, template.render(genMap)); + map.put("content", template.render(genMap)); + map.put("name", templateName); + genList.add(map); + } + return genList; + } + public static void generatorCode(List columnInfos, GenConfig genConfig) throws IOException { + Map genMap = getGenMap(columnInfos, genConfig); + TemplateEngine engine = TemplateUtil.createEngine(new TemplateConfig("template", TemplateConfig.ResourceMode.CLASSPATH)); + // 生成后端代码 + List templates = getAdminTemplateNames(); + for (String templateName : templates) { + Template template = engine.getTemplate("generator/admin/"+templateName+".ftl"); + String filePath = getAdminFilePath(templateName,genConfig,genMap.get("className").toString()); + + assert filePath != null; + File file = new File(filePath); + + // 如果非覆盖生成 + if(!genConfig.getCover() && FileUtil.exist(file)){ + continue; + } + // 生成代码 + genFile(file, template, genMap); + } + + // 生成前端代码 + templates = getFrontTemplateNames(); + for (String templateName : templates) { + Template template = engine.getTemplate("generator/front/"+templateName+".ftl"); + String filePath = getFrontFilePath(templateName,genConfig,genMap.get("changeClassName").toString()); + + assert filePath != null; + File file = new File(filePath); + + // 如果非覆盖生成 + if(!genConfig.getCover() && FileUtil.exist(file)){ + continue; + } + // 生成代码 + genFile(file, template, genMap); + } + } + + // 获取模版数据 + private static Map getGenMap(List columnInfos, GenConfig genConfig) { // 存储模版字段数据 Map genMap = new HashMap<>(16); // 接口别名 @@ -165,7 +227,7 @@ public class GenUtil { // 表单显示 listMap.put("formShow",column.getFormShow()); // 表单组件类型 - listMap.put("formType",column.getFormType()); + listMap.put("formType", StringUtils.isNotBlank(column.getFormType()) ? column.getFormType() : "Input"); // 小写开头的字段名称 listMap.put("changeColumnName",changeColumnName); //大写开头的字段名称 @@ -215,40 +277,7 @@ public class GenUtil { genMap.put("betweens",betweens); // 保存非空字段信息 genMap.put("isNotNullColumns",isNotNullColumns); - TemplateEngine engine = TemplateUtil.createEngine(new TemplateConfig("template", TemplateConfig.ResourceMode.CLASSPATH)); - // 生成后端代码 - List templates = getAdminTemplateNames(); - for (String templateName : templates) { - Template template = engine.getTemplate("generator/admin/"+templateName+".ftl"); - String filePath = getAdminFilePath(templateName,genConfig,className); - - assert filePath != null; - File file = new File(filePath); - - // 如果非覆盖生成 - if(!genConfig.getCover() && FileUtil.exist(file)){ - continue; - } - // 生成代码 - genFile(file, template, genMap); - } - - // 生成前端代码 - templates = getFrontTemplateNames(); - for (String templateName : templates) { - Template template = engine.getTemplate("generator/front/"+templateName+".ftl"); - String filePath = getFrontFilePath(templateName,genConfig,genMap.get("changeClassName").toString()); - - assert filePath != null; - File file = new File(filePath); - - // 如果非覆盖生成 - if(!genConfig.getCover() && FileUtil.exist(file)){ - continue; - } - // 生成代码 - genFile(file, template, genMap); - } + return genMap; } /** diff --git a/sql/eladmin-gen.sql b/sql/eladmin-gen.sql index 65723120..bd152f04 100644 --- a/sql/eladmin-gen.sql +++ b/sql/eladmin-gen.sql @@ -3,6 +3,7 @@ -- ---------------------------- INSERT INTO `menu` VALUES (82, b'0', '生成配置', 'generator/config', 36, 33, 'dev', 'generator/config/:tableName', b'1', b'1', 'GeneratorConfig', '2019-11-17 20:08:56', '', 1); +INSERT INTO `menu` VALUES (116, b'0', '生成预览', 'generator/preview', 36, 999, 'java', 'generator/preview/:tableName', b'1', b'1', 'Preview', '2019-11-26 14:54:36', NULL, 1); -- ---------------------------- -- Table structure for column_config