qfrjava
7 天以前 002aac2eb465e9b41a6209b71c241b214ac30258
JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/control/SMTMetricsManagerControl.java
@@ -1,19 +1,5 @@
package com.smtaiserver.smtaiserver.control;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.tree.DefaultText;
import org.springframework.web.servlet.ModelAndView;
import com.smtaiserver.smtaiserver.core.SMTAIServerApp;
import com.smtaiserver.smtaiserver.core.SMTAIServerRequest;
import com.smtaiserver.smtaiserver.core.SMTCheckChatStreamView;
@@ -31,84 +17,217 @@
import com.smtservlet.util.Json;
import com.smtservlet.util.SMTJsonWriter;
import com.smtservlet.util.SMTStatic;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.tree.DefaultText;
import org.springframework.web.servlet.ModelAndView;
public class SMTMetricsManagerControl 
{
   public ModelAndView getDimensionList(SMTAIServerRequest tranReq) throws Exception
   {
         SMTDatabase db = SMTAIServerApp.getApp().allocDatabase();
       try
       {
         DBRecords recs = db.querySQL("SELECT dim_id, dim_title, dim_type, dim_alias, dim_name, dim_unit, dim_group FROM ai_dimension", null);
         SMTJsonWriter jsonWr = tranReq.newReturnJsonWriter(true, null, null);
         jsonWr.beginArray("values");
         for(DBRecord rec : recs.getRecords())
         {
            jsonWr.beginMap(null);
            {
               jsonWr.addKeyValue("id", rec.getString("dim_id"));
               jsonWr.addKeyValue("title", rec.getString("dim_name"));
               jsonWr.addKeyValue("prompt", rec.getString("dim_title"));
               jsonWr.addKeyValue("unit", rec.getString("dim_unit"));
               jsonWr.addKeyValue("group", rec.getString("dim_group"));
               jsonWr.beginMap("alias");
               String sAlias = rec.getString("dim_alias");
               if(!SMTStatic.isNullOrEmpty(sAlias))
               {
                  Json jsonAliasMap = Json.read(sAlias);
                  for( Entry<String, Json> entry : jsonAliasMap.asJsonMap().entrySet())
                  {
                     jsonWr.beginArray(entry.getKey());
                     for(Json jsonAliasValue : entry.getValue().asJsonList())
                     {
                        jsonWr.addKeyValue(null, jsonAliasValue.asString());
                     }
                     jsonWr.endArray();
                  }
               }
               jsonWr.endMap();
               switch(rec.getString("dim_type").charAt(0))
               {
               case 'S':
                  jsonWr.addKeyValue("type", "字符串");
                  break;
               case 'D':
                  jsonWr.addKeyValue("type", "浮点数");
                  break;
               case 'I':
                  jsonWr.addKeyValue("type", "整数");
                  break;
               case 'L':
                  jsonWr.addKeyValue("type", "长整数");
                  break;
               case 'T':
                  jsonWr.addKeyValue("type", "时间");
                  break;
               }
  public ModelAndView getDimensionList(SMTAIServerRequest tranReq) throws Exception {
    SMTDatabase db = SMTAIServerApp.getApp().allocDatabase();
    try {
      DBRecords recs =
          db.querySQL(
              "SELECT dim_id, dim_title, dim_type, dim_alias, dim_name, dim_unit, dim_group ,dim_value_list FROM ai_dimension",
              null);
      SMTJsonWriter jsonWr = tranReq.newReturnJsonWriter(true, null, null);
      jsonWr.beginArray("values");
      for (DBRecord rec : recs.getRecords()) {
        jsonWr.beginMap(null);
        {
          jsonWr.addKeyValue("id", rec.getString("dim_id"));
          jsonWr.addKeyValue("title", rec.getString("dim_name"));
          jsonWr.addKeyValue("prompt", rec.getString("dim_title"));
          jsonWr.addKeyValue("unit", rec.getString("dim_unit"));
          jsonWr.addKeyValue("group", rec.getString("dim_group"));
         jsonWr.beginMap("value_list");  // 开始一个 "value_list" 的 Map
         String valueList = rec.getString("dim_value_list");
         if (!SMTStatic.isNullOrEmpty(valueList)) {
            Json jsonValueList = null;
            try {
               // 解析dim_value_list数据
               jsonValueList = Json.read(valueList);
            } catch (Exception e) {
               continue;  // 如果解析失败则跳过当前记录
            }
            jsonWr.endMap();
            // 如果是Map,包含sql查询
            if (jsonValueList.has("sql")) {
               SMTJsonWriter jsonWriter02 = new SMTJsonWriter(false);
               Json sqlJson = jsonValueList.getJson("sql");  // 获取 sql 字段
                  Json sqlQuery = sqlJson.getJson("sql");  // 获取 SQL 查询语句
                  Json dsId = sqlJson.getJson("ds_id");  // 获取 SQL 查询语句
                  if (sqlQuery.isString()) {
                     jsonWriter02.addKeyValue("sql", sqlQuery.asString());  // 将SQL语句添加到JSON中
                     jsonWriter02.addKeyValue("ds_id", dsId.asString());  // 将SQL语句添加到JSON中
                     jsonWr.addKeyValue("sql",jsonWriter02);
                  }
            } else if (jsonValueList.has("values")) {
               // 如果包含 values 数组
               Json valuesJson = jsonValueList.getJson("values");
               if (valuesJson.isArray()) {
                  jsonWr.beginArray("values");  // 开始 "dimValueList" 的数组
                  // 遍历 values 数组
                  for (Json jsonItem : valuesJson.asJsonList()) {
                     jsonWr.addKeyValue(null, jsonItem.asString());  // 将每个值添加到数组
                  }
                  jsonWr.endArray();  // 结束 "dimValueList" 数组
               }
            }
         }
         jsonWr.endArray();
         jsonWr.endMap();  // 结束 "value_list" 的 Map
         // 处理 alias 部分
          jsonWr.beginMap("alias"); // 开始 "alias" 的 Map
          String sAlias = rec.getString("dim_alias");
          if (!SMTStatic.isNullOrEmpty(sAlias)) {
            Json jsonAliasMap = null;
            try {
              jsonAliasMap = Json.read(sAlias);
            } catch (Exception e) {
              continue; // 如果解析失败则跳过当前记录
            }
            // 遍历 alias 映射
            for (Entry<String, Json> entry : jsonAliasMap.asJsonMap().entrySet()) {
              jsonWr.beginArray(entry.getKey()); // 开始一个新数组
              for (Json jsonAliasValue : entry.getValue().asJsonList()) {
                jsonWr.addKeyValue(null, jsonAliasValue.asString()); // 添加每个值到数组
              }
              jsonWr.endArray(); // 结束当前的数组
            }
          }
          jsonWr.endMap(); // 结束 "alias" 的 Map
          jsonWr.addKeyValue("type", rec.getString("dim_type"));
          //               switch(rec.getString("dim_type").charAt(0))
          //               {
          //               case 'S':
          //                  jsonWr.addKeyValue("type", "字符串");
          //                  break;
          //
          //               case 'D':
          //                  jsonWr.addKeyValue("type", "浮点数");
          //                  break;
          //
          //               case 'I':
          //                  jsonWr.addKeyValue("type", "整数");
          //                  break;
          //
          //               case 'L':
          //                  jsonWr.addKeyValue("type", "长整数");
          //                  break;
          //
          //               case 'T':
          //                  jsonWr.addKeyValue("type", "时间");
          //                  break;
          //               }
        }
        jsonWr.endMap();
      }
      jsonWr.endArray();
      return tranReq.returnJson(jsonWr);
    } finally {
      db.close();
    }
  }
   public ModelAndView addDimension(SMTAIServerRequest tranReq) throws Exception {
      String loginUserId = tranReq.getLoginUserId();
      // 解析请求参数
      String dimId = tranReq.convParamToString("dim_id", true);
      String dimTitle = tranReq.convParamToString("dim_title", true);
      String dimType = tranReq.convParamToString("dim_type", true);
      String dimAlias = tranReq.convParamToString("dim_alias", false);
      String dimName = tranReq.convParamToString("dim_name", true);
      String dimGroup = tranReq.convParamToString("dim_group", false);
      String dimUnit = tranReq.convParamToString("dim_unit", false);
      String dimValueList = tranReq.convParamToString("dim_value_list", false);
      SMTDatabase db = SMTAIServerApp.getApp().allocDatabase();
      try {
         // 检查维度ID是否已存在
         String selectSql = "SELECT * FROM ai_doc.ai_dimension WHERE dim_id = ?";
         Object[] selectParams = {dimId};
         if (db.querySQL(selectSql, selectParams).getRowCount() > 0) {
            return tranReq.returnJsonState(false, "维度ID已存在", null);
         }
         // 构建 SQL 语句
         String insertSql = "INSERT INTO ai_doc.ai_dimension (dim_id, dim_title, dim_type, dim_alias, dim_name, dim_group, dim_unit, dim_value_list) " +
               "VALUES (?, ?, ?, ?, ?, ?, ?, ?)";
         Object[] insertParams = {dimId, dimTitle, dimType, dimAlias, dimName, dimGroup, dimUnit, dimValueList};
         // 执行插入操作
         db.executeSQL(insertSql, insertParams);
         // 返回 JSON 结果
         SMTJsonWriter jsonWr = tranReq.newReturnJsonWriter(true, null, null);
         return tranReq.returnJson(jsonWr);
       }
       finally
       {
          db.close();
       }
      } finally {
         db.close();
      }
   }
   public ModelAndView updateDimension(SMTAIServerRequest tranReq) throws Exception {
      // 解析请求参数
      String dimId = tranReq.convParamToString("dim_id", true);
      String dimTitle = tranReq.convParamToString("dim_title", false);
      String dimType = tranReq.convParamToString("dim_type", false);
      String dimAlias = tranReq.convParamToString("dim_alias", false);
      String dimName = tranReq.convParamToString("dim_name", false);
      String dimGroup = tranReq.convParamToString("dim_group", false);
      String dimUnit = tranReq.convParamToString("dim_unit", false);
      String dimValueList = tranReq.convParamToString("dim_value_list", false);
      SMTDatabase db = SMTAIServerApp.getApp().allocDatabase();
      try {
         // 检查维度ID是否存在
         String selectSql = "SELECT * FROM ai_doc.ai_dimension WHERE dim_id = ?";
         Object[] selectParams = {dimId};
         if (db.querySQL(selectSql, selectParams).getRowCount() == 0) {
            return tranReq.returnJsonState(false, "维度ID不存在", null);
         }
         // 构建 SQL 语句
         String updateSql = "UPDATE ai_doc.ai_dimension SET dim_title = ?, dim_type = ?, dim_alias = ?, dim_name = ?, dim_group = ?, dim_unit = ?, dim_value_list = ? " +
               "WHERE dim_id = ?";
         Object[] updateParams = {dimTitle, dimType, dimAlias, dimName, dimGroup, dimUnit, dimValueList, dimId};
         // 执行更新操作
         db.executeSQL(updateSql, updateParams);
         // 返回 JSON 结果
         SMTJsonWriter jsonWr = tranReq.newReturnJsonWriter(true, null, null);
         return tranReq.returnJson(jsonWr);
      } finally {
         db.close();
      }
   }
   public ModelAndView checkMetricsAgentValidate(SMTAIServerRequest tranReq) throws Exception 
   {
      String agentId = tranReq.convParamToString("agent_id", true);