You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

105 lines
3.9 KiB

1 month ago
package com.dsideal.base.Tools;
import com.dsideal.base.BaseApplication;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Plugin.YamlProp;
1 month ago
import com.dsideal.base.Tools.Util.CallDeepSeek;
1 month ago
import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
1 month ago
import com.dsideal.base.Tools.Util.PptAIKit;
1 month ago
1 month ago
import java.text.SimpleDateFormat;
import java.util.Date;
1 month ago
1 month ago
/**
* AI - WordPPT
*/
public class AiGenerate {
1 month ago
public static DataEaseModel dm = new DataEaseModel();
public static void main(String[] args) {
1 month ago
try {
// 初始化配置
initializeConfiguration();
1 month ago
1 month ago
// 定义对比地区
String[] regions = {"文山州", "楚雄州"};
1 month ago
1 month ago
// 第一步:数据获取
System.out.println("=== 开始数据收集 ===");
String dataContent = DataCollector.collectEducationData(regions);
String analysisPrompt = DataCollector.createAnalysisPrompt(dataContent, regions);
1 month ago
1 month ago
// 第二步AI分析并生成Word文档
System.out.println("=== 开始AI分析和Word文档生成 ===");
generateWordReport(analysisPrompt, regions);
1 month ago
1 month ago
} catch (Exception e) {
System.err.println("程序执行出错: " + e.getMessage());
e.printStackTrace();
}
}
1 month ago
1 month ago
/**
*
*/
private static void initializeConfiguration() {
1 month ago
String configFile = "application.yaml";
BaseApplication.PropKit = new YamlProp(configFile);
LocalMysqlConnectUtil.Init();
1 month ago
System.out.println("配置初始化完成");
}
1 month ago
1 month ago
/**
* Word
*/
private static void generateWordReport(String analysisPrompt, String[] regions) {
1 month ago
// 生成输出文件名(不包含路径)
1 month ago
String timestamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
1 month ago
String fileName = "教育资源对比分析报告_" + timestamp + ".docx";
1 month ago
1 month ago
System.out.println("开始调用DeepSeek进行数据分析...");
1 month ago
1 month ago
// 调用DeepSeek进行分析
CallDeepSeek.callDeepSeekStream(analysisPrompt, new CallDeepSeek.SSEListener() {
private StringBuilder fullResponse = new StringBuilder();
1 month ago
1 month ago
@Override
public void onData(String data) {
System.out.print(data);
System.out.flush();
fullResponse.append(data);
}
1 month ago
1 month ago
@Override
public void onComplete(String response) {
1 month ago
System.out.println("\n\n=== Word文档分析完成 ===");
1 month ago
1 month ago
try {
1 month ago
// 生成Word文档
1 month ago
String wordFilePath = WordGenerator.generateWordDocument(fullResponse.toString(), fileName, regions);
System.out.println("Word分析报告已保存到: " + wordFilePath);
1 month ago
1 month ago
// 第三步生成PPT
System.out.println("\n\n=== 开始生成PPT ===");
String uid = "dsideal";
String apiToken = PptAIKit.createApiToken(uid, null);
1 month ago
String pptFilePath = PptGenerator.generatePptPresentation(fullResponse.toString(), regions, apiToken);
if (pptFilePath != null) {
System.out.println("PPT演示文稿已保存到: " + pptFilePath);
}
1 month ago
1 month ago
} catch (Exception e) {
System.err.println("保存文件时出错: " + e.getMessage());
e.printStackTrace();
}
}
1 month ago
1 month ago
@Override
public void onError(String error) {
System.err.println("DeepSeek分析出错: " + error);
}
});
}
1 month ago
}