Эх сурвалжийг харах

代码提交 行权限 还未修改完成

pms 2 жил өмнө
parent
commit
8935fed175

+ 30 - 14
mainFactory/src/main/java/org/bfkj/utils/MyDbHelper.java

@@ -13,6 +13,7 @@ import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
+import java.util.stream.Collectors;
 
 public class MyDbHelper {
 
@@ -180,17 +181,18 @@ public class MyDbHelper {
         if (!event6Map.containsKey(tableName)) {
             event6Map.put(tableName, new ArrayList<>());
         }
+        String key = MapTools.jacksonObjToStr(updateParam);
         List<Object> tableUniqe = event6Map.get(tableName);
         if (isAdd) {
-            if (!tableUniqe.contains(updateParam)) {
+            if (!tableUniqe.contains(key)) {
                 isNew = true;
-                tableUniqe.add(updateParam);
+                tableUniqe.add(key);
             }
             if (tableUniqe.size() > 6000) {
                 tableUniqe.remove(0);
             }
         } else {
-            tableUniqe.remove(updateParam);
+            tableUniqe.remove(key);
         }
         return isNew;
     }
@@ -200,7 +202,9 @@ public class MyDbHelper {
         for (Map<String, Object> signParam : paramsList) {
             String eventStr = "2";
             if (updateEvent6Map(tableName, signParam.get("filter"), true)) { //不包含true
-                Map<String, Object> selectMap = generalProcess("0", null, "select 1 from " + tableName, null, paramsList, false, 1, 1);
+                Map<String, Object> selectMap = generalProcess("0", null, "select 1 from " + tableName, null, new ArrayList<>() {{
+                    add(signParam);
+                }}, false, 1, 1);
                 if (selectMap.get("code").equals("-1")) {
                     updateEvent6Map(tableName, signParam.get("filter"), false);
                     returnList.add(selectMap);
@@ -246,15 +250,20 @@ public class MyDbHelper {
             List<String> allPrimaryKey = new ArrayList<>();//初始化所有主键
             if (MapTools.isBlank(tableName)) {//如果SQL不为空
                 if ("0".equals(event)) {//如果是查询则---应该只有复杂select
-                    Map<String, Object> tempAllColumn = getAllColumnBySql(sql);
-                    if (tempAllColumn.get("code").equals("-1")) {
-                        return tempAllColumn;
-                    }
-                    HashMap<String, List<String>> sqlMetaData = (HashMap<String, List<String>>) tempAllColumn.get("returnData");
-                    allColumn = sqlMetaData.get("allColumn"); // a表 col1  col2  b表 col3 col4
-                    List<String> tableNameList = sqlMetaData.get("tableList");
-                    if (Objects.nonNull(tableNameList) && tableNameList.size() == 1) {
-                        tableName = tableNameList.get(0);
+                    if (sql.startsWith("select 1 from")) { //??
+                        String[] sqlSplit = sql.trim().toLowerCase().split("\\s+");
+                        tableName = sqlSplit[3];
+                    } else {
+                        Map<String, Object> tempAllColumn = getAllColumnBySql(sql);
+                        if (tempAllColumn.get("code").equals("-1")) {
+                            return tempAllColumn;
+                        }
+                        HashMap<String, List<String>> sqlMetaData = (HashMap<String, List<String>>) tempAllColumn.get("returnData");
+                        allColumn = sqlMetaData.get("allColumn"); // a表 col1  col2  b表 col3 col4
+                        List<String> tableNameList = sqlMetaData.get("tableList");
+                        if (Objects.nonNull(tableNameList) && tableNameList.size() == 1) {
+                            tableName = tableNameList.get(0);
+                        }
                     }
                 } else {//否则---此时只有简单的insert update delete,或者根本不存在
                     tableName = getTableBySql(sql);//从SQL语句中获取表名(使用空格进行分组,循环分组,update后不为空格的第一个就是表名)
@@ -394,6 +403,9 @@ public class MyDbHelper {
                 }
             }
         }
+        List<String> tempAllColumn = new ArrayList<>();
+        tempAllColumn.addAll(allColumn);
+        tempAllColumn.addAll(allPrimaryKey);
 
         allColumn.removeAll(allPrimaryKey);
         Map<String, Map<String, Object>> sqlMap = new HashMap<>();
@@ -431,7 +443,10 @@ public class MyDbHelper {
                 if (tempObj instanceof Map || tempObj instanceof List) {
                     if (tempObj instanceof Map) {
                         if (((Map<String, Object>) tempObj).containsKey("left")) {
-                            filterMapList.add((Map<String, Object>) tempObj);
+                            Map<String, Object> tempMap = (Map<String, Object>) tempObj;
+                            if (tempAllColumn.contains(tempMap.get("column").toString())) {
+                                filterMapList.add(tempMap);
+                            }
                         } else {
                             authoParams((Map<String, Object>) tempObj, filterMapList, allColumn, allPrimaryKey);
                         }
@@ -441,6 +456,7 @@ public class MyDbHelper {
                             if (firstObj instanceof Map<?, ?>) {
                                 if (((Map<?, ?>) firstObj).containsKey("left")) {
                                     filterMapList = (List<Map<String, Object>>) tempObj;
+                                    filterMapList = filterMapList.stream().filter(map -> tempAllColumn.contains(map.get("column").toString())).collect(Collectors.toList());
                                 } else {
                                     authoParams((Map<String, Object>) firstObj, filterMapList, allColumn, allPrimaryKey);
                                 }