From 8bf60e617d0e7895554c50f765b6764ec4e954e9 Mon Sep 17 00:00:00 2001 From: HuangHai <10402852@qq.com> Date: Fri, 13 Jun 2025 16:24:12 +0800 Subject: [PATCH] 'commit' --- .../com/dsideal/base/Tools/AiGenerate.java | 63 +++++++++--------- ...源对比分析报告_20250613_161648.docx | Bin 0 -> 4574 bytes 2 files changed, 31 insertions(+), 32 deletions(-) create mode 100644 教育资源对比分析报告_20250613_161648.docx diff --git a/src/main/java/com/dsideal/base/Tools/AiGenerate.java b/src/main/java/com/dsideal/base/Tools/AiGenerate.java index eb49dead..100f8e94 100644 --- a/src/main/java/com/dsideal/base/Tools/AiGenerate.java +++ b/src/main/java/com/dsideal/base/Tools/AiGenerate.java @@ -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_报告-教育资源配置发展预测%';"; List tableList = Db.find(sql); - String[] biJiao = new String[]{"文山州", "昆明市"}; + String[] biJiao = new String[]{"文山州", "楚雄州"}; StringBuilder dataContent = new StringBuilder(); // 收集两个州的数据 @@ -64,7 +64,7 @@ public class AiGenerate extends PptAIKit { // 构建分析提示词 String analysisPrompt = createAnalysisPrompt(dataContent.toString()); - + // 构建PPT生成提示词 String pptPrompt = createPptPrompt(dataContent.toString(), biJiao); @@ -93,12 +93,12 @@ public class AiGenerate extends PptAIKit { // 使用Apache POI生成Word文档 generateWordDocument(fullResponse.toString(), outputPath, biJiao); System.out.println("Word分析报告已保存到: " + outputPath); - + // 生成PPT // 生成PPT System.out.println("\n\n=== 开始生成PPT ==="); - generatePptPresentation(biJiao, fullResponse.toString()); - + generatePptPresentation(biJiao, pptPrompt); + } catch (Exception e) { System.err.println("保存文件时出错: " + e.getMessage()); e.printStackTrace(); @@ -116,50 +116,50 @@ public class AiGenerate extends PptAIKit { * 创建PPT生成提示词 */ private static String createPptPrompt(String dataContent, String[] cities) { - return "请基于以下教育资源配置数据,为" + String.join("与", cities) + - "教育资源配置对比分析创建一个专业的PPT大纲。\n\n" + - "PPT应包含以下主要部分:\n" + - "1. 封面 - 标题和基本信息\n" + - "2. 目录 - 分析框架\n" + - "3. 数据概览 - 关键指标对比\n" + - "4. 详细分析 - 各维度深入对比\n" + - "5. 问题识别 - 存在的主要问题\n" + - "6. 建议方案 - 改进措施\n" + - "7. 总结 - 结论和展望\n\n" + - "请确保内容简洁明了,适合PPT展示。\n\n" + - "=== 原始数据 ===\n" + dataContent; + return "请基于以下教育资源配置数据,为" + String.join("与", cities) + + "教育资源配置对比分析创建一个专业的PPT大纲。\n\n" + + "PPT应包含以下主要部分:\n" + + "1. 封面 - 标题和基本信息\n" + + "2. 目录 - 分析框架\n" + + "3. 数据概览 - 关键指标对比\n" + + "4. 详细分析 - 各维度深入对比\n" + + "5. 问题识别 - 存在的主要问题\n" + + "6. 建议方案 - 改进措施\n" + + "7. 总结 - 结论和展望\n\n" + + "请确保内容简洁明了,适合PPT展示。\n\n" + + "=== 原始数据 ===\n" + dataContent; } /** * 生成PPT演示文稿 */ - private static void generatePptPresentation(String[] cities, String analysisContent) { + private static void generatePptPresentation(String[] cities, String pptPrompt) { try { - // 第三方用户ID(数据隔离) - String uid = "education_analysis_" + System.currentTimeMillis(); + // 创建主题 String subject = String.join("与", cities) + "教育资源配置对比分析"; + String uid = "user123"; // 创建 api token String apiToken = PptAIKit.createApiToken(uid, null); System.out.println("PPT API token: " + apiToken); - // 生成大纲 - System.out.println("\n\n========== 正在生成PPT大纲 =========="); - String outline = PptAIKit.generateOutline(apiToken, subject, null, null); + // 生成大纲 - 修正参数顺序 + System.out.println("\n\n========== 正在生成PPT大纲 ==========\n"); + String outline = PptAIKit.generateOutline(apiToken, subject, null, pptPrompt); System.out.println("PPT大纲生成完成"); - // 生成大纲内容 - System.out.println("\n\n========== 正在生成PPT内容 =========="); - String markdown = PptAIKit.generateContent(apiToken, outline, null, null); + // 生成大纲内容 - 修正参数 + System.out.println("\n\n========== 正在生成PPT内容 ==========\n"); + String markdown = PptAIKit.generateContent(apiToken, outline, null, pptPrompt); System.out.println("PPT内容生成完成"); // 随机选择一个模板 - System.out.println("\n\n========== 选择PPT模板 =========="); + System.out.println("\n\n========== 选择PPT模板 ==========\n"); String templateId = PptAIKit.randomOneTemplateId(apiToken); System.out.println("选择的模板ID: " + templateId); // 生成PPT - System.out.println("\n\n========== 正在生成PPT文件 =========="); + System.out.println("\n\n========== 正在生成PPT文件 ==========\n"); JSONObject pptInfo = PptAIKit.generatePptx(apiToken, templateId, markdown, false); String pptId = pptInfo.getString("id"); System.out.println("PPT ID: " + pptId); @@ -167,17 +167,16 @@ public class AiGenerate extends PptAIKit { System.out.println("PPT封面:" + pptInfo.getString("coverUrl") + "?token=" + apiToken); // 下载PPT到当前目录 - System.out.println("\n\n========== 正在下载PPT =========="); + System.out.println("\n\n========== 正在下载PPT ==========\n"); JSONObject result = PptAIKit.downloadPptx(apiToken, pptId); String url = result.getString("fileUrl"); System.out.println("PPT下载链接:" + url); - + String timestamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); - // 修改这里:使用完整路径 String savePath = System.getProperty("user.dir") + File.separator + "教育资源对比分析PPT_" + timestamp + ".pptx"; HttpUtils.download(url, new File(savePath)); System.out.println("PPT下载完成,保存路径:" + savePath); - + } catch (Exception e) { System.err.println("生成PPT时出错: " + e.getMessage()); e.printStackTrace(); diff --git a/教育资源对比分析报告_20250613_161648.docx b/教育资源对比分析报告_20250613_161648.docx new file mode 100644 index 0000000000000000000000000000000000000000..3caf33e47362d51a368de7430495e0683945b726 GIT binary patch literal 4574 zcma)AXH-+$x}}HSI}tJT8Wco8kd6|1ktz@%0Syp(?*SqL2SO1-6GVCu6a=Z#5h+p> zkuFM=-Z7L1=iT=X$8ql&_uFIbv48Au?eCjw?ltCIdYXhpjCiD^q(tAwuEd(hi!VQnH zv|t(Itc0?%rY`xLpkJ8^$5=0@VX&%QZ9?3fgcHYZ4y0mXTPax*rZ%q zLkI_VpXt{#3w5<3)PS1njb>2`{H>r?akt7^x(zJX>st9zV7CopWMiAnSLxBogPs_T z(U$Do$eK6oT7wqdqQtQ!BwCyd3=C${^AAc@uYP!y1KUp5PZqJ9oRhCmdrV})7T1vh zWEnY)fQ^|Df~+wd(GqjXdn_{Q^>T)%5�acVZ^j)v!Y{sLb_-BVs*G04aaA8}k)> zJUmW9JUqSsh%UuBy4LP+Cl9dL#l1Xn3PO0DR^6JnFX+|;IcT{07HC%|?@kM*?{rX` zPfOi-W||9C|tq?a8ARN(LTXPr&NVCf1HgtzE6ILELZTGYgS&-V?~3PNa>&aE!X3uJ$k41>v!Ds11paU79hqkq z=s1X=p6QQq#az3oBc>M_Y}_A}Lk#OrMWhmK6+3lTA~Etf;tZM#Xuypl>2v3eYZ3et zG_>b$z+CL~++AEfz&5U~7p&8cYb9?Jr&ZlRozc3x)cVsVNak~)_yY!MNS8-R(zWjy zFE3^!`Dd~%Y#G)5Qfs^pXDNExP@h21gB}{HdK!<*m;IpQatm?qnyu|)vt+=$@j%}e z5oRrR`bT}AQHmgs%iE6K2yyL!IhnE4yS8Ju`te=id34=E!C?lace*;w+SQZ~h8Xi$ zktW1vO{nbf)AO|jkV+xLuO*$A`}TbN=e4H0+>o7%JN%*}XN;w0yEr5I4AK*nk@wj- zqDCb-EJwQX#+DdQcgLGQ7u()W4j25zh_Xsl3oi{&x9yXdx~DPZmB3m9hkY0$D~VoCc(>$>!^c#!$!9)L z9p>#NTqJwouJaQ43cuLeA$REL`k)V_FWs`wQA9KuIB)SY|URVrRO z+r7zU2Ii8m_N8>oGHb}OV=#Si)*q!6w%4xk;2uvrv3RC=T)6Oy;R40&S<#<>^FQX* z`S@oPeO%mO;B#(xIiGJz7bt!nrT^Q9A>AJ6eBK1{`WZttWI9OjV^@}WPG8vKVNXz6~{IT>vdK|Yg z;TZDM!m(oAWaiX)y=g7H`zm(Nk3W*G!LZV=QKGrFYI=h|QsMMl!y-7+r7-xU)Fg(% zB}gJ9YsZ(xNxY2%YnsV8Eh^HdD-8@w^LbXc96EJtV@r7=JMgq_nfP$ztjTU@G355f zLBB5nKGt=;seRrv?)E}~LsJ{0)=}5N{>JK=-|2Us;Qg6w2d5Z@s|7Q<RU_<^@%+S1e9p#zHL6{C zEE)D}TMNK!1+Xvt!y!u9+Rr8$soHZSQ#YMpA?U9+7)^JWwNUeElV$}T0bz5NDV`j? z*QEXPr|N^}x7pYgxV}nf!0{K`g0{+UQwn2mjZMTm?mA4zzqTr{MI)^qW%Pf{LiH}Q zbFUS6WTte`-I|iC{3BL3wh_x3H1zn41%>O{Q2g}J)ICTsr2>D?Mef}0iO{ZeGv7*W7whnR9oISQ2#=J$F`XLf5C26jhCWJR?s`{9z z+;YX9f)~3HYBNB+jEv;*(J00zeELF`YP#k5tWzZ)7C`r0-Zkc-CA*x#2M5UAVJXLP zD=QhYFebK=m-u~~V?EWvp0_C+!^GPLstxVMZ;nmWyFnmA<7-@TaTC_;>Nj+;J<1`8 znCiLcNm&(N$?V*t+vw+>%C$657IVqshzZyc%F5`u0(9wnueVXT5tJKBegXxn@L0iD z`oDn6dEGf-d2i+U9W}5=8n}9jK>05@J?!$7rFZAP@9aIcA*50d#s5XNMHRZlu@vC; z?c2AH&Lq5k5gt{fkCPq+(7iFX*^RS$n}x)gerZzOydM=Qw%|7;`3QFR?&^#pH@%yp zZfM9o`Vt7IS|iGmh!`PgKKtYxI%ZK3L!UuJN?5%M_BYh85F_%a z#NUK0vg$nR#I}nIi0QEbu3dTX!kgLcPQDPUTbWYCq=9_&AR?dU0XLO4Ee(`#P^qwP z9k#FUlR8%LmJ3NJVn^idHE!MP>#23cAZ5xs!(71#Y1~(f=I0w&sDyB64>z+~fOk z&O_yx@S~RQ`9J=g%QpEIKW+mbP?E-YcHK58H(;!CEK#cluBfde--TpReS1^4=> z&D(1tD-apl1*w6&!oASdd9tD$pk^rZm{5y(5pobT!{^3iq-ABO(V`9P<%y598qJ;9 zz9}5zYDJYjwhI9tGv}BT?|=LZQKJ!^t`L^WvBzG^dz zK6OPXbZ8$0K{|FEtscD}li+*%AX1~S-}p|7;?JuI4yM9Otew%{mU*la%$3B2nKV1; zIoyRw<_e7Ip>X_Ocq1#FW}-PNnoa)Q;!_XHZ|+=4xoUiFxjES9FDYngH27ki=vd{J zF;fh_?q9oqrI7w?>q)GVBW-%)_1T}Ak}tI7!?0k6$ThM)2H8hl(_Q3Np?kejn>08CSa_A8#>#jU3JwR&rL?OAL5i=!o5!%^6x z(G5i=+E91q_EhCOh6tPthDH5OZW8bYByPevrwpO(AK2>lp^rs^;_zpYfQAdSDa`V0 zKq`4s$=b`vypY9pNNc6A`vqVSut(lLqeyJhe0yaNtQt$fW2Rw?e%MIUPER!$)+CoS z`dLru2@pl{p*(3lrX4j&J{&j&G)WkOiS|@(z3(b9F(9Z{3N+Y=LBDPdwvir-Dj)bV z=K`{GYC}pAmmrQ_PY&5J96FH4I$uvhSG&FSh6m>w3# z?yi?AFR1E)-%!`s>692Dwohu-6@Z!gW`i>fJCrIEXq!V8>s_|$IV+s?9rR(bg6QG9 zV6QEvY{@(AEno{)joMzCvEHGR!R{ek)WemT3q@yhsIikohKJ|J^G}Knc&>~8RCNDq zgf8p4KTXjeA1_2dCCRLbU|j=}Qx!HP23i%`!G~lxcb1E4Gal^kgQPcSuag~}<{_q>D+l7qktc8;BBipX&mNmaP&HIdafP(wfUsoUJrKt;Myf6=ufMs%s{yeH28PRDw{Jv|>G9Xu{{ELDsqbsHD0 z;sM`uSl={ty*PTeYKO=lPq{lKua6cT)tx#Y0Css0yew`l#2(52mYSK;4Rdo_suj1_ zCir(wn=)u017k0rBgSW1$6)5 zCL9R4D7ZBJAld!A;K1{tr-@I%i1*h~z-1eIaTM_P_%{awzfW-4>|MCszryMqpG)5N z_r%Ml>cR{D6@KTw@potVd-i2Babdjv3dp%3|Nrd&vthrdUuN##(=kN%pJ-2VVMxXg_J literal 0 HcmV?d00001