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