Procházet zdrojové kódy

河南郸城方案库tags模糊查询data值sql逻辑

1037015548@qq.com před 11 měsíci
rodič
revize
85677c3a10

+ 26 - 1
src/main/java/com/shkpr/service/aimodelpower/jsonbean/woDispatchDatabase/JPDispatchDatabaseInfoSS.java

@@ -1,6 +1,7 @@
 package com.shkpr.service.aimodelpower.jsonbean.woDispatchDatabase;
 
 import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.global.base.log.LogLevelFlag;
 import com.global.base.log.LogPrintMgr;
 import com.shkpr.service.aimodelpower.commtools.TimeTool;
@@ -114,6 +115,18 @@ public class JPDispatchDatabaseInfoSS extends JPPageLO {
                 return false;
             }
         }
+        if(!StringUtils.isEmpty(tags)){
+            //TODO 说明传递了气温范围数组
+            try {
+                JSONArray jsonArray = JSONArray.parseArray(tags);
+                if(jsonArray==null||jsonArray.size()<1){
+                    return false;
+                }
+            }catch(Exception ex){
+                //TODO 说明异常则返回false
+                return false;
+            }
+        }
         return true;
     }
 
@@ -123,7 +136,19 @@ public class JPDispatchDatabaseInfoSS extends JPPageLO {
             str.append(" OR database_name like '%" + this.databaseName + "%' ");
         }
         if (!StringUtils.isEmpty(this.tags)) {
-            str.append(" OR tags like '%" + this.tags + "%' ");
+            JSONArray tagsArray = JSONArray.parseArray(tags);
+            int index = 1;
+            for (Object jo: tagsArray) {
+                str.append("OR EXISTS ( " +
+                        "        SELECT " +
+                        "            1 " +
+                        "        FROM " +
+                        "            jsonb_array_elements(tags::jsonb) AS elem " +
+                        "        WHERE " +
+                        "            elem->>'data' LIKE '%"+jo.toString()+"%' " +
+                        "    ) ");
+                index++;
+            }
         }
         if (!StringUtils.isEmpty(this.weather)) {
             str.append(" OR weather like '%" + this.weather + "%' ");