Przeglądaj źródła

fix: 数据查询

liuc 7 miesięcy temu
rodzic
commit
6576e4be3c

+ 21 - 2
bound-link-api/sa-flow-common/src/main/java/com/cloud/sa/flow/commom/service/setting/StSettingService.java

@@ -100,6 +100,8 @@ public class StSettingService {
 
     private List<Map<String, String>> getQuerySData(StQueryMain singleQueryMain, String query, String queryMapField) {
         String sql = sqlGenerator.getQueryConcatSql(singleQueryMain.getQuerySql().replaceAll("\\s+$", "").replaceAll(";+$", ""), query);
+        //将所有连续的空白字符替换为一个空格
+        sql = sql.replaceAll("\\s{2,}", " ");
         if (StString.isNotEmpty(queryMapField)) {
             JSONArray jsonArray = JSONArray.parseArray(queryMapField);
             for (Object item : jsonArray) {
@@ -111,9 +113,26 @@ public class StSettingService {
                     value = StUserInfo.getUserCode();
                 }
                 if (value == null) {
-                    value = "";
+                    //value可能非必填,需要进行设置
+                    String fieldCode = key.replace("$", "").replace("{", "").replace("}", "");
+                    if (sql.contains("'%" + key + "%'") || sql.contains("'" + key + "%'") || sql.contains("'%" + key + "'")) {
+                        //like的情况
+                        value = "";
+                        sql = sql.replace(key, value);
+                    } else {
+                        if (sql.contains("'" + key + "'")) {
+                            key = "'" + key + "'";
+                        }
+                        sql = sql.replace(key, fieldCode);
+                        sql = sql.replace(fieldCode + "=" + fieldCode, "1=1")
+                                .replace(fieldCode + " = " + fieldCode, "1=1")
+                                .replace(fieldCode + " =" + fieldCode, "1=1")
+                                .replace(fieldCode + "= " + fieldCode, "1=1");
+                    }
+                } else {
+                    //有值,直接替换
+                    sql = sql.replace(key, value);
                 }
-                sql = sql.replace(key, value);
             }
         }
         return commonMapper.getQueryDataList(sql);