From a4e74d2684146cb5e3790fddc6d077e52e71205e Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期三, 28 六月 2023 18:31:47 +0800
Subject: [PATCH] 发布管理的查询元数据信息时添加DOM和DEM的目录过滤功能

---
 src/main/java/com/lf/server/service/data/PublishService.java       |    5 ++
 src/main/java/com/lf/server/controller/data/PublishController.java |   36 ++++++++++++++++--
 src/main/java/com/lf/server/mapper/data/PublishMapper.java         |    9 ++++
 data/db_cx.sql                                                     |    2 +
 src/main/resources/mapper/data/PublishMapper.xml                   |   19 +++++++++
 5 files changed, 67 insertions(+), 4 deletions(-)

diff --git a/data/db_cx.sql b/data/db_cx.sql
index 4dfc794..006c9e6 100644
--- a/data/db_cx.sql
+++ b/data/db_cx.sql
@@ -84,6 +84,8 @@
 
 
 
+
+
 ---------------------------------------------------------------------------------------------- 
 -- update lf.sys_publish a set geom = ST_GeomFromText('POINT Z (31.231025 113.223529 12)') where id = 1;
 select id from lf.sys_layer where cn_name = '涓夌淮鍦拌川妯″瀷' and pid = (select id from lf.sys_layer where cn_name = '鍕樺療' order by pid limit 1);
diff --git a/src/main/java/com/lf/server/controller/data/PublishController.java b/src/main/java/com/lf/server/controller/data/PublishController.java
index b2ab5fb..1fc3076 100644
--- a/src/main/java/com/lf/server/controller/data/PublishController.java
+++ b/src/main/java/com/lf/server/controller/data/PublishController.java
@@ -56,7 +56,7 @@
                 return fail("鏁版嵁绫诲埆涓虹┖", null);
             }
 
-            String types = getType(type);
+            String types = getType(dircode, type);
             int count = publishService.selectMetasByCount(depcode, dircode, verid, types, name);
             if (count == 0) {
                 return success(0, null);
@@ -73,12 +73,12 @@
     /**
      * 鑾峰彇绫诲瀷
      */
-    private String getType(String type) throws Exception {
+    private String getType(String dircode, String type) throws Exception {
         switch (type) {
             case "DOM":
-                return "type in ('tif', 'tiff', 'img')";
+                return "type in ('tif', 'tiff', 'img')" + getFilter(dircode, type);
             case "DEM":
-                return "type in ('tif', 'tiff')";
+                return "type in ('tif', 'tiff')" + getFilter(dircode, type);
             case "MPT":
                 return "type = 'mpt'";
             case "3DML":
@@ -96,6 +96,34 @@
         }
     }
 
+    /**
+     * 鑾峰彇杩囨护鏉′欢
+     */
+    private String getFilter(String dircode, String type) {
+        dircode = StringHelper.isEmpty(dircode) ? "" : StringHelper.getRightLike(dircode);
+
+        List<String> list = null;
+        switch (type) {
+            case "DOM":
+                list = publishService.selectCodesForDir(dircode, 0);
+                break;
+            case "DEM":
+                list = publishService.selectCodesForDir(dircode, 1);
+                break;
+            default:
+                break;
+        }
+        if (null == list || list.isEmpty()) {
+            return "";
+        }
+
+        for (int i = 0, c = list.size(); i < c; i++) {
+            list.set(i, "'" + list.get(i) + "'");
+        }
+
+        return " and dircode not in (" + StringHelper.join(list, ",") + ")";
+    }
+
     @SysLog()
     @ApiOperation(value = "鍒嗛〉鏌ヨ骞惰繑鍥炶褰曟暟")
     @ApiImplicitParams({
diff --git a/src/main/java/com/lf/server/mapper/data/PublishMapper.java b/src/main/java/com/lf/server/mapper/data/PublishMapper.java
index 2801eb5..042f634 100644
--- a/src/main/java/com/lf/server/mapper/data/PublishMapper.java
+++ b/src/main/java/com/lf/server/mapper/data/PublishMapper.java
@@ -56,6 +56,15 @@
     public List<PublishEntity> selectByIds(String ids);
 
     /**
+     * 鏍规嵁鐩綍鏌ヨDOM鍜孌EM鐨勭紪鐮�
+     *
+     * @param dircode 鐩綍
+     * @param isDom   1-DOM锛�0-DEM
+     * @return
+     */
+    public List<String> selectCodesForDir(String dircode, Integer isDom);
+
+    /**
      * 鎻掑叆涓�鏉�
      *
      * @param entity
diff --git a/src/main/java/com/lf/server/service/data/PublishService.java b/src/main/java/com/lf/server/service/data/PublishService.java
index 03f592c..5462dc2 100644
--- a/src/main/java/com/lf/server/service/data/PublishService.java
+++ b/src/main/java/com/lf/server/service/data/PublishService.java
@@ -72,6 +72,11 @@
     }
 
     @Override
+    public List<String> selectCodesForDir(String dircode, Integer isDom) {
+        return publishMapper.selectCodesForDir(dircode, isDom);
+    }
+
+    @Override
     public Integer insert(PublishEntity entity) {
         return publishMapper.insert(entity);
     }
diff --git a/src/main/resources/mapper/show/PublishMapper.xml b/src/main/resources/mapper/data/PublishMapper.xml
similarity index 90%
rename from src/main/resources/mapper/show/PublishMapper.xml
rename to src/main/resources/mapper/data/PublishMapper.xml
index 70e49d6..17ce303 100644
--- a/src/main/resources/mapper/show/PublishMapper.xml
+++ b/src/main/resources/mapper/data/PublishMapper.xml
@@ -80,6 +80,25 @@
         select * from lf.sys_publish where id in (${ids}) order by id desc;
     </select>
 
+    <select id="selectCodesForDir" resultType="java.lang.String">
+        select code
+        from lf.sys_dir
+        <where>
+            <choose>
+                <when test="isDom > 0">
+                    name in ('DOM', '鏁板瓧姝e皠褰卞儚鍥�')
+                </when>
+                <otherwise>
+                    name in ('DEM', '鏁板瓧楂樼▼妯″瀷')
+                </otherwise>
+            </choose>
+            <if test="dircode != null">
+                and code like #{dircode}
+            </if>
+        </where>
+        order by code;
+    </select>
+
     <insert id="insert" parameterType="com.lf.server.entity.data.PublishEntity">
         insert into lf.sys_publish
         (regid,name,url,path,type,status,dirid,depid,min,max,json,create_user,create_time,bak)

--
Gitblit v1.9.3