| | |
| | | package com.smtaiserver.smtaiserver.javaai.jsonflow.node;
|
| | |
|
| | | import com.smtaiserver.smtaiserver.core.SMTAIServerApp;
|
| | | import com.smtaiserver.smtaiserver.core.SMTAIServerRequest;
|
| | | import com.smtaiserver.smtaiserver.database.SMTDatabase;
|
| | | import com.smtaiserver.smtaiserver.database.SMTDatabase.DBQueryNotify;
|
| | | import com.smtaiserver.smtaiserver.database.SMTDatabase.DBRecord;
|
| | |
| | | import com.smtaiserver.smtaiserver.javaai.jsonflow.core.SMTJsonFlowManager;
|
| | | import com.smtaiserver.smtaiserver.javaai.jsonflow.core.SMTJsonFlowNodeOnlyOutput;
|
| | | import com.smtaiserver.smtaiserver.javaai.jsonflow.core.SMTJsonFlowScriptJet;
|
| | | import com.smtservlet.core.SMTRequest;
|
| | | import com.smtservlet.util.Json;
|
| | | import com.smtservlet.util.SMTHttpClient;
|
| | | import com.smtservlet.util.SMTJsonWriter;
|
| | | import com.smtservlet.util.SMTStatic;
|
| | |
|
| | | import java.io.IOException;
|
| | | import java.util.ArrayList;
|
| | | import java.util.Date;
|
| | | import java.util.List;
|
| | | import java.util.Map;
|
| | | import java.util.Map.Entry;
|
| | |
|
| | | import okhttp3.FormBody;
|
| | | import okhttp3.OkHttpClient;
|
| | | import okhttp3.Request;
|
| | | import okhttp3.RequestBody;
|
| | | import okhttp3.Response;
|
| | | import org.mozilla.javascript.Context;
|
| | | import org.mozilla.javascript.Function;
|
| | | import org.mozilla.javascript.NativeArray;
|
| | | import org.mozilla.javascript.NativeObject;
|
| | | import org.osgi.service.component.annotations.Component;
|
| | |
|
| | | public class SMTJsonFlowNodeScript extends SMTJsonFlowNodeOnlyOutput |
| | | import javax.annotation.Resource;
|
| | |
|
| | | public class SMTJsonFlowNodeScript extends SMTJsonFlowNodeOnlyOutput
|
| | |
|
| | |
|
| | | {
|
| | | public static class SMTJsonFlowNodeScriptArg
|
| | | public class SMTJsonFlowNodeScriptArg
|
| | | {
|
| | |
|
| | | public SMTJsonFlowExecArg _execArg;
|
| | |
|
| | | public SMTJsonFlowNodeScriptArg(SMTJsonFlowExecArg execArg)
|
| | |
| | | }
|
| | |
|
| | | public String getGlobalConfig(String key, String defaultValue) throws Exception {
|
| | | String globalConfig = (String) SMTAIServerApp.getApp().getGlobalConfig(key, defaultValue);
|
| | | return globalConfig;
|
| | | return (String) SMTAIServerApp.getApp().getGlobalConfig(key, defaultValue);
|
| | | }
|
| | | public String getNowDate() throws Exception {
|
| | | return SMTStatic.toString(new Date());
|
| | | }
|
| | | public String getUUID() throws Exception {
|
| | | return SMTStatic.newUUID();
|
| | | }
|
| | | public String getLoginUserIdByJs() throws Exception {
|
| | | return _execArg._tranReq.getLoginUserId();
|
| | | }
|
| | |
|
| | | public String sendPost(String url, Map<String, String> params) throws Exception {
|
| | | FormBody.Builder formBuilder = new FormBody.Builder();
|
| | | for (Map.Entry<String, String> entry : params.entrySet()) {
|
| | | formBuilder.add(entry.getKey(), entry.getValue());
|
| | | }
|
| | | RequestBody formBody = formBuilder.build();
|
| | | Request request = new Request.Builder()
|
| | | .url(url)
|
| | | .post(formBody)
|
| | | .addHeader("accept", "application/json")
|
| | | .addHeader("Content-Type", "application/x-www-form-urlencoded")
|
| | | .build();
|
| | |
|
| | | OkHttpClient client = new OkHttpClient();
|
| | | Response response = client.newCall(request).execute();
|
| | | if (!response.isSuccessful()) {
|
| | | throw new IOException("Unexpected code " + response);
|
| | | }
|
| | | if (response.body() != null) {
|
| | | return response.body().string();
|
| | | }
|
| | | return "";
|
| | | }
|
| | | public void webSocketBroadcast(NativeObject nativeObject) throws Exception {
|
| | | SMTJsonWriter jsonWr = new SMTJsonWriter(false);
|
| | | SMTAIServerApp.convJSToJsonWriter(nativeObject, jsonWr);
|
| | | SMTAIServerApp.getApp().webSocketApp(jsonWr.getFullJson());
|
| | | }
|
| | | |
| | | public Object llmAnswerToJson(String sJson)
|
| | | {
|
| | | Object object = SMTAIServerApp.convJsonToJS(SMTStatic.convLLMAnswerToJson(sJson, false));
|
| | | return object;
|
| | | }
|
| | |
|
| | | public Object getArg(String key)
|
| | |
| | | SMTDatabase db = SMTAIServerApp.getApp().allocDatabase();
|
| | | return querySQL(db, sql, nvParams);
|
| | | }
|
| | | |
| | |
|
| | | public NativeArray querySQL(String dsId, String sql, NativeObject nvParams) throws Exception
|
| | | {
|
| | | SMTDatabase db = SMTAIServerApp.getApp().getDataSource(dsId).allocDatabase();
|
| | | return querySQL(db, sql, nvParams);
|
| | | }
|
| | |
|
| | | public int executeSQL(String sql, NativeObject nvParams) throws Exception
|
| | | {
|
| | | SMTDatabase db = SMTAIServerApp.getApp().allocDatabase();
|
| | | return executeSQL(db, sql, nvParams);
|
| | | }
|
| | | |
| | | public int executeSQL(String dsId, String sql, NativeObject nvParams) throws Exception
|
| | | {
|
| | | SMTDatabase db = SMTAIServerApp.getApp().getDataSource(dsId).allocDatabase();
|
| | | return executeSQL(db, sql, nvParams);
|
| | | }
|
| | |
|
| | | |
| | | private int executeSQL(SMTDatabase db, String sql, NativeObject nvParams) throws Exception
|
| | | {
|
| | | List<Object> sqlParams = new ArrayList<>();
|
| | | try
|
| | | {
|
| | | // 解析出原始sql
|
| | | String rawSQL = SMTStatic.stringFormat(sql, new SMTStatic.StringNamedNotify()
|
| | | {
|
| | | @Override
|
| | | public Object getNamedValue(String name, Object[] args) throws Exception |
| | | {
|
| | | char type;
|
| | | String value = SMTStatic.toString(SMTAIServerApp.getJSValue(nvParams, name));
|
| | | if(value.length() == 1)
|
| | | {
|
| | | type = value.charAt(0);
|
| | | value = "";
|
| | | }
|
| | | else
|
| | | {
|
| | | type = value.charAt(0);
|
| | | value = value.substring(1);
|
| | | |
| | | }
|
| | | |
| | | Object ovalue;
|
| | | |
| | | switch(type)
|
| | | {
|
| | | case 'N':
|
| | | ovalue = null;
|
| | | break;
|
| | | |
| | | case 'I':
|
| | | ovalue = SMTStatic.toInt(value);
|
| | | break;
|
| | | |
| | | case 'D':
|
| | | ovalue = SMTStatic.toDouble(value);
|
| | | break;
|
| | | |
| | | case 'L':
|
| | | ovalue = SMTStatic.toLong(value);
|
| | | break;
|
| | | |
| | | case 'T':
|
| | | ovalue = SMTStatic.toDate(value);
|
| | | break;
|
| | | |
| | | default:
|
| | | ovalue = value;
|
| | | break;
|
| | | }
|
| | | |
| | | sqlParams.add(ovalue);
|
| | | return "?";
|
| | | }
|
| | | });
|
| | | |
| | |
|
| | | // 执行查询
|
| | | int ret = db.executeSQL(rawSQL, sqlParams.toArray(new Object[sqlParams.size()]));
|
| | | |
| | | return ret;
|
| | | }
|
| | | finally
|
| | | {
|
| | | db.close();
|
| | | }
|
| | | }
|
| | |
|
| | | |
| | | private NativeArray querySQL(SMTDatabase db, String sql, NativeObject nvParams) throws Exception
|
| | | {
|
| | | List<Object> sqlParams = new ArrayList<>();
|