修复typescript版多表代码生成报错问题

This commit is contained in:
RuoYi
2026-03-25 12:32:24 +08:00
parent 7282667d41
commit 3c2186cf73

View File

@@ -4,6 +4,8 @@ import java.io.ByteArrayOutputStream;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.io.StringWriter; import java.io.StringWriter;
import java.util.Arrays;
import java.util.HashMap;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -238,11 +240,7 @@ public class GenTableServiceImpl implements IGenTableService
@Override @Override
public byte[] downloadCode(String tableName) public byte[] downloadCode(String tableName)
{ {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); return downloadCode(new String[] { tableName });
ZipOutputStream zip = new ZipOutputStream(outputStream);
generatorCode(tableName, zip);
IOUtils.closeQuietly(zip);
return outputStream.toByteArray();
} }
/** /**
@@ -353,9 +351,14 @@ public class GenTableServiceImpl implements IGenTableService
{ {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
ZipOutputStream zip = new ZipOutputStream(outputStream); ZipOutputStream zip = new ZipOutputStream(outputStream);
Map<String, StringBuffer> typeFiles = new HashMap<>();
for (String tableName : tableNames) 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); IOUtils.closeQuietly(zip);
return outputStream.toByteArray(); return outputStream.toByteArray();
@@ -364,7 +367,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); GenTable table = genTableMapper.selectGenTableByName(tableName);
@@ -385,22 +388,49 @@ public class GenTableServiceImpl implements IGenTableService
StringWriter sw = new StringWriter(); StringWriter sw = new StringWriter();
Template tpl = Velocity.getTemplate(template, Constants.UTF8); Template tpl = Velocity.getTemplate(template, Constants.UTF8);
tpl.merge(context, sw); tpl.merge(context, sw);
try String fileName = VelocityUtils.getFileName(template, table);
// index-bak.ts 模版,追加内容
if (fileName.contains("index-bak.ts"))
{ {
// 添加到zip if (!typeFiles.containsKey(fileName))
zip.putNextEntry(new ZipEntry(VelocityUtils.getFileName(template, table))); {
IOUtils.write(sw.toString(), zip, Constants.UTF8); typeFiles.put(fileName, new StringBuffer(sw.toString()));
IOUtils.closeQuietly(sw); }
zip.flush(); else
zip.closeEntry(); {
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);
}
}
/** /**
* 修改保存参数校验 * 修改保存参数校验
* *