From 89f9b7d46346da4f9263d27f6ce20032b9458bd5 Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期五, 25 八月 2023 11:10:56 +0800
Subject: [PATCH] 元数据管理添加空间过滤条件

---
 src/main/java/com/moon/server/controller/data/MetaController.java |    8 +++++---
 src/main/java/com/moon/server/mapper/data/MetaMapper.java         |    6 ++++--
 src/main/java/com/moon/server/service/data/MetaService.java       |   21 +++++++++++++++++----
 src/main/resources/mapper/data/MetaMapper.xml                     |    6 ++++++
 4 files changed, 32 insertions(+), 9 deletions(-)

diff --git a/src/main/java/com/moon/server/controller/data/MetaController.java b/src/main/java/com/moon/server/controller/data/MetaController.java
index e93d318..9de1c7b 100644
--- a/src/main/java/com/moon/server/controller/data/MetaController.java
+++ b/src/main/java/com/moon/server/controller/data/MetaController.java
@@ -76,22 +76,24 @@
             @ApiImplicitParam(name = "dircode", value = "鐩綍缂栫爜", dataType = "String", paramType = "query", example = "00"),
             @ApiImplicitParam(name = "verid", value = "鐗堟湰ID", dataType = "Integer", paramType = "query", example = "0"),
             @ApiImplicitParam(name = "name", value = "鍚嶇О", dataType = "String", paramType = "query", example = ""),
+            @ApiImplicitParam(name = "wkt", value = "WKT瀛楃涓�", dataType = "String", paramType = "query", example = "gAPpDbZ53XfoQfvT8dj/uhBWX5os8kBJQ1LrNvH3VX7byFQdUJMPiEr8Fkj0q2i1pw+L8KFrvR0MLXq2xaO21nlQQXmEPofJxpDQZwEWUIFZsToXo1kLRD3t6WQezxWB8YTzXHM20Ba73x/ZuuezVhOFOq1U8HKf1dXQdv7gBzEB6fWMmFDc3FuH8GDDHv3LfT86Gio9VgMO6ohlrUdf3ZKtTHeLSuzGF4t0RZuX97YBNo25IIzpeTfRTXBxfdxA"),
             @ApiImplicitParam(name = "pageSize", value = "姣忛〉鏉℃暟", dataType = "Integer", paramType = "query", example = "10"),
             @ApiImplicitParam(name = "pageIndex", value = "鍒嗛〉鏁帮紙浠�1寮�濮嬶級", dataType = "Integer", paramType = "query", example = "1")
     })
     @GetMapping(value = "/selectByPageAndCount")
-    public ResponseMsg<List<MetaEntity>> selectByPageAndCount(String depcode, String dircode, Integer verid, String name, Integer pageSize, Integer pageIndex) {
+    public ResponseMsg<List<MetaEntity>> selectByPageAndCount(String depcode, String dircode, Integer verid, String name, String wkt, Integer pageSize, Integer pageIndex) {
         try {
             if (pageSize < 1 || pageIndex < 1) {
                 return fail("姣忛〉椤垫暟鎴栧垎椤垫暟灏忎簬1", null);
             }
+            wkt = metaService.getGeometryFilter(wkt);
 
-            int count = metaService.selectCount(depcode, dircode, verid, name);
+            int count = metaService.selectCount(depcode, dircode, verid, name, wkt);
             if (count == 0) {
                 return success(0, null);
             }
 
-            List<MetaEntity> rs = metaService.selectByPage(depcode, dircode, verid, name, pageSize, pageSize * (pageIndex - 1));
+            List<MetaEntity> rs = metaService.selectByPage(depcode, dircode, verid, name, wkt, pageSize, pageSize * (pageIndex - 1));
 
             return success(count, rs);
         } catch (Exception ex) {
diff --git a/src/main/java/com/moon/server/mapper/data/MetaMapper.java b/src/main/java/com/moon/server/mapper/data/MetaMapper.java
index 90a4dcc..70ab170 100644
--- a/src/main/java/com/moon/server/mapper/data/MetaMapper.java
+++ b/src/main/java/com/moon/server/mapper/data/MetaMapper.java
@@ -20,9 +20,10 @@
      * @param dircode 鐩綍缂栫爜
      * @param verid   鐗堟湰ID
      * @param name    鍚嶇О
+     * @param wkt     WKT
      * @return 璁板綍鏁�
      */
-    public Integer selectCount(String depcode, String dircode, Integer verid, String name);
+    public Integer selectCount(String depcode, String dircode, Integer verid, String name, String wkt);
 
     /**
      * 鍒嗛〉鏌ヨ
@@ -31,11 +32,12 @@
      * @param dircode 鐩綍缂栫爜
      * @param verid   鐗堟湰ID
      * @param name    鍚嶇О
+     * @param wkt     WKT
      * @param limit   璁板綍鏁�
      * @param offset  鍋忕Щ閲�
      * @return 鍒楄〃
      */
-    public List<MetaEntity> selectByPage(String depcode, String dircode, Integer verid, String name, Integer limit, Integer offset);
+    public List<MetaEntity> selectByPage(String depcode, String dircode, Integer verid, String name, String wkt, Integer limit, Integer offset);
 
     /**
      * 鏍规嵁GUID鏌ヨGDB
diff --git a/src/main/java/com/moon/server/service/data/MetaService.java b/src/main/java/com/moon/server/service/data/MetaService.java
index bf25963..0a81ed8 100644
--- a/src/main/java/com/moon/server/service/data/MetaService.java
+++ b/src/main/java/com/moon/server/service/data/MetaService.java
@@ -48,21 +48,21 @@
     private final static Log log = LogFactory.getLog(MetaService.class);
 
     @Override
-    public Integer selectCount(String depcode, String dircode, Integer verid, String name) {
+    public Integer selectCount(String depcode, String dircode, Integer verid, String name, String wkt) {
         depcode = StringHelper.getRightLike(depcode);
         dircode = StringHelper.getRightLike(dircode);
         name = StringHelper.getLikeUpperStr(name);
 
-        return metaMapper.selectCount(depcode, dircode, verid, name);
+        return metaMapper.selectCount(depcode, dircode, verid, name, wkt);
     }
 
     @Override
-    public List<MetaEntity> selectByPage(String depcode, String dircode, Integer verid, String name, Integer limit, Integer offset) {
+    public List<MetaEntity> selectByPage(String depcode, String dircode, Integer verid, String name, String wkt, Integer limit, Integer offset) {
         depcode = StringHelper.getRightLike(depcode);
         dircode = StringHelper.getRightLike(dircode);
         name = StringHelper.getLikeUpperStr(name);
 
-        return metaMapper.selectByPage(depcode, dircode, verid, name, limit, offset);
+        return metaMapper.selectByPage(depcode, dircode, verid, name, wkt, limit, offset);
     }
 
     @Override
@@ -642,4 +642,17 @@
 
         metaDownService.inserts(list);
     }
+
+    /**
+     * 鑾峰彇绌洪棿杩囨护
+     */
+    public String getGeometryFilter(String wkt) throws Exception {
+        if (StringHelper.isEmpty(wkt)) {
+            return null;
+        }
+
+        wkt = AesHelper.decrypt(wkt);
+
+        return String.format("ST_Intersects(ST_GeomFromText('%s', %d), geom)", wkt, StaticData.I104903);
+    }
 }
diff --git a/src/main/resources/mapper/data/MetaMapper.xml b/src/main/resources/mapper/data/MetaMapper.xml
index c70b3eb..2bb5f6f 100644
--- a/src/main/resources/mapper/data/MetaMapper.xml
+++ b/src/main/resources/mapper/data/MetaMapper.xml
@@ -17,6 +17,9 @@
             <if test="name != null">
                 and upper(name) like #{name}
             </if>
+            <if test="wkt != null">
+                and ${wkt}
+            </if>
         </where>
     </select>
 
@@ -37,6 +40,9 @@
             <if test="name != null">
                 and upper(name) like #{name}
             </if>
+            <if test="wkt != null">
+                and ${wkt}
+            </if>
         </where>
         order by id desc
         limit #{limit} offset #{offset}

--
Gitblit v1.9.3