|
|
|
|
@ -4,6 +4,8 @@ import java.io.ByteArrayOutputStream;
|
|
|
|
|
import java.io.File;
|
|
|
|
|
import java.io.IOException;
|
|
|
|
|
import java.io.StringWriter;
|
|
|
|
|
import java.util.Arrays;
|
|
|
|
|
import java.util.HashMap;
|
|
|
|
|
import java.util.LinkedHashMap;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
@ -228,11 +230,7 @@ public class GenTableServiceImpl implements IGenTableService
|
|
|
|
|
@Override
|
|
|
|
|
public byte[] downloadCode(String tableName)
|
|
|
|
|
{
|
|
|
|
|
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
|
|
|
|
|
ZipOutputStream zip = new ZipOutputStream(outputStream);
|
|
|
|
|
generatorCode(tableName, zip);
|
|
|
|
|
IOUtils.closeQuietly(zip);
|
|
|
|
|
return outputStream.toByteArray();
|
|
|
|
|
return downloadCode(new String[] { tableName });
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
@ -343,9 +341,14 @@ public class GenTableServiceImpl implements IGenTableService
|
|
|
|
|
{
|
|
|
|
|
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
|
|
|
|
|
ZipOutputStream zip = new ZipOutputStream(outputStream);
|
|
|
|
|
Map<String, StringBuffer> typeFiles = new HashMap<>();
|
|
|
|
|
for (String tableName : tableNames)
|
|
|
|
|
{
|
|
|
|
|
generatorCode(tableName, zip);
|
|
|
|
|
generatorCode(tableName, zip, typeFiles);
|
|
|
|
|
}
|
|
|
|
|
for (Map.Entry<String, StringBuffer> entry : typeFiles.entrySet())
|
|
|
|
|
{
|
|
|
|
|
writeToZip(zip, entry.getKey(), entry.getValue().toString());
|
|
|
|
|
}
|
|
|
|
|
IOUtils.closeQuietly(zip);
|
|
|
|
|
return outputStream.toByteArray();
|
|
|
|
|
@ -354,7 +357,7 @@ public class GenTableServiceImpl implements IGenTableService
|
|
|
|
|
/**
|
|
|
|
|
* 查询表信息并生成代码
|
|
|
|
|
*/
|
|
|
|
|
private void generatorCode(String tableName, ZipOutputStream zip)
|
|
|
|
|
private void generatorCode(String tableName, ZipOutputStream zip, Map<String, StringBuffer> typeFiles)
|
|
|
|
|
{
|
|
|
|
|
// 查询表信息
|
|
|
|
|
GenTable table = genTableMapper.selectGenTableByName(tableName);
|
|
|
|
|
@ -375,22 +378,49 @@ public class GenTableServiceImpl implements IGenTableService
|
|
|
|
|
StringWriter sw = new StringWriter();
|
|
|
|
|
Template tpl = Velocity.getTemplate(template, Constants.UTF8);
|
|
|
|
|
tpl.merge(context, sw);
|
|
|
|
|
try
|
|
|
|
|
String fileName = VelocityUtils.getFileName(template, table);
|
|
|
|
|
// index-bak.ts 模版,追加内容
|
|
|
|
|
if (fileName.contains("index-bak.ts"))
|
|
|
|
|
{
|
|
|
|
|
// 添加到zip
|
|
|
|
|
zip.putNextEntry(new ZipEntry(VelocityUtils.getFileName(template, table)));
|
|
|
|
|
IOUtils.write(sw.toString(), zip, Constants.UTF8);
|
|
|
|
|
IOUtils.closeQuietly(sw);
|
|
|
|
|
zip.flush();
|
|
|
|
|
zip.closeEntry();
|
|
|
|
|
if (!typeFiles.containsKey(fileName))
|
|
|
|
|
{
|
|
|
|
|
typeFiles.put(fileName, new StringBuffer(sw.toString()));
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Arrays.stream(sw.toString().split("\n")).filter(line -> line.startsWith("export * from")).forEach(line -> typeFiles.get(fileName).append("\n").append(line));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (IOException e)
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
log.error("渲染模板失败,表名:" + table.getTableName(), e);
|
|
|
|
|
// 其他文件正常添加
|
|
|
|
|
writeToZip(zip, fileName, sw.toString());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 将字符串内容写入ZIP输出流
|
|
|
|
|
*
|
|
|
|
|
* @param zip ZIP输出流
|
|
|
|
|
* @param fileName ZIP条目名称(即文件名)
|
|
|
|
|
* @param content 要写入的内容
|
|
|
|
|
*/
|
|
|
|
|
private void writeToZip(ZipOutputStream zip, String fileName, String content)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
zip.putNextEntry(new ZipEntry(fileName));
|
|
|
|
|
IOUtils.write(content, zip, Constants.UTF8);
|
|
|
|
|
zip.flush();
|
|
|
|
|
zip.closeEntry();
|
|
|
|
|
}
|
|
|
|
|
catch (IOException e)
|
|
|
|
|
{
|
|
|
|
|
log.error("写入ZIP文件失败,文件名: " + fileName, e);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 修改保存参数校验
|
|
|
|
|
*
|
|
|
|
|
|