升级到JDK21,SpringBoot3.1.8,SpringCloud2022.0.5

This commit is contained in:
AlanScipio
2024-01-31 15:32:00 +08:00
parent c3de97c825
commit 4039d79e5a
110 changed files with 2359 additions and 4017 deletions

View File

@@ -20,15 +20,6 @@ public class RuoYiGenApplication
public static void main(String[] args)
{
SpringApplication.run(RuoYiGenApplication.class, args);
System.out.println("(♥◠‿◠)ノ゙ 代码生成模块启动成功 ლ(´ڡ`ლ)゙ \n" +
" .-------. ____ __ \n" +
" | _ _ \\ \\ \\ / / \n" +
" | ( ' ) | \\ _. / ' \n" +
" |(_ o _) / _( )_ .' \n" +
" | (_,_).' __ ___(_ o _)' \n" +
" | |\\ \\ | || |(_,_)' \n" +
" | | \\ `' /| `-' / \n" +
" | | \\ / \\ / \n" +
" ''-' `'-' `-..-' ");
System.out.println("(♥◠‿◠)ノ゙ 代码生成模块启动成功 ლ(´ڡ`ლ)゙");
}
}

View File

@@ -4,7 +4,8 @@ import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.io.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
@@ -30,13 +31,12 @@ import com.ruoyi.gen.service.IGenTableService;
/**
* 代码生成 操作处理
*
*
* @author ruoyi
*/
@RequestMapping("/gen")
@RestController
public class GenController extends BaseController
{
public class GenController extends BaseController {
@Autowired
private IGenTableService genTableService;
@@ -48,8 +48,7 @@ public class GenController extends BaseController
*/
@RequiresPermissions("tool:gen:list")
@GetMapping("/list")
public TableDataInfo genList(GenTable genTable)
{
public TableDataInfo genList(GenTable genTable) {
startPage();
List<GenTable> list = genTableService.selectGenTableList(genTable);
return getDataTable(list);
@@ -60,12 +59,11 @@ public class GenController extends BaseController
*/
@RequiresPermissions("tool:gen:query")
@GetMapping(value = "/{tableId}")
public AjaxResult getInfo(@PathVariable Long tableId)
{
public AjaxResult getInfo(@PathVariable Long tableId) {
GenTable table = genTableService.selectGenTableById(tableId);
List<GenTable> tables = genTableService.selectGenTableAll();
List<GenTableColumn> list = genTableColumnService.selectGenTableColumnListByTableId(tableId);
Map<String, Object> map = new HashMap<String, Object>();
Map<String, Object> map = new HashMap<>();
map.put("info", table);
map.put("rows", list);
map.put("tables", tables);
@@ -77,8 +75,7 @@ public class GenController extends BaseController
*/
@RequiresPermissions("tool:gen:list")
@GetMapping("/db/list")
public TableDataInfo dataList(GenTable genTable)
{
public TableDataInfo dataList(GenTable genTable) {
startPage();
List<GenTable> list = genTableService.selectDbTableList(genTable);
return getDataTable(list);
@@ -88,8 +85,7 @@ public class GenController extends BaseController
* 查询数据表字段列表
*/
@GetMapping(value = "/column/{tableId}")
public TableDataInfo columnList(Long tableId)
{
public TableDataInfo columnList(Long tableId) {
TableDataInfo dataInfo = new TableDataInfo();
List<GenTableColumn> list = genTableColumnService.selectGenTableColumnListByTableId(tableId);
dataInfo.setRows(list);
@@ -103,8 +99,7 @@ public class GenController extends BaseController
@RequiresPermissions("tool:gen:import")
@Log(title = "代码生成", businessType = BusinessType.IMPORT)
@PostMapping("/importTable")
public AjaxResult importTableSave(String tables)
{
public AjaxResult importTableSave(String tables) {
String[] tableNames = Convert.toStrArray(tables);
// 查询表信息
List<GenTable> tableList = genTableService.selectDbTableListByNames(tableNames);
@@ -118,8 +113,7 @@ public class GenController extends BaseController
@RequiresPermissions("tool:gen:edit")
@Log(title = "代码生成", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult editSave(@Validated @RequestBody GenTable genTable)
{
public AjaxResult editSave(@Validated @RequestBody GenTable genTable) {
genTableService.validateEdit(genTable);
genTableService.updateGenTable(genTable);
return success();
@@ -131,8 +125,7 @@ public class GenController extends BaseController
@RequiresPermissions("tool:gen:remove")
@Log(title = "代码生成", businessType = BusinessType.DELETE)
@DeleteMapping("/{tableIds}")
public AjaxResult remove(@PathVariable Long[] tableIds)
{
public AjaxResult remove(@PathVariable Long[] tableIds) {
genTableService.deleteGenTableByIds(tableIds);
return success();
}
@@ -142,8 +135,7 @@ public class GenController extends BaseController
*/
@RequiresPermissions("tool:gen:preview")
@GetMapping("/preview/{tableId}")
public AjaxResult preview(@PathVariable("tableId") Long tableId) throws IOException
{
public AjaxResult preview(@PathVariable("tableId") Long tableId) {
Map<String, String> dataMap = genTableService.previewCode(tableId);
return success(dataMap);
}
@@ -154,8 +146,7 @@ public class GenController extends BaseController
@RequiresPermissions("tool:gen:code")
@Log(title = "代码生成", businessType = BusinessType.GENCODE)
@GetMapping("/download/{tableName}")
public void download(HttpServletResponse response, @PathVariable("tableName") String tableName) throws IOException
{
public void download(HttpServletResponse response, @PathVariable("tableName") String tableName) throws IOException {
byte[] data = genTableService.downloadCode(tableName);
genCode(response, data);
}
@@ -166,8 +157,7 @@ public class GenController extends BaseController
@RequiresPermissions("tool:gen:code")
@Log(title = "代码生成", businessType = BusinessType.GENCODE)
@GetMapping("/genCode/{tableName}")
public AjaxResult genCode(@PathVariable("tableName") String tableName)
{
public AjaxResult genCode(@PathVariable("tableName") String tableName) {
genTableService.generatorCode(tableName);
return success();
}
@@ -178,8 +168,7 @@ public class GenController extends BaseController
@RequiresPermissions("tool:gen:edit")
@Log(title = "代码生成", businessType = BusinessType.UPDATE)
@GetMapping("/synchDb/{tableName}")
public AjaxResult synchDb(@PathVariable("tableName") String tableName)
{
public AjaxResult synchDb(@PathVariable("tableName") String tableName) {
genTableService.synchDb(tableName);
return success();
}
@@ -190,8 +179,7 @@ public class GenController extends BaseController
@RequiresPermissions("tool:gen:code")
@Log(title = "代码生成", businessType = BusinessType.GENCODE)
@GetMapping("/batchGenCode")
public void batchGenCode(HttpServletResponse response, String tables) throws IOException
{
public void batchGenCode(HttpServletResponse response, String tables) throws IOException {
String[] tableNames = Convert.toStrArray(tables);
byte[] data = genTableService.downloadCode(tableNames);
genCode(response, data);
@@ -200,8 +188,7 @@ public class GenController extends BaseController
/**
* 生成zip文件
*/
private void genCode(HttpServletResponse response, byte[] data) throws IOException
{
private void genCode(HttpServletResponse response, byte[] data) throws IOException {
response.reset();
response.setHeader("Content-Disposition", "attachment; filename=\"ruoyi.zip\"");
response.addHeader("Content-Length", "" + data.length);

View File

@@ -1,8 +1,9 @@
package com.ruoyi.gen.domain;
import java.io.Serial;
import java.util.List;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotBlank;
import org.apache.commons.lang3.ArrayUtils;
import com.ruoyi.common.core.constant.GenConstants;
import com.ruoyi.common.core.utils.StringUtils;
@@ -15,6 +16,7 @@ import com.ruoyi.common.core.web.domain.BaseEntity;
*/
public class GenTable extends BaseEntity
{
@Serial
private static final long serialVersionUID = 1L;
/** 编号 */

View File

@@ -1,336 +1,321 @@
package com.ruoyi.gen.domain;
import javax.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotBlank;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.web.domain.BaseEntity;
import java.io.Serial;
/**
* 代码生成业务字段表 gen_table_column
*
*
* @author ruoyi
*/
public class GenTableColumn extends BaseEntity
{
public class GenTableColumn extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/** 编号 */
/**
* 编号
*/
private Long columnId;
/** 归属表编号 */
/**
* 归属表编号
*/
private Long tableId;
/** 列名称 */
/**
* 列名称
*/
private String columnName;
/** 列描述 */
/**
* 列描述
*/
private String columnComment;
/** 列类型 */
/**
* 列类型
*/
private String columnType;
/** JAVA类型 */
/**
* JAVA类型
*/
private String javaType;
/** JAVA字段名 */
/**
* JAVA字段名
*/
@NotBlank(message = "Java属性不能为空")
private String javaField;
/** 是否主键1是 */
/**
* 是否主键1是
*/
private String isPk;
/** 是否自增1是 */
/**
* 是否自增1是
*/
private String isIncrement;
/** 是否必填1是 */
/**
* 是否必填1是
*/
private String isRequired;
/** 是否为插入字段1是 */
/**
* 是否为插入字段1是
*/
private String isInsert;
/** 是否编辑字段1是 */
/**
* 是否编辑字段1是
*/
private String isEdit;
/** 是否列表字段1是 */
/**
* 是否列表字段1是
*/
private String isList;
/** 是否查询字段1是 */
/**
* 是否查询字段1是
*/
private String isQuery;
/** 查询方式EQ等于、NE不等于、GT大于、LT小于、LIKE模糊、BETWEEN范围 */
/**
* 查询方式EQ等于、NE不等于、GT大于、LT小于、LIKE模糊、BETWEEN范围
*/
private String queryType;
/** 显示类型input文本框、textarea文本域、select下拉框、checkbox复选框、radio单选框、datetime日期控件、image图片上传控件、upload文件上传控件、editor富文本控件 */
/**
* 显示类型input文本框、textarea文本域、select下拉框、checkbox复选框、radio单选框、datetime日期控件、image图片上传控件、upload文件上传控件、editor富文本控件
*/
private String htmlType;
/** 字典类型 */
/**
* 字典类型
*/
private String dictType;
/** 排序 */
/**
* 排序
*/
private Integer sort;
public void setColumnId(Long columnId)
{
public void setColumnId(Long columnId) {
this.columnId = columnId;
}
public Long getColumnId()
{
public Long getColumnId() {
return columnId;
}
public void setTableId(Long tableId)
{
public void setTableId(Long tableId) {
this.tableId = tableId;
}
public Long getTableId()
{
public Long getTableId() {
return tableId;
}
public void setColumnName(String columnName)
{
public void setColumnName(String columnName) {
this.columnName = columnName;
}
public String getColumnName()
{
public String getColumnName() {
return columnName;
}
public void setColumnComment(String columnComment)
{
public void setColumnComment(String columnComment) {
this.columnComment = columnComment;
}
public String getColumnComment()
{
public String getColumnComment() {
return columnComment;
}
public void setColumnType(String columnType)
{
public void setColumnType(String columnType) {
this.columnType = columnType;
}
public String getColumnType()
{
public String getColumnType() {
return columnType;
}
public void setJavaType(String javaType)
{
public void setJavaType(String javaType) {
this.javaType = javaType;
}
public String getJavaType()
{
public String getJavaType() {
return javaType;
}
public void setJavaField(String javaField)
{
public void setJavaField(String javaField) {
this.javaField = javaField;
}
public String getJavaField()
{
public String getJavaField() {
return javaField;
}
public String getCapJavaField()
{
public String getCapJavaField() {
return StringUtils.capitalize(javaField);
}
public void setIsPk(String isPk)
{
public void setIsPk(String isPk) {
this.isPk = isPk;
}
public String getIsPk()
{
public String getIsPk() {
return isPk;
}
public boolean isPk()
{
public boolean isPk() {
return isPk(this.isPk);
}
public boolean isPk(String isPk)
{
public boolean isPk(String isPk) {
return isPk != null && StringUtils.equals("1", isPk);
}
public String getIsIncrement()
{
public String getIsIncrement() {
return isIncrement;
}
public void setIsIncrement(String isIncrement)
{
public void setIsIncrement(String isIncrement) {
this.isIncrement = isIncrement;
}
public boolean isIncrement()
{
public boolean isIncrement() {
return isIncrement(this.isIncrement);
}
public boolean isIncrement(String isIncrement)
{
public boolean isIncrement(String isIncrement) {
return isIncrement != null && StringUtils.equals("1", isIncrement);
}
public void setIsRequired(String isRequired)
{
public void setIsRequired(String isRequired) {
this.isRequired = isRequired;
}
public String getIsRequired()
{
public String getIsRequired() {
return isRequired;
}
public boolean isRequired()
{
public boolean isRequired() {
return isRequired(this.isRequired);
}
public boolean isRequired(String isRequired)
{
public boolean isRequired(String isRequired) {
return isRequired != null && StringUtils.equals("1", isRequired);
}
public void setIsInsert(String isInsert)
{
public void setIsInsert(String isInsert) {
this.isInsert = isInsert;
}
public String getIsInsert()
{
public String getIsInsert() {
return isInsert;
}
public boolean isInsert()
{
public boolean isInsert() {
return isInsert(this.isInsert);
}
public boolean isInsert(String isInsert)
{
public boolean isInsert(String isInsert) {
return isInsert != null && StringUtils.equals("1", isInsert);
}
public void setIsEdit(String isEdit)
{
public void setIsEdit(String isEdit) {
this.isEdit = isEdit;
}
public String getIsEdit()
{
public String getIsEdit() {
return isEdit;
}
public boolean isEdit()
{
public boolean isEdit() {
return isInsert(this.isEdit);
}
public boolean isEdit(String isEdit)
{
public boolean isEdit(String isEdit) {
return isEdit != null && StringUtils.equals("1", isEdit);
}
public void setIsList(String isList)
{
public void setIsList(String isList) {
this.isList = isList;
}
public String getIsList()
{
public String getIsList() {
return isList;
}
public boolean isList()
{
public boolean isList() {
return isList(this.isList);
}
public boolean isList(String isList)
{
public boolean isList(String isList) {
return isList != null && StringUtils.equals("1", isList);
}
public void setIsQuery(String isQuery)
{
public void setIsQuery(String isQuery) {
this.isQuery = isQuery;
}
public String getIsQuery()
{
public String getIsQuery() {
return isQuery;
}
public boolean isQuery()
{
public boolean isQuery() {
return isQuery(this.isQuery);
}
public boolean isQuery(String isQuery)
{
public boolean isQuery(String isQuery) {
return isQuery != null && StringUtils.equals("1", isQuery);
}
public void setQueryType(String queryType)
{
public void setQueryType(String queryType) {
this.queryType = queryType;
}
public String getQueryType()
{
public String getQueryType() {
return queryType;
}
public String getHtmlType()
{
public String getHtmlType() {
return htmlType;
}
public void setHtmlType(String htmlType)
{
public void setHtmlType(String htmlType) {
this.htmlType = htmlType;
}
public void setDictType(String dictType)
{
public void setDictType(String dictType) {
this.dictType = dictType;
}
public String getDictType()
{
public String getDictType() {
return dictType;
}
public void setSort(Integer sort)
{
public void setSort(Integer sort) {
this.sort = sort;
}
public Integer getSort()
{
public Integer getSort() {
return sort;
}
public boolean isSuperColumn()
{
public boolean isSuperColumn() {
return isSuperColumn(this.javaField);
}
public static boolean isSuperColumn(String javaField)
{
public static boolean isSuperColumn(String javaField) {
return StringUtils.equalsAnyIgnoreCase(javaField,
// BaseEntity
"createBy", "createTime", "updateBy", "updateTime", "remark",
@@ -338,36 +323,28 @@ public class GenTableColumn extends BaseEntity
"parentName", "parentId", "orderNum", "ancestors");
}
public boolean isUsableColumn()
{
public boolean isUsableColumn() {
return isUsableColumn(javaField);
}
public static boolean isUsableColumn(String javaField)
{
public static boolean isUsableColumn(String javaField) {
// isSuperColumn()中的名单用于避免生成多余Domain属性若某些属性在生成页面时需要用到不能忽略则放在此处白名单
return StringUtils.equalsAnyIgnoreCase(javaField, "parentId", "orderNum", "remark");
}
public String readConverterExp()
{
public String readConverterExp() {
String remarks = StringUtils.substringBetween(this.columnComment, "", "");
StringBuffer sb = new StringBuffer();
if (StringUtils.isNotEmpty(remarks))
{
for (String value : remarks.split(" "))
{
if (StringUtils.isNotEmpty(value))
{
if (StringUtils.isNotEmpty(remarks)) {
for (String value : remarks.split(" ")) {
if (StringUtils.isNotEmpty(value)) {
Object startStr = value.subSequence(0, 1);
String endStr = value.substring(1);
sb.append("").append(startStr).append("=").append(endStr).append(",");
}
}
return sb.deleteCharAt(sb.length() - 1).toString();
}
else
{
} else {
return this.columnComment;
}
}

View File

@@ -1,83 +1,83 @@
package com.ruoyi.gen.mapper;
import java.util.List;
import com.ruoyi.gen.domain.GenTable;
/**
* 业务 数据层
*
*
* @author ruoyi
*/
public interface GenTableMapper
{
public interface GenTableMapper {
/**
* 查询业务列表
*
*
* @param genTable 业务信息
* @return 业务集合
*/
public List<GenTable> selectGenTableList(GenTable genTable);
List<GenTable> selectGenTableList(GenTable genTable);
/**
* 查询据库列表
*
*
* @param genTable 业务信息
* @return 数据库表集合
*/
public List<GenTable> selectDbTableList(GenTable genTable);
List<GenTable> selectDbTableList(GenTable genTable);
/**
* 查询据库列表
*
*
* @param tableNames 表名称组
* @return 数据库表集合
*/
public List<GenTable> selectDbTableListByNames(String[] tableNames);
List<GenTable> selectDbTableListByNames(String[] tableNames);
/**
* 查询所有表信息
*
*
* @return 表信息集合
*/
public List<GenTable> selectGenTableAll();
List<GenTable> selectGenTableAll();
/**
* 查询表ID业务信息
*
*
* @param id 业务ID
* @return 业务信息
*/
public GenTable selectGenTableById(Long id);
GenTable selectGenTableById(Long id);
/**
* 查询表名称业务信息
*
*
* @param tableName 表名称
* @return 业务信息
*/
public GenTable selectGenTableByName(String tableName);
GenTable selectGenTableByName(String tableName);
/**
* 新增业务
*
*
* @param genTable 业务信息
* @return 结果
*/
public int insertGenTable(GenTable genTable);
int insertGenTable(GenTable genTable);
/**
* 修改业务
*
*
* @param genTable 业务信息
* @return 结果
*/
public int updateGenTable(GenTable genTable);
int updateGenTable(GenTable genTable);
/**
* 批量删除业务
*
*
* @param ids 需要删除的数据ID
* @return 结果
*/
public int deleteGenTableByIds(Long[] ids);
int deleteGenTableByIds(Long[] ids);
}

View File

@@ -11,6 +11,7 @@ import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.apache.velocity.Template;
@@ -39,12 +40,11 @@ import com.ruoyi.gen.util.VelocityUtils;
/**
* 业务 服务层实现
*
*
* @author ruoyi
*/
@Service
public class GenTableServiceImpl implements IGenTableService
{
public class GenTableServiceImpl implements IGenTableService {
private static final Logger log = LoggerFactory.getLogger(GenTableServiceImpl.class);
@Autowired
@@ -55,13 +55,12 @@ public class GenTableServiceImpl implements IGenTableService
/**
* 查询业务信息
*
*
* @param id 业务ID
* @return 业务信息
*/
@Override
public GenTable selectGenTableById(Long id)
{
public GenTable selectGenTableById(Long id) {
GenTable genTable = genTableMapper.selectGenTableById(id);
setTableFromOptions(genTable);
return genTable;
@@ -69,68 +68,60 @@ public class GenTableServiceImpl implements IGenTableService
/**
* 查询业务列表
*
*
* @param genTable 业务信息
* @return 业务集合
*/
@Override
public List<GenTable> selectGenTableList(GenTable genTable)
{
public List<GenTable> selectGenTableList(GenTable genTable) {
return genTableMapper.selectGenTableList(genTable);
}
/**
* 查询据库列表
*
*
* @param genTable 业务信息
* @return 数据库表集合
*/
@Override
public List<GenTable> selectDbTableList(GenTable genTable)
{
public List<GenTable> selectDbTableList(GenTable genTable) {
return genTableMapper.selectDbTableList(genTable);
}
/**
* 查询据库列表
*
*
* @param tableNames 表名称组
* @return 数据库表集合
*/
@Override
public List<GenTable> selectDbTableListByNames(String[] tableNames)
{
public List<GenTable> selectDbTableListByNames(String[] tableNames) {
return genTableMapper.selectDbTableListByNames(tableNames);
}
/**
* 查询所有表信息
*
*
* @return 表信息集合
*/
@Override
public List<GenTable> selectGenTableAll()
{
public List<GenTable> selectGenTableAll() {
return genTableMapper.selectGenTableAll();
}
/**
* 修改业务
*
*
* @param genTable 业务信息
* @return 结果
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void updateGenTable(GenTable genTable)
{
public void updateGenTable(GenTable genTable) {
String options = JSON.toJSONString(genTable.getParams());
genTable.setOptions(options);
int row = genTableMapper.updateGenTable(genTable);
if (row > 0)
{
for (GenTableColumn cenTableColumn : genTable.getColumns())
{
if (row > 0) {
for (GenTableColumn cenTableColumn : genTable.getColumns()) {
genTableColumnMapper.updateGenTableColumn(cenTableColumn);
}
}
@@ -138,62 +129,52 @@ public class GenTableServiceImpl implements IGenTableService
/**
* 删除业务对象
*
*
* @param tableIds 需要删除的数据ID
* @return 结果
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteGenTableByIds(Long[] tableIds)
{
public void deleteGenTableByIds(Long[] tableIds) {
genTableMapper.deleteGenTableByIds(tableIds);
genTableColumnMapper.deleteGenTableColumnByIds(tableIds);
}
/**
* 导入表结构
*
*
* @param tableList 导入表列表
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void importGenTable(List<GenTable> tableList)
{
public void importGenTable(List<GenTable> tableList) {
String operName = SecurityUtils.getUsername();
try
{
for (GenTable table : tableList)
{
try {
for (GenTable table : tableList) {
String tableName = table.getTableName();
GenUtils.initTable(table, operName);
int row = genTableMapper.insertGenTable(table);
if (row > 0)
{
if (row > 0) {
// 保存列信息
List<GenTableColumn> genTableColumns = genTableColumnMapper.selectDbTableColumnsByName(tableName);
for (GenTableColumn column : genTableColumns)
{
for (GenTableColumn column : genTableColumns) {
GenUtils.initColumnField(column, table);
genTableColumnMapper.insertGenTableColumn(column);
}
}
}
}
catch (Exception e)
{
} catch (Exception e) {
throw new ServiceException("导入失败:" + e.getMessage());
}
}
/**
* 预览代码
*
*
* @param tableId 表编号
* @return 预览数据列表
*/
@Override
public Map<String, String> previewCode(Long tableId)
{
public Map<String, String> previewCode(Long tableId) {
Map<String, String> dataMap = new LinkedHashMap<>();
// 查询表信息
GenTable table = genTableMapper.selectGenTableById(tableId);
@@ -207,8 +188,7 @@ public class GenTableServiceImpl implements IGenTableService
// 获取模板列表
List<String> templates = VelocityUtils.getTemplateList(table.getTplCategory(), table.getTplWebType());
for (String template : templates)
{
for (String template : templates) {
// 渲染模板
StringWriter sw = new StringWriter();
Template tpl = Velocity.getTemplate(template, Constants.UTF8);
@@ -220,13 +200,12 @@ public class GenTableServiceImpl implements IGenTableService
/**
* 生成代码(下载方式)
*
*
* @param tableName 表名称
* @return 数据
*/
@Override
public byte[] downloadCode(String tableName)
{
public byte[] downloadCode(String tableName) {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
ZipOutputStream zip = new ZipOutputStream(outputStream);
generatorCode(tableName, zip);
@@ -236,12 +215,11 @@ public class GenTableServiceImpl implements IGenTableService
/**
* 生成代码(自定义路径)
*
*
* @param tableName 表名称
*/
@Override
public void generatorCode(String tableName)
{
public void generatorCode(String tableName) {
// 查询表信息
GenTable table = genTableMapper.selectGenTableByName(tableName);
// 设置主子表信息
@@ -255,21 +233,16 @@ public class GenTableServiceImpl implements IGenTableService
// 获取模板列表
List<String> templates = VelocityUtils.getTemplateList(table.getTplCategory(), table.getTplWebType());
for (String template : templates)
{
if (!StringUtils.containsAny(template, "sql.vm", "api.js.vm", "index.vue.vm", "index-tree.vue.vm"))
{
for (String template : templates) {
if (!StringUtils.containsAny(template, "sql.vm", "api.js.vm", "index.vue.vm", "index-tree.vue.vm")) {
// 渲染模板
StringWriter sw = new StringWriter();
Template tpl = Velocity.getTemplate(template, Constants.UTF8);
tpl.merge(context, sw);
try
{
try {
String path = getGenPath(table, template);
FileUtils.writeStringToFile(new File(path), sw.toString(), CharsetKit.UTF_8);
}
catch (IOException e)
{
} catch (IOException e) {
throw new ServiceException("渲染模板失败,表名:" + table.getTableName());
}
}
@@ -278,72 +251,62 @@ public class GenTableServiceImpl implements IGenTableService
/**
* 同步数据库
*
*
* @param tableName 表名称
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void synchDb(String tableName)
{
public void synchDb(String tableName) {
GenTable table = genTableMapper.selectGenTableByName(tableName);
List<GenTableColumn> tableColumns = table.getColumns();
Map<String, GenTableColumn> tableColumnMap = tableColumns.stream().collect(Collectors.toMap(GenTableColumn::getColumnName, Function.identity()));
List<GenTableColumn> dbTableColumns = genTableColumnMapper.selectDbTableColumnsByName(tableName);
if (StringUtils.isEmpty(dbTableColumns))
{
if (StringUtils.isEmpty(dbTableColumns)) {
throw new ServiceException("同步数据失败,原表结构不存在");
}
List<String> dbTableColumnNames = dbTableColumns.stream().map(GenTableColumn::getColumnName).collect(Collectors.toList());
List<String> dbTableColumnNames = dbTableColumns.stream().map(GenTableColumn::getColumnName).toList();
dbTableColumns.forEach(column -> {
GenUtils.initColumnField(column, table);
if (tableColumnMap.containsKey(column.getColumnName()))
{
if (tableColumnMap.containsKey(column.getColumnName())) {
GenTableColumn prevColumn = tableColumnMap.get(column.getColumnName());
column.setColumnId(prevColumn.getColumnId());
if (column.isList())
{
if (column.isList()) {
// 如果是列表,继续保留查询方式/字典类型选项
column.setDictType(prevColumn.getDictType());
column.setQueryType(prevColumn.getQueryType());
}
if (StringUtils.isNotEmpty(prevColumn.getIsRequired()) && !column.isPk()
&& (column.isInsert() || column.isEdit())
&& ((column.isUsableColumn()) || (!column.isSuperColumn())))
{
&& ((column.isUsableColumn()) || (!column.isSuperColumn()))) {
// 如果是(新增/修改&非主键/非忽略及父属性),继续保留必填/显示类型选项
column.setIsRequired(prevColumn.getIsRequired());
column.setHtmlType(prevColumn.getHtmlType());
}
genTableColumnMapper.updateGenTableColumn(column);
}
else
{
} else {
genTableColumnMapper.insertGenTableColumn(column);
}
});
List<GenTableColumn> delColumns = tableColumns.stream().filter(column -> !dbTableColumnNames.contains(column.getColumnName())).collect(Collectors.toList());
if (StringUtils.isNotEmpty(delColumns))
{
if (StringUtils.isNotEmpty(delColumns)) {
genTableColumnMapper.deleteGenTableColumns(delColumns);
}
}
/**
* 批量生成代码(下载方式)
*
*
* @param tableNames 表数组
* @return 数据
*/
@Override
public byte[] downloadCode(String[] tableNames)
{
public byte[] downloadCode(String[] tableNames) {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
ZipOutputStream zip = new ZipOutputStream(outputStream);
for (String tableName : tableNames)
{
for (String tableName : tableNames) {
generatorCode(tableName, zip);
}
IOUtils.closeQuietly(zip);
@@ -353,8 +316,7 @@ public class GenTableServiceImpl implements IGenTableService
/**
* 查询表信息并生成代码
*/
private void generatorCode(String tableName, ZipOutputStream zip)
{
private void generatorCode(String tableName, ZipOutputStream zip) {
// 查询表信息
GenTable table = genTableMapper.selectGenTableByName(tableName);
// 设置主子表信息
@@ -368,23 +330,19 @@ public class GenTableServiceImpl implements IGenTableService
// 获取模板列表
List<String> templates = VelocityUtils.getTemplateList(table.getTplCategory(), table.getTplWebType());
for (String template : templates)
{
for (String template : templates) {
// 渲染模板
StringWriter sw = new StringWriter();
Template tpl = Velocity.getTemplate(template, Constants.UTF8);
tpl.merge(context, sw);
try
{
try {
// 添加到zip
zip.putNextEntry(new ZipEntry(VelocityUtils.getFileName(template, table)));
IOUtils.write(sw.toString(), zip, Constants.UTF8);
IOUtils.closeQuietly(sw);
zip.flush();
zip.closeEntry();
}
catch (IOException e)
{
} catch (IOException e) {
log.error("渲染模板失败,表名:" + table.getTableName(), e);
}
}
@@ -392,36 +350,24 @@ public class GenTableServiceImpl implements IGenTableService
/**
* 修改保存参数校验
*
*
* @param genTable 业务信息
*/
@Override
public void validateEdit(GenTable genTable)
{
if (GenConstants.TPL_TREE.equals(genTable.getTplCategory()))
{
public void validateEdit(GenTable genTable) {
if (GenConstants.TPL_TREE.equals(genTable.getTplCategory())) {
String options = JSON.toJSONString(genTable.getParams());
JSONObject paramsObj = JSON.parseObject(options);
if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_CODE)))
{
if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_CODE))) {
throw new ServiceException("树编码字段不能为空");
}
else if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_PARENT_CODE)))
{
} else if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_PARENT_CODE))) {
throw new ServiceException("树父编码字段不能为空");
}
else if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_NAME)))
{
} else if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_NAME))) {
throw new ServiceException("树名称字段不能为空");
}
else if (GenConstants.TPL_SUB.equals(genTable.getTplCategory()))
{
if (StringUtils.isEmpty(genTable.getSubTableName()))
{
} else if (GenConstants.TPL_SUB.equals(genTable.getTplCategory())) {
if (StringUtils.isEmpty(genTable.getSubTableName())) {
throw new ServiceException("关联子表的表名不能为空");
}
else if (StringUtils.isEmpty(genTable.getSubTableFkName()))
{
} else if (StringUtils.isEmpty(genTable.getSubTableFkName())) {
throw new ServiceException("子表关联的外键名不能为空");
}
}
@@ -430,64 +376,52 @@ public class GenTableServiceImpl implements IGenTableService
/**
* 设置主键列信息
*
*
* @param table 业务表信息
*/
public void setPkColumn(GenTable table)
{
for (GenTableColumn column : table.getColumns())
{
if (column.isPk())
{
public void setPkColumn(GenTable table) {
for (GenTableColumn column : table.getColumns()) {
if (column.isPk()) {
table.setPkColumn(column);
break;
}
}
if (StringUtils.isNull(table.getPkColumn()))
{
table.setPkColumn(table.getColumns().get(0));
if (StringUtils.isNull(table.getPkColumn())) {
table.setPkColumn(table.getColumns().getFirst());
}
if (GenConstants.TPL_SUB.equals(table.getTplCategory()))
{
for (GenTableColumn column : table.getSubTable().getColumns())
{
if (column.isPk())
{
if (GenConstants.TPL_SUB.equals(table.getTplCategory())) {
for (GenTableColumn column : table.getSubTable().getColumns()) {
if (column.isPk()) {
table.getSubTable().setPkColumn(column);
break;
}
}
if (StringUtils.isNull(table.getSubTable().getPkColumn()))
{
table.getSubTable().setPkColumn(table.getSubTable().getColumns().get(0));
if (StringUtils.isNull(table.getSubTable().getPkColumn())) {
table.getSubTable().setPkColumn(table.getSubTable().getColumns().getFirst());
}
}
}
/**
* 设置主子表信息
*
*
* @param table 业务表信息
*/
public void setSubTable(GenTable table)
{
public void setSubTable(GenTable table) {
String subTableName = table.getSubTableName();
if (StringUtils.isNotEmpty(subTableName))
{
if (StringUtils.isNotEmpty(subTableName)) {
table.setSubTable(genTableMapper.selectGenTableByName(subTableName));
}
}
/**
* 设置代码生成其他选项值
*
*
* @param genTable 设置后的生成对象
*/
public void setTableFromOptions(GenTable genTable)
{
public void setTableFromOptions(GenTable genTable) {
JSONObject paramsObj = JSON.parseObject(genTable.getOptions());
if (StringUtils.isNotNull(paramsObj))
{
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);
@@ -504,16 +438,14 @@ public class GenTableServiceImpl implements IGenTableService
/**
* 获取代码生成地址
*
* @param table 业务表信息
*
* @param table 业务表信息
* @param template 模板文件路径
* @return 生成地址
*/
public static String getGenPath(GenTable table, String template)
{
public static String getGenPath(GenTable table, String template) {
String genPath = table.getGenPath();
if (StringUtils.equals(genPath, "/"))
{
if (StringUtils.equals(genPath, "/")) {
return System.getProperty("user.dir") + File.separator + "src" + File.separator + VelocityUtils.getFileName(template, table);
}
return genPath + File.separator + VelocityUtils.getFileName(template, table);

View File

@@ -2,120 +2,117 @@ package com.ruoyi.gen.service;
import java.util.List;
import java.util.Map;
import com.ruoyi.gen.domain.GenTable;
/**
* 业务 服务层
*
*
* @author ruoyi
*/
public interface IGenTableService
{
public interface IGenTableService {
/**
* 查询业务列表
*
*
* @param genTable 业务信息
* @return 业务集合
*/
public List<GenTable> selectGenTableList(GenTable genTable);
List<GenTable> selectGenTableList(GenTable genTable);
/**
* 查询据库列表
*
*
* @param genTable 业务信息
* @return 数据库表集合
*/
public List<GenTable> selectDbTableList(GenTable genTable);
List<GenTable> selectDbTableList(GenTable genTable);
/**
* 查询据库列表
*
*
* @param tableNames 表名称组
* @return 数据库表集合
*/
public List<GenTable> selectDbTableListByNames(String[] tableNames);
List<GenTable> selectDbTableListByNames(String[] tableNames);
/**
* 查询所有表信息
*
*
* @return 表信息集合
*/
public List<GenTable> selectGenTableAll();
List<GenTable> selectGenTableAll();
/**
* 查询业务信息
*
*
* @param id 业务ID
* @return 业务信息
*/
public GenTable selectGenTableById(Long id);
GenTable selectGenTableById(Long id);
/**
* 修改业务
*
*
* @param genTable 业务信息
* @return 结果
*/
public void updateGenTable(GenTable genTable);
void updateGenTable(GenTable genTable);
/**
* 删除业务信息
*
*
* @param tableIds 需要删除的表数据ID
* @return 结果
*/
public void deleteGenTableByIds(Long[] tableIds);
void deleteGenTableByIds(Long[] tableIds);
/**
* 导入表结构
*
*
* @param tableList 导入表列表
*/
public void importGenTable(List<GenTable> tableList);
void importGenTable(List<GenTable> tableList);
/**
* 预览代码
*
*
* @param tableId 表编号
* @return 预览数据列表
*/
public Map<String, String> previewCode(Long tableId);
Map<String, String> previewCode(Long tableId);
/**
* 生成代码(下载方式)
*
*
* @param tableName 表名称
* @return 数据
*/
public byte[] downloadCode(String tableName);
byte[] downloadCode(String tableName);
/**
* 生成代码(自定义路径)
*
*
* @param tableName 表名称
* @return 数据
*/
public void generatorCode(String tableName);
void generatorCode(String tableName);
/**
* 同步数据库
*
*
* @param tableName 表名称
*/
public void synchDb(String tableName);
void synchDb(String tableName);
/**
* 批量生成代码(下载方式)
*
*
* @param tableNames 表数组
* @return 数据
*/
public byte[] downloadCode(String[] tableNames);
byte[] downloadCode(String[] tableNames);
/**
* 修改保存参数校验
*
*
* @param genTable 业务信息
*/
public void validateEdit(GenTable genTable);
void validateEdit(GenTable genTable);
}