mirror of https://gitee.com/y_project/RuoYi.git
commit
590fe13004
@ -1,140 +1,135 @@
|
||||
package com.ruoyi.generator.service.impl;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.StringWriter;
|
||||
import java.util.List;
|
||||
import java.util.zip.ZipEntry;
|
||||
import java.util.zip.ZipOutputStream;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.apache.velocity.Template;
|
||||
import org.apache.velocity.VelocityContext;
|
||||
import org.apache.velocity.app.Velocity;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.ruoyi.common.constant.Constants;
|
||||
import com.ruoyi.common.utils.StringUtils;
|
||||
import com.ruoyi.generator.config.GenConfig;
|
||||
import com.ruoyi.generator.domain.ColumnInfo;
|
||||
import com.ruoyi.generator.domain.TableInfo;
|
||||
import com.ruoyi.generator.mapper.GenMapper;
|
||||
import com.ruoyi.generator.service.IGenService;
|
||||
import com.ruoyi.generator.util.GenUtils;
|
||||
import com.ruoyi.generator.util.VelocityInitializer;
|
||||
|
||||
/**
|
||||
* 代码生成 服务层处理
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
@Service
|
||||
public class GenServiceImpl implements IGenService
|
||||
{
|
||||
private static final Logger log = LoggerFactory.getLogger(GenServiceImpl.class);
|
||||
|
||||
@Autowired
|
||||
private GenMapper genMapper;
|
||||
|
||||
/**
|
||||
* 查询ry数据库表信息
|
||||
*
|
||||
* @param tableInfo 表信息
|
||||
* @return 数据库表列表
|
||||
*/
|
||||
@Override
|
||||
public List<TableInfo> selectTableList(TableInfo tableInfo)
|
||||
{
|
||||
return genMapper.selectTableList(tableInfo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成代码
|
||||
*
|
||||
* @param tableName 表名称
|
||||
* @return 数据
|
||||
*/
|
||||
@Override
|
||||
public byte[] generatorCode(String tableName)
|
||||
{
|
||||
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
|
||||
ZipOutputStream zip = new ZipOutputStream(outputStream);
|
||||
// 查询表信息
|
||||
TableInfo table = genMapper.selectTableByName(tableName);
|
||||
// 查询列信息
|
||||
List<ColumnInfo> columns = genMapper.selectTableColumnsByName(tableName);
|
||||
// 生成代码
|
||||
generatorCode(table, columns, zip);
|
||||
IOUtils.closeQuietly(zip);
|
||||
return outputStream.toByteArray();
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量生成代码
|
||||
*
|
||||
* @param tableNames 表数组
|
||||
* @return 数据
|
||||
*/
|
||||
@Override
|
||||
public byte[] generatorCode(String[] tableNames)
|
||||
{
|
||||
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
|
||||
ZipOutputStream zip = new ZipOutputStream(outputStream);
|
||||
for (String tableName : tableNames)
|
||||
{
|
||||
// 查询表信息
|
||||
TableInfo table = genMapper.selectTableByName(tableName);
|
||||
// 查询列信息
|
||||
List<ColumnInfo> columns = genMapper.selectTableColumnsByName(tableName);
|
||||
// 生成代码
|
||||
generatorCode(table, columns, zip);
|
||||
}
|
||||
IOUtils.closeQuietly(zip);
|
||||
return outputStream.toByteArray();
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成代码
|
||||
*/
|
||||
public void generatorCode(TableInfo table, List<ColumnInfo> columns, ZipOutputStream zip)
|
||||
{
|
||||
// 表名转换成Java属性名
|
||||
String className = GenUtils.tableToJava(table.getTableName());
|
||||
table.setClassName(className);
|
||||
table.setClassname(StringUtils.uncapitalize(className));
|
||||
// 列信息
|
||||
table.setColumns(GenUtils.transColums(columns));
|
||||
// 设置主键
|
||||
table.setPrimaryKey(table.getColumnsLast());
|
||||
|
||||
VelocityInitializer.initVelocity();
|
||||
|
||||
String packageName = GenConfig.getPackageName();
|
||||
String moduleName = GenUtils.getModuleName(packageName);
|
||||
|
||||
VelocityContext context = GenUtils.getVelocityContext(table);
|
||||
|
||||
// 获取模板列表
|
||||
List<String> templates = GenUtils.getTemplates();
|
||||
for (String template : templates)
|
||||
{
|
||||
// 渲染模板
|
||||
StringWriter sw = new StringWriter();
|
||||
Template tpl = Velocity.getTemplate(template, Constants.UTF8);
|
||||
tpl.merge(context, sw);
|
||||
try
|
||||
{
|
||||
// 添加到zip
|
||||
zip.putNextEntry(new ZipEntry(GenUtils.getFileName(template, table, moduleName)));
|
||||
IOUtils.write(sw.toString(), zip, Constants.UTF8);
|
||||
IOUtils.closeQuietly(sw);
|
||||
zip.closeEntry();
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
log.error("渲染模板失败,表名:" + table.getTableName(), e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
package com.ruoyi.generator.service.impl;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.StringWriter;
|
||||
import java.util.List;
|
||||
import java.util.zip.ZipEntry;
|
||||
import java.util.zip.ZipOutputStream;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.apache.velocity.Template;
|
||||
import org.apache.velocity.VelocityContext;
|
||||
import org.apache.velocity.app.Velocity;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.ruoyi.common.constant.Constants;
|
||||
import com.ruoyi.common.utils.StringUtils;
|
||||
import com.ruoyi.generator.config.GenConfig;
|
||||
import com.ruoyi.generator.domain.ColumnInfo;
|
||||
import com.ruoyi.generator.domain.TableInfo;
|
||||
import com.ruoyi.generator.mapper.GenMapper;
|
||||
import com.ruoyi.generator.service.IGenService;
|
||||
import com.ruoyi.generator.util.GenUtils;
|
||||
import com.ruoyi.generator.util.VelocityInitializer;
|
||||
|
||||
/**
|
||||
* 代码生成 服务层处理
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
@Service
|
||||
public class GenServiceImpl implements IGenService
|
||||
{
|
||||
private static final Logger log = LoggerFactory.getLogger(GenServiceImpl.class);
|
||||
|
||||
@Autowired
|
||||
private GenMapper genMapper;
|
||||
|
||||
/**
|
||||
* 查询ry数据库表信息
|
||||
*
|
||||
* @param tableInfo 表信息
|
||||
* @return 数据库表列表
|
||||
*/
|
||||
@Override
|
||||
public List<TableInfo> selectTableList(TableInfo tableInfo)
|
||||
{
|
||||
return genMapper.selectTableList(tableInfo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成代码
|
||||
*
|
||||
* @param tableName 表名称
|
||||
* @return 数据
|
||||
*/
|
||||
@Override
|
||||
public byte[] generatorCode(String tableName)
|
||||
{
|
||||
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
|
||||
ZipOutputStream zip = new ZipOutputStream(outputStream);
|
||||
generatorCode(tableName, zip);
|
||||
IOUtils.closeQuietly(zip);
|
||||
return outputStream.toByteArray();
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量生成代码
|
||||
*
|
||||
* @param tableNames 表数组
|
||||
* @return 数据
|
||||
*/
|
||||
@Override
|
||||
public byte[] generatorCode(String[] tableNames)
|
||||
{
|
||||
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
|
||||
ZipOutputStream zip = new ZipOutputStream(outputStream);
|
||||
for (String tableName : tableNames)
|
||||
{
|
||||
generatorCode(tableName, zip);
|
||||
}
|
||||
IOUtils.closeQuietly(zip);
|
||||
return outputStream.toByteArray();
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询表信息并生成代码
|
||||
*/
|
||||
private void generatorCode(String tableName, ZipOutputStream zip)
|
||||
{
|
||||
// 查询表信息
|
||||
TableInfo table = genMapper.selectTableByName(tableName);
|
||||
// 查询列信息
|
||||
List<ColumnInfo> columns = genMapper.selectTableColumnsByName(tableName);
|
||||
|
||||
// 表名转换成Java属性名
|
||||
String className = GenUtils.tableToJava(table.getTableName());
|
||||
table.setClassName(className);
|
||||
table.setClassname(StringUtils.uncapitalize(className));
|
||||
// 列信息
|
||||
table.setColumns(GenUtils.transColums(columns));
|
||||
// 设置主键
|
||||
table.setPrimaryKey(table.getColumnsLast());
|
||||
|
||||
VelocityInitializer.initVelocity();
|
||||
|
||||
String packageName = GenConfig.getPackageName();
|
||||
String moduleName = GenUtils.getModuleName(packageName);
|
||||
|
||||
VelocityContext context = GenUtils.getVelocityContext(table);
|
||||
|
||||
// 获取模板列表
|
||||
List<String> templates = GenUtils.getTemplates();
|
||||
for (String template : templates)
|
||||
{
|
||||
// 渲染模板
|
||||
StringWriter sw = new StringWriter();
|
||||
Template tpl = Velocity.getTemplate(template, Constants.UTF8);
|
||||
tpl.merge(context, sw);
|
||||
try
|
||||
{
|
||||
// 添加到zip
|
||||
zip.putNextEntry(new ZipEntry(GenUtils.getFileName(template, table, moduleName)));
|
||||
IOUtils.write(sw.toString(), zip, Constants.UTF8);
|
||||
IOUtils.closeQuietly(sw);
|
||||
zip.closeEntry();
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
log.error("渲染模板失败,表名:" + table.getTableName(), e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in new issue