From 22d7512ecb341426ecaa5ac8d48d7aa2b37c1059 Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期四, 09 六月 2022 16:27:41 +0800
Subject: [PATCH] 优化代码
---
java110-service/src/main/java/com/java110/service/smo/impl/QueryServiceSMOImpl.java | 47 +++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 45 insertions(+), 2 deletions(-)
diff --git a/java110-service/src/main/java/com/java110/service/smo/impl/QueryServiceSMOImpl.java b/java110-service/src/main/java/com/java110/service/smo/impl/QueryServiceSMOImpl.java
index 5ae8d2d..460f215 100755
--- a/java110-service/src/main/java/com/java110/service/smo/impl/QueryServiceSMOImpl.java
+++ b/java110-service/src/main/java/com/java110/service/smo/impl/QueryServiceSMOImpl.java
@@ -4,6 +4,7 @@
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.JSONPath;
+import com.alibaba.fastjson.parser.Feature;
import com.java110.core.factory.DataTransactionFactory;
import com.java110.db.dao.IQueryServiceDAO;
import com.java110.entity.service.ServiceSql;
@@ -18,12 +19,13 @@
import com.java110.utils.util.StringUtil;
import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.ognl.Ognl;
+import org.apache.ibatis.ognl.OgnlContext;
import org.apache.ibatis.ognl.OgnlException;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import com.java110.core.log.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
@@ -341,6 +343,45 @@
}
}
+ /**
+ * 鎵цjava鑴氭湰
+ *
+ * @param javaCode
+ * @throws BusinessException
+ */
+ public JSONObject execJava(JSONObject params, String javaCode) throws BusinessException {
+ try {
+ //JSONObject params = dataQuery.getRequestParams();
+ List<String> columns = new ArrayList<>();
+ Interpreter interpreter = new Interpreter();
+ interpreter.eval(javaCode);
+ interpreter.set("params", params);
+ interpreter.set("queryServiceDAOImpl",queryServiceDAOImpl);
+ JSONObject results = JSONObject.parseObject(interpreter.eval("execute(params,queryServiceDAOImpl)").toString(), Feature.OrderedField);
+
+ JSONArray data = null;
+ if (results == null || results.size() < 1) {
+ data = new JSONArray();
+ } else {
+ data = results.getJSONArray("data");
+ }
+
+ JSONArray th = new JSONArray();
+ for (String key : data.getJSONObject(0).keySet()) {
+ th.add(key);
+ }
+ JSONObject paramOut = new JSONObject();
+ paramOut.put("th", th);
+ paramOut.put("td", data);
+ paramOut.put("total",results.getString("total"));
+
+ return paramOut;
+ } catch (Exception e) {
+ logger.error("鏁版嵁浜や簰寮傚父锛�", e);
+ throw new BusinessException(ResponseConstant.RESULT_CODE_INNER_ERROR, "鏁版嵁浜や簰寮傚父," + e.getMessage());
+ }
+ }
+
@Override
public JSONObject execQuerySql(JSONObject params, String currentSql) throws BusinessException {
List<Map<String, Object>> results = null;
@@ -430,7 +471,9 @@
Object condObj = Ognl.parseExpression(condition);
- Object value = Ognl.getValue(condObj, requestParams);
+ OgnlContext context = new OgnlContext(null,null,new DefaultMemberAccess(true));
+
+ Object value = Ognl.getValue(condObj,context, requestParams);
if (value instanceof Boolean) {
conditionResult = (Boolean) value;
--
Gitblit v1.8.0