TangCheng
2025-03-02 4960a73b581b570bd4b3aee358aaa0a8c8c0611d
JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/core/SMTAIServerRequest.java
@@ -33,6 +33,31 @@
public class SMTAIServerRequest extends SMTRequest 
{
   public static class AIAttachFile
   {
      public String            _fileId;
      public String            _fileName;
      public String            _fileText;
      public AIAttachFile(String fileId, String fileName, String fileText)
      {
         _fileId = fileId;
         _fileName = fileName;
         _fileText = fileText;
      }
      public String toAttachMessage()
      {
         return "附加文件 : " + _fileName + "\n" + _fileText + "\n";
      }
      public void addToJson(SMTJsonWriter jsonWr)
      {
         jsonWr.addKeyValue("file_id", _fileId);
         jsonWr.addKeyValue("file_name", _fileName);
      }
   }
   private static Logger          _logger = LogManager.getLogger(SMTAIServerRequest.class);
   private static Set<String>      _setPublicUrl;
   private static List<String>      _listPublicUrl;
@@ -69,6 +94,8 @@
   private SMTJsonWriter         _jsonWrResult = null;
   private List<SMTJsonWriter>      _listJsonWrResult = null;
   private boolean               _disableConclusion = false;
   private List<AIAttachFile>      _listAttchFile = null;
   private Json               _jsonAttachTables = null;
   @Override
@@ -94,6 +121,84 @@
      }
   }
   
   public void setAttachTables(Json jsonTables)
   {
      _jsonAttachTables = jsonTables;
   }
   public String[] getAttachMessage()
   {
      List<String> list = new ArrayList<>();
      if(_listAttchFile != null)
      {
         for(AIAttachFile file : _listAttchFile)
         {
            list.add(file.toAttachMessage());
         }
      }
      if(_jsonAttachTables != null)
      {
         for(Json jsonAttachTable : _jsonAttachTables.asJsonList())
         {
            StringBuilder sbText = new StringBuilder();
            sbText.append("现有表格:" + jsonAttachTable.getJson("title").asString() + "\n");
            List<Json> jsonColumns = jsonAttachTable.getJson("columns").asJsonList();
            for(int i = 0; i < jsonColumns.size(); i ++)
            {
               if(i > 0)
                  sbText.append(",");
               sbText.append(jsonColumns.get(i).asString());
            }
            sbText.append("\n");
            for(Json jsonRecord : jsonAttachTable.getJson("values").asJsonList())
            {
               List<Json> listRec = jsonRecord.asJsonList();
               for(int i = 0; i < listRec.size(); i ++)
               {
                  if(i > 0)
                     sbText.append(",");
                  sbText.append(listRec.get(i).asString());
               }
            }
            sbText.append("\n");
            list.add(sbText.toString());
         }
      }
      return list.size() == 0 ? null : list.toArray(new String[list.size()]);
   }
   public void addAttachMessageToJson(Json jsonResult)
   {
      if(_listAttchFile != null)
      {
         SMTJsonWriter jsonWr = new SMTJsonWriter(true);
         for(AIAttachFile file : _listAttchFile)
         {
            jsonWr.beginMap(null);
            file.addToJson(jsonWr);
            jsonWr.endMap();
         }
         jsonResult.set("attach_files", jsonWr.getRootJson());
      }
      if(_jsonAttachTables != null)
      {
         jsonResult.set("attach_tables", _jsonAttachTables);
      }
   }
   public void addAttachFile(AIAttachFile attachFile)
   {
      if(_listAttchFile == null)
         _listAttchFile = new ArrayList<>();
      _listAttchFile.add(attachFile);
   }
   public void setDisableConclusion(boolean set)
   {
      _disableConclusion = set;