From d13451c1f971235c59bb0d5f5d2ad8e9330753fe Mon Sep 17 00:00:00 2001 From: Bunny <1319900154@qq.com> Date: Wed, 2 Jul 2025 17:13:21 +0800 Subject: [PATCH] =?UTF-8?q?:art:=20=E4=BF=AE=E6=94=B9=E7=94=9F=E6=88=90?= =?UTF-8?q?=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/bunny/core/ZipFileService.java | 4 +- .../cn/bunny/domain/group/RequestGroup.java | 9 ---- .../service/impl/GeneratorServiceImpl.java | 52 ++++++++++++------- 3 files changed, 34 insertions(+), 31 deletions(-) delete mode 100644 src/main/java/cn/bunny/domain/group/RequestGroup.java diff --git a/src/main/java/cn/bunny/core/ZipFileService.java b/src/main/java/cn/bunny/core/ZipFileService.java index 8b386ba..26856b3 100644 --- a/src/main/java/cn/bunny/core/ZipFileService.java +++ b/src/main/java/cn/bunny/core/ZipFileService.java @@ -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); diff --git a/src/main/java/cn/bunny/domain/group/RequestGroup.java b/src/main/java/cn/bunny/domain/group/RequestGroup.java deleted file mode 100644 index 497e902..0000000 --- a/src/main/java/cn/bunny/domain/group/RequestGroup.java +++ /dev/null @@ -1,9 +0,0 @@ -package cn.bunny.domain.group; - -public interface RequestGroup { - - void DataBaseGroup(); - - void SqlGroup(); - -} diff --git a/src/main/java/cn/bunny/service/impl/GeneratorServiceImpl.java b/src/main/java/cn/bunny/service/impl/GeneratorServiceImpl.java index d11e796..9e48b51 100644 --- a/src/main/java/cn/bunny/service/impl/GeneratorServiceImpl.java +++ b/src/main/java/cn/bunny/service/impl/GeneratorServiceImpl.java @@ -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> generateCodeByDatabase(VmsArgumentDto dto) { - return generateCode(dto, databaseMetadataProvider); + return dto.getTableNames().parallelStream() + .flatMap(tableName -> { + TableMetaData tableMeta = databaseMetadataProvider.getTableMetadata(tableName); + List columns = databaseMetadataProvider.getColumnInfoList(tableName); + return GeneratorServiceImplHelper.getGeneratorStream(dto, tableMeta, columns); + }) + .collect(Collectors.groupingBy(GeneratorVo::getTableName)); } + /** + * 代码生成方法---Sql语句生成 + * + * @param dto 生成参数 + * @return 生成的代码,按表名分组 + */ @Override public Map> generateCodeBySql(VmsArgumentDto dto) { - return generateCode(dto, sqlMetadataProvider); + String sql = dto.getSql(); + TableMetaData tableMeta = sqlMetadataProvider.getTableMetadata(sql); + List columns = sqlMetadataProvider.getColumnInfoList(sql); + + List generatorVoList = GeneratorServiceImplHelper.getGeneratorStream(dto, tableMeta, columns).toList(); + + Map> 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> generateCode(VmsArgumentDto dto, IMetadataProvider provider) { - return dto.getTableNames().parallelStream() - .flatMap(tableName -> { - TableMetaData tableMeta = provider.getTableMetadata(tableName); - List 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 downloadByZip(VmsArgumentDto dto, Function>> generator) { + private ResponseEntity downloadByZip(VmsArgumentDto dto, + Function>> generator) { List generatorVoList = generator.apply(dto) .values().stream() .flatMap(Collection::stream)