diff --git a/ruoyi-models/ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java b/ruoyi-models/ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java index 82ac83c..778a5bc 100644 --- a/ruoyi-models/ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java +++ b/ruoyi-models/ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java @@ -84,7 +84,7 @@ public class GenController extends BaseController { GenJoinTable genJoinTable = new GenJoinTable(); genJoinTable.setTableId(tableId); List selectGenJoinTableList = genJoinTableService.selectGenJoinTableList(genJoinTable); - genTableVo.setJoins(selectGenJoinTableList); + genTableVo.setJoinTablesMate(selectGenJoinTableList); Map joinTableMap = new HashMap(); joinTableMap.put(tableId, table); selectGenJoinTableList.forEach(i -> { @@ -179,7 +179,7 @@ public class GenController extends BaseController { genTableService.validateEdit(genTable); genTableService.updateGenTable(genTable); genJoinTableService.deleteGenJoinTableByTableId(genTable.getTableId()); - genTableVo.getJoins().forEach(i -> { + genTableVo.getJoinTablesMate().forEach(i -> { genJoinTableService.insertGenJoinTable(i); }); return success(); diff --git a/ruoyi-models/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenJoinTable.java b/ruoyi-models/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenJoinTable.java index 195a3ba..2365e06 100644 --- a/ruoyi-models/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenJoinTable.java +++ b/ruoyi-models/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenJoinTable.java @@ -1,5 +1,7 @@ package com.ruoyi.generator.domain; +import java.util.List; + import com.ruoyi.common.core.domain.BaseEntity; import lombok.Data; @@ -17,6 +19,9 @@ public class GenJoinTable extends BaseEntity { /** 关联表编号 */ private Long rightTableId; + /** 新引入的表 */ + private Long newTableId; + /** 主表别名 */ private String leftTableAlias; @@ -32,4 +37,9 @@ public class GenJoinTable extends BaseEntity { /** 连接类型 */ private String joinType; + /** 关联字段 */ + private List joinColumns; + + private Long orderNum; + } diff --git a/ruoyi-models/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenJoinTableColumn.java b/ruoyi-models/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenJoinTableColumn.java deleted file mode 100644 index 71fcd1f..0000000 --- a/ruoyi-models/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenJoinTableColumn.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.ruoyi.generator.domain; - -import com.ruoyi.common.core.domain.BaseEntity; - -import lombok.Data; -import lombok.EqualsAndHashCode; - -@Data -@EqualsAndHashCode(callSuper = true) -public class GenJoinTableColumn extends BaseEntity { - - /** 归属表编号 */ - private Long tableId; - - /** 关联表编号 */ - private Long rightTableId; - - /** 编号 */ - private Long columnId; - - /** 关联表别名 */ - private String rightTableAlias; - -} 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 60c433a..3781c6d 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 @@ -28,7 +28,7 @@ public class GenTableVo extends BaseEntity { private List columns; - private List joins; + private List joinTablesMate; @Valid private Collection joinTables; diff --git a/ruoyi-models/ruoyi-generator/src/main/java/com/ruoyi/generator/handler/ListStringTypeHandler.java b/ruoyi-models/ruoyi-generator/src/main/java/com/ruoyi/generator/handler/ListStringTypeHandler.java new file mode 100644 index 0000000..2b70d38 --- /dev/null +++ b/ruoyi-models/ruoyi-generator/src/main/java/com/ruoyi/generator/handler/ListStringTypeHandler.java @@ -0,0 +1,41 @@ +package com.ruoyi.generator.handler; + +import java.sql.CallableStatement; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.List; + +import org.apache.ibatis.type.BaseTypeHandler; +import org.apache.ibatis.type.JdbcType; + +import com.ruoyi.common.utils.StringUtils; + +public class ListStringTypeHandler extends BaseTypeHandler> { + + @Override + public void setNonNullParameter(PreparedStatement ps, int i, List parameter, JdbcType jdbcType) + throws SQLException { + String value = StringUtils.join(parameter, ","); + ps.setString(i, value); + } + + @Override + public List getNullableResult(ResultSet rs, String columnName) throws SQLException { + String value = rs.getString(columnName); + return StringUtils.isBlank(value) ? null : StringUtils.str2List(value, ",", true, true); + } + + @Override + public List getNullableResult(ResultSet rs, int columnIndex) throws SQLException { + String value = rs.getString(columnIndex); + return StringUtils.isBlank(value) ? null : StringUtils.str2List(value, ",", true, true); + } + + @Override + public List getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { + String value = cs.getString(columnIndex); + return StringUtils.isBlank(value) ? null : StringUtils.str2List(value, ",", true, true); + } + +} 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 c9c3039..4f375ed 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,13 +1,23 @@ package com.ruoyi.generator.service; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.Objects; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; 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.vo.GenTableVo; import com.ruoyi.generator.mapper.GenJoinTableMapper; +import com.ruoyi.generator.mapper.GenTableMapper; /** * 代码生成关联字段Service业务层处理 @@ -20,6 +30,9 @@ public class GenJoinTableServiceImpl implements IGenJoinTableService { @Autowired private GenJoinTableMapper genJoinTableMapper; + @Autowired + private GenTableMapper genTableMapper; + /** * 查询代码生成关联字段列表 * @@ -31,6 +44,57 @@ public class GenJoinTableServiceImpl implements IGenJoinTableService { return genJoinTableMapper.selectGenJoinTableList(genJoinTable); } + public GenTable selectGenTableById(Long id) { + GenTable genTable = genTableMapper.selectGenTableById(id); + setTableFromOptions(genTable); + return genTable; + } + + /** + * 设置代码生成其他选项值 + * + * @param genTable 设置后的生成对象 + */ + public void setTableFromOptions(GenTable genTable) { + JSONObject paramsObj = JSON.parseObject(genTable.getOptions()); + if (StringUtils.isNotNull(paramsObj)) { + String treeCode = paramsObj.getString(GenConstants.TREE_CODE); + String treeParentCode = paramsObj.getString(GenConstants.TREE_PARENT_CODE); + String treeName = paramsObj.getString(GenConstants.TREE_NAME); + String parentMenuId = paramsObj.getString(GenConstants.PARENT_MENU_ID); + String parentMenuName = paramsObj.getString(GenConstants.PARENT_MENU_NAME); + + genTable.setTreeCode(treeCode); + genTable.setTreeParentCode(treeParentCode); + genTable.setTreeName(treeName); + genTable.setParentMenuId(parentMenuId); + genTable.setParentMenuName(parentMenuName); + } + } + + @Override + public GenTableVo selectGenJoinTableVoListByGenTable(GenTable table) { + 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); + Map joinTableMap = new HashMap(); + joinTableMap.put(table.getTableId(), table); + selectGenJoinTableList.forEach(i -> { + if (Objects.isNull(joinTableMap.get(i.getLeftTableId()))) { + joinTableMap.put(i.getLeftTableId(), this.selectGenTableById(i.getLeftTableId())); + } + if (Objects.isNull(joinTableMap.get(i.getRightTableId()))) { + joinTableMap.put(i.getRightTableId(), this.selectGenTableById(i.getRightTableId())); + } + }); + genTableVo.setJoinTables(joinTableMap.values()); + return genTableVo; + } + /** * 新增代码生成关联字段 * @@ -58,7 +122,7 @@ public class GenJoinTableServiceImpl implements IGenJoinTableService { /** * 根据tableId删除字段关联 */ - public int deleteGenJoinTableByTableId(Long tableId){ + public int deleteGenJoinTableByTableId(Long tableId) { return genJoinTableMapper.deleteGenJoinTableByTableId(tableId); } diff --git a/ruoyi-models/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java b/ruoyi-models/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java index c320f7f..6c1c647 100644 --- a/ruoyi-models/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java +++ b/ruoyi-models/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java @@ -32,6 +32,7 @@ import com.ruoyi.common.utils.StringUtils; import com.ruoyi.generator.constant.GenConstants; import com.ruoyi.generator.domain.GenTable; import com.ruoyi.generator.domain.GenTableColumn; +import com.ruoyi.generator.domain.vo.GenTableVo; import com.ruoyi.generator.mapper.GenTableColumnMapper; import com.ruoyi.generator.mapper.GenTableMapper; import com.ruoyi.generator.util.GenUtils; @@ -53,6 +54,9 @@ public class GenTableServiceImpl implements IGenTableService { @Autowired private GenTableColumnMapper genTableColumnMapper; + @Autowired + private IGenJoinTableService genJoinTableService; + /** * 查询业务信息 * @@ -195,8 +199,9 @@ public class GenTableServiceImpl implements IGenTableService { // 设置主键列信息 setPkColumn(table); VelocityInitializer.initVelocity(); + GenTableVo genTableVo = genJoinTableService.selectGenJoinTableVoListByGenTable(table); - VelocityContext context = VelocityUtils.prepareContext(table); + VelocityContext context = VelocityUtils.prepareContext(genTableVo); // 获取模板列表 List templates = VelocityUtils.getTemplateList(table.getTplCategory(), table.getTplWebType()); @@ -240,8 +245,9 @@ public class GenTableServiceImpl implements IGenTableService { setPkColumn(table); VelocityInitializer.initVelocity(); + GenTableVo genTableVo = genJoinTableService.selectGenJoinTableVoListByGenTable(table); - VelocityContext context = VelocityUtils.prepareContext(table); + VelocityContext context = VelocityUtils.prepareContext(genTableVo); // 获取模板列表 List templates = VelocityUtils.getTemplateList(table.getTplCategory(), table.getTplWebType()); @@ -338,8 +344,8 @@ public class GenTableServiceImpl implements IGenTableService { setPkColumn(table); VelocityInitializer.initVelocity(); - - VelocityContext context = VelocityUtils.prepareContext(table); + GenTableVo genTableVo = genJoinTableService.selectGenJoinTableVoListByGenTable(table); + VelocityContext context = VelocityUtils.prepareContext(genTableVo); // 获取模板列表 List templates = VelocityUtils.getTemplateList(table.getTplCategory(), table.getTplWebType()); diff --git a/ruoyi-models/ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenJoinTableService.java b/ruoyi-models/ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenJoinTableService.java index 9aa3cfd..09255ce 100644 --- a/ruoyi-models/ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenJoinTableService.java +++ b/ruoyi-models/ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenJoinTableService.java @@ -3,6 +3,8 @@ package com.ruoyi.generator.service; import java.util.List; import com.ruoyi.generator.domain.GenJoinTable; +import com.ruoyi.generator.domain.GenTable; +import com.ruoyi.generator.domain.vo.GenTableVo; /** * 代码生成关联字段Service接口 @@ -39,4 +41,6 @@ public interface IGenJoinTableService { * 根据tableId删除字段关联 */ public int deleteGenJoinTableByTableId(Long tableId); + + public GenTableVo selectGenJoinTableVoListByGenTable(GenTable table); } 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 fd58655..3ac1ddc 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 @@ -14,6 +14,7 @@ import com.ruoyi.common.utils.StringUtils; import com.ruoyi.generator.constant.GenConstants; import com.ruoyi.generator.domain.GenTable; import com.ruoyi.generator.domain.GenTableColumn; +import com.ruoyi.generator.domain.vo.GenTableVo; /** * 模板处理工具类 @@ -36,8 +37,9 @@ public class VelocityUtils * * @return 模板列表 */ - public static VelocityContext prepareContext(GenTable genTable) + public static VelocityContext prepareContext(GenTableVo genTableVo) { + GenTable genTable = genTableVo.getTable(); String moduleName = genTable.getModuleName(); String businessName = genTable.getBusinessName(); String packageName = genTable.getPackageName(); diff --git a/ruoyi-models/ruoyi-generator/src/main/resources/mapper/generator/GenJoinTableMapper.xml b/ruoyi-models/ruoyi-generator/src/main/resources/mapper/generator/GenJoinTableMapper.xml index 326bf25..f5a81c6 100644 --- a/ruoyi-models/ruoyi-generator/src/main/resources/mapper/generator/GenJoinTableMapper.xml +++ b/ruoyi-models/ruoyi-generator/src/main/resources/mapper/generator/GenJoinTableMapper.xml @@ -13,14 +13,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - - - - + + + - select table_id, left_table_id, right_table_id, left_table_alias, right_table_alias, left_table_fk,right_table_fk, join_type, create_by, create_time, update_by, update_time from gen_join_table + select table_id, left_table_id, right_table_id, left_table_alias, right_table_alias, left_table_fk, right_table_fk, join_type, join_columns, order_num, new_table_id from gen_join_table @@ -48,10 +50,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" left_table_fk, right_table_fk, join_type, - create_by, - create_time, - update_by, - update_time, + join_columns, + order_num, + new_table_id, #{tableId}, @@ -62,10 +63,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{leftTableFk}, #{rightTableFk}, #{joinType}, - #{createBy}, - #{createTime}, - #{updateBy}, - #{updateTime}, + #{joinColumns,typeHandler=com.ruoyi.generator.handler.ListStringTypeHandler}, + #{orderNum}, + #{newTableId}, @@ -79,16 +79,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" left_table_fk = #{leftTableFk}, right_table_fk = #{rightTableFk}, join_type = #{joinType}, - create_by = #{createBy}, - create_time = #{createTime}, - update_by = #{updateBy}, - update_time = #{updateTime}, + join_columns = #{joinColumns,typeHandler=com.ruoyi.generator.handler.ListStringTypeHandler}, + order_num = #{orderNum}, + new_table_id = #{newTableId}, where gen_join_table.table_id = #{tableId} and gen_join_table.right_table_id = #{rightTableId} - - delete from gen_join_table where table_id = #{tableId} diff --git a/sql/mysql/gen.sql b/sql/mysql/gen.sql index 1df16c5..049b8e4 100644 --- a/sql/mysql/gen.sql +++ b/sql/mysql/gen.sql @@ -78,12 +78,11 @@ CREATE TABLE `gen_join_table` ( `left_table_fk` varchar(200) NOT NULL COMMENT '主表别名', `right_table_fk` varchar(200) NOT NULL COMMENT '关联表别名', `join_type` varchar(200) NOT NULL COMMENT '关联类型', - `create_by` varchar(64) DEFAULT '' COMMENT '创建者', - `create_time` datetime DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) DEFAULT '' COMMENT '更新者', - `update_time` datetime DEFAULT NULL COMMENT '更新时间', + `join_columns` varchar(500) NOT NULL COMMENT '关联字段', + `order_num` varchar(64) NOT NULL COMMENT '序号', + `new_table_id` bigint NOT NULL COMMENT '新表编号', PRIMARY KEY (`table_id`,`right_table_id`,`left_table_id`) -) ENGINE = InnoDB AUTO_INCREMENT = 1 COMMENT = '代码生成关联表字段'; +) ENGINE = InnoDB AUTO_INCREMENT = 1 COMMENT = '代码生成关联表'; insert into sys_menu values('116', '代码生成', '3', '2', 'gen', 'tool/gen/index', '', '', 1, 0, 'C', '0', '0', 'tool:gen:list', 'code', 'admin', sysdate(), '', null, '代码生成菜单');