java110
2023-03-27 ade5569e4bab19ae7ead2ca9ab44792e2458d284
java110-service/src/main/java/com/java110/service/smo/impl/QueryServiceSMOImpl.java
@@ -4,17 +4,23 @@
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.core.factory.GenerateCodeFactory;
import com.java110.db.dao.IQueryServiceDAO;
import com.java110.dto.logSystemError.LogSystemErrorDto;
import com.java110.entity.service.ServiceSql;
import com.java110.po.logSystemError.LogSystemErrorPo;
import com.java110.service.context.DataQuery;
import com.java110.service.smo.IQueryServiceSMO;
import com.java110.service.smo.ISaveSystemErrorSMO;
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.utils.log.LoggerEngine;
import com.java110.utils.util.Assert;
import com.java110.utils.util.ExceptionUtil;
import com.java110.utils.util.StringUtil;
import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.ognl.Ognl;
@@ -49,6 +55,9 @@
    @Autowired
    private IQueryServiceDAO queryServiceDAOImpl;
    @Autowired(required = false)
    private ISaveSystemErrorSMO saveSystemErrorSMOImpl;
    @Override
    public void commonQueryService(DataQuery dataQuery) throws BusinessException {
@@ -124,13 +133,22 @@
    public ResponseEntity<String> fallBack(String fallBackInfo) throws BusinessException {
        JSONArray params = JSONArray.parseArray(fallBackInfo);
        String sql = "";
        for (int paramIndex = 0; paramIndex < params.size(); paramIndex++) {
            JSONObject param = params.getJSONObject(paramIndex);
            String sql = param.getString("fallBackSql");
            if (StringUtil.isEmpty(sql)) {
                return new ResponseEntity<String>("未包含sql信息", HttpStatus.BAD_REQUEST);
            try {
                JSONObject param = params.getJSONObject(paramIndex);
                sql =  param.getString("fallBackSql");
                if (StringUtil.isEmpty(sql)) {
                    return new ResponseEntity<String>("未包含sql信息", HttpStatus.BAD_REQUEST);
                }
                int flag = queryServiceDAOImpl.updateSql(sql, null);
            }catch (Exception e){
                LogSystemErrorPo logSystemErrorPo = new LogSystemErrorPo();
                logSystemErrorPo.setErrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_errId));
                logSystemErrorPo.setErrType(LogSystemErrorDto.ERR_TYPE_JOB);
                logSystemErrorPo.setMsg(sql+ExceptionUtil.getStackTrace(e));
                saveSystemErrorSMOImpl.saveLog(logSystemErrorPo);
            }
            int flag = queryServiceDAOImpl.updateSql(sql, null);
        }
        return new ResponseEntity<String>("回退成功", HttpStatus.OK);
@@ -351,11 +369,32 @@
    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.toJSONString());
            interpreter.set("params", params);
            interpreter.set("queryServiceDAOImpl",queryServiceDAOImpl);
            return JSONObject.parseObject(interpreter.eval("execute(params,queryServiceDAOImpl)").toString());
            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();
            if(data.size()>0) {
                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());
@@ -392,7 +431,7 @@
            }
            results = queryServiceDAOImpl.executeSql(currentSqlNew, currentParams.toArray(), columns);
        } catch (Exception e) {
            logger.error("解析sql 异常", e);
            logger.error("解析sql 异常"+currentSql, e);
            throw new BusinessException("1999", e.getLocalizedMessage());
        }
        JSONArray data = null;