🎨 修改生成函数
This commit is contained in:
parent
68f9cda260
commit
d13451c1f9
|
@ -22,7 +22,7 @@ public class ZipFileService {
|
||||||
|
|
||||||
private static final String FILE_EXTENSION = ".vm";
|
private static final String FILE_EXTENSION = ".vm";
|
||||||
private static final String UTF_8 = StandardCharsets.UTF_8.name();
|
private static final String UTF_8 = StandardCharsets.UTF_8.name();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建ZIP文件
|
* 创建ZIP文件
|
||||||
*
|
*
|
||||||
|
@ -52,7 +52,7 @@ public class ZipFileService {
|
||||||
try {
|
try {
|
||||||
String entryPath = generatorVo.getPath().replace(FILE_EXTENSION, "");
|
String entryPath = generatorVo.getPath().replace(FILE_EXTENSION, "");
|
||||||
zipOutputStream.putNextEntry(new ZipEntry(entryPath));
|
zipOutputStream.putNextEntry(new ZipEntry(entryPath));
|
||||||
zipOutputStream.write(generatorVo.getCode().getBytes(StandardCharsets.UTF_8));
|
zipOutputStream.write(generatorVo.getCode().getBytes(UTF_8));
|
||||||
zipOutputStream.closeEntry();
|
zipOutputStream.closeEntry();
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
throw new RuntimeException("Failed to add file to ZIP: " + generatorVo.getPath(), e);
|
throw new RuntimeException("Failed to add file to ZIP: " + generatorVo.getPath(), e);
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
package cn.bunny.domain.group;
|
|
||||||
|
|
||||||
public interface RequestGroup {
|
|
||||||
|
|
||||||
void DataBaseGroup();
|
|
||||||
|
|
||||||
void SqlGroup();
|
|
||||||
|
|
||||||
}
|
|
|
@ -13,6 +13,7 @@ import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
|
@ -30,14 +31,41 @@ public class GeneratorServiceImpl implements GeneratorService {
|
||||||
private final IMetadataProvider sqlMetadataProvider;
|
private final IMetadataProvider sqlMetadataProvider;
|
||||||
private final ZipFileService zipFileService;
|
private final ZipFileService zipFileService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 代码生成方法---数据库生成
|
||||||
|
*
|
||||||
|
* @param dto 生成参数
|
||||||
|
* @return 生成的代码,按表名分组
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Map<String, List<GeneratorVo>> generateCodeByDatabase(VmsArgumentDto dto) {
|
public Map<String, List<GeneratorVo>> generateCodeByDatabase(VmsArgumentDto dto) {
|
||||||
return generateCode(dto, databaseMetadataProvider);
|
return dto.getTableNames().parallelStream()
|
||||||
|
.flatMap(tableName -> {
|
||||||
|
TableMetaData tableMeta = databaseMetadataProvider.getTableMetadata(tableName);
|
||||||
|
List<ColumnMetaData> columns = databaseMetadataProvider.getColumnInfoList(tableName);
|
||||||
|
return GeneratorServiceImplHelper.getGeneratorStream(dto, tableMeta, columns);
|
||||||
|
})
|
||||||
|
.collect(Collectors.groupingBy(GeneratorVo::getTableName));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 代码生成方法---Sql语句生成
|
||||||
|
*
|
||||||
|
* @param dto 生成参数
|
||||||
|
* @return 生成的代码,按表名分组
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Map<String, List<GeneratorVo>> generateCodeBySql(VmsArgumentDto dto) {
|
public Map<String, List<GeneratorVo>> generateCodeBySql(VmsArgumentDto dto) {
|
||||||
return generateCode(dto, sqlMetadataProvider);
|
String sql = dto.getSql();
|
||||||
|
TableMetaData tableMeta = sqlMetadataProvider.getTableMetadata(sql);
|
||||||
|
List<ColumnMetaData> columns = sqlMetadataProvider.getColumnInfoList(sql);
|
||||||
|
|
||||||
|
List<GeneratorVo> generatorVoList = GeneratorServiceImplHelper.getGeneratorStream(dto, tableMeta, columns).toList();
|
||||||
|
|
||||||
|
Map<String, List<GeneratorVo>> map = new HashMap<>();
|
||||||
|
map.put(tableMeta.getTableName(), generatorVoList);
|
||||||
|
|
||||||
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -50,23 +78,6 @@ public class GeneratorServiceImpl implements GeneratorService {
|
||||||
return downloadByZip(dto, this::generateCodeBySql);
|
return downloadByZip(dto, this::generateCodeBySql);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 通用代码生成方法
|
|
||||||
*
|
|
||||||
* @param dto 生成参数
|
|
||||||
* @param provider 元数据提供者
|
|
||||||
* @return 生成的代码,按表名分组
|
|
||||||
*/
|
|
||||||
private Map<String, List<GeneratorVo>> generateCode(VmsArgumentDto dto, IMetadataProvider provider) {
|
|
||||||
return dto.getTableNames().parallelStream()
|
|
||||||
.flatMap(tableName -> {
|
|
||||||
TableMetaData tableMeta = provider.getTableMetadata(tableName);
|
|
||||||
List<ColumnMetaData> columns = provider.getColumnInfoList(tableName);
|
|
||||||
return GeneratorServiceImplHelper.getGeneratorStream(dto, tableMeta, columns);
|
|
||||||
})
|
|
||||||
.collect(Collectors.groupingBy(GeneratorVo::getTableName));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通用ZIP打包下载方法
|
* 通用ZIP打包下载方法
|
||||||
*
|
*
|
||||||
|
@ -74,7 +85,8 @@ public class GeneratorServiceImpl implements GeneratorService {
|
||||||
* @param generator 代码生成函数
|
* @param generator 代码生成函数
|
||||||
* @return ZIP文件响应实体
|
* @return ZIP文件响应实体
|
||||||
*/
|
*/
|
||||||
private ResponseEntity<byte[]> downloadByZip(VmsArgumentDto dto, Function<VmsArgumentDto, Map<String, List<GeneratorVo>>> generator) {
|
private ResponseEntity<byte[]> downloadByZip(VmsArgumentDto dto,
|
||||||
|
Function<VmsArgumentDto, Map<String, List<GeneratorVo>>> generator) {
|
||||||
List<GeneratorVo> generatorVoList = generator.apply(dto)
|
List<GeneratorVo> generatorVoList = generator.apply(dto)
|
||||||
.values().stream()
|
.values().stream()
|
||||||
.flatMap(Collection::stream)
|
.flatMap(Collection::stream)
|
||||||
|
|
Loading…
Reference in New Issue