wuxw
2022-05-11 fc1090ef8e44e8cf010c3d352482d78d389ba4c8
java110-service/src/main/java/com/java110/service/smo/impl/QueryServiceSMOImpl.java
@@ -18,12 +18,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 +342,26 @@
        }
    }
    /**
     * 执行java脚本
     *
     * @param javaCode
     * @throws BusinessException
     */
    public JSONObject execJava(JSONObject params, String javaCode) throws BusinessException {
        try {
            //JSONObject params = dataQuery.getRequestParams();
            Interpreter interpreter = new Interpreter();
            interpreter.eval(javaCode);
            interpreter.set("params", new Object[]{params,queryServiceDAOImpl});
            //interpreter.set("queryServiceDAOImpl",queryServiceDAOImpl);
            return JSONObject.parseObject(interpreter.eval("execute(params,queryServiceDAOImpl)").toString());
        } 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 +451,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;