From 4960a73b581b570bd4b3aee358aaa0a8c8c0611d Mon Sep 17 00:00:00 2001 From: TangCheng <tangchengmail@163.com> Date: 星期日, 02 三月 2025 15:59:50 +0800 Subject: [PATCH] 完成attach table的加载 --- JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/core/SMTAIServerEncache.java | 25 ++ JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/attach/SMTAIAttachTableDef.java | 103 +++++++++++ JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/attach/SMTAttachTableSqlXml.java | 179 +++++++++++++++++++ JAVA/SMTAIServer/src/main/resources/requestmap/java_ai.json | 27 ++ JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/control/SMTJavaAIControl.java | 85 ++++++++- JAVA/SMTAIServer/src/main/resources/application.yml | 4 JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/core/SMTAIServerApp.java | 19 ++ JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/core/SMTAIServerRequest.java | 62 ++++++ 8 files changed, 489 insertions(+), 15 deletions(-) diff --git a/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/attach/SMTAIAttachTableDef.java b/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/attach/SMTAIAttachTableDef.java new file mode 100644 index 0000000..1bda94e --- /dev/null +++ b/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/attach/SMTAIAttachTableDef.java @@ -0,0 +1,103 @@ +package com.smtaiserver.smtaiserver.attach; + +import java.util.ArrayList; +import java.util.List; + +import org.dom4j.Document; +import org.dom4j.Element; +import org.dom4j.Node; + +import com.smtaiserver.smtaiserver.core.SMTAIServerRequest; +import com.smtaiserver.smtaiserver.database.SMTDatabase.DBRecord; +import com.smtaiserver.smtaiserver.javaai.ast.ASTDBMap; +import com.smtservlet.util.Json; +import com.smtservlet.util.SMTJsonWriter; +import com.smtservlet.util.SMTStatic; + +public class SMTAIAttachTableDef +{ + public static class SMTAIAttachTableColumn + { + private String _name; + private String _title; + private char _type; + private String _filter; + + public SMTAIAttachTableColumn(Element xmlColumn) throws Exception + { + _name = SMTStatic.getXmlAttr(xmlColumn, "name"); + _title = SMTStatic.getXmlAttr(xmlColumn, "title"); + _type = SMTStatic.getXmlAttr(xmlColumn, "type").charAt(0); + _filter = SMTStatic.getXmlAttr(xmlColumn, "filter", null); + } + + public String getName() + { + return _name; + } + + public String getTitle() + { + return _title; + } + + public char getType() + { + return _type; + } + + public String getFilter() + { + return _filter; + } + } + + private String _id; + private String _title; + private String _group; + private SMTAttachTableSqlXml _sqlXml; + private List<SMTAIAttachTableColumn> _listColumns = new ArrayList<>(); + + public SMTAIAttachTableDef(DBRecord rec) throws Exception + { + _id = rec.getString("table_id"); + _title = rec.getString("table_title"); + _group = rec.getString("table_group"); + Document doc = SMTStatic.convStrToXmlDoc("<ROOT>" + rec.getString("table_config") + "</ROOT>"); + Element xmlSQL = (Element)doc.selectSingleNode("ROOT/SQL"); + _sqlXml = new SMTAttachTableSqlXml(xmlSQL); + for(Node nodeColumn : doc.selectNodes("ROOT/COLUMNS/COLUMN")) + { + SMTAIAttachTableColumn column = new SMTAIAttachTableColumn((Element)nodeColumn); + _listColumns.add(column); + } + } + + public List<SMTAIAttachTableColumn> getColumnList() + { + return _listColumns; + } + + public String getId() + { + return _id; + } + + public String getTitle() + { + return _title; + } + + public String getGroup() + { + return _group; + } + + public void queryRecordsToJson(Json jsonFilter, Json jsonOrder, SMTJsonWriter jsonWr) throws Exception + { + try(ASTDBMap dbMap = new ASTDBMap()) + { + _sqlXml.querySQLToJson(dbMap, jsonFilter, jsonOrder, this, jsonWr); + } + } +} diff --git a/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/attach/SMTAttachTableSqlXml.java b/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/attach/SMTAttachTableSqlXml.java new file mode 100644 index 0000000..63b9c41 --- /dev/null +++ b/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/attach/SMTAttachTableSqlXml.java @@ -0,0 +1,179 @@ +package com.smtaiserver.smtaiserver.attach; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import org.dom4j.Element; +import org.dom4j.Node; +import org.dom4j.tree.DefaultText; + +import com.smtaiserver.smtaiserver.attach.SMTAIAttachTableDef.SMTAIAttachTableColumn; +import com.smtaiserver.smtaiserver.database.SMTDatabase; +import com.smtaiserver.smtaiserver.database.SMTDatabase.DBRecord; +import com.smtaiserver.smtaiserver.database.SMTDatabase.DBRecords; +import com.smtaiserver.smtaiserver.javaai.ast.ASTDBMap; +import com.smtservlet.util.Json; +import com.smtservlet.util.SMTJsonWriter; +import com.smtservlet.util.SMTStatic; + + + +public class SMTAttachTableSqlXml +{ + /////////////////////////////////////////////////////////////////////////////////////// + private static class SQLXMLExecArg + { + public StringBuilder _sbSQLText = new StringBuilder(); + public List<Object> _sqlParams = new ArrayList<>(); + + } + + /////////////////////////////////////////////////////////////////////////////////////// + private static abstract class SQLXMLNode + { + public abstract void execute(SQLXMLExecArg execArg) throws Exception; + } + + + /////////////////////////////////////////////////////////////////////////////////////// + private static class SQLXMLNodeSQL extends SQLXMLNode + { + private List<Object> _listChildren = new ArrayList<>(); + + public SQLXMLNodeSQL(Element xmlRoot) throws Exception + { + for (Iterator<Node> iterInner = xmlRoot.nodeIterator(); iterInner.hasNext();) + { + Node nodeInner = iterInner.next(); + if(nodeInner.getNodeType() == Node.TEXT_NODE) + { + String text = ((DefaultText)nodeInner).getText(); + int lastPos = _listChildren.size() - 1; + if(lastPos >= 0 && _listChildren.get(lastPos) instanceof String) + { + _listChildren.set(lastPos, (String)_listChildren.get(lastPos) + text); + } + else + { + _listChildren.add(text); + } + } + else + { + _listChildren.add(createSQLXMLNode((Element)nodeInner)); + } + } + } + + @Override + public void execute(SQLXMLExecArg execArg) throws Exception + { + for(Object oxmlNode : _listChildren) + { + if(oxmlNode instanceof String) + { + execArg._sbSQLText.append(oxmlNode); + } + else if(oxmlNode instanceof SQLXMLNode) + { + ((SQLXMLNode)oxmlNode).execute(execArg); + } + } + } + } + + + /////////////////////////////////////////////////////////////////////////////////////// + private String _dsId; + private SQLXMLNode _SQLXMLNode; + + private static SQLXMLNode createSQLXMLNode(Element xmlRoot) throws Exception + { + String name = xmlRoot.getName().toUpperCase(); + if("SQL".equals(name)) + return new SQLXMLNodeSQL(xmlRoot); + else + throw new Exception("unknow SQLXML : " + name); + } + + public SMTAttachTableSqlXml(Element rootElement) throws Exception + { + _dsId = SMTStatic.getXmlAttr(rootElement, "ds_id", null); + + _SQLXMLNode = createSQLXMLNode(rootElement); + } + + public void querySQLToJson(ASTDBMap dbMap, Json jsonFilters, Json jsonOrders, SMTAIAttachTableDef attachTableDef, SMTJsonWriter jsonWr) throws Exception + { + // 鐢熸垚鍘熷SQL + SQLXMLExecArg execArg = new SQLXMLExecArg(); + _SQLXMLNode.execute(execArg); + + // 鐢熸垚鏉′欢鏌ヨ + StringBuilder sbWHERE = new StringBuilder(); + if(jsonFilters != null) + { + for(Json jsonFilter : jsonFilters.asJsonList()) + { + if(sbWHERE.length() > 0) + sbWHERE.append(" AND "); + + String column = jsonFilter.getJson("col").asString(); + String filter = jsonFilter.getJson("filter").asString(); + List<Json> values = jsonFilter.getJson("values").asJsonList(); + + if("like".equals(filter)) + { + sbWHERE.append(column + " LIKE '" + values.get(0).asString().replace("'", "''") + "'"); + } + else + throw new Exception("can't find filter op : " + filter); + } + } + if(sbWHERE.length() > 0) + sbWHERE.insert(0, " WHERE "); + + // 鐢熸垚鎺掑簭鏉′欢 + StringBuilder sbORDER = new StringBuilder(); + if(jsonOrders != null) + { + for(Json jsonOrder : jsonOrders.asJsonList()) + { + if(sbORDER.length() > 0) + sbORDER.append(","); + String colName = jsonOrder.getJson("col").asString(); + String order = jsonOrder.safeGetStr("order", "ASC"); + + sbORDER.append(colName + " " + order); + } + } + if(sbORDER.length() > 0) + sbORDER.insert(0, " ORDER BY "); + + + SMTDatabase db = dbMap.getDatabase(_dsId); + DBRecords recs = db.querySQL( + "SELECT * FROM (" + execArg._sbSQLText.toString() + ") T " + sbWHERE.toString() + " " + sbORDER.toString() + " LIMIT 100", + execArg._sqlParams.size() == 0 ? null : execArg._sqlParams.toArray(new Object[] {execArg._sqlParams.size()}) + ); + + jsonWr.beginArray("columns"); + for(SMTAIAttachTableColumn column : attachTableDef.getColumnList()) + { + jsonWr.addKeyValue(null, column.getTitle()); + } + jsonWr.endArray(); + + jsonWr.beginArray("values"); + for(DBRecord rec : recs.getRecords()) + { + jsonWr.beginArray(null); + for(SMTAIAttachTableColumn column : attachTableDef.getColumnList()) + { + jsonWr.addKeyValue(null, rec.getString(column.getName())); + } + jsonWr.endArray(); + } + jsonWr.endArray(); + } +} diff --git a/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/control/SMTJavaAIControl.java b/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/control/SMTJavaAIControl.java index 4fa8943..f17f411 100644 --- a/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/control/SMTJavaAIControl.java +++ b/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/control/SMTJavaAIControl.java @@ -19,6 +19,8 @@ import org.springframework.web.servlet.View; import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; +import com.smtaiserver.smtaiserver.attach.SMTAIAttachTableDef; +import com.smtaiserver.smtaiserver.attach.SMTAIAttachTableDef.SMTAIAttachTableColumn; import com.smtaiserver.smtaiserver.core.SMTAIServerApp; import com.smtaiserver.smtaiserver.core.SMTAIServerRequest; import com.smtaiserver.smtaiserver.core.SMTAIServerRequest.AIAttachFile; @@ -115,6 +117,13 @@ } } + _mustRawMode = true; + } + + Json jsonTables = tranReq.convParamToJson("tables", false); + if(jsonTables != null) + { + tranReq.setAttachTables(jsonTables); _mustRawMode = true; } @@ -339,27 +348,38 @@ String sampleId = tranReq.convParamToString("sample_id", false); String llmId = tranReq.convParamToString("llm_id", false); String historyGroupId = tranReq.convParamToString("history_group_id", true); - String question = tranReq.convParamToString("question", true); + String question = java.net.URLDecoder.decode(tranReq.convParamToString("question", true), "UTF-8"); String processId = tranReq.convParamToString("process_id", false); - Boolean rawMode = tranReq.convParamToBoolean("raw_mode", false); + String sRawMode = tranReq.convParamToString("raw_mode", false); String prevQuestion = tranReq.convParamToString("prev_question", false); String groupType = tranReq.convParamToString("group_type", false); double[] curPos = tranReq.convParamToDoubleArray("cur_pos", false); if(SMTStatic.isNullOrEmpty(groupType)) groupType = "涓氬姟鍦烘櫙"; + else + groupType = java.net.URLDecoder.decode(groupType, "UTF-8"); tranReq.setCurQuestionPos(curPos); tranReq.setCurGroupType(groupType); question = SMTAIServerApp.getApp().getQueryAIQuestionReplace().replaceQuestion(groupType, question); + boolean rawMode = false; - if(rawMode == null) - rawMode = false; - - if(mustRawMode) - rawMode = true; + if(sRawMode != null) + { + if("AI".equals(sRawMode)) + { + rawMode = false; + } + else + { + rawMode = "true".equals(sRawMode); + if(mustRawMode) + rawMode = true; + } + } tranReq.setAsynProcessId(processId); Json jsonResult = null; @@ -462,11 +482,11 @@ Json jsonSqlParams = null; if(jsonResult != null) { - - - jsonResult.set("question", tranReq.getAIQuestion()); jsonResult.set("history_id", historyId); + tranReq.addAttachMessageToJson(jsonResult); + + jsonSqlParams = tranReq.getParamJson(); Json jsonExtCallList = tranReq.getExtCallJsonWriter(); @@ -1179,4 +1199,49 @@ return tranReq.returnJson(jsonWr); } + public ModelAndView getAttachTableList(SMTAIServerRequest tranReq) throws Exception + { + SMTJsonWriter jsonWr = tranReq.newReturnJsonWriter(true, null, null); + jsonWr.beginArray("tables"); + for(SMTAIAttachTableDef attachTableDef : SMTAIServerApp.getApp().getAttachTableDefMap().values()) + { + jsonWr.beginMap(null); + { + jsonWr.addKeyValue("id", attachTableDef.getId()); + jsonWr.addKeyValue("title", attachTableDef.getTitle()); + jsonWr.addKeyValue("group", attachTableDef.getGroup()); + + jsonWr.beginArray("columns"); + for(SMTAIAttachTableColumn columnDef : attachTableDef.getColumnList()) + { + jsonWr.beginMap(null); + { + jsonWr.addKeyValue("name", columnDef.getName()); + jsonWr.addKeyValue("title", columnDef.getTitle()); + jsonWr.addKeyValue("filter", columnDef.getFilter()); + } + jsonWr.endMap(); + } + jsonWr.endArray(); + } + jsonWr.endMap(); + } + jsonWr.endArray(); + + return tranReq.returnJson(jsonWr); + } + + public ModelAndView queryAttachTableRecords(SMTAIServerRequest tranReq) throws Exception + { + String attachTableId = tranReq.convParamToString("id", true); + Json jsonFilters = tranReq.convParamToJson("filter", false); + Json jsonOrders = tranReq.convParamToJson("order", false); + SMTAIAttachTableDef attachTableDef = (SMTAIAttachTableDef) SMTAIServerApp.getApp().getAttachTableDef(attachTableId); + + SMTJsonWriter jsonWr = tranReq.newReturnJsonWriter(true, null, null); + attachTableDef.queryRecordsToJson(jsonFilters, jsonOrders, jsonWr); + + return tranReq.returnJson(jsonWr); + + } } diff --git a/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/core/SMTAIServerApp.java b/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/core/SMTAIServerApp.java index 19ed742..31c0566 100644 --- a/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/core/SMTAIServerApp.java +++ b/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/core/SMTAIServerApp.java @@ -36,6 +36,7 @@ import org.springframework.web.context.WebApplicationContext; import com.alibaba.druid.pool.DruidDataSource; +import com.smtaiserver.smtaiserver.attach.SMTAIAttachTableDef; import com.smtaiserver.smtaiserver.database.SMTDatabase; import com.smtaiserver.smtaiserver.gismap.SMTGisMapLayerDef; import com.smtaiserver.smtaiserver.gismap.SMTMapOtypeDef; @@ -158,7 +159,8 @@ "getMapTableDefMap", "getMapVPropDefMap", "getMapThemeTableDefMap", - "getMapThemeDefMap" + "getMapThemeDefMap", + "getAttachTableDefMap" }; public static SMTAIServerApp getApp() @@ -290,6 +292,7 @@ _serverEncache.getMapVPropDefMap(); _serverEncache.getMapThemeTableDefMap(); _serverEncache.getMapThemeDefMap(); + _serverEncache.getAttachTableDefMap(); } public SMTMapTableDef getMapTableDef(String tableId) throws Exception @@ -1204,4 +1207,18 @@ return themeDef; } + + public Map<String, SMTAIAttachTableDef> getAttachTableDefMap() throws Exception + { + return _serverEncache.getAttachTableDefMap(); + } + + public SMTAIAttachTableDef getAttachTableDef(String id) throws Exception + { + SMTAIAttachTableDef attachTableDef = _serverEncache.getAttachTableDefMap().get(id); + if(attachTableDef == null) + throw new Exception("can't find attach table define : " + id); + + return attachTableDef; + } } diff --git a/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/core/SMTAIServerEncache.java b/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/core/SMTAIServerEncache.java index 1fd46b8..022f276 100644 --- a/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/core/SMTAIServerEncache.java +++ b/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/core/SMTAIServerEncache.java @@ -11,6 +11,7 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.cache.annotation.Cacheable; +import com.smtaiserver.smtaiserver.attach.SMTAIAttachTableDef; import com.smtaiserver.smtaiserver.database.SMTDatabase; import com.smtaiserver.smtaiserver.database.SMTDatabase.DBQueryNotify; import com.smtaiserver.smtaiserver.database.SMTDatabase.DBRecord; @@ -582,4 +583,28 @@ } return mapResult; } + + @Cacheable(value="getAttachTableDefMap") + public Map<String, SMTAIAttachTableDef> getAttachTableDefMap() throws Exception + { + Map<String, SMTAIAttachTableDef> mapResult = new HashMap<>(); + SMTDatabase db = SMTAIServerApp.getApp().allocDatabase(); + try + { + DBRecords recs; + + recs = db.querySQL("SELECT * FROM ai_attach_table", null); + for(DBRecord rec : recs.getRecords()) + { + SMTAIAttachTableDef attachTableDef = new SMTAIAttachTableDef(rec); + mapResult.put(attachTableDef.getId(), attachTableDef); + } + + } + finally + { + db.close(); + } + return mapResult; + } } diff --git a/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/core/SMTAIServerRequest.java b/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/core/SMTAIServerRequest.java index ac82633..34079e3 100644 --- a/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/core/SMTAIServerRequest.java +++ b/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/core/SMTAIServerRequest.java @@ -50,6 +50,12 @@ { 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); @@ -89,6 +95,7 @@ private List<SMTJsonWriter> _listJsonWrResult = null; private boolean _disableConclusion = false; private List<AIAttachFile> _listAttchFile = null; + private Json _jsonAttachTables = null; @Override @@ -114,6 +121,11 @@ } } + public void setAttachTables(Json jsonTables) + { + _jsonAttachTables = jsonTables; + } + public String[] getAttachMessage() { List<String> list = new ArrayList<>(); @@ -126,9 +138,59 @@ } } + 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) diff --git a/JAVA/SMTAIServer/src/main/resources/application.yml b/JAVA/SMTAIServer/src/main/resources/application.yml index 9d41400..7811fc6 100644 --- a/JAVA/SMTAIServer/src/main/resources/application.yml +++ b/JAVA/SMTAIServer/src/main/resources/application.yml @@ -33,9 +33,9 @@ # 杩炴帴姹犻厤缃� druid: # 鍒濆鍖栧ぇ灏忥紝鏈�灏忥紝鏈�澶� - initial-size: 10 + initial-size: 0 min-idle: 10 - max-active: 200 + max-active: 1024 # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂� max-wait: 60000 # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆绉� diff --git a/JAVA/SMTAIServer/src/main/resources/requestmap/java_ai.json b/JAVA/SMTAIServer/src/main/resources/requestmap/java_ai.json index 2f4ccf3..9affdcf 100644 --- a/JAVA/SMTAIServer/src/main/resources/requestmap/java_ai.json +++ b/JAVA/SMTAIServer/src/main/resources/requestmap/java_ai.json @@ -165,8 +165,8 @@ {"name":"prev_question", "title":"涓婃瀵硅瘽鍐呭", "required":false}, {"name":"group_type", "title":"闂鍒嗙被", "default":"涓氬姟鍦烘櫙", "required":false}, {"name":"cur_pos", "title":"褰撳墠浣嶇疆", "required":false}, - {"name":"files", "title":"闄勪欢鏂囦欢", "required":false, "type":"file"} - + {"name":"files", "title":"闄勪欢鏂囦欢", "required":false, "type":"file"}, + {"name":"tables", "title":"闄勪欢琛ㄨ褰昜{title:涓枃鍚�, columns:[瀛楁1锛屽瓧娈�2...],values:[[鍊�1锛屽��2...]]}]", "required":false} ] } ] @@ -285,5 +285,28 @@ ] } ] + }, + + "attach/get_attach_table_list":{"map":{"class":"#SMTJavaAIControl", "method":"getAttachTableList"}, + "swaggers":[ + { "tags" : ["闄勪欢鎿嶄綔"], + "title" : "鑾峰彇闄勪欢琛ㄥ畾涔夊垪琛�", + "parameters" : [ + ] + } + ] + }, + + "attach/query_attach_table_records":{"map":{"class":"#SMTJavaAIControl", "method":"queryAttachTableRecords"}, + "swaggers":[ + { "tags" : ["闄勪欢鎿嶄綔"], + "title" : "鏌ヨ闄勪欢琛ㄨ褰�", + "parameters" : [ + {"name":"id", "title":"鏌ヨ琛╥d", "required":true}, + {"name":"filter", "title":"杩囨护鏉′欢[{col:瀛楁鍚�, filter:杩囨护鏉′欢, values:[鍊�1锛屽��2...]},...]", "required":false}, + {"name":"order", "title":"鎺掑簭鏉′欢[{col:瀛楁鍚�, order:ASC/DESC", "required":false} + ] + } + ] } } \ No newline at end of file -- Gitblit v1.9.3