From 320ebac43253d1662ce242a556712a2c29520700 Mon Sep 17 00:00:00 2001 From: cgb Date: Mon, 19 Feb 2024 14:57:15 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=A2=9E=E5=8A=A0referenceBean=E5=8A=9F?= =?UTF-8?q?=E8=83=BD,=20=E8=83=BD=E5=8F=82=E8=80=83=E5=85=B6=E4=BB=96?= =?UTF-8?q?=E5=AE=9E=E4=BD=93=E7=94=9F=E6=88=90=E4=BB=A3=E7=A0=81.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/sjhy/plugin/dto/TableInfoDTO.java | 11 ++ .../com/sjhy/plugin/entity/TableInfo.java | 9 ++ .../service/impl/CodeGenerateServiceImpl.java | 67 +++++++-- .../plugin/tool/ExtraCodeGenerateUtils.java | 2 +- .../tool/FindRelevancyBeanFileVisitor.java | 141 ++++++++++++++++++ .../com/sjhy/plugin/ui/SelectSavePath.form | 60 +++++--- .../com/sjhy/plugin/ui/SelectSavePath.java | 9 ++ src/main/resources/string.properties | 2 + 8 files changed, 265 insertions(+), 36 deletions(-) create mode 100644 src/main/java/com/sjhy/plugin/tool/FindRelevancyBeanFileVisitor.java diff --git a/src/main/java/com/sjhy/plugin/dto/TableInfoDTO.java b/src/main/java/com/sjhy/plugin/dto/TableInfoDTO.java index ec77edeb..04131f85 100644 --- a/src/main/java/com/sjhy/plugin/dto/TableInfoDTO.java +++ b/src/main/java/com/sjhy/plugin/dto/TableInfoDTO.java @@ -47,6 +47,7 @@ private TableInfoDTO(PsiClass psiClass) { this.savePackageName = ""; this.savePath = ""; this.saveModelName = ""; + this.referenceBean = ""; this.fullColumn = new ArrayList<>(); for (PsiField field : psiClass.getAllFields()) { this.fullColumn.add(new ColumnInfoDTO(field)); @@ -61,6 +62,7 @@ private TableInfoDTO(DbTable dbTable) { this.savePackageName = ""; this.savePath = ""; this.saveModelName = ""; + this.referenceBean = ""; this.fullColumn = new ArrayList<>(); // 处理所有列 JBIterable columns = DasUtil.getColumns(dbTable); @@ -73,6 +75,9 @@ private static void merge(TableInfoDTO oldData, TableInfoDTO newData) { if (oldData == null || CollectionUtil.isEmpty(oldData.getFullColumn())) { return; } + if (!StringUtils.isEmpty(oldData.getReferenceBean())) { + newData.referenceBean = oldData.getReferenceBean(); + } if (!StringUtils.isEmpty(oldData.getPreName())) { newData.preName = oldData.getPreName(); } @@ -187,6 +192,10 @@ private static void merge(TableInfoDTO oldData, TableInfoDTO newData) { * 保存的model名称 */ private String saveModelName; + /** + * 参考的bean名 + */ + private String referenceBean; public TableInfo toTableInfo(PsiClass psiClass) { TableInfo tableInfo = new TableInfo(); @@ -235,6 +244,7 @@ public TableInfo toTableInfo(DbTable dbTable) { tableInfo.setFullColumn(new ArrayList<>()); tableInfo.setPkColumn(new ArrayList<>()); tableInfo.setOtherColumn(new ArrayList<>()); + tableInfo.setReferenceBean(this.getReferenceBean()); // 列 JBIterable columns = DasUtil.getColumns(dbTable); Map nameToObj = new HashMap<>(columns.size()); @@ -271,6 +281,7 @@ public static TableInfoDTO valueOf(TableInfo tableInfo) { dto.setComment(tableInfo.getComment()); dto.setSavePackageName(tableInfo.getSavePackageName()); dto.setSaveModelName(tableInfo.getSaveModelName()); + dto.setReferenceBean(tableInfo.getReferenceBean()); dto.setFullColumn(new ArrayList<>()); // 处理列 for (ColumnInfo columnInfo : tableInfo.getFullColumn()) { diff --git a/src/main/java/com/sjhy/plugin/entity/TableInfo.java b/src/main/java/com/sjhy/plugin/entity/TableInfo.java index 169ad13c..ce2a1b5f 100644 --- a/src/main/java/com/sjhy/plugin/entity/TableInfo.java +++ b/src/main/java/com/sjhy/plugin/entity/TableInfo.java @@ -69,4 +69,13 @@ public class TableInfo { * 保存的model名称 */ private String saveModelName; + /** + * 参考的bean名 + */ + private String referenceBean; + /** + * 保存的包名称 + */ + private String saveFullPackageName; + } diff --git a/src/main/java/com/sjhy/plugin/service/impl/CodeGenerateServiceImpl.java b/src/main/java/com/sjhy/plugin/service/impl/CodeGenerateServiceImpl.java index de41c397..3f641988 100644 --- a/src/main/java/com/sjhy/plugin/service/impl/CodeGenerateServiceImpl.java +++ b/src/main/java/com/sjhy/plugin/service/impl/CodeGenerateServiceImpl.java @@ -21,6 +21,9 @@ import com.sjhy.plugin.service.TableInfoSettingsService; import com.sjhy.plugin.tool.*; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; import java.util.*; import java.util.stream.Collectors; @@ -46,6 +49,10 @@ public class CodeGenerateServiceImpl implements CodeGenerateService { * 缓存数据工具 */ private CacheDataUtils cacheDataUtils; + /** + * 名称工具 + */ + private NameUtils nameUtils; /** * 导入包时过滤的包前缀 */ @@ -54,6 +61,7 @@ public class CodeGenerateServiceImpl implements CodeGenerateService { public CodeGenerateServiceImpl(Project project) { this.project = project; this.moduleManager = ModuleManager.getInstance(project); + this.nameUtils = NameUtils.getInstance(); this.tableInfoService = TableInfoSettingsService.getInstance(); this.cacheDataUtils = CacheDataUtils.getInstance(); } @@ -76,6 +84,15 @@ public void generate(Collection