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 | 85 ++++++++++++++++++++++-------------------- 1 files changed, 44 insertions(+), 41 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 f156e4f..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,17 +1,17 @@ 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.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; 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; import com.ruoyi.common.utils.PageUtils; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.file.FileUtils; @@ -35,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; @@ -50,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; @@ -130,21 +127,24 @@ @Override @Transactional public void updateGenTable(GenTable genTable) { - String options = JSON.toJSONString(genTable.getParams()); + String options = JsonUtils.toJsonString(genTable.getParams()); genTable.setOptions(options); int row = baseMapper.updateById(genTable); if (row > 0) { 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())); } } } @@ -180,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()); @@ -258,17 +262,13 @@ // 鑾峰彇妯℃澘鍒楄〃 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); tpl.merge(context, sw); - try { - String path = getGenPath(table, template); - FileUtils.writeStringToFile(new File(path), sw.toString(), Constants.UTF8); - } catch (IOException e) { - throw new CustomException("娓叉煋妯℃澘澶辫触锛岃〃鍚嶏細" + table.getTableName()); - } + String path = getGenPath(table, template); + FileUtils.writeUtf8String(sw.toString(), path); } } } @@ -291,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)) { @@ -365,13 +369,12 @@ @Override public void validateEdit(GenTable genTable) { if (GenConstants.TPL_TREE.equals(genTable.getTplCategory())) { - String options = JSON.toJSONString(genTable.getParams()); - JSONObject paramsObj = JSONObject.parseObject(options); - if (Validator.isEmpty(paramsObj.getString(GenConstants.TREE_CODE))) { + Map<String, Object> paramsObj = genTable.getParams(); + if (Validator.isEmpty(paramsObj.get(GenConstants.TREE_CODE))) { throw new CustomException("鏍戠紪鐮佸瓧娈典笉鑳戒负绌�"); - } else if (Validator.isEmpty(paramsObj.getString(GenConstants.TREE_PARENT_CODE))) { + } else if (Validator.isEmpty(paramsObj.get(GenConstants.TREE_PARENT_CODE))) { throw new CustomException("鏍戠埗缂栫爜瀛楁涓嶈兘涓虹┖"); - } else if (Validator.isEmpty(paramsObj.getString(GenConstants.TREE_NAME))) { + } else if (Validator.isEmpty(paramsObj.get(GenConstants.TREE_NAME))) { throw new CustomException("鏍戝悕绉板瓧娈典笉鑳戒负绌�"); } else if (GenConstants.TPL_SUB.equals(genTable.getTplCategory())) { if (Validator.isEmpty(genTable.getSubTableName())) { @@ -429,13 +432,13 @@ * @param genTable 璁剧疆鍚庣殑鐢熸垚瀵硅薄 */ public void setTableFromOptions(GenTable genTable) { - JSONObject paramsObj = JSONObject.parseObject(genTable.getOptions()); + Map<String, Object> paramsObj = JsonUtils.parseMap(genTable.getOptions()); if (Validator.isNotNull(paramsObj)) { - String treeCode = paramsObj.getString(GenConstants.TREE_CODE); - String treeParentCode = paramsObj.getString(GenConstants.TREE_PARENT_CODE); - String treeName = paramsObj.getString(GenConstants.TREE_NAME); - String parentMenuId = paramsObj.getString(GenConstants.PARENT_MENU_ID); - String parentMenuName = paramsObj.getString(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); @@ -448,7 +451,7 @@ /** * 鑾峰彇浠g爜鐢熸垚鍦板潃 * - * @param table 涓氬姟琛ㄤ俊鎭� + * @param table 涓氬姟琛ㄤ俊鎭� * @param template 妯℃澘鏂囦欢璺緞 * @return 鐢熸垚鍦板潃 */ -- Gitblit v1.9.3