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.

112 lines
4.2 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
// 第一步:数据获取
String dataContent = DataCollector.collectEducationData(regions);
String analysisPrompt = DataCollector.createAnalysisPrompt(dataContent, regions);
1 month ago
1 month ago
// 第二步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
}
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
1 month ago
// 构建区域名称
String regionName = String.join("与", regions);
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
// 使用完整的分析结果
String analysisResult = fullResponse.toString();
1 month ago
// 生成Word文档
1 month ago
String wordOutputPath = "D:\\dsWork\\YunNanDsBase\\WebRoot\\upload\\" + regionName + "_教育分析报告_" + timestamp + ".docx";
String wordFilePath = WordGenerator.generateWordDocument(analysisResult, wordOutputPath, regions);
if (wordFilePath != null) {
System.out.println("Word文档生成完成: " + wordFilePath);
}
// 生成HTML报告
String htmlOutputPath = "D:\\dsWork\\YunNanDsBase\\WebRoot\\upload\\" + regionName + "_教育分析报告_" + timestamp + ".html";
String htmlFilePath = HtmlGenerator.generateHtmlReport(analysisResult, htmlOutputPath, regionName);
if (htmlFilePath != null) {
System.out.println("HTML报告生成完成: " + htmlFilePath);
}
// 生成PPT
String token = PptAIKit.createApiToken("dsideal", 1000);
String pptFilePath = PptGenerator.generatePptPresentation(analysisResult, regions, token);
1 month ago
if (pptFilePath != null) {
1 month ago
System.out.println("PPT演示文稿生成完成: " + pptFilePath);
1 month ago
}
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
}