1
秦芳睿
2025-03-22 c5243f3521fc014b4e2649789d16ca1f3b7e849d
JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/core/SMTAIServerApp.java
@@ -1,6 +1,7 @@
package com.smtaiserver.smtaiserver.core;
import java.io.*;
import java.net.URLEncoder;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.ArrayList;
@@ -22,7 +23,6 @@
import org.apache.pdfbox.text.PDFTextStripper;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.extractor.WordExtractor;
import org.apache.poi.poifs.filesystem.FileMagic;
import org.apache.poi.xwpf.extractor.XWPFWordExtractor;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.dom4j.Document;
@@ -146,7 +146,7 @@
   
   protected Map<String, SMTSSEBroadcastChat>   _mapUser2SMTSSEBroadcastChat = new HashMap<>();
   public static final String GET_WORKFLOWS = "http://localhost:5678/api/v1/workflows?";
   private static Pattern               _patGroupStep = Pattern.compile("(\\d+)\\s*(minutes|hours|days|months|years|month|hour|year|day|minute)");
   private static Pattern               _patGlobalMacro = Pattern.compile("\\{\\{\\{([\\w\\.]+)\\}\\}\\}");
   private static Logger                _logger = LogManager.getLogger(SMTQwenApp.class);
@@ -236,7 +236,7 @@
      Map<String, SMTMetricsDef> mapResult = mapMapMetrics.get(groupId);
      
      if(mapResult == null)
         throw new Exception("can't find metrics group : " + groupId);
         return new HashMap<String, SMTMetricsDef>();
      
      return mapResult;
   }
@@ -303,6 +303,7 @@
      _serverEncache.getMapThemeDefMap();
      _serverEncache.getAttachTableDefMap();
      _serverEncache.getAttachMetricDefMap();
      _serverEncache.getQwenAgentManager();
   }
   
   public SMTMapTableDef getMapTableDef(String tableId) throws Exception
@@ -1249,7 +1250,7 @@
   /**
    * 文件(word、pdf)转txt
    */
   public String fileTranslTxt(MultipartFile file) throws Exception {
   public static String fileTranslTxt(MultipartFile file) throws Exception {
      InputStream inputStream = file.getInputStream();
      try (BufferedInputStream bis = new BufferedInputStream(file.getInputStream())) {
         String mimeType = file.getContentType();
@@ -1272,6 +1273,10 @@
                     WordExtractor wordExtractor = new WordExtractor(doc);
                     return wordExtractor.getText();
                  }
               case "text/plain":
                  _logger.info("文件类型是 TXT");
                  byte[] fileData = readAttachFile(file);
                        return new String(fileData, "UTF-8");
               default:
                  _logger.info("未知文件类型: " + mimeType);
                  break;
@@ -1283,7 +1288,57 @@
         _logger.error("文件处理失败: " + e.getMessage());
         throw new Exception("文件处理失败: " + e.getMessage());
      }
      return null;
      return "";
   }
   public static byte[] readAttachFile(MultipartFile file) throws Exception
   {
      InputStream is = file.getInputStream();
      ByteArrayOutputStream bos = new ByteArrayOutputStream();
      byte[] data = new byte[1024 * 1024];
      while(true)
      {
         int size = is.read(data);
         if(size <= 0)
            return bos.toByteArray();
         bos.write(data, 0, size);
      }
   }
   public static String buildUrl(String active, String tags, String name, String projectId, String excludePinnedData, int limit) throws UnsupportedEncodingException {
      // 使用Map来存储参数
      Map<String, String> params = new HashMap<>();
      params.put("active", active);
      params.put("tags", tags);
      params.put("name", name != null ? URLEncoder.encode(name, "UTF-8") : null);
      params.put("projectId", projectId);
      params.put("excludePinnedData", excludePinnedData);
      params.put("limit", String.valueOf(limit));
      // 基本URL
      StringBuilder urlBuilder = new StringBuilder(GET_WORKFLOWS);
      // 遍历map并构建URL
      for (Map.Entry<String, String> entry : params.entrySet()) {
         if (entry.getValue() != null) {
            urlBuilder.append(entry.getKey())
                  .append("=")
                  .append(entry.getValue())
                  .append("&");
         }
      }
      // 去除最后一个多余的&符号
      String requestUrl = urlBuilder.toString();
      if (requestUrl.endsWith("&")) {
         requestUrl = requestUrl.substring(0, requestUrl.length() - 1);
      }
      return requestUrl;
   }
   public static List<String> extractParts(String input, Pattern pattern) {
      Matcher matcher = pattern.matcher(input);
      List<String> results = new ArrayList<>();
      while (matcher.find()) {
         results.add(matcher.group(1)); // 提取第一个捕获组内容
      }
      return results;
   }
}