From 34a130282a3ff8fb0b9afdb4e5b986fb5178625f Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期六, 29 十月 2022 10:22:52 +0800
Subject: [PATCH] 1

---
 src/main/java/com/lf/server/service/all/BaseQueryService.java |   71 +++++++++++++++++++++++++++++++++++
 1 files changed, 70 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/lf/server/service/all/BaseQueryService.java b/src/main/java/com/lf/server/service/all/BaseQueryService.java
index b009264..b4ca5e9 100644
--- a/src/main/java/com/lf/server/service/all/BaseQueryService.java
+++ b/src/main/java/com/lf/server/service/all/BaseQueryService.java
@@ -6,6 +6,7 @@
 import com.lf.server.helper.ClassHelper;
 import com.lf.server.helper.StringHelper;
 import com.lf.server.mapper.all.GeomBaseMapper;
+import org.omg.CosNaming.NamingContextExtPackage.StringNameHelper;
 import org.springframework.stereotype.Service;
 
 /**
@@ -53,6 +54,74 @@
     }
 
     /**
+     * @param wrapper
+     * @param filter
+     */
+    public void addFilterWrapper(QueryWrapper wrapper, String filter) {
+        if (StringHelper.isEmpty(filter)) {
+            return;
+        }
+
+        String[] strs = filter.trim().split(" (?i)and ");
+        for (String str : strs) {
+            int start = str.indexOf(" ");
+            if (start == -1) {
+                continue;
+            }
+            int end = str.indexOf(" ", start + 1);
+            if (end == -1) {
+                continue;
+            }
+
+            String field = str.substring(0, start).trim();
+            String express = str.substring(start + 1, end).trim().toLowerCase();
+            String value = str.substring(end + 1).trim();
+
+            addWrapper(wrapper, field, express, getObjectVal(value));
+        }
+    }
+
+    private Object getObjectVal(String value) {
+        if (StringHelper.isInteger(value)) {
+            return Long.parseLong(value);
+        }
+
+        if (StringHelper.isNumeric(value)) {
+            return Double.parseDouble(value);
+        }
+
+        return value;
+    }
+
+    private void addWrapper(QueryWrapper wrapper, String field, String express, Object value) {
+        switch (express) {
+            case "like":
+                wrapper.like(field, value);
+                break;
+            case ">":
+                wrapper.gt(field, value);
+                break;
+            case ">=":
+                wrapper.ge(field, value);
+                break;
+            case "<>":
+                wrapper.ne(field, value);
+                break;
+            case "=":
+                wrapper.eq(field, value);
+                break;
+            case "<":
+                wrapper.lt(field, value);
+                break;
+            case "<=":
+                wrapper.le(field, value);
+                break;
+            default:
+                break;
+        }
+    }
+
+    /**
      * 娣诲姞绌洪棿鏌ヨ鏉′欢
      *
      * @param baseMapper 鐖禡apper
@@ -61,7 +130,7 @@
      * @param srid       绌洪棿寮曠敤鏍囪瘑绗�
      * @throws Exception 寮傚父
      */
-    public void addGeomWrapper(BaseMapper baseMapper, QueryWrapper<Object> wrapper, String wkt, Integer srid) throws Exception {
+    public void addGeomWrapper(BaseMapper baseMapper, QueryWrapper wrapper, String wkt, Integer srid) throws Exception {
         if (baseMapper instanceof GeomBaseMapper && !StringHelper.isEmpty(wkt) && srid != null) {
             wkt = AesHelper.decrypt(wkt);
             wrapper.apply(String.format("ST_Intersects(geom, ST_PolygonFromText('%s', %d))", wkt, srid));

--
Gitblit v1.9.3