🎨 修改生成函数

This commit is contained in:
Bunny 2025-07-02 17:13:21 +08:00
parent 68f9cda260
commit d13451c1f9
3 changed files with 34 additions and 31 deletions

View File

@ -22,7 +22,7 @@ public class ZipFileService {
private static final String FILE_EXTENSION = ".vm";
private static final String UTF_8 = StandardCharsets.UTF_8.name();
/**
* 创建ZIP文件
*
@ -52,7 +52,7 @@ public class ZipFileService {
try {
String entryPath = generatorVo.getPath().replace(FILE_EXTENSION, "");
zipOutputStream.putNextEntry(new ZipEntry(entryPath));
zipOutputStream.write(generatorVo.getCode().getBytes(StandardCharsets.UTF_8));
zipOutputStream.write(generatorVo.getCode().getBytes(UTF_8));
zipOutputStream.closeEntry();
} catch (IOException e) {
throw new RuntimeException("Failed to add file to ZIP: " + generatorVo.getPath(), e);

View File

@ -1,9 +0,0 @@
package cn.bunny.domain.group;
public interface RequestGroup {
void DataBaseGroup();
void SqlGroup();
}

View File

@ -13,6 +13,7 @@ import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
@ -30,14 +31,41 @@ public class GeneratorServiceImpl implements GeneratorService {
private final IMetadataProvider sqlMetadataProvider;
private final ZipFileService zipFileService;
/**
* 代码生成方法---数据库生成
*
* @param dto 生成参数
* @return 生成的代码按表名分组
*/
@Override
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
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
@ -50,23 +78,6 @@ public class GeneratorServiceImpl implements GeneratorService {
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打包下载方法
*
@ -74,7 +85,8 @@ public class GeneratorServiceImpl implements GeneratorService {
* @param generator 代码生成函数
* @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)
.values().stream()
.flatMap(Collection::stream)