From 07bc9f972be6765642339506e6e31bc23de75406 Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期三, 28 六月 2023 12:47:33 +0800
Subject: [PATCH] 资料馆的数据库分页查询添加根据资料类别过滤功能

---
 src/main/java/com/lf/server/service/all/BaseQueryService.java       |    8 ++--
 src/main/resources/mapper/all/BaseQueryMapper.xml                   |    6 +++
 src/main/java/com/lf/server/controller/all/BaseQueryController.java |   50 +++++++++++++++++++++++-
 data/db_cx.sql                                                      |    5 +-
 src/main/java/com/lf/server/mapper/all/BaseQueryMapper.java         |   20 +++++----
 5 files changed, 71 insertions(+), 18 deletions(-)

diff --git a/data/db_cx.sql b/data/db_cx.sql
index bfeb93d..4dfc794 100644
--- a/data/db_cx.sql
+++ b/data/db_cx.sql
@@ -66,8 +66,9 @@
 select id,uid,uname,pwd from lf.sys_user order by uid;
 select * from lf.sys_meta where type='osgb' order by id desc limit 20;
 
-
-
+select * from lf.sys_token where token ='c36e4f94-dfde-401e-9967-2c4a449f1300';
+select * from lf.sys_user where id=61;
+select bak,count(*) from lf.sys_dict group by bak order by bak;
 
 
 
diff --git a/src/main/java/com/lf/server/controller/all/BaseQueryController.java b/src/main/java/com/lf/server/controller/all/BaseQueryController.java
index bedbf9b..4c47876 100644
--- a/src/main/java/com/lf/server/controller/all/BaseQueryController.java
+++ b/src/main/java/com/lf/server/controller/all/BaseQueryController.java
@@ -424,11 +424,12 @@
             @ApiImplicitParam(name = "depcode", value = "鍗曚綅缂栫爜", dataType = "String", paramType = "query", example = "00"),
             @ApiImplicitParam(name = "dirs", value = "鐩綍缂栫爜", dataType = "String", paramType = "query", example = "00,01"),
             @ApiImplicitParam(name = "tab", value = "琛ㄥ悕", dataType = "String", paramType = "query", example = "dlg_"),
+            @ApiImplicitParam(name = "types", value = "绫诲埆", dataType = "String", paramType = "query", example = "娴嬬粯锛圗SV锛�"),
             @ApiImplicitParam(name = "hasGeom", value = "鍚湁Geom瀛楁", dataType = "Boolean", paramType = "query", example = "false"),
             @ApiImplicitParam(name = "pageSize", value = "姣忛〉鏉℃暟", dataType = "Integer", paramType = "query", example = "10"),
             @ApiImplicitParam(name = "pageIndex", value = "鍒嗛〉鏁帮紙浠�1寮�濮嬶級", dataType = "Integer", paramType = "query", example = "1")
     })
-    public ResponseMsg<Object> selectTabsByPage(String depcode, String dirs, String tab, Boolean hasGeom, Integer pageSize, Integer pageIndex) {
+    public ResponseMsg<Object> selectTabsByPage(String depcode, String dirs, String tab, String types, Boolean hasGeom, Integer pageSize, Integer pageIndex) {
         try {
             if (pageSize < 1 || pageIndex < 1) {
                 return fail("姣忛〉椤垫暟鎴栧垎椤垫暟灏忎簬1", null);
@@ -445,14 +446,15 @@
             if (dirs != null) {
                 filters += String.format(" and %s", dirs);
             }
+            String typesFilter = getTypesFilter(types);
 
             String field = null == hasGeom || !hasGeom ? "gid" : "geom";
-            int count = baseQueryService.selectTabsForCount(tab, field);
+            int count = baseQueryService.selectTabsForCount(tab, typesFilter, field);
             if (count == 0) {
                 return success(0, null);
             }
 
-            List<TabEntity> rs = baseQueryService.selectTabsByPage(tab, field, filters, pageSize, pageSize * (pageIndex - 1));
+            List<TabEntity> rs = baseQueryService.selectTabsByPage(tab, typesFilter, field, filters, pageSize, pageSize * (pageIndex - 1));
 
             return success(count, rs);
         } catch (Exception ex) {
@@ -460,6 +462,48 @@
         }
     }
 
+    /**
+     * 鑾峰彇绫诲埆杩囨护鏉′欢
+     */
+    private String getTypesFilter(String types) {
+        if (StringHelper.isEmpty(types)) {
+            return null;
+        }
+
+        List<String> list = new ArrayList<>();
+        for (String type : types.split(StaticData.COMMA)) {
+            switch (type) {
+                case "娴嬬粯锛圗SV锛�":
+                    list.add("bak like '宸ョ▼鏁版嵁/娴嬬粯%'");
+                    break;
+                case "鍕樺療锛圗GE锛�":
+                    list.add("bak like '宸ョ▼鏁版嵁/鍕樺療%'");
+                    break;
+                case "鍦扮伨锛圗GD锛�":
+                    list.add("bak like '宸ョ▼鏁版嵁/鍦扮伨%'");
+                    break;
+                case "娲炲簱锛圗GD锛�":
+                    list.add("bak like '宸ョ▼鏁版嵁/娲炲簱%'");
+                    break;
+                case "鍩虹娴嬬粯":
+                    list.add("bak like '鍩虹鏁版嵁/娴嬬粯%'");
+                    break;
+                case "鍩虹鍦扮伨":
+                    list.add("bak like '鍩虹鏁版嵁/鍦扮伨%'");
+                    break;
+                case "鍩虹鍕樺療":
+                    list.add("bak like '鍩虹鏁版嵁/鍕樺療%'");
+                    break;
+                case "鍚堣鏁版嵁":
+                case "绠$悊鏁版嵁":
+                default:
+                    break;
+            }
+        }
+
+        return list.isEmpty() ? null : StringHelper.join(list, " or ");
+    }
+
     @SysLog()
     @ApiOperation(value = "鏌ヨ瀛楁淇℃伅")
     @ApiImplicitParams({
diff --git a/src/main/java/com/lf/server/mapper/all/BaseQueryMapper.java b/src/main/java/com/lf/server/mapper/all/BaseQueryMapper.java
index 4b5f780..60a360a 100644
--- a/src/main/java/com/lf/server/mapper/all/BaseQueryMapper.java
+++ b/src/main/java/com/lf/server/mapper/all/BaseQueryMapper.java
@@ -37,23 +37,25 @@
     /**
      * 鏍规嵁琛ㄥ悕鏌ヨ璁板綍鏁�
      *
-     * @param tab   琛ㄥ悕
-     * @param field 瀛楁
+     * @param tab         琛ㄥ悕
+     * @param typesFilter 绫诲埆
+     * @param field       瀛楁
      * @return
      */
-    public Integer selectTabsForCount(String tab, String field);
+    public Integer selectTabsForCount(String tab, String typesFilter, String field);
 
     /**
      * 鏍规嵁琛ㄥ悕鍒嗛〉鏌ヨ
      *
-     * @param tab     琛ㄥ悕
-     * @param field   瀛楁
-     * @param filters 杩囨护鏉′欢
-     * @param limit   璁板綍鏁�
-     * @param offset  鍋忕Щ閲�
+     * @param tab         琛ㄥ悕
+     * @param typesFilter 绫诲埆
+     * @param field       瀛楁
+     * @param filters     杩囨护鏉′欢
+     * @param limit       璁板綍鏁�
+     * @param offset      鍋忕Щ閲�
      * @return
      */
-    public List<TabEntity> selectTabsByPage(String tab, String field, String filters, Integer limit, Integer offset);
+    public List<TabEntity> selectTabsByPage(String tab, String typesFilter, String field, String filters, Integer limit, Integer offset);
 
     /**
      * 鏌ヨ瀛楁淇℃伅
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 7564465..5b2a31e 100644
--- a/src/main/java/com/lf/server/service/all/BaseQueryService.java
+++ b/src/main/java/com/lf/server/service/all/BaseQueryService.java
@@ -265,17 +265,17 @@
     }
 
     @Override
-    public Integer selectTabsForCount(String tab, String field) {
+    public Integer selectTabsForCount(String tab, String typesFilter, String field) {
         tab = StringHelper.getLikeUpperStr(tab);
 
-        return baseQueryMapper.selectTabsForCount(tab, field);
+        return baseQueryMapper.selectTabsForCount(tab, typesFilter, field);
     }
 
     @Override
-    public List<TabEntity> selectTabsByPage(String tab, String field, String filters, Integer limit, Integer offset) {
+    public List<TabEntity> selectTabsByPage(String tab, String typesFilter, String field, String filters, Integer limit, Integer offset) {
         tab = StringHelper.getLikeUpperStr(tab);
 
-        return baseQueryMapper.selectTabsByPage(tab, field, filters, limit, offset);
+        return baseQueryMapper.selectTabsByPage(tab, typesFilter, field, filters, limit, offset);
     }
 
     @Override
diff --git a/src/main/resources/mapper/all/BaseQueryMapper.xml b/src/main/resources/mapper/all/BaseQueryMapper.xml
index 6b11f5d..b64a4c6 100644
--- a/src/main/resources/mapper/all/BaseQueryMapper.xml
+++ b/src/main/resources/mapper/all/BaseQueryMapper.xml
@@ -28,6 +28,9 @@
             <if test="tab != null">
                 and upper(tab) like #{tab} or upper(tab_desc) like #{tab}
             </if>
+            <if test="typesFilter != null">
+                and (${typesFilter})
+            </if>
         </where>
     </select>
 
@@ -39,6 +42,9 @@
             <if test="tab != null">
                 and (upper(tab) like #{tab} or upper(tab_desc) like #{tab})
             </if>
+            <if test="typesFilter != null">
+                and (${typesFilter})
+            </if>
         </where>
         order by id
         limit #{limit} offset #{offset};

--
Gitblit v1.9.3