mirror of
https://github.com/continew-org/continew-admin.git
synced 2025-09-10 08:57:14 +08:00
feat(generator): 生成预览支持批量
This commit is contained in:
@@ -45,51 +45,50 @@ public enum FormTypeEnum implements BaseEnum<Integer> {
|
||||
*/
|
||||
INPUT_PASSWORD(3, "密码输入框"),
|
||||
|
||||
/**
|
||||
* 文本域
|
||||
*/
|
||||
TEXT_AREA(4, "文本域"),
|
||||
|
||||
/**
|
||||
* 下拉框
|
||||
*/
|
||||
SELECT(4, "下拉框"),
|
||||
SELECT(5, "下拉框"),
|
||||
|
||||
/**
|
||||
* 单选框
|
||||
*/
|
||||
RADIO(5, "单选框"),
|
||||
RADIO(6, "单选框"),
|
||||
|
||||
/**
|
||||
* 开关
|
||||
*/
|
||||
SWITCH(6, "开关"),
|
||||
SWITCH(7, "开关"),
|
||||
|
||||
/**
|
||||
* 复选框
|
||||
*/
|
||||
CHECK_BOX(7, "复选框"),
|
||||
|
||||
/**
|
||||
* 文本域
|
||||
*/
|
||||
TEXT_AREA(8, "文本域"),
|
||||
|
||||
/**
|
||||
* 时间框
|
||||
*/
|
||||
TIME(9, "时间框"),
|
||||
|
||||
/**
|
||||
* 日期框
|
||||
*/
|
||||
DATE(10, "日期框"),
|
||||
CHECK_BOX(8, "复选框"),
|
||||
|
||||
/**
|
||||
* 树形选择
|
||||
*/
|
||||
TREE_SELECT(11, "树选择"),
|
||||
TREE_SELECT(9, "树选择"),
|
||||
|
||||
/**
|
||||
* 时间框
|
||||
*/
|
||||
DATE_TIME(12, "日期时间框"),
|
||||
;
|
||||
TIME(10, "时间框"),
|
||||
|
||||
/**
|
||||
* 日期框
|
||||
*/
|
||||
DATE(11, "日期框"),
|
||||
|
||||
/**
|
||||
* 时间框
|
||||
*/
|
||||
DATE_TIME(12, "日期时间框"),;
|
||||
|
||||
private final Integer value;
|
||||
private final String description;
|
||||
|
@@ -74,15 +74,15 @@ public interface GeneratorService {
|
||||
/**
|
||||
* 生成预览
|
||||
*
|
||||
* @param tableName 表名称
|
||||
* @param tableNames 表名称列表
|
||||
* @return 预览信息
|
||||
*/
|
||||
List<GeneratePreviewResp> preview(String tableName);
|
||||
List<GeneratePreviewResp> preview(List<String> tableNames);
|
||||
|
||||
/**
|
||||
* 生成代码
|
||||
*
|
||||
* @param tableNames 表明层
|
||||
* @param tableNames 表名称列表
|
||||
* @param response 响应对象
|
||||
*/
|
||||
void generate(List<String> tableNames, HttpServletResponse response);
|
||||
|
@@ -217,52 +217,10 @@ public class GeneratorServiceImpl implements GeneratorService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<GeneratePreviewResp> preview(String tableName) {
|
||||
public List<GeneratePreviewResp> preview(List<String> tableNames) {
|
||||
List<GeneratePreviewResp> generatePreviewList = new ArrayList<>();
|
||||
// 初始化配置
|
||||
GenConfigDO genConfig = genConfigMapper.selectById(tableName);
|
||||
CheckUtils.throwIfNull(genConfig, "请先进行数据表 [{}] 生成配置", tableName);
|
||||
List<FieldConfigDO> fieldConfigList = fieldConfigMapper.selectListByTableName(tableName);
|
||||
CheckUtils.throwIfEmpty(fieldConfigList, "请先进行数据表 [{}] 字段配置", tableName);
|
||||
InnerGenConfigDO innerGenConfig = new InnerGenConfigDO(genConfig);
|
||||
// 渲染代码
|
||||
String classNamePrefix = innerGenConfig.getClassNamePrefix();
|
||||
Map<String, GeneratorProperties.TemplateConfig> templateConfigMap = generatorProperties.getTemplateConfigs();
|
||||
|
||||
TemplateEngine engine = TemplateUtil.createEngine(new TemplateConfig("templates", TemplateConfig.ResourceMode.CLASSPATH));
|
||||
if (engine instanceof FreemarkerEngine) {
|
||||
((FreemarkerEngine) engine).getConfiguration().setSharedVariable("statics", BeansWrapper.getDefaultInstance().getStaticModels());
|
||||
}
|
||||
|
||||
for (Map.Entry<String, GeneratorProperties.TemplateConfig> templateConfigEntry : templateConfigMap.entrySet()) {
|
||||
GeneratorProperties.TemplateConfig templateConfig = templateConfigEntry.getValue();
|
||||
// 移除需要忽略的字段
|
||||
innerGenConfig.setFieldConfigs(fieldConfigList.stream()
|
||||
.filter(fieldConfig -> !StrUtil.equalsAny(fieldConfig.getFieldName(), templateConfig
|
||||
.getExcludeFields()))
|
||||
.toList());
|
||||
// 预处理配置
|
||||
this.pretreatment(innerGenConfig);
|
||||
// 处理其他配置
|
||||
innerGenConfig.setSubPackageName(templateConfig.getPackageName());
|
||||
String classNameSuffix = templateConfigEntry.getKey();
|
||||
String className = classNamePrefix + classNameSuffix;
|
||||
innerGenConfig.setClassName(className);
|
||||
boolean isBackend = templateConfig.isBackend();
|
||||
String extension = templateConfig.getExtension();
|
||||
GeneratePreviewResp generatePreview = new GeneratePreviewResp();
|
||||
generatePreview.setBackend(isBackend);
|
||||
generatePreviewList.add(generatePreview);
|
||||
String fileName = className + extension;
|
||||
if (!isBackend) {
|
||||
fileName = ".vue".equals(extension) && "index".equals(classNameSuffix)
|
||||
? "index.vue"
|
||||
: this.getFrontendFileName(classNamePrefix, className, extension);
|
||||
}
|
||||
generatePreview.setFileName(fileName);
|
||||
generatePreview.setContent(engine.getTemplate(templateConfig.getTemplatePath())
|
||||
.render(BeanUtil.beanToMap(innerGenConfig)));
|
||||
this.setPreviewPath(generatePreview, innerGenConfig, templateConfig);
|
||||
for (String tableName : tableNames) {
|
||||
generatePreviewList.addAll(this.preview(tableName));
|
||||
}
|
||||
return generatePreviewList;
|
||||
}
|
||||
@@ -314,6 +272,64 @@ public class GeneratorServiceImpl implements GeneratorService {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成预览
|
||||
*
|
||||
* @param tableName 表名称
|
||||
* @return 预览信息
|
||||
*/
|
||||
private List<GeneratePreviewResp> preview(String tableName) {
|
||||
List<GeneratePreviewResp> generatePreviewList = new ArrayList<>();
|
||||
// 初始化配置
|
||||
GenConfigDO genConfig = genConfigMapper.selectById(tableName);
|
||||
CheckUtils.throwIfNull(genConfig, "请先进行数据表 [{}] 生成配置", tableName);
|
||||
List<FieldConfigDO> fieldConfigList = fieldConfigMapper.selectListByTableName(tableName);
|
||||
CheckUtils.throwIfEmpty(fieldConfigList, "请先进行数据表 [{}] 字段配置", tableName);
|
||||
InnerGenConfigDO innerGenConfig = new InnerGenConfigDO(genConfig);
|
||||
// 渲染代码
|
||||
String classNamePrefix = innerGenConfig.getClassNamePrefix();
|
||||
Map<String, GeneratorProperties.TemplateConfig> templateConfigMap = generatorProperties.getTemplateConfigs();
|
||||
|
||||
TemplateEngine engine = TemplateUtil
|
||||
.createEngine(new TemplateConfig("templates", TemplateConfig.ResourceMode.CLASSPATH));
|
||||
if (engine instanceof FreemarkerEngine) {
|
||||
((FreemarkerEngine)engine).getConfiguration()
|
||||
.setSharedVariable("statics", BeansWrapper.getDefaultInstance().getStaticModels());
|
||||
}
|
||||
|
||||
for (Map.Entry<String, GeneratorProperties.TemplateConfig> templateConfigEntry : templateConfigMap.entrySet()) {
|
||||
GeneratorProperties.TemplateConfig templateConfig = templateConfigEntry.getValue();
|
||||
// 移除需要忽略的字段
|
||||
innerGenConfig.setFieldConfigs(fieldConfigList.stream()
|
||||
.filter(fieldConfig -> !StrUtil.equalsAny(fieldConfig.getFieldName(), templateConfig
|
||||
.getExcludeFields()))
|
||||
.toList());
|
||||
// 预处理配置
|
||||
this.pretreatment(innerGenConfig);
|
||||
// 处理其他配置
|
||||
innerGenConfig.setSubPackageName(templateConfig.getPackageName());
|
||||
String classNameSuffix = templateConfigEntry.getKey();
|
||||
String className = classNamePrefix + classNameSuffix;
|
||||
innerGenConfig.setClassName(className);
|
||||
boolean isBackend = templateConfig.isBackend();
|
||||
String extension = templateConfig.getExtension();
|
||||
GeneratePreviewResp generatePreview = new GeneratePreviewResp();
|
||||
generatePreview.setBackend(isBackend);
|
||||
generatePreviewList.add(generatePreview);
|
||||
String fileName = className + extension;
|
||||
if (!isBackend) {
|
||||
fileName = ".vue".equals(extension) && "index".equals(classNameSuffix)
|
||||
? "index.vue"
|
||||
: this.getFrontendFileName(classNamePrefix, className, extension);
|
||||
}
|
||||
generatePreview.setFileName(fileName);
|
||||
generatePreview.setContent(engine.getTemplate(templateConfig.getTemplatePath())
|
||||
.render(BeanUtil.beanToMap(innerGenConfig)));
|
||||
this.setPreviewPath(generatePreview, innerGenConfig, templateConfig);
|
||||
}
|
||||
return generatePreviewList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成代码
|
||||
*
|
||||
|
Reference in New Issue
Block a user