From a2a2fa23117035c45c1792584f6a45ade4574dc4 Mon Sep 17 00:00:00 2001
From: AprilWind <2100166581@qq.com>
Date: 星期五, 19 七月 2024 15:29:38 +0800
Subject: [PATCH] update 优化查询数据库列表

---
 ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/service/GenTableServiceImpl.java |   70 ++++++++++++++++++++++++++--------
 1 files changed, 53 insertions(+), 17 deletions(-)

diff --git a/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/service/GenTableServiceImpl.java b/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/service/GenTableServiceImpl.java
index 77ef303..7e508f9 100644
--- a/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/service/GenTableServiceImpl.java
+++ b/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/service/GenTableServiceImpl.java
@@ -9,10 +9,12 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.anyline.proxy.ServiceProxy;
 import org.apache.velocity.Template;
 import org.apache.velocity.VelocityContext;
 import org.apache.velocity.app.Velocity;
@@ -41,11 +43,7 @@
 import java.io.IOException;
 import java.io.StringWriter;
 import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipOutputStream;
 
@@ -54,7 +52,6 @@
  *
  * @author Lion Li
  */
-// @DS("#header.datasource")
 @Slf4j
 @RequiredArgsConstructor
 @Service
@@ -100,7 +97,7 @@
         Map<String, Object> params = genTable.getParams();
         QueryWrapper<GenTable> wrapper = Wrappers.query();
         wrapper
-            .eq(StringUtils.isNotEmpty(genTable.getDataName()),"data_name", genTable.getDataName())
+            .eq(StringUtils.isNotEmpty(genTable.getDataName()), "data_name", genTable.getDataName())
             .like(StringUtils.isNotBlank(genTable.getTableName()), "lower(table_name)", StringUtils.lowerCase(genTable.getTableName()))
             .like(StringUtils.isNotBlank(genTable.getTableComment()), "lower(table_comment)", StringUtils.lowerCase(genTable.getTableComment()))
             .between(params.get("beginTime") != null && params.get("endTime") != null,
@@ -108,11 +105,52 @@
         return wrapper;
     }
 
+    /**
+     * 鏌ヨ鏁版嵁搴撳垪琛�
+     *
+     * @param genTable  鍖呭惈鏌ヨ鏉′欢鐨凣enTable瀵硅薄
+     * @param pageQuery 鍖呭惈鍒嗛〉淇℃伅鐨凱ageQuery瀵硅薄
+     * @return 鍖呭惈鍒嗛〉缁撴灉鐨凾ableDataInfo瀵硅薄
+     */
     @DS("#genTable.dataName")
     @Override
     public TableDataInfo<GenTable> selectPageDbTableList(GenTable genTable, PageQuery pageQuery) {
-        genTable.getParams().put("genTableNames",baseMapper.selectTableNameList(genTable.getDataName()));
-        Page<GenTable> page = baseMapper.selectPageDbTableList(pageQuery.build(), genTable);
+        // 鑾峰彇鏌ヨ鏉′欢
+        String tableName = genTable.getTableName();
+        String tableComment = genTable.getTableComment();
+        // 鑾峰彇鍒嗛〉鍙傛暟
+        Integer pageNum = pageQuery.getPageNum();
+        Integer pageSize = pageQuery.getPageSize();
+
+        // 杩囨护骞惰浆鎹㈣〃鏍兼暟鎹�
+        List<GenTable> tables = ServiceProxy.metadata().tables().values().stream()
+            .filter(x -> {
+                boolean nameMatches = true;
+                boolean commentMatches = true;
+                // 杩涜琛ㄥ悕绉扮殑妯$硦鏌ヨ
+                if (StringUtils.isNotBlank(tableName)) {
+                    nameMatches = StringUtils.containsIgnoreCase(x.getName(), tableName);
+                }
+                // 杩涜琛ㄦ弿杩扮殑妯$硦鏌ヨ
+                if (StringUtils.isNotBlank(tableComment)) {
+                    commentMatches = StringUtils.containsIgnoreCase(x.getComment(), tableComment);
+                }
+                // 鍚屾椂鍖归厤鍚嶇О鍜屾弿杩�
+                return nameMatches && commentMatches;
+            })
+            .map(x -> {
+                GenTable gen = new GenTable();
+                gen.setTableName(x.getName());
+                gen.setTableComment(x.getComment());
+                gen.setCreateTime(x.getCreateTime());
+                gen.setUpdateTime(x.getUpdateTime());
+                return gen;
+            }).toList();
+
+        // 鍒涘缓鍒嗛〉瀵硅薄锛屽苟璁剧疆鎬昏褰曟暟
+        IPage<GenTable> page = new Page<>(pageNum, pageSize, tables.size());
+        // 浣跨敤CollUtil杩涜鍒嗛〉锛屽苟璁剧疆鍒嗛〉璁板綍
+        page.setRecords(CollUtil.page(pageNum - 1, pageSize, tables));
         return TableDataInfo.build(page);
     }
 
@@ -120,7 +158,7 @@
      * 鏌ヨ鎹簱鍒楄〃
      *
      * @param tableNames 琛ㄥ悕绉扮粍
-     * @param dataName
+     * @param dataName   鏁版嵁婧愬悕绉�
      * @return 鏁版嵁搴撹〃闆嗗悎
      */
     @DS("#dataName")
@@ -143,7 +181,6 @@
      * 淇敼涓氬姟
      *
      * @param genTable 涓氬姟淇℃伅
-     * @return 缁撴灉
      */
     @Transactional(rollbackFor = Exception.class)
     @Override
@@ -162,13 +199,12 @@
      * 鍒犻櫎涓氬姟瀵硅薄
      *
      * @param tableIds 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
      */
     @Transactional(rollbackFor = Exception.class)
     @Override
     public void deleteGenTableByIds(Long[] tableIds) {
         List<Long> ids = Arrays.asList(tableIds);
-        baseMapper.deleteBatchIds(ids);
+        baseMapper.deleteByIds(ids);
         genTableColumnMapper.delete(new LambdaQueryWrapper<GenTableColumn>().in(GenTableColumn::getTableId, ids));
     }
 
@@ -176,16 +212,16 @@
      * 瀵煎叆琛ㄧ粨鏋�
      *
      * @param tableList 瀵煎叆琛ㄥ垪琛�
-     * @param dataName
+     * @param dataName  鏁版嵁婧愬悕绉�
      */
     @DSTransactional
     @Override
     public void importGenTable(List<GenTable> tableList, String dataName) {
-        String operName = LoginHelper.getUsername();
+        Long operId = LoginHelper.getUserId();
         try {
             for (GenTable table : tableList) {
                 String tableName = table.getTableName();
-                GenUtils.initTable(table, operName);
+                GenUtils.initTable(table, operId);
                 table.setDataName(dataName);
                 int row = baseMapper.insert(table);
                 if (row > 0) {
@@ -335,7 +371,7 @@
         if (CollUtil.isNotEmpty(delColumns)) {
             List<Long> ids = StreamUtils.toList(delColumns, GenTableColumn::getColumnId);
             if (CollUtil.isNotEmpty(ids)) {
-                genTableColumnMapper.deleteBatchIds(ids);
+                genTableColumnMapper.deleteByIds(ids);
             }
         }
     }

--
Gitblit v1.9.3