Browse Source

boman-report 3

shiqian 3 years ago
parent
commit
d103477189

+ 2 - 4
boman-report/src/main/java/org/jeecg/modules/jmreport/desreport/a/b.java

@@ -174,10 +174,7 @@ public class b {
     }
 
     @PostMapping({"/back"})
-    @CacheEvict(
-            value = {"jmreport:cache:dict", "jmreport:cache:dictTxt"},
-            allEntries = true
-    )
+    @CacheEvict(value = {"jmreport:cache:dict", "jmreport:cache:dictTxt"},allEntries = true)
     public Result<?> b(@RequestBody JimuReportDict var1) {
         try {
             this.dictService.updateDictDelFlag(CommonConstant.DEL_FLAG_0, var1.getId());
@@ -187,4 +184,5 @@ public class b {
             return Result.error("操作失败!");
         }
     }
+
 }

+ 787 - 0
boman-report/src/main/java/org/jeecg/modules/jmreport/desreport/a/service/a/i.java

@@ -0,0 +1,787 @@
+//
+// Source code recreated from a .class file by IntelliJ IDEA
+// (powered by FernFlower decompiler)
+//
+
+package org.jeecg.modules.jmreport.desreport.a.service.a;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.parser.Feature;
+import com.alibaba.fastjson.serializer.SerializerFeature;
+
+import java.sql.SQLSyntaxErrorException;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.Map.Entry;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.commons.lang3.StringUtils;
+import org.jeecg.modules.jmreport.common.expetion.JimuReportException;
+import org.jeecg.modules.jmreport.common.util.ApiAssert;
+import org.jeecg.modules.jmreport.common.util.CommonUtils;
+import org.jeecg.modules.jmreport.common.util.DesUtils;
+import org.jeecg.modules.jmreport.common.util.JimuSpringContextUtils;
+import org.jeecg.modules.jmreport.common.util.oConvertUtils;
+import org.jeecg.modules.jmreport.common.vo.Result;
+import org.jeecg.modules.jmreport.config.client.JmReportTokenClient;
+import org.jeecg.modules.jmreport.desreport.dao.JimuReportDbDao;
+import org.jeecg.modules.jmreport.desreport.dao.JimuReportDbParamDao;
+import org.jeecg.modules.jmreport.desreport.entity.JmReportDataSource;
+import org.jeecg.modules.jmreport.desreport.entity.JmReportDb;
+import org.jeecg.modules.jmreport.desreport.entity.JmReportDbField;
+import org.jeecg.modules.jmreport.desreport.entity.JmReportDbParam;
+import org.jeecg.modules.jmreport.desreport.render.handler.convert.ApiDataConvertAdapter;
+import org.jeecg.modules.jmreport.desreport.render.utils.RegexMatches;
+import org.jeecg.modules.jmreport.desreport.service.IJimuReportService;
+import org.jeecg.modules.jmreport.desreport.service.IJmReportDbFieldService;
+import org.jeecg.modules.jmreport.desreport.service.IJmReportDbParamService;
+import org.jeecg.modules.jmreport.desreport.service.IJmReportDbService;
+import org.jeecg.modules.jmreport.desreport.service.IJmReportDbSourceService;
+import org.jeecg.modules.jmreport.desreport.util.d;
+import org.jeecg.modules.jmreport.desreport.util.j;
+import org.jeecg.modules.jmreport.dyndb.JmreportDataSourceCachePool;
+import org.jeecg.modules.jmreport.dyndb.JmreportDynamicDbUtil;
+import org.jeecg.modules.jmreport.dyndb.util.JmreportSqlUtils;
+import org.jeecg.modules.jmreport.dyndb.vo.JmreportDynamicDataSourceVo;
+import org.jeecgframework.minidao.pojo.MiniDaoPage;
+import org.jeecgframework.minidao.util.MiniDaoUtil;
+import org.jeecgframework.minidao.util.SnowflakeIdWorker;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.jdbc.UncategorizedSQLException;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.client.ResourceAccessException;
+
+@Service("jmReportDbServiceImpl")
+public class i implements IJmReportDbService {
+    private static final Logger a = LoggerFactory.getLogger(i.class);
+    @Autowired
+    private IJmReportDbParamService jmReportParamService;
+    @Autowired
+    private IJmReportDbFieldService reportDbFieldService;
+    @Autowired
+    private IJmReportDbSourceService jmReportDbSourceService;
+    @Autowired
+    private JmreportDynamicDbUtil jmreportDynamicDbUtil;
+    @Autowired
+    private JmReportTokenClient jimuTokenClient;
+    @Autowired
+    private JimuReportDbDao reportDbDao;
+    @Autowired
+    private JimuReportDbParamDao dbParamDao;
+    @Autowired
+    private IJimuReportService jimuReportService;
+    @Autowired(required = false)
+    private ApiDataConvertAdapter apiDataConverAdapter;
+    @Value("${jeecg.jmreport.apiBasePath:}")
+    private String apiBasePath;
+
+    public i() {
+    }
+
+    @Override
+    @Transactional
+    public JmReportDb saveDb(JmReportDb reportDb) {
+        if ("1".equals(reportDb.getIsPage())) {
+            List<JmReportDb> var2 = this.reportDbDao.selectList(reportDb.getJimuReportId());
+            var2.forEach((var1) -> {
+                var1.setIsPage("0");
+                if (oConvertUtils.isEmpty(var1.getDbSource())) {
+                    var1.setDbSource("");
+                }
+
+                this.a(var1);
+            });
+        }
+
+        String var7;
+        if ("0".equals(reportDb.getDbType())) {
+            var7 = reportDb.getDbSource();
+            if (oConvertUtils.isNotEmpty(var7)) {
+                JmReportDataSource var3 = this.jmReportDbSourceService.getById(var7);
+                if (var3 != null) {
+                    reportDb.setDbSourceType(MiniDaoUtil.getDbType(var3.getDbUrl()));
+                }
+            } else {
+                String var8 = CommonUtils.getDatabaseType();
+                reportDb.setDbSourceType(var8);
+                reportDb.setDbSource("");
+            }
+        }
+
+        this.a(reportDb);
+        var7 = reportDb.getId();
+        this.reportDbFieldService.deleteByReportId(var7);
+        List var9 = reportDb.getFieldList();
+        if (d.a(var9)) {
+            Iterator var4 = var9.iterator();
+
+            while (var4.hasNext()) {
+                JmReportDbField var5 = (JmReportDbField) var4.next();
+                var5.setJimuReportDbId(var7);
+            }
+
+            this.reportDbFieldService.saveOrUpdateBatch(var9);
+        }
+
+        this.jmReportParamService.deleteByReportId(var7);
+        List var10 = reportDb.getParamList();
+        if (d.a(var10)) {
+            Iterator var11 = var10.iterator();
+
+            while (var11.hasNext()) {
+                JmReportDbParam var6 = (JmReportDbParam) var11.next();
+                var6.setJimuReportHeadId(var7);
+                if (var6.getSearchFlag() == null) {
+                    var6.setSearchFlag(0);
+                }
+            }
+
+            this.jmReportParamService.saveOrUpdateBatch(var10);
+        }
+
+        return reportDb;
+    }
+
+    @Override
+    public List<List<Map>> fieldTree(String reportId) {
+        ArrayList var2 = new ArrayList();
+        new JmReportDb();
+        List var4 = this.reportDbDao.selectList(reportId);
+        if (d.a(var4)) {
+            Iterator var5 = var4.iterator();
+
+            while (var5.hasNext()) {
+                JmReportDb var6 = (JmReportDb) var5.next();
+                ArrayList var7 = new ArrayList();
+                HashMap var8 = new HashMap();
+                var8.put("dbId", var6.getId());
+                var8.put("expand", true);
+                var8.put("title", var6.getDbChName());
+                var8.put("code", var6.getDbCode());
+                var8.put("type", var6.getDbType());
+                var8.put("isList", var6.getIsList());
+                List var9 = this.reportDbFieldService.getByDbId(var6.getId());
+                ArrayList var10 = new ArrayList();
+                HashMap var13;
+                if (d.a(var9)) {
+                    for (Iterator var11 = var9.iterator(); var11.hasNext(); var10.add(var13)) {
+                        JmReportDbField var12 = (JmReportDbField) var11.next();
+                        var13 = new HashMap();
+                        var13.put("expand", true);
+                        if (var12.getFieldName().equals(var12.getFieldText())) {
+                            var13.put("title", var12.getFieldName());
+                            var13.put("fieldText", var12.getFieldName());
+                        } else {
+                            var13.put("title", var12.getFieldName());
+                            var13.put("fieldText", var12.getFieldText());
+                        }
+                    }
+                }
+
+                var8.put("children", var10);
+                var7.add(var8);
+                var2.add(var7);
+            }
+        }
+
+        return var2;
+    }
+
+    public boolean queryIsPage(String reportId) {
+        int var2 = this.reportDbDao.getCountByReportId(reportId);
+        boolean var3 = false;
+        if (var2 > 0) {
+            var3 = true;
+        }
+
+        return var3;
+    }
+
+    public Map<String, Object> executeSelectSql(String sql, String dbKey, Map<String, Object> params) {
+        List var4 = this.jmReportParamService.list(params.get("jimuReportHeadId").toString());
+        JmReportDbParam var6;
+        String var8;
+        if (var4 != null && var4.size() > 0) {
+            for (Iterator var5 = var4.iterator(); var5.hasNext(); sql = sql.replace("${" + var6.getParamName() + "}", var8)) {
+                var6 = (JmReportDbParam) var5.next();
+                Object var7 = params.get("self_" + var6.getParamName());
+                var8 = "";
+                if (var7 != null) {
+                    var8 = var7.toString();
+                } else if (var7 == null && oConvertUtils.isNotEmpty(var6.getParamValue())) {
+                    var8 = var6.getParamValue();
+                }
+            }
+        }
+
+        HashMap var15 = new HashMap();
+        Integer var16 = oConvertUtils.getInt(params.get("pageSize"), 10);
+        Integer var17 = oConvertUtils.getInt(params.get("pageNo"), 1);
+        var8 = "select * from (" + sql + ") jeecg_rp_temp  where 1=1";
+        Object var9 = params.get("column");
+        if (var9 != null) {
+            var8 = var8 + " order by jeecg_rp_temp." + var9.toString() + " " + params.get("order").toString();
+        }
+
+        a.info("报表查询sql=>\r\n" + var8);
+        if (oConvertUtils.isNotEmpty(dbKey)) {
+            String var10 = JmreportSqlUtils.getCountSql(sql);
+            Map var11 = (Map) this.jmreportDynamicDbUtil.findOne(dbKey, var10, new Object[0]);
+            var15.put("total", var11.get("total"));
+            JmreportDynamicDataSourceVo var12 = JmreportDataSourceCachePool.getCacheDynamicDataSourceModel(dbKey);
+            String var13 = MiniDaoUtil.createPageSql(var12.getDbUrl(), var8, var17, var16);
+            List var14 = this.jmreportDynamicDbUtil.findList(dbKey, var13, new Object[0]);
+            var15.put("records", d.b(var14));
+        } else {
+            MiniDaoPage var18 = this.reportDbDao.selectPageBySql(var8, var17, var16);
+            var15.put("total", var18.getResults());
+            var15.put("records", d.b(var18.getResults()));
+        }
+
+        return var15;
+    }
+
+    public Map<String, Object> executeSelectApi(String api, String method, String token, String apiConvert, String paramArray) {
+        HashMap var6 = new HashMap();
+        if (oConvertUtils.isNotEmpty(paramArray)) {
+            api = this.b(paramArray, api);
+        }
+
+        String var12;
+        if (api.contains("token")) {
+            String var7 = api.substring(api.indexOf("token"), api.length());
+            String[] var8 = var7.split("&");
+            String[] var9 = var8;
+            int var10 = var8.length;
+
+            for (int var11 = 0; var11 < var10; ++var11) {
+                var12 = var9[var11];
+                String[] var13 = var12.split("=");
+                if (var13.length > 1 && var13[0].equals("token")) {
+                    var13[1] = var13[1].replace("'", "").replace("'", "");
+                    var13[1] = var13[1].replaceAll("\"", "");
+                    if (oConvertUtils.isNotEmpty(var13[1])) {
+                        token = var13[1];
+                    }
+                }
+            }
+        }
+
+        JSONObject var16 = this.a(api, method, token);
+        ArrayList var17 = new ArrayList();
+        if (var16 != null && !"".equals(var16)) {
+            Object var18 = null;
+            String var19 = new String();
+            String var14;
+            Object var20;
+            JSONObject var22;
+            if (!var16.containsKey("data")) {
+                if (oConvertUtils.isNotEmpty(apiConvert)) {
+                    var20 = JimuSpringContextUtils.getBean(apiConvert);
+                    if (var20 != null && var20 instanceof ApiDataConvertAdapter) {
+                        var22 = RegexMatches.e(var16.toJSONString());
+                        ApiDataConvertAdapter var24 = (ApiDataConvertAdapter) var20;
+                        var14 = var24.getData(var22);
+                        var19 = String.valueOf(var14);
+                        var18 = JSONObject.parse(var19, new Feature[]{Feature.OrderedField});
+                    }
+                } else if (oConvertUtils.isNotEmpty(this.apiDataConverAdapter)) {
+                    JSONObject var21 = RegexMatches.e(var16.toJSONString());
+                    var12 = this.apiDataConverAdapter.getData(var21);
+                    var19 = String.valueOf(var12);
+                    var18 = JSONObject.parse(var19, new Feature[]{Feature.OrderedField});
+                } else {
+                    var18 = var16;
+                    var19 = String.valueOf(var16);
+                }
+            } else {
+                var20 = var16.get("data");
+                if (null != var20) {
+                    var19 = JSON.toJSONString(var20, new SerializerFeature[]{SerializerFeature.WriteMapNullValue});
+                }
+
+                var18 = JSONObject.parse(var19, new Feature[]{Feature.OrderedField});
+            }
+
+            LinkedHashMap var23 = new LinkedHashMap();
+            if (var18 instanceof JSONObject) {
+                var22 = JSON.parseObject(var19, new Feature[]{Feature.OrderedField});
+                Iterator var26 = var22.keySet().iterator();
+
+                while (var26.hasNext()) {
+                    var14 = (String) var26.next();
+                    var23.put(var14, var22.get(var14));
+                    var17.add(var23);
+                }
+            } else if (var18 instanceof JSONArray) {
+                JSONArray var25 = (JSONArray) JSONArray.parse(var19, new Feature[]{Feature.OrderedField});
+                if (var25.size() > 0) {
+                    JSONObject var27 = var25.getJSONObject(0);
+                    Iterator var28 = var27.keySet().iterator();
+
+                    while (var28.hasNext()) {
+                        String var15 = (String) var28.next();
+                        var23.put(var15, var27.get(var15));
+                        var17.add(var23);
+                    }
+                }
+            }
+        }
+
+        var6.put("records", d.b(var17));
+        return var6;
+    }
+
+    private List<String> a(String var1, String var2) {
+        if (oConvertUtils.isEmpty(var1)) {
+            return null;
+        } else {
+            MiniDaoPage var3 = this.reportDbDao.selectPageBySql(var1, 1, 1);
+            List var4 = var3.getResults();
+            if (var4.size() < 1) {
+                throw new JimuReportException("该报表sql没有数据");
+            } else {
+                Set var5 = ((Map) var4.get(0)).keySet();
+                ArrayList var6 = new ArrayList();
+                Iterator var7 = var5.iterator();
+
+                while (var7.hasNext()) {
+                    String var8 = (String) var7.next();
+                    var6.add(var8.toLowerCase());
+                }
+
+                return var6;
+            }
+        }
+    }
+
+    public Map loadDbData(String dbId) {
+        HashMap var2 = new HashMap();
+        JmReportDb var3 = this.reportDbDao.get(dbId);
+        if (var3 == null) {
+            return var2;
+        } else {
+            List var4 = this.reportDbFieldService.getByDbId(dbId);
+            List var5 = this.jmReportParamService.list(dbId);
+            var2.put("dbId", dbId);
+            var2.put("reportDb", var3);
+            var2.put("fieldList", var4);
+            var2.put("paramList", var5);
+            return var2;
+        }
+    }
+
+    public List<JmReportDataSource> initDataSource(String createBy) {
+        List var2 = this.jmReportDbSourceService.querySourceList(createBy);
+        if (oConvertUtils.isNotEmpty(var2)) {
+            Iterator var3 = var2.iterator();
+
+            while (var3.hasNext()) {
+                JmReportDataSource var4 = (JmReportDataSource) var3.next();
+                String var5 = var4.getDbPassword();
+                if (var5.startsWith("@JimuReport")) {
+                    var4.setDbPassword(DesUtils.encode(var5.replace("@JimuReport", "")));
+                }
+            }
+        }
+
+        return var2;
+    }
+
+    public void saveDbSource(JmReportDataSource sysDataSource) {
+        this.jmReportDbSourceService.saveOrUpdate(sysDataSource);
+    }
+
+    public boolean querySourceCode(JmReportDataSource sysDataSource) {
+        boolean var2 = false;
+        Integer var3 = 0;
+        if (oConvertUtils.isNotEmpty(sysDataSource.getId())) {
+            JmReportDataSource var4 = this.jmReportDbSourceService.selectById(sysDataSource.getId());
+            if (var4.getCode() != null) {
+                if (!var4.getCode().equals(sysDataSource.getCode())) {
+                    var3 = this.jmReportDbSourceService.excelQueryCode(sysDataSource.getCode());
+                    if (var3 == 0) {
+                        var2 = true;
+                    }
+                } else {
+                    var2 = true;
+                }
+            } else {
+                var3 = this.jmReportDbSourceService.excelQueryCode(sysDataSource.getCode());
+                if (var3 == 0) {
+                    var2 = true;
+                }
+            }
+        } else {
+            var3 = this.jmReportDbSourceService.excelQueryCode(sysDataSource.getCode());
+            if (var3 == 0) {
+                var2 = true;
+            }
+        }
+
+        return var2;
+    }
+
+    public void delDataSource(JmReportDataSource sysDataSource) {
+        this.jmReportDbSourceService.removeById(sysDataSource.getId());
+    }
+
+    public List<Map<String, Object>> qurestechSql(JmReportDb jmReportDb) {
+        if (jmReportDb == null) {
+            return null;
+        } else {
+            String var2 = jmReportDb.getDbDynSql();
+            List var3 = this.dbParamDao.list(jmReportDb.getId());
+            JSONObject var4 = new JSONObject();
+            Iterator var5 = var3.iterator();
+
+            while (var5.hasNext()) {
+                JmReportDbParam var6 = (JmReportDbParam) var5.next();
+                if (oConvertUtils.isNotEmpty(var6.getParamValue())) {
+                    var4.put(var6.getParamName(), var6.getParamValue());
+                }
+            }
+
+            String var7 = this.jimuReportService.getBaseSql(jmReportDb, var4);
+            if (oConvertUtils.isEmpty(jmReportDb.getDbSource())) {
+                return this.reportDbDao.selectListBySql(var7);
+            } else {
+                return this.jmreportDynamicDbUtil.findList(jmReportDb.getDbSource(), var7, new Object[0]);
+            }
+        }
+    }
+
+    public List<Map> parseData(Map<String, Object> map) {
+        ArrayList var2 = new ArrayList();
+        ArrayList var3 = (ArrayList) map.get("records");
+        if (var3 != null && var3.size() >= 1) {
+            LinkedHashMap var4 = (LinkedHashMap) var3.get(0);
+            Integer var5 = 1;
+            Iterator var6 = var4.entrySet().iterator();
+
+            while (var6.hasNext()) {
+                Entry var7 = (Entry) var6.next();
+                String var8 = (String) var7.getKey();
+                LinkedHashMap var9 = new LinkedHashMap();
+                var9.put("fieldName", var8);
+                var9.put("fieldText", var8);
+                var9.put("widgetType", "String");
+                var9.put("isShow", true);
+                Integer var10 = var5;
+                var5 = var5 + 1;
+                var9.put("orderNum", var10);
+                var2.add(var9);
+            }
+        }
+
+        return var2;
+    }
+
+    public List<Map<String, Object>> loadDataSourceTable(String dbKey) {
+        List var2 = null;
+        JmreportDynamicDataSourceVo var3 = JmreportDataSourceCachePool.getCacheDynamicDataSourceModel(dbKey);
+        String var4 = MiniDaoUtil.getDbType(var3.getDbUrl());
+        String var5 = JmreportSqlUtils.getAllTableSql(var3.getDbUrl());
+        if (oConvertUtils.isNotEmpty(var5)) {
+            var2 = this.jmreportDynamicDbUtil.findList(dbKey, var5, new Object[0]);
+            Iterator var6;
+            Map var7;
+            if (JmreportSqlUtils.dbTypeIsOracle(var4)) {
+                var6 = var2.iterator();
+
+                while (var6.hasNext()) {
+                    var7 = (Map) var6.next();
+                    var7.put("Comment", var7.get("COMMENTS"));
+                    var7.put("Name", var7.get("NAME"));
+                }
+            } else if (JmreportSqlUtils.dbTypeIsPostgre(var4)) {
+                var6 = var2.iterator();
+
+                while (var6.hasNext()) {
+                    var7 = (Map) var6.next();
+                    var7.put("Comment", var7.get("comment"));
+                    var7.put("Name", var7.get("name"));
+                }
+            }
+        }
+
+        return var2;
+    }
+
+    public Map<String, Object> loadTableData(String dbKey, String tableName, Integer pageNo, Integer pageSize, String sql, String paramArray) {
+        HashMap var7 = new HashMap();
+        if (oConvertUtils.isNotEmpty(paramArray)) {
+            sql = this.a((Object) paramArray, sql);
+        }
+
+        String var8 = this.jimuTokenClient.getToken();
+        if (oConvertUtils.isNotEmpty(var8)) {
+            Map var9 = this.jimuTokenClient.getUserInfo(var8);
+            sql = d.a(sql, var9);
+        }
+
+        a.info("报表查询querySql=>\r\n" + sql);
+        String var15 = d.f(sql);
+        if (StringUtils.isNotBlank(var15)) {
+            List var10 = this.jmreportDynamicDbUtil.executeProcedure(dbKey, var15);
+            var7.put("records", d.b(var10));
+        } else if (oConvertUtils.isNotEmpty(dbKey)) {
+            JmreportDynamicDataSourceVo var13 = JmreportDataSourceCachePool.getCacheDynamicDataSourceModel(dbKey);
+            String var11 = MiniDaoUtil.createPageSql(var13.getDbUrl(), sql, pageNo, pageSize);
+            a.info("报表查询pageSQL=>\r\n" + var11);
+            List var12 = this.jmreportDynamicDbUtil.findList(dbKey, var11, new Object[0]);
+            var7.put("records", d.b(var12));
+        } else {
+            MiniDaoPage var14 = this.reportDbDao.selectPageBySql(sql, pageNo, pageSize);
+            var7.put("total", var14.getResults());
+            var7.put("records", d.b(var14.getResults()));
+        }
+
+        return var7;
+    }
+
+    @Transactional
+    public void delDbData(String dbId) {
+        this.reportDbDao.deleteById(dbId);
+        this.reportDbFieldService.deleteByReportId(dbId);
+        this.jmReportParamService.deleteByReportId(dbId);
+    }
+
+    private JSONObject a(String var1, String var2, String var3) {
+        a.info("报表API 查询sendHttpRequest 原始API=> " + var1);
+        Map var4 = this.jimuTokenClient.getUserInfo(var3);
+        var1 = d.a(var1, var4, this.apiBasePath);
+        a.info("报表API 查询sendHttpRequest 替换后API=> " + var1);
+        a.info("报表API 查询sendHttpRequest Method=> " + var2);
+        if (var1.contains("'")) {
+            var1 = var1.replace("'", "");
+        }
+
+        new String();
+
+        try {
+            String var5;
+            if ("0".equals(var2)) {
+                var5 = d.b(var1, var3);
+            } else {
+                var5 = d.a(var1, var3, (JSONObject) null);
+            }
+
+            a.info("报表API 查询sendHttpRequest result=> " + var5);
+            JSONObject var6 = JSONObject.parseObject(var5, new Feature[]{Feature.OrderedField});
+            return var6;
+        } catch (ResourceAccessException var7) {
+            a.warn("连接超时:" + var7.getMessage());
+            throw new JimuReportException("api连接超时,请重试!");
+        } catch (Exception var8) {
+            var8.printStackTrace();
+            return null;
+        }
+    }
+
+    public Map<String, Object> parseReportSql(String sql, String dbKey, Object paramArray, String type) throws JimuReportException {
+        HashMap var5 = new HashMap();
+        Object var6 = new ArrayList();
+        if (oConvertUtils.isNotEmpty(paramArray)) {
+            sql = this.a(paramArray, sql);
+        }
+
+        List var7 = d.b(sql);
+        sql = d.a(sql, (Map) null);
+        String var8 = d.f(sql);
+        if (StringUtils.isNotBlank(var8)) {
+            var6 = this.jmreportDynamicDbUtil.executeProcedure(dbKey, var8);
+        } else if (oConvertUtils.isEmpty(dbKey)) {
+            try {
+                if (sql.contains("*")) {
+                    MiniDaoPage var9 = this.reportDbDao.selectPageBySql(sql, 1, 1);
+                    var6 = var9.getResults();
+                }
+
+                if (oConvertUtils.isEmpty(var6)) {
+                    var6 = j.a(sql);
+                }
+            } catch (Exception var17) {
+                Throwable var10 = var17.getCause();
+                if ("0".equals(type)) {
+                    a.warn(var17.getMessage());
+                    var5.put("message", "解析失败");
+                    return var5;
+                }
+
+                if (var10 instanceof SQLSyntaxErrorException) {
+                    throw new JimuReportException(var17.getMessage());
+                }
+
+                if (var17 instanceof UncategorizedSQLException) {
+                    throw new JimuReportException("SQL语法错误!");
+                }
+
+                throw new JimuReportException(var17);
+            }
+        } else {
+            JmreportDynamicDataSourceVo var18 = JmreportDataSourceCachePool.getCacheDynamicDataSourceModel(dbKey);
+            String var20 = MiniDaoUtil.createPageSql(var18.getDbUrl(), sql, 1, 1);
+
+            try {
+                if (sql.contains("*")) {
+                    var6 = this.jmreportDynamicDbUtil.findList(dbKey, var20, new Object[0]);
+                }
+
+                if (oConvertUtils.isEmpty(var6)) {
+                    var6 = j.a(sql);
+                }
+            } catch (Exception var16) {
+                if ("0".equals(type)) {
+                    a.warn(var16.getMessage());
+                    var5.put("message", "解析失败");
+                    return var5;
+                }
+
+                if (var16.getMessage().contains("bad SQL grammar")) {
+                    throw new JimuReportException("SQL语法错误!");
+                }
+
+                throw new JimuReportException(var16);
+            }
+        }
+
+        if (var6 != null && ((List) var6).size() > 0) {
+            ArrayList var19 = new ArrayList();
+            Map var21 = (Map) ((List) var6).get(0);
+            int var11 = 1;
+            Iterator var12 = var21.entrySet().iterator();
+
+            while (var12.hasNext()) {
+                Entry var13 = (Entry) var12.next();
+                String var14 = ((String) var13.getKey()).toLowerCase();
+                LinkedHashMap var15 = new LinkedHashMap();
+                var15.put("fieldName", var14);
+                var15.put("fieldText", var14);
+                var15.put("widgetType", "String");
+                var15.put("orderNum", var11++);
+                var19.add(var15);
+            }
+
+            var5.put("fieldList", var19);
+            var5.put("paramList", var7);
+        }
+
+        return var5;
+    }
+
+    private String a(Object var1, String var2) {
+        JSONArray var3 = JSONArray.parseArray(String.valueOf(var1));
+        new HashMap();
+
+        for (int var5 = 0; var5 < var3.size(); ++var5) {
+            JSONObject var6 = var3.getJSONObject(var5);
+            Object var7 = var6.get("paramName");
+            Object var8 = var6.get("paramValue");
+            if (oConvertUtils.isNotEmpty(var7) && oConvertUtils.isNotEmpty(var8)) {
+                var2 = var2.replace("${" + var7 + "}", String.valueOf(var8));
+                var2 = var2.replace("'${" + var7 + "}'", String.valueOf(var8));
+            }
+        }
+
+        return var2;
+    }
+
+    private String b(Object var1, String var2) {
+        JSONArray var3 = JSONArray.parseArray(String.valueOf(var1));
+        new HashMap();
+
+        for (int var5 = 0; var5 < var3.size(); ++var5) {
+            JSONObject var6 = var3.getJSONObject(var5);
+            Object var7 = var6.get("paramName");
+            Object var8 = var6.get("paramValue");
+            if (oConvertUtils.isNotEmpty(var7) && oConvertUtils.isNotEmpty(var8)) {
+                var2 = var2.replace("${" + var7 + "}", String.valueOf(var8));
+                var2 = var2.replace("'${" + var7 + "}'", String.valueOf(var8));
+            }
+        }
+
+        return var2;
+    }
+
+    public Result addDataSource(JmReportDataSource dataSource, HttpServletRequest request) {
+        String var3 = this.jimuTokenClient.getUsername(request);
+        ApiAssert.isNotEmpty("未实现JmReportTokenServiceI", var3);
+        String var4 = DesUtils.decode(dataSource.getDbPassword());
+        dataSource.setDbPassword("@JimuReport" + var4);
+        dataSource.setCreateBy(var3);
+        dataSource.setCreateTime(new Date());
+        dataSource.setConnectTimes(0);
+        this.saveDbSource(dataSource);
+        JmreportDataSourceCachePool.deleteCacheDataSource(dataSource.getId());
+        return Result.OK("操作成功!", true);
+    }
+
+    public List<Map<String, Object>> queryTableName(String key, String tableName) {
+        ArrayList var3 = new ArrayList();
+        List var4 = this.loadDataSourceTable(key);
+        if (oConvertUtils.isEmpty(tableName)) {
+            return var4;
+        } else {
+            Pattern var5 = Pattern.compile(tableName.toLowerCase());
+            Iterator var6 = var4.iterator();
+
+            while (var6.hasNext()) {
+                Map var7 = (Map) var6.next();
+                Object var8 = new HashMap();
+                String var9 = String.valueOf(var7.get("Name"));
+                Matcher var10 = var5.matcher(var9.toLowerCase());
+                if (var10.find()) {
+                    var8 = var7;
+                    var7.put("Name", var7.get("Name"));
+                }
+
+                if (((Map) var8).size() > 0 && null != var8) {
+                    var3.add(var8);
+                }
+            }
+
+            return var3;
+        }
+    }
+
+    public void updateById(JmReportDb reportDb) {
+        this.reportDbDao.update(reportDb);
+    }
+
+    public JmReportDb getById(String apiSelectId) {
+        return this.reportDbDao.get(apiSelectId);
+    }
+
+    public int getCount(String reportId, String code) {
+        return this.reportDbDao.getCount(reportId, code);
+    }
+
+    public List<JmReportDb> getListReportDb(String reportId) {
+        return this.reportDbDao.selectList(reportId);
+    }
+
+    public void a(JmReportDb var1) {
+        if (oConvertUtils.isNotEmpty(var1.getId())) {
+            this.reportDbDao.update(var1);
+        } else {
+            var1.setId(String.valueOf(SnowflakeIdWorker.generateId()));
+            this.reportDbDao.insert(var1);
+        }
+
+    }
+}