From 2404866396fb79b7518a4be618ab068450345fca Mon Sep 17 00:00:00 2001
From: RuoYi <yzz_ivy@163.com>
Date: 星期五, 18 九月 2020 10:36:41 +0800
Subject: [PATCH] 代码生成支持同步数据库

---
 src/main/java/com/ruoyi/project/tool/gen/mapper/GenTableColumnMapper.java |   10 ++++
 src/main/java/com/ruoyi/project/tool/gen/controller/GenController.java    |   14 ++++++
 src/main/java/com/ruoyi/project/tool/gen/service/IGenTableService.java    |    7 +++
 src/main/java/com/ruoyi/project/tool/gen/service/GenTableServiceImpl.java |   33 ++++++++++++++++
 src/main/resources/mybatis/tool/GenTableColumnMapper.xml                  |    7 +++
 src/main/resources/mybatis/tool/GenTableMapper.xml                        |    2 
 6 files changed, 69 insertions(+), 4 deletions(-)

diff --git a/src/main/java/com/ruoyi/project/tool/gen/controller/GenController.java b/src/main/java/com/ruoyi/project/tool/gen/controller/GenController.java
index e57dc1f..9b57268 100644
--- a/src/main/java/com/ruoyi/project/tool/gen/controller/GenController.java
+++ b/src/main/java/com/ruoyi/project/tool/gen/controller/GenController.java
@@ -165,13 +165,25 @@
     @PreAuthorize("@ss.hasPermi('tool:gen:code')")
     @Log(title = "浠g爜鐢熸垚", businessType = BusinessType.GENCODE)
     @GetMapping("/genCode/{tableName}")
-    public AjaxResult genCode(HttpServletResponse response, @PathVariable("tableName") String tableName)
+    public AjaxResult genCode(@PathVariable("tableName") String tableName)
     {
         genTableService.generatorCode(tableName);
         return AjaxResult.success();
     }
 
     /**
+     * 鍚屾鏁版嵁搴�
+     */
+    @PreAuthorize("@ss.hasPermi('tool:gen:edit')")
+    @Log(title = "浠g爜鐢熸垚", businessType = BusinessType.UPDATE)
+    @GetMapping("/synchDb/{tableName}")
+    public AjaxResult synchDb(@PathVariable("tableName") String tableName)
+    {
+        genTableService.synchDb(tableName);
+        return AjaxResult.success();
+    }
+
+    /**
      * 鎵归噺鐢熸垚浠g爜
      */
     @PreAuthorize("@ss.hasPermi('tool:gen:code')")
diff --git a/src/main/java/com/ruoyi/project/tool/gen/mapper/GenTableColumnMapper.java b/src/main/java/com/ruoyi/project/tool/gen/mapper/GenTableColumnMapper.java
index dfd8ddd..782975f 100644
--- a/src/main/java/com/ruoyi/project/tool/gen/mapper/GenTableColumnMapper.java
+++ b/src/main/java/com/ruoyi/project/tool/gen/mapper/GenTableColumnMapper.java
@@ -17,7 +17,7 @@
      * @return 鍒椾俊鎭�
      */
     public List<GenTableColumn> selectDbTableColumnsByName(String tableName);
-    
+
     /**
      * 鏌ヨ涓氬姟瀛楁鍒楄〃
      * 
@@ -43,6 +43,14 @@
     public int updateGenTableColumn(GenTableColumn genTableColumn);
 
     /**
+     * 鍒犻櫎涓氬姟瀛楁
+     * 
+     * @param genTableColumns 鍒楁暟鎹�
+     * @return 缁撴灉
+     */
+    public int deleteGenTableColumns(List<GenTableColumn> genTableColumns);
+
+    /**
      * 鎵归噺鍒犻櫎涓氬姟瀛楁
      * 
      * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
diff --git a/src/main/java/com/ruoyi/project/tool/gen/service/GenTableServiceImpl.java b/src/main/java/com/ruoyi/project/tool/gen/service/GenTableServiceImpl.java
index 4347993..91f0d09 100644
--- a/src/main/java/com/ruoyi/project/tool/gen/service/GenTableServiceImpl.java
+++ b/src/main/java/com/ruoyi/project/tool/gen/service/GenTableServiceImpl.java
@@ -7,6 +7,7 @@
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipOutputStream;
 import org.apache.commons.io.IOUtils;
@@ -224,7 +225,6 @@
      * 鐢熸垚浠g爜锛堣嚜瀹氫箟璺緞锛�
      * 
      * @param tableName 琛ㄥ悕绉�
-     * @return 鏁版嵁
      */
     @Override
     public void generatorCode(String tableName)
@@ -263,6 +263,37 @@
     }
 
     /**
+     * 鍚屾鏁版嵁搴�
+     * 
+     * @param tableName 琛ㄥ悕绉�
+     */
+    @Override
+    @Transactional
+    public void synchDb(String tableName)
+    {
+        GenTable table = genTableMapper.selectGenTableByName(tableName);
+        List<GenTableColumn> tableColumns = table.getColumns();
+        List<String> tableColumnNames = tableColumns.stream().map(GenTableColumn::getColumnName).collect(Collectors.toList());
+
+        List<GenTableColumn> dbTableColumns = genTableColumnMapper.selectDbTableColumnsByName(tableName);
+        List<String> dbTableColumnNames = dbTableColumns.stream().map(GenTableColumn::getColumnName).collect(Collectors.toList());
+
+        dbTableColumns.forEach(column -> {
+            if (!tableColumnNames.contains(column.getColumnName()))
+            {
+                GenUtils.initColumnField(column, table);
+                genTableColumnMapper.insertGenTableColumn(column);
+            }
+        });
+
+        List<GenTableColumn> delColumns = tableColumns.stream().filter(column -> !dbTableColumnNames.contains(column.getColumnName())).collect(Collectors.toList());
+        if (StringUtils.isNotEmpty(delColumns))
+        {
+            genTableColumnMapper.deleteGenTableColumns(delColumns);
+        }
+    }
+
+    /**
      * 鎵归噺鐢熸垚浠g爜锛堜笅杞芥柟寮忥級
      * 
      * @param tableNames 琛ㄦ暟缁�
diff --git a/src/main/java/com/ruoyi/project/tool/gen/service/IGenTableService.java b/src/main/java/com/ruoyi/project/tool/gen/service/IGenTableService.java
index 88dfa37..8777321 100644
--- a/src/main/java/com/ruoyi/project/tool/gen/service/IGenTableService.java
+++ b/src/main/java/com/ruoyi/project/tool/gen/service/IGenTableService.java
@@ -91,6 +91,13 @@
     public void generatorCode(String tableName);
 
     /**
+     * 鍚屾鏁版嵁搴�
+     * 
+     * @param tableName 琛ㄥ悕绉�
+     */
+    public void synchDb(String tableName);
+
+    /**
      * 鎵归噺鐢熸垚浠g爜锛堜笅杞芥柟寮忥級
      * 
      * @param tableNames 琛ㄦ暟缁�
diff --git a/src/main/resources/mybatis/tool/GenTableColumnMapper.xml b/src/main/resources/mybatis/tool/GenTableColumnMapper.xml
index c936fe0..9a5ed93 100644
--- a/src/main/resources/mybatis/tool/GenTableColumnMapper.xml
+++ b/src/main/resources/mybatis/tool/GenTableColumnMapper.xml
@@ -117,4 +117,11 @@
         </foreach>
     </delete>
     
+    <delete id="deleteGenTableColumns">
+        delete from gen_table_column where column_id in 
+        <foreach collection="list" item="item" open="(" separator="," close=")">
+            #{item.columnId}
+        </foreach>
+    </delete>
+
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/mybatis/tool/GenTableMapper.xml b/src/main/resources/mybatis/tool/GenTableMapper.xml
index 05ccfb7..4230a3f 100644
--- a/src/main/resources/mybatis/tool/GenTableMapper.xml
+++ b/src/main/resources/mybatis/tool/GenTableMapper.xml
@@ -186,4 +186,4 @@
         </foreach>
     </delete>
 
-</mapper> 
\ No newline at end of file
+</mapper>
\ No newline at end of file

--
Gitblit v1.9.3