diff --git a/pom.xml b/pom.xml index 696de5f..ab6997a 100644 --- a/pom.xml +++ b/pom.xml @@ -17,7 +17,7 @@ UTF-8 17 3.1.1 - 3.4.2 + 3.4.3 1.2.24 1.1 1.21 diff --git a/ruoyi-models/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTable.java b/ruoyi-models/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTable.java index f11ec5c..98afbfe 100644 --- a/ruoyi-models/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTable.java +++ b/ruoyi-models/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTable.java @@ -108,6 +108,7 @@ public class GenTable extends BaseEntity { private String parentMenuName; /** 是否含有关联字段 */ + @Deprecated private String haveSubColumn; public boolean isSub() { diff --git a/ruoyi-models/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTableColumn.java b/ruoyi-models/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTableColumn.java index 0c4cabb..48e27ba 100644 --- a/ruoyi-models/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTableColumn.java +++ b/ruoyi-models/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTableColumn.java @@ -75,19 +75,24 @@ public class GenTableColumn extends BaseEntity { private Integer sort; /** 关联表名称 */ + @Deprecated private String subColumnTableName; /** 关联字段名称 */ + @Deprecated private String subColumnFkName; /** 映射字段名称 */ + @Deprecated private String subColumnName; /** 映射字段Java字段名 */ + @Deprecated private String subColumnJavaField; /** 映射字段Java类型 */ + @Deprecated private String subColumnJavaType; public boolean isPk() { diff --git a/ruoyi-models/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/vo/GenTableVo.java b/ruoyi-models/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/vo/GenTableVo.java index 3781c6d..d607547 100644 --- a/ruoyi-models/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/vo/GenTableVo.java +++ b/ruoyi-models/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/vo/GenTableVo.java @@ -1,7 +1,10 @@ package com.ruoyi.generator.domain.vo; +import java.util.ArrayList; import java.util.Collection; +import java.util.HashMap; import java.util.List; +import java.util.Map; import com.ruoyi.common.core.domain.BaseEntity; import com.ruoyi.generator.domain.GenJoinTable; @@ -24,16 +27,83 @@ import lombok.Setter; public class GenTableVo extends BaseEntity { private static final long serialVersionUID = 1L; + /** 业务表 */ private GenTable table; + /** 业务表的列 */ + @Valid private List columns; + /** 关联信息 */ + @Valid private List joinTablesMate; + /** 参与关联的表 */ @Valid private Collection joinTables; + /** 参与关联的列 */ @Valid private List joinColumns; + public List getAllGenTables() { + List allGenTables = new ArrayList<>(); + allGenTables.add(table); + allGenTables.addAll(joinTables); + return allGenTables; + } + + public List getAllGenTableColumns() { + List allGenTableColumns = new ArrayList<>(); + if (columns != null) { + allGenTableColumns.addAll(columns); + } + if (joinColumns != null) { + allGenTableColumns.addAll(joinColumns); + } + return allGenTableColumns; + } + + public Map getTableNameMap() { + Map tableMap = new HashMap<>(); + if (table != null) { + tableMap.put(table.getTableId(), table.getTableName()); + } + if (joinTables != null) { + for (GenTable genTable : joinTables) { + if (genTable != null) { + tableMap.put(genTable.getTableId(), genTable.getTableName()); + } + } + } + return tableMap; + } + + public Map getTableAliasMap() { + Map tableMap = new HashMap<>(); + if (table != null) { + tableMap.put(table.getTableId(), table.getTableAlias()); + } + if (joinTablesMate != null) { + for (GenJoinTable genTable : joinTablesMate) { + if (genTable != null) { + tableMap.put(genTable.getLeftTableId(), genTable.getLeftTableAlias()); + tableMap.put(genTable.getRightTableId(), genTable.getRightTableAlias()); + } + } + } + return tableMap; + } + + public Map getColumnNameMap() { + Map columnMap = new HashMap<>(); + List genTables = getAllGenTables(); + for(GenTable genTable : genTables){ + for(GenTableColumn genTableColumn : genTable.getColumns()){ + columnMap.put(genTableColumn.getColumnId(), genTableColumn.getColumnName()); + } + } + return columnMap; + } + } \ No newline at end of file diff --git a/ruoyi-models/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenJoinTableServiceImpl.java b/ruoyi-models/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenJoinTableServiceImpl.java index 4f375ed..469ca10 100644 --- a/ruoyi-models/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenJoinTableServiceImpl.java +++ b/ruoyi-models/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenJoinTableServiceImpl.java @@ -1,5 +1,6 @@ package com.ruoyi.generator.service; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -10,11 +11,13 @@ import org.springframework.stereotype.Service; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; +import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.generator.constant.GenConstants; import com.ruoyi.generator.domain.GenJoinTable; import com.ruoyi.generator.domain.GenTable; +import com.ruoyi.generator.domain.GenTableColumn; import com.ruoyi.generator.domain.vo.GenTableVo; import com.ruoyi.generator.mapper.GenJoinTableMapper; import com.ruoyi.generator.mapper.GenTableMapper; @@ -77,10 +80,13 @@ public class GenJoinTableServiceImpl implements IGenJoinTableService { GenTableVo genTableVo = new GenTableVo(); genTableVo.setTable(table); genTableVo.setColumns(table.getColumns()); + GenJoinTable genJoinTable = new GenJoinTable(); genJoinTable.setTableId(table.getTableId()); List selectGenJoinTableList = this.selectGenJoinTableList(genJoinTable); genTableVo.setJoinTablesMate(selectGenJoinTableList); + + List joinColumns = new ArrayList(); Map joinTableMap = new HashMap(); joinTableMap.put(table.getTableId(), table); selectGenJoinTableList.forEach(i -> { @@ -90,7 +96,17 @@ public class GenJoinTableServiceImpl implements IGenJoinTableService { if (Objects.isNull(joinTableMap.get(i.getRightTableId()))) { joinTableMap.put(i.getRightTableId(), this.selectGenTableById(i.getRightTableId())); } + GenTable newTable = joinTableMap.get(i.getNewTableId()); + if(Objects.isNull(newTable)) throw new ServiceException("关联表不存在"); + List joinColumnNames = i.getJoinColumns(); + if(Objects.isNull(joinColumnNames)) return; + newTable.getColumns().forEach(j -> { + if (joinColumnNames.contains(j.getColumnName())) { + joinColumns.add(j); + } + }); }); + genTableVo.setJoinColumns(joinColumns); genTableVo.setJoinTables(joinTableMap.values()); return genTableVo; } diff --git a/ruoyi-models/ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityUtils.java b/ruoyi-models/ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityUtils.java index 3ac1ddc..afeb86e 100644 --- a/ruoyi-models/ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityUtils.java +++ b/ruoyi-models/ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityUtils.java @@ -64,6 +64,12 @@ public class VelocityUtils velocityContext.put("permissionPrefix", getPermissionPrefix(moduleName, businessName)); velocityContext.put("columns", genTable.getColumns()); velocityContext.put("table", genTable); + velocityContext.put("tableNameMap", genTableVo.getTableNameMap()); + velocityContext.put("tableAliasMap", genTableVo.getTableAliasMap()); + velocityContext.put("columnNameMap", genTableVo.getColumnNameMap()); + velocityContext.put("allColumns", genTableVo.getAllGenTableColumns()); + velocityContext.put("joinColunms", genTableVo.getJoinColumns()); + velocityContext.put("joinTablesMate", genTableVo.getJoinTablesMate()); velocityContext.put("dicts", getDicts(genTable)); setMenuVelocityContext(velocityContext, genTable); if (GenConstants.TPL_TREE.equals(tplCategory)) diff --git a/ruoyi-models/ruoyi-generator/src/main/resources/vm/java/domain.java.vm b/ruoyi-models/ruoyi-generator/src/main/resources/vm/java/domain.java.vm index d604be9..68a852a 100644 --- a/ruoyi-models/ruoyi-generator/src/main/resources/vm/java/domain.java.vm +++ b/ruoyi-models/ruoyi-generator/src/main/resources/vm/java/domain.java.vm @@ -29,7 +29,7 @@ public class ${ClassName} extends ${Entity} { private static final long serialVersionUID = 1L; -#foreach ($column in $columns) +#foreach ($column in $allColumns) #if(!$table.isSuperColumn($column.javaField)) /** $column.columnComment */ @@ -69,7 +69,7 @@ public class ${ClassName} extends ${Entity} private List<${subClassName}> ${subclassName}List; #end -#foreach ($column in $columns) +#foreach ($column in $allColumns) #if(!$table.isSuperColumn($column.javaField)) #if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]")) #set($AttrName=$column.javaField) @@ -121,7 +121,7 @@ public class ${ClassName} extends ${Entity} @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) -#foreach ($column in $columns) +#foreach ($column in $allColumns) #if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]")) #set($AttrName=$column.javaField) #else diff --git a/ruoyi-models/ruoyi-generator/src/main/resources/vm/vue/v2/index.vue.vm b/ruoyi-models/ruoyi-generator/src/main/resources/vm/vue/v2/index.vue.vm index a7e9d2d..77ddd15 100644 --- a/ruoyi-models/ruoyi-generator/src/main/resources/vm/vue/v2/index.vue.vm +++ b/ruoyi-models/ruoyi-generator/src/main/resources/vm/vue/v2/index.vue.vm @@ -1,7 +1,7 @@