From 002aac2eb465e9b41a6209b71c241b214ac30258 Mon Sep 17 00:00:00 2001
From: qfrjava <13402782+qfrjava@user.noreply.gitee.com>
Date: 星期日, 27 四月 2025 18:40:03 +0800
Subject: [PATCH] feat(lightrag): 增加通用转发接口和文档上传功能

---
 JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/control/SMTMetricsManagerControl.java |  287 ++++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 203 insertions(+), 84 deletions(-)

diff --git a/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/control/SMTMetricsManagerControl.java b/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/control/SMTMetricsManagerControl.java
index 4207eda..8c921fb 100644
--- a/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/control/SMTMetricsManagerControl.java
+++ b/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 {
+					// 瑙f瀽dim_value_list鏁版嵁
+					jsonValueList = Json.read(valueList);
+				} catch (Exception e) {
+					continue;  // 濡傛灉瑙f瀽澶辫触鍒欒烦杩囧綋鍓嶈褰�
 				}
-				jsonWr.endMap();
+
+				// 濡傛灉鏄疢ap锛屽寘鍚玸ql鏌ヨ
+				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());  // 灏哠QL璇彞娣诲姞鍒癑SON涓�
+							jsonWriter02.addKeyValue("ds_id", dsId.asString());  // 灏哠QL璇彞娣诲姞鍒癑SON涓�
+							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; // 濡傛灉瑙f瀽澶辫触鍒欒烦杩囧綋鍓嶈褰�
+            }
+
+            // 閬嶅巻 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();
+
+		// 瑙f瀽璇锋眰鍙傛暟
+		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 {
+			// 妫�鏌ョ淮搴D鏄惁宸插瓨鍦�
+			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 {
+		// 瑙f瀽璇锋眰鍙傛暟
+		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 {
+			// 妫�鏌ョ淮搴D鏄惁瀛樺湪
+			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);

--
Gitblit v1.9.3