From cb4df5a1c9cda76e828fa202990df33be0735105 Mon Sep 17 00:00:00 2001
From: 许鹏程 <1821349743@qq.com>
Date: 星期四, 29 六月 2023 09:32:34 +0800
Subject: [PATCH] poi、easyexcel、poi-tl升级 ,合并空调中的报表、数据源模块

---
 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