From adaa62aade124c5180bfa1cbb17a671f7f407325 Mon Sep 17 00:00:00 2001
From: 杜洪波 <1074825718@qq.com>
Date: 星期二, 08 七月 2025 18:15:55 +0800
Subject: [PATCH] 图表保存mysql关键字处理
---
src/main/java/com/product/server/report/service/ReportDatasourceService.java | 88 ++++++++++++++++++++++---------------------
1 files changed, 45 insertions(+), 43 deletions(-)
diff --git a/src/main/java/com/product/server/report/service/ReportDatasourceService.java b/src/main/java/com/product/server/report/service/ReportDatasourceService.java
index 88c2149..3c0490e 100644
--- a/src/main/java/com/product/server/report/service/ReportDatasourceService.java
+++ b/src/main/java/com/product/server/report/service/ReportDatasourceService.java
@@ -1,18 +1,16 @@
package com.product.server.report.service;
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.ResultSetMetaData;
-import java.sql.SQLException;
+import java.sql.*;
import java.util.*;
+import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
-import com.product.core.entity.RequestParameterEntity;
import com.product.core.service.support.QueryFilterService;
+import com.product.server.report.util.QuerySqlParseUtil;
import com.product.util.BaseUtil;
import com.product.util.CallBack;
import org.springframework.beans.factory.annotation.Autowired;
@@ -148,7 +146,7 @@
/**
* sql瑙f瀽涓庨獙璇�
*
- * @param sqlText
+ * @param fse
* @return
*/
public DataTableEntity sqlVerify(FieldSetEntity fse) throws SQLException {
@@ -266,47 +264,51 @@
sql = sql.replace(ternaryOperator, "");
}
}
- sql = sql.replaceAll("\\[\\[((?!\\[).)+\\]\\]", "");
+ sql = sql.replaceAll("\\[\\[((?!\\[).)+\\]\\]", "")
+ .replaceAll("and\\s+1\\s*=\\s*1", "")
+ .replaceAll("\\{=.+=\\}", "")
+ .replaceAll("(\\t*\\n){2,}", "\n");
+ sql = QuerySqlParseUtil.parseSplitTableSql(baseDao, sql, true);
+ SpringMVCContextHolder.getSystemLogger().info(sql);
//涓庢暟鎹簱鐨勮繛鎺�
- PreparedStatement ps = null;
- Connection con = null;
- con = ConnectionManager.getConnection();
- sql = sql.replaceAll("and\\s+1\\s*=\\s*1", "");
- ps = con.prepareStatement(sql);
- //缁撴灉闆嗗厓鏁版嵁
- ResultSetMetaData rsmd = ps.getMetaData();
- //琛ㄥ垪鏁�
- int size = rsmd.getColumnCount();
- Set<String> fieldNameSet = Sets.newHashSet();
- for (int i = 1; i <= size; i++) {
- FieldSetEntity fieldSetEntity = new FieldSetEntity();
- FieldMetaEntity f = new FieldMetaEntity();
- f.setTableName(new Object[]{CmnConst.PRODUCT_SYS_DATAMODEL_FIELD});
- fieldSetEntity.setMeta(f);
- fieldSetEntity.setValue(CmnConst.TABLE_NAME, rsmd.getTableName(i));//鑾峰彇琛ㄥ悕
- //瀛楁鍚嶆垨鍒悕
- fieldSetEntity.setValue(CmnConst.FIELD_NAME, rsmd.getColumnLabel(i));
- //瀛楁绫诲瀷
- fieldSetEntity.setValue(CmnConst.FIELD_FORMAT, "string");
- // 鏌ヨ绫诲瀷
- fieldSetEntity.setValue(CmnConst.SEARCH_TYPE, -1);
- //鑾峰彇鎸囧畾鍒楃殑鎸囧畾鍒楀ぇ灏�
+ try (Connection con = ConnectionManager.getConnection();
+ PreparedStatement ps = con.prepareStatement(sql);
+ ResultSet rs = ps.executeQuery()) {
+ //缁撴灉闆嗗厓鏁版嵁
+ ResultSetMetaData rsmd = rs.getMetaData();
+ //琛ㄥ垪鏁�
+ int size = rsmd.getColumnCount();
+ Set<String> fieldNameSet = Sets.newHashSet();
+ for (int i = 1; i <= size; i++) {
+ FieldSetEntity fieldSetEntity = new FieldSetEntity();
+ FieldMetaEntity f = new FieldMetaEntity();
+ f.setTableName(new Object[]{CmnConst.PRODUCT_SYS_DATAMODEL_FIELD});
+ fieldSetEntity.setMeta(f);
+ fieldSetEntity.setValue(CmnConst.TABLE_NAME, rsmd.getTableName(i));//鑾峰彇琛ㄥ悕
+ //瀛楁鍚嶆垨鍒悕
+ fieldSetEntity.setValue(CmnConst.FIELD_NAME, rsmd.getColumnLabel(i));
+ //瀛楁绫诲瀷
+ fieldSetEntity.setValue(CmnConst.FIELD_FORMAT, "string");
+ // 鏌ヨ绫诲瀷
+ fieldSetEntity.setValue(CmnConst.SEARCH_TYPE, -1);
+ //鑾峰彇鎸囧畾鍒楃殑鎸囧畾鍒楀ぇ灏�
// fieldSetEntity.setValue(CmnConst.FIELD_LENGTH, rsmd.getPrecision(i));
- dataTableEntity.addFieldSetEntity(fieldSetEntity);
- fieldNameSet.add(fieldSetEntity.getString(CmnConst.FIELD_NAME));
- }
- for (String columnName : customColumnName) {
- if (fieldNameSet.contains(columnName)) {
- continue;
+ dataTableEntity.addFieldSetEntity(fieldSetEntity);
+ fieldNameSet.add(fieldSetEntity.getString(CmnConst.FIELD_NAME));
}
- FieldSetEntity fs = new FieldSetEntity();
- fs.setTableName(CmnConst.PRODUCT_SYS_DATAMODEL_FIELD);
- fs.setValue(CmnConst.FIELD_NAME, columnName);
- fs.setValue(CmnConst.FIELD_FORMAT, "string");
- fs.setValue(CmnConst.SEARCH_TYPE, -1);
- dataTableEntity.addFieldSetEntity(fs);
+ for (String columnName : customColumnName) {
+ if (fieldNameSet.contains(columnName)) {
+ continue;
+ }
+ FieldSetEntity fs = new FieldSetEntity();
+ fs.setTableName(CmnConst.PRODUCT_SYS_DATAMODEL_FIELD);
+ fs.setValue(CmnConst.FIELD_NAME, columnName);
+ fs.setValue(CmnConst.FIELD_FORMAT, "string");
+ fs.setValue(CmnConst.SEARCH_TYPE, -1);
+ dataTableEntity.addFieldSetEntity(fs);
+ }
+ return dataTableEntity;
}
- return dataTableEntity;
}
/**
--
Gitblit v1.9.2