main
HuangHai 1 month ago
parent a2a75c91b7
commit 8bf60e617d

@ -35,7 +35,7 @@ public class AiGenerate extends PptAIKit {
String sql = "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'dataease' AND TABLE_NAME LIKE 'excel_报告-教育资源配置发展预测%';"; String sql = "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'dataease' AND TABLE_NAME LIKE 'excel_报告-教育资源配置发展预测%';";
List<Record> tableList = Db.find(sql); List<Record> tableList = Db.find(sql);
String[] biJiao = new String[]{"文山州", "昆明市"}; String[] biJiao = new String[]{"文山州", "楚雄州"};
StringBuilder dataContent = new StringBuilder(); StringBuilder dataContent = new StringBuilder();
// 收集两个州的数据 // 收集两个州的数据
@ -64,7 +64,7 @@ public class AiGenerate extends PptAIKit {
// 构建分析提示词 // 构建分析提示词
String analysisPrompt = createAnalysisPrompt(dataContent.toString()); String analysisPrompt = createAnalysisPrompt(dataContent.toString());
// 构建PPT生成提示词 // 构建PPT生成提示词
String pptPrompt = createPptPrompt(dataContent.toString(), biJiao); String pptPrompt = createPptPrompt(dataContent.toString(), biJiao);
@ -93,12 +93,12 @@ public class AiGenerate extends PptAIKit {
// 使用Apache POI生成Word文档 // 使用Apache POI生成Word文档
generateWordDocument(fullResponse.toString(), outputPath, biJiao); generateWordDocument(fullResponse.toString(), outputPath, biJiao);
System.out.println("Word分析报告已保存到: " + outputPath); System.out.println("Word分析报告已保存到: " + outputPath);
// 生成PPT // 生成PPT
// 生成PPT // 生成PPT
System.out.println("\n\n=== 开始生成PPT ==="); System.out.println("\n\n=== 开始生成PPT ===");
generatePptPresentation(biJiao, fullResponse.toString()); generatePptPresentation(biJiao, pptPrompt);
} catch (Exception e) { } catch (Exception e) {
System.err.println("保存文件时出错: " + e.getMessage()); System.err.println("保存文件时出错: " + e.getMessage());
e.printStackTrace(); e.printStackTrace();
@ -116,50 +116,50 @@ public class AiGenerate extends PptAIKit {
* PPT * PPT
*/ */
private static String createPptPrompt(String dataContent, String[] cities) { private static String createPptPrompt(String dataContent, String[] cities) {
return "请基于以下教育资源配置数据,为" + String.join("与", cities) + return "请基于以下教育资源配置数据,为" + String.join("与", cities) +
"教育资源配置对比分析创建一个专业的PPT大纲。\n\n" + "教育资源配置对比分析创建一个专业的PPT大纲。\n\n" +
"PPT应包含以下主要部分\n" + "PPT应包含以下主要部分\n" +
"1. 封面 - 标题和基本信息\n" + "1. 封面 - 标题和基本信息\n" +
"2. 目录 - 分析框架\n" + "2. 目录 - 分析框架\n" +
"3. 数据概览 - 关键指标对比\n" + "3. 数据概览 - 关键指标对比\n" +
"4. 详细分析 - 各维度深入对比\n" + "4. 详细分析 - 各维度深入对比\n" +
"5. 问题识别 - 存在的主要问题\n" + "5. 问题识别 - 存在的主要问题\n" +
"6. 建议方案 - 改进措施\n" + "6. 建议方案 - 改进措施\n" +
"7. 总结 - 结论和展望\n\n" + "7. 总结 - 结论和展望\n\n" +
"请确保内容简洁明了适合PPT展示。\n\n" + "请确保内容简洁明了适合PPT展示。\n\n" +
"=== 原始数据 ===\n" + dataContent; "=== 原始数据 ===\n" + dataContent;
} }
/** /**
* PPT稿 * PPT稿
*/ */
private static void generatePptPresentation(String[] cities, String analysisContent) { private static void generatePptPresentation(String[] cities, String pptPrompt) {
try { try {
// 第三方用户ID数据隔离 // 创建主题
String uid = "education_analysis_" + System.currentTimeMillis();
String subject = String.join("与", cities) + "教育资源配置对比分析"; String subject = String.join("与", cities) + "教育资源配置对比分析";
String uid = "user123";
// 创建 api token // 创建 api token
String apiToken = PptAIKit.createApiToken(uid, null); String apiToken = PptAIKit.createApiToken(uid, null);
System.out.println("PPT API token: " + apiToken); System.out.println("PPT API token: " + apiToken);
// 生成大纲 // 生成大纲 - 修正参数顺序
System.out.println("\n\n========== 正在生成PPT大纲 =========="); System.out.println("\n\n========== 正在生成PPT大纲 ==========\n");
String outline = PptAIKit.generateOutline(apiToken, subject, null, null); String outline = PptAIKit.generateOutline(apiToken, subject, null, pptPrompt);
System.out.println("PPT大纲生成完成"); System.out.println("PPT大纲生成完成");
// 生成大纲内容 // 生成大纲内容 - 修正参数
System.out.println("\n\n========== 正在生成PPT内容 =========="); System.out.println("\n\n========== 正在生成PPT内容 ==========\n");
String markdown = PptAIKit.generateContent(apiToken, outline, null, null); String markdown = PptAIKit.generateContent(apiToken, outline, null, pptPrompt);
System.out.println("PPT内容生成完成"); System.out.println("PPT内容生成完成");
// 随机选择一个模板 // 随机选择一个模板
System.out.println("\n\n========== 选择PPT模板 =========="); System.out.println("\n\n========== 选择PPT模板 ==========\n");
String templateId = PptAIKit.randomOneTemplateId(apiToken); String templateId = PptAIKit.randomOneTemplateId(apiToken);
System.out.println("选择的模板ID: " + templateId); System.out.println("选择的模板ID: " + templateId);
// 生成PPT // 生成PPT
System.out.println("\n\n========== 正在生成PPT文件 =========="); System.out.println("\n\n========== 正在生成PPT文件 ==========\n");
JSONObject pptInfo = PptAIKit.generatePptx(apiToken, templateId, markdown, false); JSONObject pptInfo = PptAIKit.generatePptx(apiToken, templateId, markdown, false);
String pptId = pptInfo.getString("id"); String pptId = pptInfo.getString("id");
System.out.println("PPT ID: " + pptId); System.out.println("PPT ID: " + pptId);
@ -167,17 +167,16 @@ public class AiGenerate extends PptAIKit {
System.out.println("PPT封面" + pptInfo.getString("coverUrl") + "?token=" + apiToken); System.out.println("PPT封面" + pptInfo.getString("coverUrl") + "?token=" + apiToken);
// 下载PPT到当前目录 // 下载PPT到当前目录
System.out.println("\n\n========== 正在下载PPT =========="); System.out.println("\n\n========== 正在下载PPT ==========\n");
JSONObject result = PptAIKit.downloadPptx(apiToken, pptId); JSONObject result = PptAIKit.downloadPptx(apiToken, pptId);
String url = result.getString("fileUrl"); String url = result.getString("fileUrl");
System.out.println("PPT下载链接" + url); System.out.println("PPT下载链接" + url);
String timestamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); String timestamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
// 修改这里:使用完整路径
String savePath = System.getProperty("user.dir") + File.separator + "教育资源对比分析PPT_" + timestamp + ".pptx"; String savePath = System.getProperty("user.dir") + File.separator + "教育资源对比分析PPT_" + timestamp + ".pptx";
HttpUtils.download(url, new File(savePath)); HttpUtils.download(url, new File(savePath));
System.out.println("PPT下载完成保存路径" + savePath); System.out.println("PPT下载完成保存路径" + savePath);
} catch (Exception e) { } catch (Exception e) {
System.err.println("生成PPT时出错: " + e.getMessage()); System.err.println("生成PPT时出错: " + e.getMessage());
e.printStackTrace(); e.printStackTrace();

Loading…
Cancel
Save