Pre Merge pull request !62 from Luozuanshi/master

This commit is contained in:
Luozuanshi 2022-01-11 10:11:23 +00:00 committed by Gitee
commit 17b6644553
2 changed files with 77 additions and 46 deletions

View File

@ -7,6 +7,7 @@ import java.io.StringWriter;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.zip.ZipEntry; import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream; import java.util.zip.ZipOutputStream;
@ -286,7 +287,6 @@ public class GenTableServiceImpl implements IGenTableService
{ {
GenTable table = genTableMapper.selectGenTableByName(tableName); GenTable table = genTableMapper.selectGenTableByName(tableName);
List<GenTableColumn> tableColumns = table.getColumns(); List<GenTableColumn> tableColumns = table.getColumns();
List<String> tableColumnNames = tableColumns.stream().map(GenTableColumn::getColumnName).collect(Collectors.toList());
List<GenTableColumn> dbTableColumns = genTableColumnMapper.selectDbTableColumnsByName(tableName); List<GenTableColumn> dbTableColumns = genTableColumnMapper.selectDbTableColumnsByName(tableName);
if (StringUtils.isEmpty(dbTableColumns)) if (StringUtils.isEmpty(dbTableColumns))
@ -295,11 +295,20 @@ public class GenTableServiceImpl implements IGenTableService
} }
List<String> dbTableColumnNames = dbTableColumns.stream().map(GenTableColumn::getColumnName).collect(Collectors.toList()); List<String> dbTableColumnNames = dbTableColumns.stream().map(GenTableColumn::getColumnName).collect(Collectors.toList());
Map<String, GenTableColumn> tableColumnsMap = tableColumns.stream().collect(Collectors.toMap(GenTableColumn::getColumnName, GenTableColumn->GenTableColumn, (key1,key2)->key2));
dbTableColumns.forEach(column -> { dbTableColumns.forEach(column -> {
if (!tableColumnNames.contains(column.getColumnName())) if (!equalColumInfo(tableColumnsMap,column))
{ {
GenUtils.initColumnField(column, table); GenUtils.initColumnField(column, table);
genTableColumnMapper.insertGenTableColumn(column);
GenTableColumn tableColumn = tableColumnsMap.get(column.getColumnName());
if (tableColumn!=null) {
column.setColumnId(tableColumn.getColumnId());
genTableColumnMapper.updateGenTableColumn(column);
}else {
genTableColumnMapper.insertGenTableColumn(column);
}
} }
}); });
@ -308,6 +317,27 @@ public class GenTableServiceImpl implements IGenTableService
{ {
genTableColumnMapper.deleteGenTableColumns(delColumns); genTableColumnMapper.deleteGenTableColumns(delColumns);
} }
}
/**
* 比较数据库列信息
* @param tableColumnsMap
* @param column
* @return ture 数据库字段信息与information_schema 的字段内容一致 false information_schema 的字段内容不一致
*/
private boolean equalColumInfo(Map<String, GenTableColumn> tableColumnsMap, GenTableColumn column) {
String columnName = column.getColumnName();
GenTableColumn tableColumns = tableColumnsMap.get(columnName);
if (tableColumns==null) {
return false;
}
return Objects.equals(column.getColumnName(), tableColumns.getColumnName()) &&
Objects.equals(column.getColumnComment(), tableColumns.getColumnComment()) &&
Objects.equals(column.getColumnType(), tableColumns.getColumnType()) &&
Objects.equals(column.getSort(), tableColumns.getSort()) &&
Objects.equals(column.getIsPk(), tableColumns.getIsPk()) &&
Objects.equals(column.getIsIncrement(), tableColumns.getIsIncrement());
} }
/** /**

View File

@ -92,19 +92,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<update id="updateGenTableColumn" parameterType="GenTableColumn"> <update id="updateGenTableColumn" parameterType="GenTableColumn">
update gen_table_column update gen_table_column
<set> <set>
column_comment = #{columnComment}, <if test="columnComment != null and columnComment != ''">column_comment = #{columnComment},</if>
java_type = #{javaType}, <if test="columnType != null and columnType != ''">column_type = #{columnType},</if>
java_field = #{javaField}, <if test="javaType != null and javaType != ''">java_type = #{javaType},</if>
is_insert = #{isInsert}, <if test="javaField != null and javaField != ''">java_field = #{javaField},</if>
is_edit = #{isEdit}, <if test="isInsert != ''">is_insert = #{isInsert},</if>
is_list = #{isList}, <if test="isEdit != ''">is_edit = #{isEdit},</if>
is_query = #{isQuery}, <if test="isList != ''">is_list = #{isList},</if>
is_required = #{isRequired}, <if test="isQuery != ''">is_query = #{isQuery},</if>
query_type = #{queryType}, <if test="isRequired != null and isRequired != ''"> is_required = #{isRequired},</if>
html_type = #{htmlType}, <if test="queryType != null and queryType != ''"> query_type = #{queryType},</if>
dict_type = #{dictType}, <if test="htmlType != null and htmlType != ''"> html_type = #{htmlType},</if>
sort = #{sort}, <if test="dictType != null and dictType != ''"> dict_type = #{dictType},</if>
update_by = #{updateBy}, <if test="sort != null and sort != ''"> sort = #{sort},</if>
<if test="updateBy != null and updateBy != ''"> update_by = #{updateBy},</if>
update_time = sysdate() update_time = sysdate()
</set> </set>
where column_id = #{columnId} where column_id = #{columnId}