中,并设置固定高度:
\n" +
+ "6. 每个canvas元素必须设置宽度和高度属性:\n" +
+ "7. JavaScript代码必须在前,为每个canvas创建对应的Chart实例\n" +
+ "8. 图表数据要根据数据内容合理推算和展示,确保数据真实有效\n" +
+ "9. 报告标题为:《%s人口变化趋势对基础教育的影响分析报告》\n" +
+ "10. 包含报告摘要、详细分析、图表展示、结论建议等章节\n" +
+ "11. 直接输出完整的HTML代码,不要用markdown包装\n" +
+ "12. 【重要】必须为所有9个图表生成完整的JavaScript初始化代码\n" +
+ "13. 【重要】每个canvas元素都必须有对应的完整Chart初始化代码,包含完整的data、options等配置\n" +
+ "14. 【重要】JavaScript代码必须完整到标签结束,不能在中间截断\n" +
+ "15. 【重要】必须为所有9个图表生成完整的JavaScript初始化代码,一个都不能少\n" +
+ "16. 【重要】生成的HTML必须是完整的,包含完整的和结束标签\n" +
+ "17. 【重要】检查生成的HTML,确保所有9个图表的JavaScript代码都完整,没有任何代码被截断或省略\n" +
+ "18. 【重要】如果某个图表的数据不足,可以使用合理的模拟数据,但必须生成所有9个图表\n" +
+ "19. 【重要】确保Chart.js图表能正确渲染,检查数据格式和配置是否正确\n" +
+ "20. 【重要】在JavaScript代码开始前添加window.onload事件确保DOM加载完成:window.onload = function() { ... };\n" +
+ "21. 【重要】每个图表的数据必须是有效的数字数组,不能包含null、undefined或非数字值\n\n" +
+ "数据内容:\n%s\n\n" +
+ "请根据数据内容生成包含固定9个图表的完整HTML代码。特别注意:必须生成所有9个图表的完整JavaScript代码,不能有任何截断!",
+ regionName, dataContent
+ );
+ }
+
+ /**
+ * 保存HTML内容到文件
+ * @param htmlContent HTML内容
+ * @param outputPath 输出文件路径
+ */
+ public void saveHtmlContent(String htmlContent, String outputPath) {
+ try {
+ // 清理HTML内容
+ htmlContent = cleanHtmlContent(htmlContent);
+
+ // 保存HTML文件
+ try (FileWriter writer = new FileWriter(outputPath, StandardCharsets.UTF_8)) {
+ writer.write(htmlContent);
+ }
+ System.out.println("HTML文件保存成功: " + outputPath);
+ } catch (IOException e) {
+ System.err.println("保存HTML文件时出错: " + e.getMessage());
+ e.printStackTrace();
+ throw new RuntimeException("保存HTML文件失败", e);
+ }
+ }
+
+ /**
+ * 清理HTML内容
+ */
+ private static String cleanHtmlContent(String htmlContent) {
+ // 移除可能的markdown代码块标记
+ htmlContent = htmlContent.replaceAll("```html\\s*", "");
+ htmlContent = htmlContent.replaceAll("```\\s*$", "");
+ htmlContent = htmlContent.replaceAll("^```\\s*", "");
+
+ // 移除DeepSeek可能添加的说明文本
+ htmlContent = htmlContent.replaceAll("Here's the complete HTML report.*?:", "");
+ htmlContent = htmlContent.replaceAll("Here's.*?HTML.*?:", "");
+ htmlContent = htmlContent.replaceAll("以下是.*?HTML.*?:", "");
+
+ // 查找真正的HTML文档开始位置
+ int doctypeIndex = htmlContent.toLowerCase().indexOf("");
+ int htmlIndex = htmlContent.toLowerCase().indexOf("开始截取
+ htmlContent = htmlContent.substring(doctypeIndex);
+ } else if (htmlIndex != -1) {
+ // 从\n";
+ }
+
+ // 移除可能存在的重复DOCTYPE和html标签
+ htmlContent = htmlContent.replaceAll("(?i)\\s*", "");
+ htmlContent = htmlContent.replaceAll("(?i)]*>\\s*]*>", "");
+
+ return htmlContent.trim();
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/dsideal/base/AI/Generator/PptGenerator.java b/src/main/java/com/dsideal/base/AI/Generator/PptGenerator.java
new file mode 100644
index 00000000..d46b61b0
--- /dev/null
+++ b/src/main/java/com/dsideal/base/AI/Generator/PptGenerator.java
@@ -0,0 +1,160 @@
+package com.dsideal.base.AI.Generator;
+
+import com.alibaba.fastjson.JSONObject;
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.nio.charset.StandardCharsets;
+
+/**
+ * PPT生成器 - 负责生成分析报告的PPT演示文稿
+ */
+public class PptGenerator {
+
+ private static final String PPT_API_URL = "https://open.docmee.cn/api/ppt/generatePptx";
+
+ /**
+ * 构建PPT提示词
+ * @param dataContent 数据内容
+ * @param regionName 地区名称
+ * @return PPT生成提示词
+ */
+ public static String buildPptPrompt(String dataContent, String regionName) {
+ return String.format(
+ "请根据以下数据内容,生成一个适合制作PPT的大纲,要求:\n\n" +
+ "1. 生成标准的Markdown格式大纲,用于PPT制作\n" +
+ "2. 大纲应该包含清晰的章节结构,每个章节都有明确的标题\n" +
+ "3. 每个章节下应该有3-5个要点,适合在PPT幻灯片中展示\n" +
+ "4. 重点突出数据对比和分析结论\n" +
+ "5. 大纲应该逻辑清晰,便于制作专业的演示文稿\n" +
+ "6. 包含以下主要部分:\n" +
+ " - 概述与背景\n" +
+ " - 数据对比分析\n" +
+ " - 关键发现\n" +
+ " - 结论与建议\n\n" +
+ "地区:%s\n\n" +
+ "数据内容:\n%s",
+ regionName, dataContent
+ );
+ }
+
+ /**
+ * 直接从Markdown内容生成PPT(不调用DeepSeek)
+ * @param markdownContent PPT大纲的Markdown内容(由DeepSeek生成)
+ * @param token API访问令牌
+ * @return PPT文件下载URL
+ */
+ public static String generatePptFromMarkdown(String markdownContent, String token) {
+ try {
+ // 直接使用传入的markdown内容调用docmee API生成PPT
+ String pptFileUrl = callDocmeeApi(markdownContent, token);
+
+ if (pptFileUrl != null && !pptFileUrl.trim().isEmpty()) {
+ System.out.println("PPT生成成功!");
+ System.out.println("PPT文件下载地址: " + pptFileUrl);
+ return pptFileUrl;
+ } else {
+ System.err.println("PPT生成失败");
+ return null;
+ }
+
+ } catch (Exception e) {
+ System.err.println("生成PPT时出错: " + e.getMessage());
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+
+ /**
+ * 调用docmee API生成PPT
+ * @param markdownContent Markdown内容
+ * @param token API令牌
+ * @return PPT文件下载URL
+ */
+ private static String callDocmeeApi(String markdownContent, String token) {
+ try {
+ URL url = new URL(PPT_API_URL);
+ HttpURLConnection connection = (HttpURLConnection) url.openConnection();
+
+ // 设置请求方法和头部
+ connection.setRequestMethod("POST");
+ connection.setRequestProperty("Content-Type", "application/json");
+ connection.setRequestProperty("token", token);
+ connection.setDoOutput(true);
+
+ // 构建请求体
+ JSONObject requestBody = new JSONObject();
+ requestBody.put("outlineContentMarkdown", markdownContent);
+ requestBody.put("pptxProperty", false); // 不返回PPT数据结构
+ // templateId 和 notes 为非必填,可以根据需要添加
+
+ // 发送请求
+ try (OutputStream os = connection.getOutputStream()) {
+ byte[] input = requestBody.toJSONString().getBytes(StandardCharsets.UTF_8);
+ os.write(input, 0, input.length);
+ }
+
+ // 读取响应
+ int responseCode = connection.getResponseCode();
+ System.out.println("API响应状态码: " + responseCode);
+
+ if (responseCode >= 200 && responseCode < 300) {
+ StringBuilder response = new StringBuilder();
+
+ try (BufferedReader br = new BufferedReader(
+ new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8))) {
+ String line;
+ while ((line = br.readLine()) != null) {
+ response.append(line);
+ }
+ }
+
+ // 解析响应JSON
+ JSONObject responseJson = JSONObject.parseObject(response.toString());
+
+ if (responseJson.getIntValue("code") == 0) {
+ JSONObject data = responseJson.getJSONObject("data");
+ if (data != null) {
+ JSONObject pptInfo = data.getJSONObject("pptInfo");
+ if (pptInfo != null) {
+ String fileUrl = pptInfo.getString("fileUrl");
+ String coverUrl = pptInfo.getString("coverUrl");
+ String pptId = pptInfo.getString("id");
+
+ System.out.println("PPT ID: " + pptId);
+ System.out.println("PPT封面: " + coverUrl);
+
+ return fileUrl;
+ }
+ }
+ } else {
+ System.err.println("API返回错误: " + responseJson.getString("message"));
+ }
+
+ return null;
+ } else {
+ // 读取错误响应
+ StringBuilder errorResponse = new StringBuilder();
+ try (BufferedReader br = new BufferedReader(
+ new InputStreamReader(connection.getErrorStream(), StandardCharsets.UTF_8))) {
+ String line;
+ while ((line = br.readLine()) != null) {
+ errorResponse.append(line);
+ }
+ }
+
+ System.err.println("API调用失败,状态码: " + responseCode);
+ System.err.println("错误信息: " + errorResponse.toString());
+ return null;
+ }
+
+ } catch (Exception e) {
+ System.err.println("调用docmee API时出错: " + e.getMessage());
+ e.printStackTrace();
+ return null;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/dsideal/base/AI/Generator/WordGenerator.java b/src/main/java/com/dsideal/base/AI/Generator/WordGenerator.java
new file mode 100644
index 00000000..fed6fd68
--- /dev/null
+++ b/src/main/java/com/dsideal/base/AI/Generator/WordGenerator.java
@@ -0,0 +1,421 @@
+package com.dsideal.base.AI.Generator;
+
+import org.apache.poi.xwpf.usermodel.XWPFDocument;
+import org.apache.poi.xwpf.usermodel.XWPFParagraph;
+import org.apache.poi.xwpf.usermodel.XWPFRun;
+import org.apache.poi.xwpf.usermodel.ParagraphAlignment;
+import org.apache.poi.xwpf.usermodel.XWPFTable;
+import org.apache.poi.xwpf.usermodel.XWPFTableRow;
+import org.apache.poi.xwpf.usermodel.XWPFTableCell;
+import org.commonmark.node.*;
+import org.commonmark.parser.Parser;
+import org.commonmark.ext.gfm.tables.TablesExtension;
+import org.commonmark.ext.heading.anchor.HeadingAnchorExtension;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.text.SimpleDateFormat;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * Word文档生成器 - 负责生成分析报告的Word文档
+ */
+public class WordGenerator {
+
+
+ /**
+ * 生成Word分析报告
+ * @param analysisResult AI分析结果
+ * @param fileName 文件名(不包含路径)
+ * @param regions 对比地区
+ * @throws Exception 文件操作异常
+ */
+ public static void generateWordDocument(String analysisResult, String fileName, String[] regions) throws Exception {
+ XWPFDocument document = new XWPFDocument();
+ try {
+ // 动态生成标题
+ String reportTitle = generateReportTitle(regions);
+
+ // 添加文档标题
+ addDocumentTitle(document, reportTitle);
+
+ // 添加文档信息
+ addDocumentInfo(document);
+
+ // 添加分析内容
+ addAnalysisContent(document, analysisResult);
+
+ // 添加文档结尾
+ addDocumentFooter(document);
+
+ // 保存文档
+ try (FileOutputStream out = new FileOutputStream(fileName)) {
+ document.write(out);
+ }
+
+ } finally {
+ document.close();
+ }
+ }
+
+ /**
+ * 生成报告标题
+ */
+ private static String generateReportTitle(String[] regions) {
+ if (regions != null && regions.length >= 2) {
+ return String.join("与", regions) + "教育资源配置对比分析报告";
+ } else {
+ return "教育资源配置对比分析报告";
+ }
+ }
+
+ /**
+ * 添加文档标题
+ */
+ private static void addDocumentTitle(XWPFDocument document, String title) {
+ XWPFParagraph titleParagraph = document.createParagraph();
+ titleParagraph.setAlignment(ParagraphAlignment.CENTER);
+ XWPFRun titleRun = titleParagraph.createRun();
+ titleRun.setText(title);
+ titleRun.setBold(true);
+ titleRun.setFontSize(18);
+ titleRun.setFontFamily("宋体");
+
+ // 添加空行
+ document.createParagraph();
+ }
+
+ /**
+ * 添加文档信息
+ */
+ private static void addDocumentInfo(XWPFDocument document) {
+ XWPFParagraph infoParagraph = document.createParagraph();
+ XWPFRun infoRun = infoParagraph.createRun();
+ infoRun.setText("生成时间:" + new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss").format(new Date()));
+ infoRun.setFontSize(12);
+ infoRun.setFontFamily("宋体");
+
+ XWPFRun toolRun = infoParagraph.createRun();
+ toolRun.addBreak();
+ toolRun.setText("分析工具:DeepSeek AI");
+ toolRun.setFontSize(12);
+ toolRun.setFontFamily("宋体");
+
+ // 添加分隔线
+ XWPFParagraph separatorParagraph = document.createParagraph();
+ XWPFRun separatorRun = separatorParagraph.createRun();
+ separatorRun.setText("=".repeat(50));
+ separatorRun.setFontSize(10);
+
+ // 添加空行
+ document.createParagraph();
+ }
+
+ /**
+ * 添加分析内容 - 使用CommonMark解析Markdown
+ */
+ private static void addAnalysisContent(XWPFDocument document, String analysisResult) {
+ // 创建CommonMark解析器,支持表格和标题锚点扩展
+ List extensions = Arrays.asList(
+ TablesExtension.create(),
+ HeadingAnchorExtension.create()
+ );
+ Parser parser = Parser.builder().extensions(extensions).build();
+
+ // 解析Markdown文档
+ Node markdownDoc = parser.parse(analysisResult);
+
+ // 遍历并处理所有节点
+ processMarkdownNode(document, markdownDoc);
+ }
+
+ /**
+ * 处理Markdown节点并转换为Word格式
+ */
+ private static void processMarkdownNode(XWPFDocument document, Node node) {
+ Node child = node.getFirstChild();
+ while (child != null) {
+ if (child instanceof Heading) {
+ processHeading(document, (Heading) child);
+ } else if (child instanceof Paragraph) {
+ processParagraph(document, (Paragraph) child);
+ } else if (child instanceof BulletList) {
+ processBulletList(document, (BulletList) child);
+ } else if (child instanceof OrderedList) {
+ processOrderedList(document, (OrderedList) child);
+ } else if (child instanceof org.commonmark.ext.gfm.tables.TableBlock) {
+ processTable(document, (org.commonmark.ext.gfm.tables.TableBlock) child);
+ } else if (child instanceof BlockQuote) {
+ processBlockQuote(document, (BlockQuote) child);
+ } else if (child instanceof FencedCodeBlock || child instanceof IndentedCodeBlock) {
+ processCodeBlock(document, child);
+ }
+ child = child.getNext();
+ }
+ }
+
+ /**
+ * 处理标题
+ */
+ private static void processHeading(XWPFDocument document, Heading heading) {
+ XWPFParagraph paragraph = document.createParagraph();
+ XWPFRun run = paragraph.createRun();
+
+ String text = getTextContent(heading);
+ run.setText(text);
+ run.setBold(true);
+ run.setFontFamily("宋体");
+
+ // 根据标题级别设置字体大小
+ switch (heading.getLevel()) {
+ case 1:
+ run.setFontSize(18);
+ paragraph.setAlignment(ParagraphAlignment.CENTER);
+ break;
+ case 2:
+ run.setFontSize(16);
+ break;
+ case 3:
+ run.setFontSize(14);
+ break;
+ case 4:
+ run.setFontSize(13);
+ break;
+ default:
+ run.setFontSize(12);
+ break;
+ }
+ }
+
+ /**
+ * 处理段落
+ */
+ private static void processParagraph(XWPFDocument document, Paragraph para) {
+ XWPFParagraph paragraph = document.createParagraph();
+ processInlineNodes(paragraph, para.getFirstChild());
+ }
+
+ /**
+ * 处理无序列表
+ */
+ private static void processBulletList(XWPFDocument document, BulletList bulletList) {
+ Node listItem = bulletList.getFirstChild();
+ while (listItem != null) {
+ if (listItem instanceof ListItem) {
+ XWPFParagraph paragraph = document.createParagraph();
+ XWPFRun run = paragraph.createRun();
+ run.setText("• " + getTextContent(listItem));
+ run.setFontSize(12);
+ run.setFontFamily("宋体");
+ }
+ listItem = listItem.getNext();
+ }
+ }
+
+ /**
+ * 处理有序列表
+ */
+ private static void processOrderedList(XWPFDocument document, OrderedList orderedList) {
+ Node listItem = orderedList.getFirstChild();
+ int counter = orderedList.getStartNumber();
+ while (listItem != null) {
+ if (listItem instanceof ListItem) {
+ XWPFParagraph paragraph = document.createParagraph();
+ XWPFRun run = paragraph.createRun();
+ run.setText(counter + ". " + getTextContent(listItem));
+ run.setFontSize(12);
+ run.setFontFamily("宋体");
+ counter++;
+ }
+ listItem = listItem.getNext();
+ }
+ }
+
+ /**
+ * 处理表格
+ */
+ private static void processTable(XWPFDocument document, org.commonmark.ext.gfm.tables.TableBlock table) {
+ // 计算表格列数
+ int cols = 0;
+ Node firstRow = table.getFirstChild();
+ if (firstRow instanceof org.commonmark.ext.gfm.tables.TableHead) {
+ Node headerRow = firstRow.getFirstChild();
+ if (headerRow instanceof org.commonmark.ext.gfm.tables.TableRow) {
+ Node cell = headerRow.getFirstChild();
+ while (cell != null) {
+ cols++;
+ cell = cell.getNext();
+ }
+ }
+ }
+
+ if (cols > 0) {
+ XWPFTable wordTable = document.createTable();
+
+ Node tableChild = table.getFirstChild();
+ boolean isFirstRow = true;
+ while (tableChild != null) {
+ if (tableChild instanceof org.commonmark.ext.gfm.tables.TableHead ||
+ tableChild instanceof org.commonmark.ext.gfm.tables.TableBody) {
+
+ Node rowNode = tableChild.getFirstChild();
+ while (rowNode != null) {
+ if (rowNode instanceof org.commonmark.ext.gfm.tables.TableRow) {
+ XWPFTableRow row;
+ if (isFirstRow) {
+ row = wordTable.getRow(0);
+ isFirstRow = false;
+ } else {
+ row = wordTable.createRow();
+ }
+
+ Node cellNode = rowNode.getFirstChild();
+ int cellIndex = 0;
+ while (cellNode != null && cellIndex < cols) {
+ if (cellNode instanceof org.commonmark.ext.gfm.tables.TableCell) {
+ XWPFTableCell cell = row.getCell(cellIndex);
+ if (cell == null) {
+ cell = row.addNewTableCell();
+ }
+ cell.setText(getTextContent(cellNode));
+ cellIndex++;
+ }
+ cellNode = cellNode.getNext();
+ }
+ }
+ rowNode = rowNode.getNext();
+ }
+ }
+ tableChild = tableChild.getNext();
+ }
+ }
+ }
+
+ /**
+ * 处理引用块
+ */
+ private static void processBlockQuote(XWPFDocument document, BlockQuote blockQuote) {
+ XWPFParagraph paragraph = document.createParagraph();
+ XWPFRun run = paragraph.createRun();
+ run.setText("" + getTextContent(blockQuote));
+ run.setFontSize(12);
+ run.setFontFamily("宋体");
+ run.setItalic(true);
+ }
+
+ /**
+ * 处理代码块
+ */
+ private static void processCodeBlock(XWPFDocument document, Node codeBlock) {
+ XWPFParagraph paragraph = document.createParagraph();
+ XWPFRun run = paragraph.createRun();
+
+ String code;
+ if (codeBlock instanceof FencedCodeBlock) {
+ code = ((FencedCodeBlock) codeBlock).getLiteral();
+ } else {
+ code = ((IndentedCodeBlock) codeBlock).getLiteral();
+ }
+
+ run.setText(code);
+ run.setFontSize(10);
+ run.setFontFamily("Courier New");
+ // 设置背景色(如果支持)
+ }
+
+ /**
+ * 处理内联节点(粗体、斜体、链接等)
+ */
+ private static void processInlineNodes(XWPFParagraph paragraph, Node node) {
+ while (node != null) {
+ if (node instanceof Text) {
+ XWPFRun run = paragraph.createRun();
+ run.setText(((Text) node).getLiteral());
+ run.setFontSize(12);
+ run.setFontFamily("宋体");
+ } else if (node instanceof StrongEmphasis) {
+ XWPFRun run = paragraph.createRun();
+ run.setText(getTextContent(node));
+ run.setBold(true);
+ run.setFontSize(12);
+ run.setFontFamily("宋体");
+ } else if (node instanceof Emphasis) {
+ XWPFRun run = paragraph.createRun();
+ run.setText(getTextContent(node));
+ run.setItalic(true);
+ run.setFontSize(12);
+ run.setFontFamily("宋体");
+ } else if (node instanceof Code) {
+ XWPFRun run = paragraph.createRun();
+ run.setText(((Code) node).getLiteral());
+ run.setFontSize(10);
+ run.setFontFamily("Courier New");
+ } else if (node instanceof Link) {
+ XWPFRun run = paragraph.createRun();
+ run.setText(getTextContent(node) + " (" + ((Link) node).getDestination() + ")");
+ run.setFontSize(12);
+ run.setFontFamily("宋体");
+ run.setColor("0000FF");
+ } else {
+ // 递归处理子节点
+ processInlineNodes(paragraph, node.getFirstChild());
+ }
+ node = node.getNext();
+ }
+ }
+
+ /**
+ * 获取节点的文本内容
+ */
+ private static String getTextContent(Node node) {
+ StringBuilder text = new StringBuilder();
+ extractText(node, text);
+ return text.toString().trim();
+ }
+
+ /**
+ * 递归提取文本内容
+ */
+ private static void extractText(Node node, StringBuilder text) {
+ if (node instanceof Text) {
+ text.append(((Text) node).getLiteral());
+ } else if (node instanceof Code) {
+ text.append(((Code) node).getLiteral());
+ } else {
+ Node child = node.getFirstChild();
+ while (child != null) {
+ extractText(child, text);
+ child = child.getNext();
+ }
+ }
+ }
+
+ /**
+ * 判断是否为标题行
+ */
+ private static boolean isTitle(String line) {
+ return line.matches("^\\d+\\..+") ||
+ line.matches("^[一二三四五六七八九十]+、.+") ||
+ line.trim().matches("^(执行摘要|数据概览|详细对比分析|问题识别|建议与对策|结论).*");
+ }
+
+ /**
+ * 添加文档结尾
+ */
+ private static void addDocumentFooter(XWPFDocument document) {
+ XWPFParagraph endParagraph = document.createParagraph();
+ endParagraph.createRun().addBreak();
+ XWPFRun endSeparatorRun = endParagraph.createRun();
+ endSeparatorRun.setText("=".repeat(50));
+ endSeparatorRun.setFontSize(10);
+
+ XWPFRun endRun = endParagraph.createRun();
+ endRun.addBreak();
+ endRun.setText("报告结束");
+ endRun.setFontSize(12);
+ endRun.setFontFamily("宋体");
+ endRun.setBold(true);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/dsideal/base/AI/Model/YunNanModel.java b/src/main/java/com/dsideal/base/AI/Model/YunNanModel.java
new file mode 100644
index 00000000..4220f457
--- /dev/null
+++ b/src/main/java/com/dsideal/base/AI/Model/YunNanModel.java
@@ -0,0 +1,64 @@
+package com.dsideal.base.AI.Model;
+
+import cn.hutool.json.JSONUtil;
+import com.dsideal.base.DataEase.Model.DataEaseModel;
+import com.jfinal.plugin.activerecord.Db;
+import com.jfinal.plugin.activerecord.Record;
+
+import java.util.List;
+
+public class YunNanModel {
+ /**
+ * 收集指定地区的教育资源配置数据
+ *
+ * @param regions 要对比的地区数组
+ * @return 格式化的数据内容
+ */
+ public String collectEducationData(String[] regions) {
+ // 查询教育资源配置发展预测相关表【低于32K】
+ String sql = "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'dataease' AND TABLE_NAME LIKE 'excel_报告-教育资源配置发展预测%';";
+
+ // 超过32K
+ //String sql="select table_name as TABLE_NAME from core_dataset_table where dataset_group_id in (select id from core_dataset_group where pid='1036317909951057920')";
+ List tableList = Db.use(DataEaseModel.DB_NAME).find(sql);
+
+ StringBuilder dataContent = new StringBuilder();
+
+ // 构建数据标题
+ dataContent.append("教育资源配置发展预测数据对比分析\n\n");
+ dataContent.append("对比州市:").append(String.join(" vs ", regions)).append("\n\n");
+
+ // 遍历所有相关数据表
+ for (Record record : tableList) {
+ String tableName = record.getStr("TABLE_NAME");
+ dataContent.append("数据表:").append(tableName).append("\n");
+
+ // 为每个地区收集数据
+ for (String region : regions) {
+ sql = "select * from `" + tableName + "` where `行政区划`=?";
+ List listContent = Db.use(DataEaseModel.DB_NAME).find(sql, region);
+
+ if (!listContent.isEmpty()) {
+ dataContent.append("\n").append(region).append("数据:\n");
+ for (Record dataRecord : listContent) {
+ dataContent.append(JSONUtil.toJsonPrettyStr(dataRecord.getColumns())).append("\n");
+ }
+ } else {
+ dataContent.append("\n").append(region).append(":无相关数据\n");
+ }
+ }
+ dataContent.append("\n----------------------------------------\n\n");
+ }
+ return dataContent.toString();
+ }
+
+ /**
+ * 获取云南省下所有城市名称
+ *
+ * @return
+ */
+ public List getYunNanCity() {
+ String sql = "select id,area_code,area_name,full_name from t_dm_area where parent_id='FD61813E-70A1-42AB-9A8E-141ED4D47B98'";
+ return Db.find(sql);
+ }
+}
diff --git a/src/main/java/com/dsideal/base/BaseApplication.java b/src/main/java/com/dsideal/base/BaseApplication.java
index 546c688d..a5706c7b 100644
--- a/src/main/java/com/dsideal/base/BaseApplication.java
+++ b/src/main/java/com/dsideal/base/BaseApplication.java
@@ -1,5 +1,7 @@
package com.dsideal.base;
+import com.dsideal.base.AI.Controller.SSEController;
+import com.dsideal.base.AI.Controller.AiController;
import com.dsideal.base.Base.Controller.BaseController;
import com.dsideal.base.Classes.Controller.ClassController;
import com.dsideal.base.DataAuthority.Controller.DataAuthorityController;
@@ -99,7 +101,12 @@ public class BaseApplication extends JFinalConfig {
//资源管理
me.add("/res", ResourceController.class);
//云校
- me.add("/yx",YunXiaoController.class);
+ me.add("/yx", YunXiaoController.class);
+ //大数据AI
+ me.add("/ai", AiController.class);
+ //SSE测试
+ me.add("/sse", SSEController.class);
+
}
@Override
diff --git a/src/main/java/com/dsideal/base/DataEase/Util/Step1_DeleteBigScreen.java b/src/main/java/com/dsideal/base/DataEase/Util/Step1_DeleteBigScreen.java
index 67da9c2b..0758f23a 100644
--- a/src/main/java/com/dsideal/base/DataEase/Util/Step1_DeleteBigScreen.java
+++ b/src/main/java/com/dsideal/base/DataEase/Util/Step1_DeleteBigScreen.java
@@ -1,6 +1,6 @@
package com.dsideal.base.DataEase.Util;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import static com.dsideal.base.DataEase.Util.Step3_CopyBigScreen.clearScreen;
diff --git a/src/main/java/com/dsideal/base/DataEase/Util/Step2_CopyFilter.java b/src/main/java/com/dsideal/base/DataEase/Util/Step2_CopyFilter.java
index 40034a3b..7ac97d4f 100644
--- a/src/main/java/com/dsideal/base/DataEase/Util/Step2_CopyFilter.java
+++ b/src/main/java/com/dsideal/base/DataEase/Util/Step2_CopyFilter.java
@@ -1,11 +1,8 @@
package com.dsideal.base.DataEase.Util;
-import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSONObject;
import com.dsideal.base.DataEase.Model.DataEaseModel;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
-import com.dsideal.base.Util.CommonUtil;
-import com.dsideal.base.Util.FileUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import com.jfinal.kit.Kv;
import com.jfinal.kit.PathKit;
import com.jfinal.plugin.activerecord.Db;
diff --git a/src/main/java/com/dsideal/base/DataEase/Util/Step3_CopyBigScreen.java b/src/main/java/com/dsideal/base/DataEase/Util/Step3_CopyBigScreen.java
index d13cbbf9..9a18deee 100644
--- a/src/main/java/com/dsideal/base/DataEase/Util/Step3_CopyBigScreen.java
+++ b/src/main/java/com/dsideal/base/DataEase/Util/Step3_CopyBigScreen.java
@@ -3,7 +3,7 @@ package com.dsideal.base.DataEase.Util;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSONObject;
import com.dsideal.base.DataEase.Model.DataEaseModel;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import com.dsideal.base.Util.CommonUtil;
import com.dsideal.base.Util.FileUtil;
import com.jfinal.kit.PathKit;
diff --git a/src/main/java/com/dsideal/base/Test/ChangeCity.java b/src/main/java/com/dsideal/base/Test/ChangeCity.java
index e2f9fad5..9332f831 100644
--- a/src/main/java/com/dsideal/base/Test/ChangeCity.java
+++ b/src/main/java/com/dsideal/base/Test/ChangeCity.java
@@ -3,7 +3,7 @@ package com.dsideal.base.Test;
import com.dsideal.base.BaseApplication;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Plugin.YamlProp;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
public class ChangeCity {
public static DataEaseModel dm = new DataEaseModel();
diff --git a/src/main/java/com/dsideal/base/Test/FixErrorFill.java b/src/main/java/com/dsideal/base/Test/FixErrorFill.java
index 48ec2337..b7957bef 100644
--- a/src/main/java/com/dsideal/base/Test/FixErrorFill.java
+++ b/src/main/java/com/dsideal/base/Test/FixErrorFill.java
@@ -1,6 +1,6 @@
package com.dsideal.base.Test;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Record;
diff --git a/src/main/java/com/dsideal/base/Test/ReadWordTOC.java b/src/main/java/com/dsideal/base/Test/ReadWordTOC.java
index 2fb58bc3..510ef93f 100644
--- a/src/main/java/com/dsideal/base/Test/ReadWordTOC.java
+++ b/src/main/java/com/dsideal/base/Test/ReadWordTOC.java
@@ -15,7 +15,7 @@ import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import static com.dsideal.base.Tools.FillData.DataEaseKit.DsKit.DocxUnzipDirectory;
diff --git a/src/main/java/com/dsideal/base/Test/ReadWordTOCWenZi.java b/src/main/java/com/dsideal/base/Test/ReadWordTOCWenZi.java
index 7650472f..7b1c7cc8 100644
--- a/src/main/java/com/dsideal/base/Test/ReadWordTOCWenZi.java
+++ b/src/main/java/com/dsideal/base/Test/ReadWordTOCWenZi.java
@@ -1,27 +1,11 @@
package com.dsideal.base.Test;
-import cn.hutool.core.io.FileUtil;
-import com.dsideal.base.DataEase.Model.DataEaseModel;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
-import com.jfinal.kit.StrKit;
-import org.apache.commons.io.FileUtils;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
-import org.dom4j.Document;
-import org.dom4j.DocumentException;
-import org.dom4j.Element;
-import org.dom4j.io.SAXReader;
-import java.io.File;
import java.io.FileInputStream;
-import java.io.FileOutputStream;
import java.io.IOException;
-import java.util.Arrays;
import java.util.List;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipInputStream;
-
-import static com.dsideal.base.Tools.FillData.DataEaseKit.DsKit.DocxUnzipDirectory;
public class ReadWordTOCWenZi {
static String filePath = "D:\\dsWork\\YunNanDsBase\\Doc\\县区研究报告\\保山市\\昌宁县人口变化及其对教育的影响.docx";
diff --git a/src/main/java/com/dsideal/base/Tools/AiGenerate.java b/src/main/java/com/dsideal/base/Tools/AiGenerate.java
deleted file mode 100644
index c119bc89..00000000
--- a/src/main/java/com/dsideal/base/Tools/AiGenerate.java
+++ /dev/null
@@ -1,355 +0,0 @@
-package com.dsideal.base.Tools;
-
-import com.alibaba.fastjson.JSONObject;
-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 com.jfinal.plugin.activerecord.Db;
-import com.jfinal.plugin.activerecord.Record;
-import cn.hutool.json.JSONUtil;
-import org.apache.poi.xwpf.usermodel.XWPFDocument;
-import org.apache.poi.xwpf.usermodel.XWPFParagraph;
-import org.apache.poi.xwpf.usermodel.XWPFRun;
-import org.apache.poi.xwpf.usermodel.ParagraphAlignment;
-
-import java.io.FileOutputStream;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.List;
-
-public class AiGenerate extends PptAIKit {
- public static DataEaseModel dm = new DataEaseModel();
-
- public static void main(String[] args) {
- //加载配置文件
- String configFile = "application.yaml";
- BaseApplication.PropKit = new YamlProp(configFile);
- LocalMysqlConnectUtil.Init();
-
- // 查询教育资源配置发展预测相关表
- 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[]{"文山州", "楚雄州"};
- StringBuilder dataContent = new StringBuilder();
-
- // 收集两个州的数据
- dataContent.append("教育资源配置发展预测数据对比分析\n\n");
- dataContent.append("对比州市:").append(String.join(" vs ", biJiao)).append("\n\n");
-
- for (Record record : tableList) {
- String tableName = record.getStr("TABLE_NAME");
- dataContent.append("数据表:").append(tableName).append("\n");
-
- for (int j = 0; j < biJiao.length; j++) {
- sql = "select * from `" + tableName + "` where `行政区划`=?";
- List listContent = Db.use(DataEaseModel.DB_NAME).find(sql, biJiao[j]);
-
- if (!listContent.isEmpty()) {
- dataContent.append("\n").append(biJiao[j]).append("数据:\n");
- for (Record dataRecord : listContent) {
- dataContent.append(JSONUtil.toJsonPrettyStr(dataRecord.getColumns())).append("\n");
- }
- } else {
- dataContent.append("\n").append(biJiao[j]).append(":无相关数据\n");
- }
- }
- dataContent.append("\n----------------------------------------\n\n");
- }
-
- // 构建分析提示词
- String analysisPrompt = createAnalysisPrompt(dataContent.toString());
-
-
- // 生成输出文件路径
- String timestamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
- String outputPath = "教育资源对比分析报告_" + 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 {
- // 使用Apache POI生成Word文档
- generateWordDocument(fullResponse.toString(), outputPath, biJiao);
- System.out.println("Word分析报告已保存到: " + outputPath);
-
- // 生成PPT
- // 生成PPT
- System.out.println("\n\n=== 开始生成PPT ===");
- generatePptPresentation(analysisPrompt, biJiao);
-
- } catch (Exception e) {
- System.err.println("保存文件时出错: " + e.getMessage());
- e.printStackTrace();
- }
- }
-
- @Override
- public void onError(String error) {
- System.err.println("DeepSeek分析出错: " + error);
- }
- });
- }
-
- /**
- * 创建PPT生成提示词
- */
- private static String createPptPrompt(String dataContent, String[] cities) {
- try {
- // 构建给 DeepSeek 的精简提示词
- String deepseekPrompt = "你是一位专业的教育数据分析专家,请将以下教育资源配置数据进行精简总结," +
- "提取关键信息和对比要点,控制在300字以内,重点突出" + String.join("与", cities) + "的对比差异:\n\n" +
- dataContent;
-
- System.out.println("正在调用 DeepSeek 精简数据...");
-
- // 调用 DeepSeek 获取精简内容
- String simplifiedContent = CallDeepSeek.callDeepSeek(deepseekPrompt);
-
- if (simplifiedContent != null && !simplifiedContent.trim().isEmpty()) {
- System.out.println("DeepSeek 精简完成,精简后长度: " + simplifiedContent.length());
-
- // 使用精简后的内容构建 PPT 提示词
- 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" + simplifiedContent;
- } else {
- System.out.println("DeepSeek 调用失败,使用基础提示词");
- return createBasicPptPrompt(cities);
- }
-
- } catch (Exception e) {
- System.err.println("调用 DeepSeek 精简数据时出错: " + e.getMessage());
- e.printStackTrace();
- // 如果 DeepSeek 调用失败,返回基础提示词
- return createBasicPptPrompt(cities);
- }
- }
-
- /**
- * 创建基础PPT提示词(作为备用方案)
- */
- private static String createBasicPptPrompt(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演示文稿
- */
- private static void generatePptPresentation(String analysisContent, String[] biJiao) {
- try {
- String uid = "test";
- // 第一步:使用DeepSeek生成简化的PPT提示词
- String simplifiedPptPrompt = createPptPrompt(analysisContent, biJiao);
-
- // 创建 api token (有效期2小时,建议缓存到redis,同一个 uid 创建时之前的 token 会在10秒内失效)
- String apiToken = PptAIKit.createApiToken(uid, null);
- System.out.println("api token: " + apiToken);
-
- // 生成大纲
- System.out.println("\n\n========== 正在生成大纲 ==========");
- System.out.println(simplifiedPptPrompt.length());
- System.out.println(simplifiedPptPrompt);
- String outline = PptAIKit.generateOutline(apiToken, null, null, simplifiedPptPrompt);
-
- // 生成大纲内容
- System.out.println("\n\n========== 正在生成大纲内容 ==========");
- String markdown = PptAIKit.generateContent(apiToken, outline, null, simplifiedPptPrompt);
-
- // 随机一个模板
- System.out.println("\n\n========== 随机选择模板 ==========");
- String templateId = PptAIKit.randomOneTemplateId(apiToken);
- System.out.println(templateId);
-
- // 生成PPT
- System.out.println("\n\n========== 正在生成PPT ==========");
- JSONObject pptInfo = PptAIKit.generatePptx(apiToken, templateId, markdown, false);
- String pptId = pptInfo.getString("id");
- System.out.println("pptId: " + pptId);
- System.out.println("ppt主题:" + pptInfo.getString("subject"));
- System.out.println("ppt封面:" + pptInfo.getString("coverUrl") + "?token=" + apiToken);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- /**
- * 创建分析提示词
- */
- private static String createAnalysisPrompt(String dataContent) {
- return "你是一位专业的教育数据分析专家,请基于以下数据对文山州和楚雄州的教育资源配置情况进行深入对比分析。\n\n" +
- "重要要求:请生成结构化的纯文本格式报告,使用清晰的段落结构,不要使用markdown语法。\n\n" +
- "请按照以下结构进行分析并生成专业的分析报告:\n\n" +
- "1. 执行摘要\n" +
- " 简要概述两州教育资源配置的整体情况和主要发现\n\n" +
- "2. 数据概览\n" +
- " 两州基本教育数据对比和关键指标汇总\n\n" +
- "3. 详细对比分析\n" +
- " 教育资源配置水平对比、发展趋势分析、优势与不足分析\n\n" +
- "4. 问题识别\n" +
- " 存在的主要问题和资源配置不均衡情况\n\n" +
- "5. 建议与对策\n" +
- " 针对性改进建议和资源优化配置方案\n\n" +
- "6. 结论\n" +
- " 总体评价和未来发展方向\n\n" +
- "请确保分析客观、专业,数据引用准确,建议具有可操作性。\n\n" +
- "=== 原始数据 ===\n" + dataContent;
- }
-
- /**
- * 使用Apache POI生成Word文档
- */
- private static void generateWordDocument(String analysisResult, String outputPath, String[] cities) throws Exception {
- XWPFDocument document = new XWPFDocument();
-
- try {
- // 动态生成标题
- String reportTitle;
- if (cities != null && cities.length >= 2) {
- reportTitle = String.join("与", cities) + "教育资源配置对比分析报告";
- } else {
- reportTitle = "教育资源配置对比分析报告"; // 默认标题
- }
-
- // 添加标题
- XWPFParagraph titleParagraph = document.createParagraph();
- titleParagraph.setAlignment(ParagraphAlignment.CENTER);
- XWPFRun titleRun = titleParagraph.createRun();
- titleRun.setText(reportTitle);
- titleRun.setBold(true);
- titleRun.setFontSize(18);
- titleRun.setFontFamily("宋体");
-
- // 添加空行
- document.createParagraph();
-
- // 添加生成信息
- XWPFParagraph infoParagraph = document.createParagraph();
- XWPFRun infoRun = infoParagraph.createRun();
- infoRun.setText("生成时间:" + new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss").format(new Date()));
- infoRun.setFontSize(12);
- infoRun.setFontFamily("宋体");
-
- XWPFRun toolRun = infoParagraph.createRun();
- toolRun.addBreak();
- toolRun.setText("分析工具:DeepSeek AI");
- toolRun.setFontSize(12);
- toolRun.setFontFamily("宋体");
-
- // 添加分隔线
- XWPFParagraph separatorParagraph = document.createParagraph();
- XWPFRun separatorRun = separatorParagraph.createRun();
- separatorRun.setText("=".repeat(50));
- separatorRun.setFontSize(10);
-
- // 添加空行
- document.createParagraph();
-
- // 处理分析内容
- String[] lines = analysisResult.split("\n");
- XWPFParagraph currentParagraph = null;
- XWPFRun currentRun = null;
-
- for (String line : lines) {
- if (line.trim().isEmpty()) {
- // 空行,创建新段落
- document.createParagraph();
- currentParagraph = null;
- currentRun = null;
- } else {
- // 检查是否是标题行(数字开头或特殊格式)
- boolean isTitle = line.matches("^\\d+\\..+") ||
- line.matches("^[一二三四五六七八九十]+、.+") ||
- line.trim().matches("^(执行摘要|数据概览|详细对比分析|问题识别|建议与对策|结论).*");
-
- if (currentParagraph == null) {
- currentParagraph = document.createParagraph();
- currentRun = currentParagraph.createRun();
- currentRun.setFontFamily("宋体");
- currentRun.setFontSize(12);
- }
-
- if (isTitle) {
- // 如果当前段落已有内容,创建新段落
- String currentText = currentRun.getText(0);
- if (currentText != null && !currentText.isEmpty()) {
- currentParagraph = document.createParagraph();
- currentRun = currentParagraph.createRun();
- currentRun.setFontFamily("宋体");
- }
- currentRun.setText(line);
- currentRun.setBold(true);
- currentRun.setFontSize(14);
- currentParagraph = null; // 强制下一行创建新段落
- currentRun = null;
- } else {
- // 普通内容
- String currentText = currentRun.getText(0);
- if (currentText != null && !currentText.isEmpty()) {
- currentRun.addBreak();
- }
- currentRun.setText(line);
- currentRun.setFontSize(12);
- }
- }
- }
-
- // 添加结尾
- XWPFParagraph endParagraph = document.createParagraph();
- endParagraph.createRun().addBreak();
- XWPFRun endSeparatorRun = endParagraph.createRun();
- endSeparatorRun.setText("=".repeat(50));
- endSeparatorRun.setFontSize(10);
-
- XWPFRun endRun = endParagraph.createRun();
- endRun.addBreak();
- endRun.setText("报告结束");
- endRun.setFontSize(12);
- endRun.setFontFamily("宋体");
- endRun.setBold(true);
-
- // 保存文档
- try (FileOutputStream out = new FileOutputStream(outputPath)) {
- document.write(out);
- }
-
- } finally {
- document.close();
- }
- }
-}
diff --git a/src/main/java/com/dsideal/base/Tools/AiPptDemo1.java b/src/main/java/com/dsideal/base/Tools/AiPptDemo1.java
deleted file mode 100644
index f0a1b681..00000000
--- a/src/main/java/com/dsideal/base/Tools/AiPptDemo1.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package com.dsideal.base.Tools;
-
-import com.alibaba.fastjson.JSONObject;
-import com.dsideal.base.Tools.Util.HttpUtils;
-import com.dsideal.base.Tools.Util.PptAIKit;
-
-import javax.swing.filechooser.FileSystemView;
-import java.io.File;
-
-/**
- * 同步流式生成 PPT
- *
- * @author veasion
- * @date 2024/7/12
- */
-public class AiPptDemo1 extends PptAIKit {
-
- public static void main(String[] args) throws Exception {
- // 第三方用户ID(数据隔离)
- String uid = "test";
- String subject = "AI未来的发展";
-
- // 创建 api token (有效期2小时,建议缓存到redis,同一个 uid 创建时之前的 token 会在10秒内失效)
- String apiToken = PptAIKit.createApiToken(uid, null);
- System.out.println("api token: " + apiToken);
-
- // 生成大纲
- System.out.println("\n\n========== 正在生成大纲 ==========");
- String outline = PptAIKit.generateOutline(apiToken, subject, null, null);
-
- // 生成大纲内容
- System.out.println("\n\n========== 正在生成大纲内容 ==========");
- String markdown = PptAIKit.generateContent(apiToken, outline, null, null);
-
- // 随机一个模板
- System.out.println("\n\n========== 随机选择模板 ==========");
- String templateId = PptAIKit.randomOneTemplateId(apiToken);
- System.out.println(templateId);
-
- // 生成PPT
- System.out.println("\n\n========== 正在生成PPT ==========");
- JSONObject pptInfo = PptAIKit.generatePptx(apiToken, templateId, markdown, false);
- String pptId = pptInfo.getString("id");
- System.out.println("pptId: " + pptId);
- System.out.println("ppt主题:" + pptInfo.getString("subject"));
- System.out.println("ppt封面:" + pptInfo.getString("coverUrl") + "?token=" + apiToken);
-
- // 下载PPT到桌面
- System.out.println("\n\n========== 正在下载PPT ==========");
- JSONObject result = PptAIKit.downloadPptx(apiToken, pptId);
- String url = result.getString("fileUrl");
- System.out.println("ppt链接:" + url);
- String savePath = FileSystemView.getFileSystemView().getHomeDirectory().getAbsolutePath() + File.separator + pptId + ".pptx";
- HttpUtils.download(url, new File(savePath));
- System.out.println("ppt下载完成,保存路径:" + savePath);
- }
-}
diff --git a/src/main/java/com/dsideal/base/Tools/AiPptDemo2.java b/src/main/java/com/dsideal/base/Tools/AiPptDemo2.java
deleted file mode 100644
index eef46636..00000000
--- a/src/main/java/com/dsideal/base/Tools/AiPptDemo2.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package com.dsideal.base.Tools;
-
-import com.alibaba.fastjson.JSONObject;
-import com.dsideal.base.Tools.Util.HttpUtils;
-import com.dsideal.base.Tools.Util.PptAIKit;
-
-import javax.swing.filechooser.FileSystemView;
-import java.io.File;
-import java.util.Map;
-
-/**
- * 异步流式生成 PPT
- *
- * @author veasion
- * @date 2024/7/12
- */
-public class AiPptDemo2 extends PptAIKit {
- public static void main(String[] args) throws Exception {
- // 第三方用户ID(数据隔离)
- String uid = "test";
- // 文档文件,支持 word/excel/ppt/md/txt/pdf 等类型
- File file = new File("README.md");
-
- // 创建 api token (有效期2小时,建议缓存到redis,同一个 uid 创建时之前的 token 会在10秒内失效)
- String apiToken = PptAIKit.createApiToken(uid, null);
- System.out.println("apiToken: " + apiToken);
-
- // 解析文件
- String dataUrl = PptAIKit.parseFileData(apiToken, file, null, null);
-
- // 生成大纲
- System.out.println("\n\n========== 正在生成大纲 ==========");
- String outline = PptAIKit.generateOutline(apiToken, null, dataUrl, null);
-
- // 异步生成大纲内容
- System.out.println("\n\n========== 正在异步生成大纲内容 ==========");
- Map pptInfo = PptAIKit.asyncGenerateContent(apiToken, outline, dataUrl, null, null);
-
- String pptId = pptInfo.get("id");
-
- // 下载PPT到桌面
- System.out.println("\n\n========== 正在下载PPT ==========");
- System.out.println("pptId: " + pptId);
- String url = null;
- for (int i = 0; i < 30; i++) {
- // 等待PPT文件可下载
- JSONObject result = PptAIKit.downloadPptx(apiToken, pptId);
- if (result != null) {
- url = result.getString("fileUrl");
- if (url != null) {
- break;
- }
- }
- Thread.sleep(1000);
- }
- System.out.println("ppt链接:" + url);
- String savePath = FileSystemView.getFileSystemView().getHomeDirectory().getAbsolutePath() + File.separator + pptId + ".pptx";
- HttpUtils.download(url, new File(savePath));
- System.out.println("ppt下载完成,保存路径:" + savePath);
- }
-
-}
diff --git a/src/main/java/com/dsideal/base/Tools/AiPptDemo3.java b/src/main/java/com/dsideal/base/Tools/AiPptDemo3.java
deleted file mode 100644
index 76785699..00000000
--- a/src/main/java/com/dsideal/base/Tools/AiPptDemo3.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package com.dsideal.base.Tools;
-
-import com.alibaba.fastjson.JSONObject;
-import com.dsideal.base.Tools.Util.HttpUtils;
-import com.dsideal.base.Tools.Util.PptAIKit;
-
-import javax.swing.filechooser.FileSystemView;
-import java.io.File;
-
-/**
- * 通过主题直接生成 PPT
- *
- * @author veasion
- * @date 2024/7/12
- */
-public class AiPptDemo3 extends PptAIKit {
-
- public static void main(String[] args) throws Exception {
- // 第三方用户ID(数据隔离)
- String uid = "test";
- String subject = "AI未来的发展";
-
- // 创建 api token (有效期2小时,建议缓存到redis,同一个 uid 创建时之前的 token 会在10秒内失效)
- String apiToken = PptAIKit.createApiToken(uid, null);
- System.out.println("apiToken: " + apiToken);
-
- // 通过主题直接生成PPT
- System.out.println("\n正在生成PPT...\n");
- JSONObject pptInfo = PptAIKit.directGeneratePptx(apiToken, true, null, subject, null, null, false);
-
- String pptId = pptInfo.getString("id");
- String fileUrl = pptInfo.getString("fileUrl");
- System.out.println("\n\n===============");
- System.out.println("pptId: " + pptId);
- System.out.println("ppt主题:" + pptInfo.getString("subject"));
- System.out.println("ppt封面:" + pptInfo.getString("coverUrl"));
- System.out.println("ppt链接:" + fileUrl);
-
- // 下载PPT到桌面
- String savePath = FileSystemView.getFileSystemView().getHomeDirectory().getAbsolutePath() + File.separator + pptId + ".pptx";
- HttpUtils.download(fileUrl, new File(savePath));
- System.out.println("ppt下载完成,保存路径:" + savePath);
- }
-
-}
diff --git a/src/main/java/com/dsideal/base/Tools/AiPptDemo4.java b/src/main/java/com/dsideal/base/Tools/AiPptDemo4.java
deleted file mode 100644
index b35b5a70..00000000
--- a/src/main/java/com/dsideal/base/Tools/AiPptDemo4.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package com.dsideal.base.Tools;
-
-import com.alibaba.fastjson.JSONObject;
-import com.dsideal.base.Tools.Util.HttpUtils;
-import com.dsideal.base.Tools.Util.PptAIKit;
-
-import javax.swing.filechooser.FileSystemView;
-import java.io.File;
-
-/**
- * 通过文件直接生成 PPT
- *
- * @author veasion
- * @date 2024/7/12
- */
-public class AiPptDemo4 {
-
- public static void main(String[] args) throws Exception {
- // 第三方用户ID(数据隔离)
- String uid = "test";
- // 文档文件,支持 word/excel/ppt/md/txt/pdf 等类型
- File file = new File("README.md");
-
- // 创建 api token (有效期2小时,建议缓存到redis,同一个 uid 创建时之前的 token 会在10秒内失效)
- String apiToken = PptAIKit.createApiToken( uid, null);
- System.out.println("apiToken: " + apiToken);
-
- // 解析文件
- String dataUrl = PptAIKit.parseFileData(apiToken, file, null, null);
-
- // 通过文件直接生成PPT
- System.out.println("\n正在生成PPT...\n");
- JSONObject pptInfo = PptAIKit.directGeneratePptx(apiToken, true, null, null, dataUrl, null, false);
-
- String pptId = pptInfo.getString("id");
- String fileUrl = pptInfo.getString("fileUrl");
- System.out.println("\n\n===============");
- System.out.println("pptId: " + pptId);
- System.out.println("ppt主题:" + pptInfo.getString("subject"));
- System.out.println("ppt封面:" + pptInfo.getString("coverUrl"));
- System.out.println("ppt链接:" + fileUrl);
-
- // 下载PPT到桌面
- String savePath = FileSystemView.getFileSystemView().getHomeDirectory().getAbsolutePath() + File.separator + pptId + ".pptx";
- HttpUtils.download(fileUrl, new File(savePath));
- System.out.println("ppt下载完成,保存路径:" + savePath);
- }
-
-}
diff --git a/src/main/java/com/dsideal/base/Tools/ChangeCityMap.java b/src/main/java/com/dsideal/base/Tools/ChangeCityMap.java
index c3b3abda..7d1bc81d 100644
--- a/src/main/java/com/dsideal/base/Tools/ChangeCityMap.java
+++ b/src/main/java/com/dsideal/base/Tools/ChangeCityMap.java
@@ -4,7 +4,7 @@ import com.alibaba.fastjson.JSONObject;
import com.dsideal.base.BaseApplication;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Plugin.YamlProp;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Record;
diff --git a/src/main/java/com/dsideal/base/Tools/DeleteNotUnique.java b/src/main/java/com/dsideal/base/Tools/DeleteNotUnique.java
index 177d937d..5a07c622 100644
--- a/src/main/java/com/dsideal/base/Tools/DeleteNotUnique.java
+++ b/src/main/java/com/dsideal/base/Tools/DeleteNotUnique.java
@@ -1,6 +1,5 @@
package com.dsideal.base.Tools;
-import java.sql.SQLOutput;
import java.util.List;
import java.util.Map;
import java.util.HashMap;
@@ -8,7 +7,7 @@ import java.util.Set;
import java.util.HashSet;
import java.util.stream.Collectors;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import com.jfinal.plugin.activerecord.Record;
import com.jfinal.plugin.activerecord.Db;
diff --git a/src/main/java/com/dsideal/base/Tools/ExportExcel.java b/src/main/java/com/dsideal/base/Tools/ExportExcel.java
index ffdcf64e..c04dc47a 100644
--- a/src/main/java/com/dsideal/base/Tools/ExportExcel.java
+++ b/src/main/java/com/dsideal/base/Tools/ExportExcel.java
@@ -1,6 +1,6 @@
package com.dsideal.base.Tools;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Record;
import com.jfinal.plugin.activerecord.SqlPara;
diff --git a/src/main/java/com/dsideal/base/Tools/FillData/Area/A1.java b/src/main/java/com/dsideal/base/Tools/FillData/Area/A1.java
index 3e5e894e..fe163fd2 100644
--- a/src/main/java/com/dsideal/base/Tools/FillData/Area/A1.java
+++ b/src/main/java/com/dsideal/base/Tools/FillData/Area/A1.java
@@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.Area;
import cn.hutool.core.io.FileUtil;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import com.jfinal.kit.StrKit;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Row;
diff --git a/src/main/java/com/dsideal/base/Tools/FillData/Area/A10.java b/src/main/java/com/dsideal/base/Tools/FillData/Area/A10.java
index 7e26e1f6..d5b5dd4e 100644
--- a/src/main/java/com/dsideal/base/Tools/FillData/Area/A10.java
+++ b/src/main/java/com/dsideal/base/Tools/FillData/Area/A10.java
@@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.Area;
import cn.hutool.core.io.FileUtil;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import com.jfinal.kit.StrKit;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Row;
diff --git a/src/main/java/com/dsideal/base/Tools/FillData/Area/A11.java b/src/main/java/com/dsideal/base/Tools/FillData/Area/A11.java
index dd3f0b7b..c73c62bc 100644
--- a/src/main/java/com/dsideal/base/Tools/FillData/Area/A11.java
+++ b/src/main/java/com/dsideal/base/Tools/FillData/Area/A11.java
@@ -1,7 +1,7 @@
package com.dsideal.base.Tools.FillData.Area;
import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.SqlPara;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
diff --git a/src/main/java/com/dsideal/base/Tools/FillData/Area/A12.java b/src/main/java/com/dsideal/base/Tools/FillData/Area/A12.java
index b4ae07ed..8dfa7d6d 100644
--- a/src/main/java/com/dsideal/base/Tools/FillData/Area/A12.java
+++ b/src/main/java/com/dsideal/base/Tools/FillData/Area/A12.java
@@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.Area;
import cn.hutool.core.io.FileUtil;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import com.jfinal.kit.StrKit;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Row;
diff --git a/src/main/java/com/dsideal/base/Tools/FillData/Area/A13.java b/src/main/java/com/dsideal/base/Tools/FillData/Area/A13.java
index 800cea29..173df939 100644
--- a/src/main/java/com/dsideal/base/Tools/FillData/Area/A13.java
+++ b/src/main/java/com/dsideal/base/Tools/FillData/Area/A13.java
@@ -12,9 +12,8 @@ import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.utils.Constants;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import com.jfinal.kit.StrKit;
-import org.apache.commons.io.FileUtils;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFSheet;
@@ -28,14 +27,10 @@ import org.dom4j.io.SAXReader;
import java.io.File;
import java.io.FileInputStream;
-import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Collections;
import java.util.List;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipInputStream;
import static com.dsideal.base.Tools.FillData.DataEaseKit.DsKit.DocxUnzipDirectory;
diff --git a/src/main/java/com/dsideal/base/Tools/FillData/Area/A15.java b/src/main/java/com/dsideal/base/Tools/FillData/Area/A15.java
index 7d335161..fbcad98f 100644
--- a/src/main/java/com/dsideal/base/Tools/FillData/Area/A15.java
+++ b/src/main/java/com/dsideal/base/Tools/FillData/Area/A15.java
@@ -5,7 +5,7 @@ import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import com.jfinal.kit.StrKit;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
diff --git a/src/main/java/com/dsideal/base/Tools/FillData/Area/A2.java b/src/main/java/com/dsideal/base/Tools/FillData/Area/A2.java
index c692104a..958cb642 100644
--- a/src/main/java/com/dsideal/base/Tools/FillData/Area/A2.java
+++ b/src/main/java/com/dsideal/base/Tools/FillData/Area/A2.java
@@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.Area;
import cn.hutool.core.io.FileUtil;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import com.jfinal.kit.StrKit;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Row;
diff --git a/src/main/java/com/dsideal/base/Tools/FillData/Area/A3.java b/src/main/java/com/dsideal/base/Tools/FillData/Area/A3.java
index f18642ae..44a91792 100644
--- a/src/main/java/com/dsideal/base/Tools/FillData/Area/A3.java
+++ b/src/main/java/com/dsideal/base/Tools/FillData/Area/A3.java
@@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.Area;
import cn.hutool.core.io.FileUtil;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import com.jfinal.kit.StrKit;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Row;
diff --git a/src/main/java/com/dsideal/base/Tools/FillData/Area/A4.java b/src/main/java/com/dsideal/base/Tools/FillData/Area/A4.java
index 1a86a766..f1ed2a0a 100644
--- a/src/main/java/com/dsideal/base/Tools/FillData/Area/A4.java
+++ b/src/main/java/com/dsideal/base/Tools/FillData/Area/A4.java
@@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.Area;
import cn.hutool.core.io.FileUtil;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import com.jfinal.kit.StrKit;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Row;
diff --git a/src/main/java/com/dsideal/base/Tools/FillData/Area/A5.java b/src/main/java/com/dsideal/base/Tools/FillData/Area/A5.java
index 2e1a3cb7..1b9212f8 100644
--- a/src/main/java/com/dsideal/base/Tools/FillData/Area/A5.java
+++ b/src/main/java/com/dsideal/base/Tools/FillData/Area/A5.java
@@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.Area;
import cn.hutool.core.io.FileUtil;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import com.jfinal.kit.StrKit;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Row;
diff --git a/src/main/java/com/dsideal/base/Tools/FillData/Area/A6.java b/src/main/java/com/dsideal/base/Tools/FillData/Area/A6.java
index 13b3872d..d227ff27 100644
--- a/src/main/java/com/dsideal/base/Tools/FillData/Area/A6.java
+++ b/src/main/java/com/dsideal/base/Tools/FillData/Area/A6.java
@@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.Area;
import cn.hutool.core.io.FileUtil;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import com.jfinal.kit.StrKit;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Row;
diff --git a/src/main/java/com/dsideal/base/Tools/FillData/Area/A7.java b/src/main/java/com/dsideal/base/Tools/FillData/Area/A7.java
index a8b3e671..6e11d64b 100644
--- a/src/main/java/com/dsideal/base/Tools/FillData/Area/A7.java
+++ b/src/main/java/com/dsideal/base/Tools/FillData/Area/A7.java
@@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.Area;
import cn.hutool.core.io.FileUtil;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import com.jfinal.kit.StrKit;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Row;
diff --git a/src/main/java/com/dsideal/base/Tools/FillData/Area/A8.java b/src/main/java/com/dsideal/base/Tools/FillData/Area/A8.java
index 02c3aaa1..35c777e9 100644
--- a/src/main/java/com/dsideal/base/Tools/FillData/Area/A8.java
+++ b/src/main/java/com/dsideal/base/Tools/FillData/Area/A8.java
@@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.Area;
import cn.hutool.core.io.FileUtil;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import com.jfinal.kit.StrKit;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Row;
diff --git a/src/main/java/com/dsideal/base/Tools/FillData/Area/A9.java b/src/main/java/com/dsideal/base/Tools/FillData/Area/A9.java
index be6e4869..8618f47c 100644
--- a/src/main/java/com/dsideal/base/Tools/FillData/Area/A9.java
+++ b/src/main/java/com/dsideal/base/Tools/FillData/Area/A9.java
@@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.Area;
import cn.hutool.core.io.FileUtil;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import com.jfinal.kit.StrKit;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Row;
diff --git a/src/main/java/com/dsideal/base/Tools/FillData/City/C1.java b/src/main/java/com/dsideal/base/Tools/FillData/City/C1.java
index b8922815..a99774ea 100644
--- a/src/main/java/com/dsideal/base/Tools/FillData/City/C1.java
+++ b/src/main/java/com/dsideal/base/Tools/FillData/City/C1.java
@@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.City;
import cn.hutool.core.io.FileUtil;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
diff --git a/src/main/java/com/dsideal/base/Tools/FillData/City/C10.java b/src/main/java/com/dsideal/base/Tools/FillData/City/C10.java
index 5466dbc5..73b74ed5 100644
--- a/src/main/java/com/dsideal/base/Tools/FillData/City/C10.java
+++ b/src/main/java/com/dsideal/base/Tools/FillData/City/C10.java
@@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.City;
import cn.hutool.core.io.FileUtil;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import com.jfinal.kit.StrKit;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Row;
diff --git a/src/main/java/com/dsideal/base/Tools/FillData/City/C11.java b/src/main/java/com/dsideal/base/Tools/FillData/City/C11.java
index 396cf4e1..e3843cfb 100644
--- a/src/main/java/com/dsideal/base/Tools/FillData/City/C11.java
+++ b/src/main/java/com/dsideal/base/Tools/FillData/City/C11.java
@@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.City;
import cn.hutool.core.io.FileUtil;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
diff --git a/src/main/java/com/dsideal/base/Tools/FillData/City/C2.java b/src/main/java/com/dsideal/base/Tools/FillData/City/C2.java
index 8c744673..613850c9 100644
--- a/src/main/java/com/dsideal/base/Tools/FillData/City/C2.java
+++ b/src/main/java/com/dsideal/base/Tools/FillData/City/C2.java
@@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.City;
import cn.hutool.core.io.FileUtil;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import com.jfinal.kit.StrKit;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Row;
diff --git a/src/main/java/com/dsideal/base/Tools/FillData/City/C3.java b/src/main/java/com/dsideal/base/Tools/FillData/City/C3.java
index 398e4f31..6874611e 100644
--- a/src/main/java/com/dsideal/base/Tools/FillData/City/C3.java
+++ b/src/main/java/com/dsideal/base/Tools/FillData/City/C3.java
@@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.City;
import cn.hutool.core.io.FileUtil;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import lombok.Getter;
import lombok.Setter;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
diff --git a/src/main/java/com/dsideal/base/Tools/FillData/City/C4.java b/src/main/java/com/dsideal/base/Tools/FillData/City/C4.java
index e0bbb6ef..d0e37b51 100644
--- a/src/main/java/com/dsideal/base/Tools/FillData/City/C4.java
+++ b/src/main/java/com/dsideal/base/Tools/FillData/City/C4.java
@@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.City;
import cn.hutool.core.io.FileUtil;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import lombok.Getter;
import lombok.Setter;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
diff --git a/src/main/java/com/dsideal/base/Tools/FillData/City/C5.java b/src/main/java/com/dsideal/base/Tools/FillData/City/C5.java
index 56f7a6db..55f2825d 100644
--- a/src/main/java/com/dsideal/base/Tools/FillData/City/C5.java
+++ b/src/main/java/com/dsideal/base/Tools/FillData/City/C5.java
@@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.City;
import cn.hutool.core.io.FileUtil;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
diff --git a/src/main/java/com/dsideal/base/Tools/FillData/City/C6.java b/src/main/java/com/dsideal/base/Tools/FillData/City/C6.java
index c047f24b..8bd98c62 100644
--- a/src/main/java/com/dsideal/base/Tools/FillData/City/C6.java
+++ b/src/main/java/com/dsideal/base/Tools/FillData/City/C6.java
@@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.City;
import cn.hutool.core.io.FileUtil;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
diff --git a/src/main/java/com/dsideal/base/Tools/FillData/City/C7.java b/src/main/java/com/dsideal/base/Tools/FillData/City/C7.java
index 93363c1c..31803dd3 100644
--- a/src/main/java/com/dsideal/base/Tools/FillData/City/C7.java
+++ b/src/main/java/com/dsideal/base/Tools/FillData/City/C7.java
@@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.City;
import cn.hutool.core.io.FileUtil;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import com.jfinal.kit.StrKit;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Row;
diff --git a/src/main/java/com/dsideal/base/Tools/FillData/City/C8.java b/src/main/java/com/dsideal/base/Tools/FillData/City/C8.java
index fb1ceef8..d3dd635c 100644
--- a/src/main/java/com/dsideal/base/Tools/FillData/City/C8.java
+++ b/src/main/java/com/dsideal/base/Tools/FillData/City/C8.java
@@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.City;
import cn.hutool.core.io.FileUtil;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import com.jfinal.kit.StrKit;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Row;
diff --git a/src/main/java/com/dsideal/base/Tools/FillData/City/C9.java b/src/main/java/com/dsideal/base/Tools/FillData/City/C9.java
index ef655b54..b348a767 100644
--- a/src/main/java/com/dsideal/base/Tools/FillData/City/C9.java
+++ b/src/main/java/com/dsideal/base/Tools/FillData/City/C9.java
@@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.City;
import cn.hutool.core.io.FileUtil;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import com.jfinal.kit.StrKit;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Row;
diff --git a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A1.java b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A1.java
index 4d4100f8..9d46eecf 100644
--- a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A1.java
+++ b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A1.java
@@ -1,9 +1,8 @@
package com.dsideal.base.Tools.FillData.KaiFaArea;
import cn.hutool.core.io.FileUtil;
-import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import com.jfinal.kit.StrKit;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Row;
diff --git a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A10.java b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A10.java
index f627a097..8096fa34 100644
--- a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A10.java
+++ b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A10.java
@@ -3,8 +3,7 @@ package com.dsideal.base.Tools.FillData.KaiFaArea;
import cn.hutool.core.io.FileUtil;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
-import com.jfinal.kit.StrKit;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
diff --git a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A11.java b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A11.java
index f470221a..1d34286f 100644
--- a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A11.java
+++ b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A11.java
@@ -1,7 +1,7 @@
package com.dsideal.base.Tools.FillData.KaiFaArea;
import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Record;
import com.jfinal.plugin.activerecord.SqlPara;
diff --git a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A12.java b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A12.java
index 2b1989d4..b66f7815 100644
--- a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A12.java
+++ b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A12.java
@@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.KaiFaArea;
import cn.hutool.core.io.FileUtil;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import com.jfinal.kit.StrKit;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Row;
diff --git a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A13.java b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A13.java
index 55e97c50..77e0ea4a 100644
--- a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A13.java
+++ b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A13.java
@@ -12,7 +12,7 @@ import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.utils.Constants;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import com.jfinal.kit.StrKit;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
diff --git a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A15.java b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A15.java
index af6afdc3..51f95a6f 100644
--- a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A15.java
+++ b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A15.java
@@ -3,9 +3,8 @@ package com.dsideal.base.Tools.FillData.KaiFaArea;
import cn.hutool.core.io.FileUtil;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
-import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import com.jfinal.kit.StrKit;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
diff --git a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A2.java b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A2.java
index 20aa749d..2a01c93c 100644
--- a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A2.java
+++ b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A2.java
@@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.KaiFaArea;
import cn.hutool.core.io.FileUtil;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import com.jfinal.kit.StrKit;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Row;
diff --git a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A3.java b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A3.java
index ffc8a40d..b30362db 100644
--- a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A3.java
+++ b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A3.java
@@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.KaiFaArea;
import cn.hutool.core.io.FileUtil;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import com.jfinal.kit.StrKit;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Row;
diff --git a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A4.java b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A4.java
index f5c9aa81..c222fc6d 100644
--- a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A4.java
+++ b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A4.java
@@ -1,9 +1,8 @@
package com.dsideal.base.Tools.FillData.KaiFaArea;
import cn.hutool.core.io.FileUtil;
-import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import com.jfinal.kit.StrKit;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Row;
diff --git a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A5.java b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A5.java
index 3d946fe7..14c06525 100644
--- a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A5.java
+++ b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A5.java
@@ -1,9 +1,8 @@
package com.dsideal.base.Tools.FillData.KaiFaArea;
import cn.hutool.core.io.FileUtil;
-import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import com.jfinal.kit.StrKit;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Row;
diff --git a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A6.java b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A6.java
index e995f375..7feec22e 100644
--- a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A6.java
+++ b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A6.java
@@ -1,9 +1,8 @@
package com.dsideal.base.Tools.FillData.KaiFaArea;
import cn.hutool.core.io.FileUtil;
-import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import com.jfinal.kit.StrKit;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Row;
diff --git a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A7.java b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A7.java
index d748926f..eb7dd803 100644
--- a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A7.java
+++ b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A7.java
@@ -1,9 +1,8 @@
package com.dsideal.base.Tools.FillData.KaiFaArea;
import cn.hutool.core.io.FileUtil;
-import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import com.jfinal.kit.StrKit;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Row;
diff --git a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A8.java b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A8.java
index a332e6be..9468f482 100644
--- a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A8.java
+++ b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A8.java
@@ -1,9 +1,8 @@
package com.dsideal.base.Tools.FillData.KaiFaArea;
import cn.hutool.core.io.FileUtil;
-import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import com.jfinal.kit.StrKit;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Row;
diff --git a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A9.java b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A9.java
index a5d609fd..bd7887ab 100644
--- a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A9.java
+++ b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A9.java
@@ -1,9 +1,8 @@
package com.dsideal.base.Tools.FillData.KaiFaArea;
import cn.hutool.core.io.FileUtil;
-import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import com.jfinal.kit.StrKit;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Row;
diff --git a/src/main/java/com/dsideal/base/Tools/InitOrgPerson.java b/src/main/java/com/dsideal/base/Tools/InitOrgPerson.java
index 3be54839..eeec42b4 100644
--- a/src/main/java/com/dsideal/base/Tools/InitOrgPerson.java
+++ b/src/main/java/com/dsideal/base/Tools/InitOrgPerson.java
@@ -1,14 +1,11 @@
package com.dsideal.base.Tools;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import com.dsideal.base.Util.CommonUtil;
import com.dsideal.base.Util.PkUtil;
-import com.dsideal.base.Plugin.YamlProp;
import com.jfinal.kit.Prop;
-import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Record;
-import com.jfinal.plugin.hikaricp.HikariCpPlugin;
import com.jfinal.plugin.redis.RedisPlugin;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/src/main/java/com/dsideal/base/Tools/JkyNewData/SchoolCountConfig.java b/src/main/java/com/dsideal/base/Tools/JkyNewData/SchoolCountConfig.java
index cf5b2199..d0b58138 100644
--- a/src/main/java/com/dsideal/base/Tools/JkyNewData/SchoolCountConfig.java
+++ b/src/main/java/com/dsideal/base/Tools/JkyNewData/SchoolCountConfig.java
@@ -5,7 +5,7 @@ import cn.idev.excel.FastExcel;
import cn.idev.excel.read.builder.ExcelReaderBuilder;
import cn.idev.excel.read.metadata.ReadSheet;
import com.dsideal.base.Tools.JkyNewData.Util.CloseLogUtil;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Record;
diff --git a/src/main/java/com/dsideal/base/Tools/JkyNewData/SchoolCountSummary.java b/src/main/java/com/dsideal/base/Tools/JkyNewData/SchoolCountSummary.java
index 00dbb44f..e90bc059 100644
--- a/src/main/java/com/dsideal/base/Tools/JkyNewData/SchoolCountSummary.java
+++ b/src/main/java/com/dsideal/base/Tools/JkyNewData/SchoolCountSummary.java
@@ -1,17 +1,13 @@
package com.dsideal.base.Tools.JkyNewData;
import cn.idev.excel.*;
-import com.alibaba.fastjson2.JSON;
-import com.alibaba.fastjson2.JSONObject;
-import java.io.File;
import java.io.FileNotFoundException;
-import java.io.FileReader;
import com.dsideal.base.Tools.JkyNewData.Util.CloseLogUtil;
import com.dsideal.base.Tools.JkyNewData.Util.ColumnConfig;
import com.dsideal.base.Tools.JkyNewData.Util.ExcelUtil;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Record;
diff --git a/src/main/java/com/dsideal/base/Tools/Step1_DataSetInit.java b/src/main/java/com/dsideal/base/Tools/Step1_DataSetInit.java
index e93259d2..d091f0ab 100644
--- a/src/main/java/com/dsideal/base/Tools/Step1_DataSetInit.java
+++ b/src/main/java/com/dsideal/base/Tools/Step1_DataSetInit.java
@@ -1,7 +1,7 @@
package com.dsideal.base.Tools;
import com.dsideal.base.DataEase.Model.DataEaseModel;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import java.io.IOException;
diff --git a/src/main/java/com/dsideal/base/Tools/Step2_DataSetAddXzqh.java b/src/main/java/com/dsideal/base/Tools/Step2_DataSetAddXzqh.java
index 8caf9b3c..e05a7fb4 100644
--- a/src/main/java/com/dsideal/base/Tools/Step2_DataSetAddXzqh.java
+++ b/src/main/java/com/dsideal/base/Tools/Step2_DataSetAddXzqh.java
@@ -1,7 +1,7 @@
package com.dsideal.base.Tools;
import com.dsideal.base.DataEase.Model.DataEaseModel;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import com.jcraft.jsch.JSchException;
import com.jfinal.plugin.activerecord.Record;
diff --git a/src/main/java/com/dsideal/base/Tools/Test/A12.java b/src/main/java/com/dsideal/base/Tools/Test/A12.java
index 6426169f..05b608b9 100644
--- a/src/main/java/com/dsideal/base/Tools/Test/A12.java
+++ b/src/main/java/com/dsideal/base/Tools/Test/A12.java
@@ -3,7 +3,7 @@ package com.dsideal.base.Tools.Test;
import cn.hutool.core.io.FileUtil;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import com.jfinal.kit.StrKit;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Row;
diff --git a/src/main/java/com/dsideal/base/Tools/Test/A8.java b/src/main/java/com/dsideal/base/Tools/Test/A8.java
index e40223f1..1158d1e6 100644
--- a/src/main/java/com/dsideal/base/Tools/Test/A8.java
+++ b/src/main/java/com/dsideal/base/Tools/Test/A8.java
@@ -3,7 +3,7 @@ package com.dsideal.base.Tools.Test;
import cn.hutool.core.io.FileUtil;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import com.jfinal.kit.StrKit;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Row;
diff --git a/src/main/java/com/dsideal/base/Tools/Test/A9.java b/src/main/java/com/dsideal/base/Tools/Test/A9.java
index 0905948f..98ba9dad 100644
--- a/src/main/java/com/dsideal/base/Tools/Test/A9.java
+++ b/src/main/java/com/dsideal/base/Tools/Test/A9.java
@@ -3,7 +3,7 @@ package com.dsideal.base.Tools.Test;
import cn.hutool.core.io.FileUtil;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import com.jfinal.kit.StrKit;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Row;
diff --git a/src/main/java/com/dsideal/base/Tools/Test/C11.java b/src/main/java/com/dsideal/base/Tools/Test/C11.java
index 9252337c..37d04f74 100644
--- a/src/main/java/com/dsideal/base/Tools/Test/C11.java
+++ b/src/main/java/com/dsideal/base/Tools/Test/C11.java
@@ -1,7 +1,7 @@
package com.dsideal.base.Tools.Test;
import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.dom4j.DocumentException;
diff --git a/src/main/java/com/dsideal/base/Tools/YunXiao/YunXiaoFillData.java b/src/main/java/com/dsideal/base/Tools/YunXiao/YunXiaoFillData.java
index 50a3811e..9728d71f 100644
--- a/src/main/java/com/dsideal/base/Tools/YunXiao/YunXiaoFillData.java
+++ b/src/main/java/com/dsideal/base/Tools/YunXiao/YunXiaoFillData.java
@@ -1,6 +1,6 @@
package com.dsideal.base.Tools.YunXiao;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
public class YunXiaoFillData {
public static void main(String[] args) {
diff --git a/src/main/java/com/dsideal/base/Tools/YunXiao/YunXiao_DataSetInit.java b/src/main/java/com/dsideal/base/Tools/YunXiao/YunXiao_DataSetInit.java
index 025e3838..f746c272 100644
--- a/src/main/java/com/dsideal/base/Tools/YunXiao/YunXiao_DataSetInit.java
+++ b/src/main/java/com/dsideal/base/Tools/YunXiao/YunXiao_DataSetInit.java
@@ -1,6 +1,6 @@
package com.dsideal.base.Tools.YunXiao;
-import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
+import com.dsideal.base.Util.LocalMysqlConnectUtil;
import com.dsideal.base.YunXiao.Model.YunXiaoModel;
import java.io.IOException;
diff --git a/src/main/java/com/dsideal/base/Tools/Util/CallDeepSeek.java b/src/main/java/com/dsideal/base/Util/CallDeepSeek.java
similarity index 76%
rename from src/main/java/com/dsideal/base/Tools/Util/CallDeepSeek.java
rename to src/main/java/com/dsideal/base/Util/CallDeepSeek.java
index 66a956fb..fc610ead 100644
--- a/src/main/java/com/dsideal/base/Tools/Util/CallDeepSeek.java
+++ b/src/main/java/com/dsideal/base/Util/CallDeepSeek.java
@@ -1,4 +1,4 @@
-package com.dsideal.base.Tools.Util;
+package com.dsideal.base.Util;
import cn.hutool.core.io.FileUtil;
import cn.hutool.json.JSONObject;
@@ -39,14 +39,20 @@ public class CallDeepSeek {
new Thread(() -> {
StringBuilder fullResponse = new StringBuilder();
try {
+ System.out.println("开始调用DeepSeek API...");
JSONObject jsonPayload = createRequestPayload(prompt);
+ System.out.println("请求载荷: " + jsonPayload.toString());
+
HttpClient client = createHttpClient();
java.net.http.HttpRequest request = createHttpRequest(jsonPayload);
+ System.out.println("发送HTTP请求到: " + API_URL);
CompletableFuture future = client.sendAsync(request, HttpResponse.BodyHandlers.ofLines())
.thenAccept(response -> {
+ System.out.println("收到响应,状态码: " + response.statusCode());
handleStreamResponse(response, fullResponse, listener, outputPath, saveToFile);
}).exceptionally(e -> {
+ System.err.println("请求异常: " + e.getMessage());
listener.onError("请求或处理异常: " + e.getMessage());
e.printStackTrace();
return null;
@@ -54,6 +60,7 @@ public class CallDeepSeek {
future.join();
} catch (Exception e) {
+ System.err.println("发生意外错误: " + e.getMessage());
listener.onError("发生意外错误: " + e.getMessage());
e.printStackTrace();
}
@@ -74,6 +81,8 @@ public class CallDeepSeek {
messages.add(message);
jsonPayload.set("messages", messages);
jsonPayload.set("stream", true);
+ // 设置最大token数,确保能生成完整的HTML内容
+ jsonPayload.set("max_tokens", 8000);
return jsonPayload;
}
@@ -107,10 +116,14 @@ public class CallDeepSeek {
SSEListener listener,
String outputPath,
boolean saveToFile) {
+ System.out.println("处理流式响应,状态码: " + response.statusCode());
if (response.statusCode() == 200) {
+ System.out.println("开始处理SSE数据流...");
response.body().forEach(line -> {
+ System.out.println("收到SSE行: " + line);
if (line.startsWith("data:")) {
String data = line.substring(5).trim();
+ System.out.println("解析SSE数据: " + data);
if (!data.equals("[DONE]")) {
try {
JSONObject jsonData = JSONUtil.parseObj(data);
@@ -120,26 +133,35 @@ public class CallDeepSeek {
.getJSONObject("delta")
.getStr("content", "");
if (content != null && !content.isEmpty()) {
+ System.out.println("提取到内容: " + content);
fullResponse.append(content);
listener.onData(content);
}
}
} catch (Exception e) {
System.err.println("解析SSE JSON数据错误: " + data + " \nError: " + e.getMessage());
+ e.printStackTrace();
+ }
+ } else {
+ System.out.println("收到结束标记 [DONE]");
+ // 收到[DONE]标记,流处理完成
+ String responseContent = fullResponse.toString();
+ System.out.println("流处理完成,总内容长度: " + responseContent.length());
+ if (saveToFile && outputPath != null) {
+ FileUtil.writeString(responseContent, new File(outputPath), "UTF-8");
+ listener.onComplete("内容已成功保存到" + outputPath);
+ System.out.println("内容已成功保存到" + outputPath);
+ } else {
+ listener.onComplete(responseContent);
}
+ return; // 提前结束处理
}
}
});
- // 流结束后的处理
- String responseContent = fullResponse.toString();
- if (saveToFile && outputPath != null) {
- FileUtil.writeString(responseContent, new File(outputPath), "UTF-8");
- listener.onComplete("内容已成功保存到" + outputPath);
- } else {
- listener.onComplete(responseContent);
- }
+ System.out.println("SSE数据流处理结束");
} else {
+ System.err.println("API请求失败,状态码: " + response.statusCode());
listener.onError("API请求失败: " + response.statusCode() + " Body: " + response.body().toString());
}
}
diff --git a/src/main/java/com/dsideal/base/Util/CommonUtil.java b/src/main/java/com/dsideal/base/Util/CommonUtil.java
index c7bd66b9..3c620525 100644
--- a/src/main/java/com/dsideal/base/Util/CommonUtil.java
+++ b/src/main/java/com/dsideal/base/Util/CommonUtil.java
@@ -15,6 +15,7 @@ import org.apache.commons.codec.digest.DigestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import javax.servlet.http.HttpServletRequest;
import java.io.*;
import java.net.JarURLConnection;
import java.net.MalformedURLException;
@@ -244,6 +245,26 @@ public class CommonUtil {
return result;
}
+ public static String getBaseUrl(HttpServletRequest request) {
+ // 获取完整的请求URL
+
+ String requestURL = request.getRequestURL().toString();
+ // 获取域名
+ String serverName = request.getServerName();
+ // 获取端口
+ int serverPort = request.getServerPort();
+ // 获取协议(http或https)
+ String scheme = request.getScheme();
+
+ // 拼接完整的基础URL
+ String baseUrl = scheme + "://" + serverName;
+ if (("http".equals(scheme) && serverPort != 80) ||
+ ("https".equals(scheme) && serverPort != 443)) {
+ baseUrl += ":" + serverPort;
+ }
+ return baseUrl;
+ }
+
/**
* 按照layUI格式分页获取数据
*
diff --git a/src/main/java/com/dsideal/base/Tools/Util/HttpUtils.java b/src/main/java/com/dsideal/base/Util/HttpUtils.java
similarity index 99%
rename from src/main/java/com/dsideal/base/Tools/Util/HttpUtils.java
rename to src/main/java/com/dsideal/base/Util/HttpUtils.java
index a162eeea..038ffaae 100644
--- a/src/main/java/com/dsideal/base/Tools/Util/HttpUtils.java
+++ b/src/main/java/com/dsideal/base/Util/HttpUtils.java
@@ -1,4 +1,4 @@
-package com.dsideal.base.Tools.Util;
+package com.dsideal.base.Util;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
diff --git a/src/main/java/com/dsideal/base/Tools/Util/LocalMysqlConnectUtil.java b/src/main/java/com/dsideal/base/Util/LocalMysqlConnectUtil.java
similarity index 93%
rename from src/main/java/com/dsideal/base/Tools/Util/LocalMysqlConnectUtil.java
rename to src/main/java/com/dsideal/base/Util/LocalMysqlConnectUtil.java
index 00c08771..de2a6b00 100644
--- a/src/main/java/com/dsideal/base/Tools/Util/LocalMysqlConnectUtil.java
+++ b/src/main/java/com/dsideal/base/Util/LocalMysqlConnectUtil.java
@@ -1,4 +1,4 @@
-package com.dsideal.base.Tools.Util;
+package com.dsideal.base.Util;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Plugin.YamlProp;
@@ -7,7 +7,6 @@ import com.jfinal.kit.Prop;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.activerecord.dialect.MysqlDialect;
import com.jfinal.plugin.druid.DruidPlugin;
-import com.jfinal.plugin.hikaricp.HikariCpPlugin;
import java.io.File;
diff --git a/src/main/java/com/dsideal/base/Tools/Util/PptAIKit.java b/src/main/java/com/dsideal/base/Util/PptAIKit.java
similarity index 99%
rename from src/main/java/com/dsideal/base/Tools/Util/PptAIKit.java
rename to src/main/java/com/dsideal/base/Util/PptAIKit.java
index 5b2ce019..a1eba6a9 100644
--- a/src/main/java/com/dsideal/base/Tools/Util/PptAIKit.java
+++ b/src/main/java/com/dsideal/base/Util/PptAIKit.java
@@ -1,4 +1,4 @@
-package com.dsideal.base.Tools.Util;
+package com.dsideal.base.Util;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
@@ -20,7 +20,7 @@ import java.util.Objects;
*/
public class PptAIKit {
protected static String BASE_URL = "https://open.docmee.cn";
- protected static String apiKey = "ak_uKoKrRF63333E2lcBq";
+ protected static String apiKey = "ak_6LnaVdp3p36vEnOH6X";
public static String createApiToken(String uid, Integer limit) {
String url = BASE_URL + "/api/user/createApiToken";
diff --git a/src/main/java/com/dsideal/base/Tools/Util/SshMysqlConnectUtil.java b/src/main/java/com/dsideal/base/Util/SshMysqlConnectUtil.java
similarity index 94%
rename from src/main/java/com/dsideal/base/Tools/Util/SshMysqlConnectUtil.java
rename to src/main/java/com/dsideal/base/Util/SshMysqlConnectUtil.java
index f4b3b474..29032946 100644
--- a/src/main/java/com/dsideal/base/Tools/Util/SshMysqlConnectUtil.java
+++ b/src/main/java/com/dsideal/base/Util/SshMysqlConnectUtil.java
@@ -1,8 +1,7 @@
-package com.dsideal.base.Tools.Util;
+package com.dsideal.base.Util;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.Step1_DataSetInit;
-import com.dsideal.base.Util.SSHConnector;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;