From 6b14a8bd143c548c29a464c9e479ec43def10506 Mon Sep 17 00:00:00 2001
From: wuxw <928255095@qq.com>
Date: 星期三, 30 十月 2019 23:20:04 +0800
Subject: [PATCH] 调整日期显示
---
java110-service/src/main/java/com/java110/service/smo/impl/QueryServiceSMOImpl.java | 95 +++++++++++++++++++++++++++++++++++++----------
1 files changed, 75 insertions(+), 20 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 773b4dc..cc03614 100644
--- 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,19 +4,24 @@
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.JSONPath;
-import com.java110.common.cache.ServiceSqlCache;
-import com.java110.common.constant.CommonConstant;
-import com.java110.common.constant.ResponseConstant;
-import com.java110.common.exception.BusinessException;
+import com.java110.utils.cache.ServiceSqlCache;
+import com.java110.utils.constant.CommonConstant;
+import com.java110.utils.constant.ResponseConstant;
+import com.java110.utils.exception.BusinessException;
import com.java110.core.factory.DataTransactionFactory;
-import com.java110.common.log.LoggerEngine;
-import com.java110.common.util.Assert;
-import com.java110.common.util.StringUtil;
-import com.java110.entity.service.DataQuery;
+import com.java110.utils.log.LoggerEngine;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.StringUtil;
+import com.java110.service.context.DataQuery;
import com.java110.entity.service.ServiceSql;
import com.java110.service.dao.IQueryServiceDAO;
import com.java110.service.smo.IQueryServiceSMO;
import org.apache.commons.lang3.StringUtils;
+import org.apache.ibatis.ognl.Ognl;
+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 org.springframework.beans.factory.annotation.Autowired;
@@ -172,25 +177,17 @@
*/
private void doExecuteJava(DataQuery dataQuery) throws BusinessException {
try {
- JSONObject params = dataQuery.getRequestParams();
+ //JSONObject params = dataQuery.getRequestParams();
String javaCode = dataQuery.getServiceSql().getJavaScript();
Interpreter interpreter = new Interpreter();
interpreter.eval(javaCode);
- String param = "";
- for (String key : params.keySet()) {
- param += (params.getString(key) + ",");
- }
-
- if (param.endsWith(",")) {
- param = param.substring(0, param.length() - 1);
- }
-
+ interpreter.set("dataQuery", dataQuery);
dataQuery.setResponseInfo(DataTransactionFactory.createBusinessResponseJson(ResponseConstant.RESULT_CODE_SUCCESS,
- "鎴愬姛", JSONObject.parseObject(interpreter.eval("execute(" + param + ")").toString())));
+ "鎴愬姛", JSONObject.parseObject(interpreter.eval("execute(dataQuery)").toString())));
} catch (Exception e) {
logger.error("鏁版嵁浜や簰寮傚父锛�", e);
- throw new BusinessException(ResponseConstant.RESULT_CODE_INNER_ERROR, "鏁版嵁浜や簰寮傚父銆傘�傘��");
+ throw new BusinessException(ResponseConstant.RESULT_CODE_INNER_ERROR, "鏁版嵁浜や簰寮傚父," + e.getMessage());
}
}
@@ -251,6 +248,12 @@
List<Object> currentParams = new ArrayList<Object>();
String currentSql = sqlObj.getString(dataQuery.getTemplateKey());
+ //澶勭悊 if 鍒ゆ柇
+ logger.debug("dealSqlIf寮�濮嬪鐞唖ql涓殑<if>鑺傜偣 " + currentSql + " 鍏ュ弬:" + params.toJSONString());
+ currentSql = dealSqlIf(currentSql, params);
+ logger.debug("dealSqlIf澶勭悊瀹屾垚sql涓殑<if>鑺傜偣 " + currentSql + " 鍏ュ弬:" + params.toJSONString());
+
+
String[] sqls = currentSql.split("#");
String currentSqlNew = "";
for (int sqlIndex = 0; sqlIndex < sqls.length; sqlIndex++) {
@@ -321,6 +324,58 @@
}
/**
+ * 澶勭悊SQL璇彞
+ *
+ * @param oldSql select * from s_a a
+ * where <if test="name != null && name != ''">
+ * a.name = #name#
+ * </if>
+ * @return
+ */
+ public String dealSqlIf(String oldSql, JSONObject requestParams) throws DocumentException, OgnlException {
+ StringBuffer newSql = new StringBuffer();
+ String tmpSql = "";
+ Boolean conditionResult = false;
+ // 鏈寘鍚� 鏉′欢璇彞
+ if (!oldSql.contains("<if")) {
+ return oldSql;
+ }
+
+ String[] oSqls = oldSql.split("</if>");
+ for (String oSql : oSqls) {
+ if (!oSql.startsWith("<if")) {
+ newSql.append(oSql.substring(0, oSql.indexOf("<if")));
+ }
+
+ tmpSql = oSql.substring(oSql.indexOf("<if")) + "</if>";
+
+ Element root = DocumentHelper.parseText(tmpSql).getRootElement();
+
+ String condition = root.attribute("test").getValue();
+
+ Object condObj = Ognl.parseExpression(condition);
+
+ Object value = Ognl.getValue(condObj, requestParams);
+
+ if (value instanceof Boolean) {
+ conditionResult = (Boolean) value;
+ } else {
+ throw new BusinessException(ResponseConstant.RESULT_CODE_INNER_ERROR, "閰嶇疆閿欒锛宨f璇彞閰嶇疆閿欒 " + condition);
+ }
+
+ if (conditionResult) {
+ newSql.append(root.getText());
+ }
+
+
+ }
+
+
+ return newSql.toString().replace(">", ">").replace("<", "<");
+
+ }
+
+ /**
* 澶勭悊JSONArray
*
* @param objs
--
Gitblit v1.8.0