From 15c45eae11ee9d8b819e6e690ad521b230a88a5d Mon Sep 17 00:00:00 2001 From: 疯狂的狮子li <15040126243@163.com> Date: 星期二, 13 七月 2021 13:08:47 +0800 Subject: [PATCH] fix 修复代码生成同步表结构id冲突问题 --- ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java | 63 ++++++++++++++++++------------- 1 files changed, 36 insertions(+), 27 deletions(-) diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java index 961bf31..1778910 100644 --- a/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java +++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java @@ -1,13 +1,14 @@ package com.ruoyi.generator.service; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.convert.Convert; import cn.hutool.core.lang.Validator; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.constant.GenConstants; +import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.exception.CustomException; import com.ruoyi.common.utils.JsonUtils; @@ -34,10 +35,7 @@ import java.io.File; import java.io.IOException; import java.io.StringWriter; -import java.util.Arrays; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; @@ -49,7 +47,7 @@ */ @Slf4j @Service -public class GenTableServiceImpl extends ServiceImpl<GenTableMapper, GenTable> implements IGenTableService { +public class GenTableServiceImpl extends ServicePlusImpl<GenTableMapper, GenTable> implements IGenTableService { @Autowired private GenTableColumnMapper genTableColumnMapper; @@ -136,14 +134,17 @@ for (GenTableColumn cenTableColumn : genTable.getColumns()) { genTableColumnMapper.update(cenTableColumn, new LambdaUpdateWrapper<GenTableColumn>() - .set(cenTableColumn.getIsPk() == null, GenTableColumn::getIsPk, null) - .set(cenTableColumn.getIsIncrement() == null, GenTableColumn::getIsIncrement, null) - .set(cenTableColumn.getIsInsert() == null, GenTableColumn::getIsInsert, null) - .set(cenTableColumn.getIsEdit() == null, GenTableColumn::getIsEdit, null) - .set(cenTableColumn.getIsList() == null, GenTableColumn::getIsList, null) - .set(cenTableColumn.getIsQuery() == null, GenTableColumn::getIsQuery, null) - .set(cenTableColumn.getIsRequired() == null, GenTableColumn::getIsRequired, null) - .eq(GenTableColumn::getColumnId,cenTableColumn.getColumnId())); + .set(StrUtil.isBlank(cenTableColumn.getColumnComment()), GenTableColumn::getColumnComment, null) + .set(StrUtil.isBlank(cenTableColumn.getIsPk()), GenTableColumn::getIsPk, null) + .set(StrUtil.isBlank(cenTableColumn.getIsIncrement()), GenTableColumn::getIsIncrement, null) + .set(StrUtil.isBlank(cenTableColumn.getIsInsert()), GenTableColumn::getIsInsert, null) + .set(StrUtil.isBlank(cenTableColumn.getIsEdit()), GenTableColumn::getIsEdit, null) + .set(StrUtil.isBlank(cenTableColumn.getIsList()), GenTableColumn::getIsList, null) + .set(StrUtil.isBlank(cenTableColumn.getIsQuery()), GenTableColumn::getIsQuery, null) + .set(StrUtil.isBlank(cenTableColumn.getIsRequired()), GenTableColumn::getIsRequired, null) + .set(StrUtil.isBlank(cenTableColumn.getQueryType()), GenTableColumn::getQueryType, null) + .set(StrUtil.isBlank(cenTableColumn.getDictType()), GenTableColumn::getDictType, null) + .eq(GenTableColumn::getColumnId,cenTableColumn.getColumnId())); } } } @@ -179,11 +180,15 @@ if (row > 0) { // 淇濆瓨鍒椾俊鎭� List<GenTableColumn> genTableColumns = genTableColumnMapper.selectDbTableColumnsByName(tableName); + List<GenTableColumn> saveColumns = new ArrayList<>(); for (GenTableColumn column : genTableColumns) { GenUtils.initColumnField(column, table); - genTableColumnMapper.insert(column); + saveColumns.add(column); } - } + if (CollUtil.isNotEmpty(saveColumns)) { + genTableColumnMapper.insertAll(saveColumns); + } + } } } catch (Exception e) { throw new CustomException("瀵煎叆澶辫触锛�" + e.getMessage()); @@ -257,7 +262,7 @@ // 鑾峰彇妯℃澘鍒楄〃 List<String> templates = VelocityUtils.getTemplateList(table.getTplCategory()); for (String template : templates) { - if (!StrUtil.containsAny(template, "sql.vm", "api.js.vm", "index.vue.vm", "index-tree.vue.vm")) { + if (!StrUtil.containsAny("sql.vm", "api.js.vm", "index.vue.vm", "index-tree.vue.vm", template)) { // 娓叉煋妯℃澘 StringWriter sw = new StringWriter(); Template tpl = Velocity.getTemplate(template, Constants.UTF8); @@ -286,12 +291,16 @@ } List<String> dbTableColumnNames = dbTableColumns.stream().map(GenTableColumn::getColumnName).collect(Collectors.toList()); + List<GenTableColumn> saveColumns = new ArrayList<>(); dbTableColumns.forEach(column -> { if (!tableColumnNames.contains(column.getColumnName())) { GenUtils.initColumnField(column, table); - genTableColumnMapper.insert(column); - } - }); + saveColumns.add(column); + } + }); + if (CollUtil.isNotEmpty(saveColumns)) { + genTableColumnMapper.insertAll(saveColumns); + } List<GenTableColumn> delColumns = tableColumns.stream().filter(column -> !dbTableColumnNames.contains(column.getColumnName())).collect(Collectors.toList()); if (CollUtil.isNotEmpty(delColumns)) { @@ -423,13 +432,13 @@ * @param genTable 璁剧疆鍚庣殑鐢熸垚瀵硅薄 */ public void setTableFromOptions(GenTable genTable) { - Map<String, String> paramsObj = JsonUtils.parseMap(genTable.getOptions()); + Map<String, Object> paramsObj = JsonUtils.parseMap(genTable.getOptions()); if (Validator.isNotNull(paramsObj)) { - String treeCode = paramsObj.get(GenConstants.TREE_CODE); - String treeParentCode = paramsObj.get(GenConstants.TREE_PARENT_CODE); - String treeName = paramsObj.get(GenConstants.TREE_NAME); - String parentMenuId = paramsObj.get(GenConstants.PARENT_MENU_ID); - String parentMenuName = paramsObj.get(GenConstants.PARENT_MENU_NAME); + String treeCode = Convert.toStr(paramsObj.get(GenConstants.TREE_CODE)); + String treeParentCode = Convert.toStr(paramsObj.get(GenConstants.TREE_PARENT_CODE)); + String treeName = Convert.toStr(paramsObj.get(GenConstants.TREE_NAME)); + String parentMenuId = Convert.toStr(paramsObj.get(GenConstants.PARENT_MENU_ID)); + String parentMenuName = Convert.toStr(paramsObj.get(GenConstants.PARENT_MENU_NAME)); genTable.setTreeCode(treeCode); genTable.setTreeParentCode(treeParentCode); @@ -442,7 +451,7 @@ /** * 鑾峰彇浠g爜鐢熸垚鍦板潃 * - * @param table 涓氬姟琛ㄤ俊鎭� + * @param table 涓氬姟琛ㄤ俊鎭� * @param template 妯℃澘鏂囦欢璺緞 * @return 鐢熸垚鍦板潃 */ -- Gitblit v1.9.3