diff --git a/hchyun-ui/src/api/tool/relApi.js b/hchyun-ui/src/api/tool/relApi.js new file mode 100644 index 0000000..d29106d --- /dev/null +++ b/hchyun-ui/src/api/tool/relApi.js @@ -0,0 +1,55 @@ +import request from "@/utils/request"; + +/** + * 获取到gen_rel_table表的自增字段 + * @returns + */ +export function getRelId(){ + return request({ + url:'/seq/next/gen_rel_table', + method:'get', + }) +} +/** + * 获取关联表表的字段信息 + * @param tableName 关联表表名 + * @param relId 关联表id + * @returns + */ +export function getRelColumns(tableName,relId){ + return request({ + url: '/rel/'+tableName+'/'+relId, + method: 'get' + }) +} +/** + * 获取表信息 + * @returns + */ +export function getTableInfos() { + return request({ + url: '/rel/tableinfo', + method: 'get' + }) +} + +/** + * 获取表字段信息 + * @returns + */ +export function getTableColumns(tableName) { + return request({ + url: '/rel/'+tableName, + method: 'get' + }) +} +/** + * 获取子表所以信息(基本信息 字段信息) + * @returns + */ +export function getRelColumnInfos(tableId) { + return request({ + url: '/rel/colums/'+tableId, + method: 'get' + }) +} diff --git a/hchyun-ui/src/views/tool/gen/editTable.vue b/hchyun-ui/src/views/tool/gen/editTable.vue index 62a11dc..f53a9c3 100644 --- a/hchyun-ui/src/views/tool/gen/editTable.vue +++ b/hchyun-ui/src/views/tool/gen/editTable.vue @@ -141,6 +141,7 @@ import basicInfoForm from "./basicInfoForm"; import genInfoForm from "./genInfoForm"; import Sortable from 'sortablejs' import {listRegular} from "../../../api/tool/regular"; +import {Message} from "element-ui"; export default { name: "GenEdit", @@ -151,7 +152,8 @@ export default { data() { return { // 选中选项卡的 name - activeName: "cloum", + // activeName: "cloum", + activeName: "genInfo", // 表格的高度 tableHeight: document.documentElement.scrollHeight - 245 + "px", // 表信息 @@ -204,7 +206,39 @@ export default { submitForm() { const basicForm = this.$refs.basicInfo.$refs.basicInfoForm; const genForm = this.$refs.genInfo.$refs.genInfoForm; - const assCloumnTable = this.$refs.genInfo.$refs.assCloumnTable + const assCloumnTable = this.$refs.genInfo.$refs.assCloumnTable; + const relTables = this.$refs.genInfo.relTables; + console.log(relTables) + for (let i=0;i + @@ -115,7 +116,7 @@ - +

其他信息

@@ -173,7 +174,7 @@
- +

关联信息

@@ -213,6 +214,7 @@
+

关联关系

@@ -284,7 +286,7 @@
- + @@ -332,25 +334,25 @@ @@ -370,12 +372,218 @@
+ +
+ + +
多表关联关系
+
+ + 添加表 + + +
+
+ + + + + 关联父表 + + + + + + + + + + + + + 父表id + + + + + + + + + + + + + 关联表表名 + + + + + + + + + + + + + 关联表字段 + + + + + + + + + + + + + 关联查询方式 + + + + + + + + + + + + + +
+ + + + + + +
+
+
+ + 删除 + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ diff --git a/hchyun/hchyun-admin/src/main/java/com/hchyun/web/controller/system/SequenceController.java b/hchyun/hchyun-admin/src/main/java/com/hchyun/web/controller/system/SequenceController.java new file mode 100644 index 0000000..b5259a7 --- /dev/null +++ b/hchyun/hchyun-admin/src/main/java/com/hchyun/web/controller/system/SequenceController.java @@ -0,0 +1,36 @@ +package com.hchyun.web.controller.system; + +import com.hchyun.common.core.entity.AjaxResult; +import com.hchyun.system.service.SequenceService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @Author 18209 + * @Date 2021/2/24 17:52 + * @Version 1.0 + */ +@RestController +@RequestMapping("/seq") +public class SequenceController { + + @Autowired + private SequenceService sequenceService; + + @PreAuthorize("@hchyun.hasPermi('sequence:curr')") + @GetMapping("/curr/{tableName}") + public AjaxResult currval(@PathVariable String tableName){ + return AjaxResult.success(sequenceService.currval(tableName)); + } + + @PreAuthorize("@hchyun.hasPermi('sequence:next')") + @GetMapping("/next/{tableName}") + public AjaxResult nextval(@PathVariable String tableName){ + return AjaxResult.success(sequenceService.nextval(tableName)); + } + +} diff --git a/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/controller/RelController.java b/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/controller/RelController.java new file mode 100644 index 0000000..23911b3 --- /dev/null +++ b/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/controller/RelController.java @@ -0,0 +1,106 @@ +package com.hchyun.generator.controller; + +import com.hchyun.generator.entity.RelColumn; +import com.hchyun.generator.entity.RelTable; +import com.hchyun.generator.service.RelService; +import com.hchyun.generator.utils.GenServerResult; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; +import java.util.Map; + +/** + * @Author 18209 + * @Date 2021/2/24 16:22 + * @Version 1.0 + */ +@RestController +@RequestMapping("/rel") +public class RelController { + private Logger logger = LoggerFactory.getLogger(RelController.class); + @Autowired + private RelService relService; + + /** + * 获取表的基础信息 + * @return + */ + @PreAuthorize("@hchyun.hasAnyPermi('rel:tableinfo')") + @GetMapping("/tableinfo") + public AjaxResult tableinfos(){ + try { + GenServerResult>> genServerResult = relService.tableInfos(); + if (genServerResult.isStart()){ + return AjaxResult.success(genServerResult.getData()); + }else { + return AjaxResult.error(genServerResult.getMsg()); + } + }catch (RuntimeException e){ + logger.error(e.getMessage()); + return AjaxResult.error(); + } + } + + /** + * 获取表的字段信息 + * @param tableName + * @param relId + * @return + */ + @PreAuthorize("@hchyun.hasAnyPermi('rel:tableinfo')") + @GetMapping("/{tableName}/{relId}") + public AjaxResult relColumns(@PathVariable("tableName") String tableName, @PathVariable("relId") Long relId){ + try { + GenServerResult> genServerResult = relService.relColumns(tableName,relId); + if (genServerResult.isStart()){ + return AjaxResult.success(genServerResult.getData()); + }else { + return AjaxResult.error(genServerResult.getMsg()); + } + }catch (RuntimeException e){ + logger.error(e.getMessage()); + return AjaxResult.error(); + } + } + + @PreAuthorize("@hchyun.hasAnyPermi('rel:colums')") + @GetMapping("/{tableName}") + public AjaxResult tableColumns(@PathVariable("tableName")String tableName){ + try { + GenServerResult>> genServerResult = relService.tableColumns(tableName); + if (genServerResult.isStart()){ + return AjaxResult.success(genServerResult.getData()); + }else { + return AjaxResult.error(genServerResult.getMsg()); + } + }catch (RuntimeException e){ + logger.error(e.getMessage()); + return AjaxResult.error(); + } + } + + @PreAuthorize("@hchyun.hasAnyPermi('rel:colums')") + @GetMapping("/colums/{tableId}") + public AjaxResult relTableByTableId(@PathVariable("tableId")Long tableId){ + try { + GenServerResult> genServerResult = relService.relTableByTableId(tableId); + if (genServerResult.isStart()){ + return AjaxResult.success(genServerResult.getData()); + }else { + return AjaxResult.error(genServerResult.getMsg()); + } + }catch (RuntimeException e){ + logger.error(e.getMessage()); + return AjaxResult.error(); + } + } + + +} diff --git a/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/dao/RelDao.java b/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/dao/RelDao.java new file mode 100644 index 0000000..ab9640b --- /dev/null +++ b/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/dao/RelDao.java @@ -0,0 +1,74 @@ +package com.hchyun.generator.dao; + +import com.hchyun.generator.entity.RelColumn; +import com.hchyun.generator.entity.RelTable; + +import java.util.List; +import java.util.Map; + +/** + * @Author 18209 + * @Date 2021/2/24 16:21 + * @Version 1.0 + */ +public interface RelDao { + /** + * 获取表信息 + * + * @return + */ + List> tableInfos(); + + /** + * 获取表字段信息 + * + * @param tableName + * @return + */ + List selectTableColumn(String tableName); + + /** + * 批量增加字段信息 + * + * @param relColumns + * @return + */ + Integer insertRelColumns(List relColumns); + + /** + * 批量增加子表字段 + * @param relTables + * @return + */ + Integer insertRelTables(List relTables); + + /** + * 通过tableName获取到column信息 + * + * @param tableName + * @return + */ + List> tableColumns(String tableName); + + /** + * 通过主表id查询子表信息 + * @param tableId + * @return + */ + List relTableByTableId(Long tableId); + + /** + * 通过relId删除RelColumn信息 + * @param relId + * @return + */ + Integer deleteRelColumnByRelId(Long relId); + + /** + * 通过tableid删除RelTable信息 + * @param tableId + * @return + */ + Integer deleteRelTableByTableId(Long tableId); + +} diff --git a/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/entity/GenTable.java b/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/entity/GenTable.java index 837250b..e0174e9 100644 --- a/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/entity/GenTable.java +++ b/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/entity/GenTable.java @@ -110,7 +110,12 @@ public class GenTable extends GenBaseEntity { @Valid private List columns; + @Valid private List assColumns; + @Valid + private List relTables; + + /** @@ -163,6 +168,14 @@ public class GenTable extends GenBaseEntity { */ private String assQueryType; + public List getRelTables() { + return relTables; + } + + public void setRelTables(List relTables) { + this.relTables = relTables; + } + public String getAssQueryType() { return assQueryType; } diff --git a/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/entity/RelColumn.java b/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/entity/RelColumn.java new file mode 100644 index 0000000..d4339df --- /dev/null +++ b/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/entity/RelColumn.java @@ -0,0 +1,145 @@ +package com.hchyun.generator.entity; + +public class RelColumn { + + //表id + private long id; + //父表id + private long relId; + //列名称 + private String columnName; + //列描述 + private String columnComment; + //列类型 + private String columnType; + //java类型 + private String javaType; + //java字段名 + private String javaField; + //是否列表显示(1是) + private String isList; + //是否可查询(1可) + private String isQuery; + //查询方式(等于,不等于,小于,大于,区间) + private String queryType; + //控件显示类型 + private String htmlType; + //字典类型 + private String dictType; + //排序 + private Integer sort; + //创建时间 + private long createBy; + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public long getRelId() { + return relId; + } + + public void setRelId(long relId) { + this.relId = relId; + } + + public String getColumnName() { + return columnName; + } + + public void setColumnName(String columnName) { + this.columnName = columnName; + } + + public String getColumnComment() { + return columnComment; + } + + public void setColumnComment(String columnComment) { + this.columnComment = columnComment; + } + + public String getColumnType() { + return columnType; + } + + public void setColumnType(String columnType) { + this.columnType = columnType; + } + + public String getJavaType() { + return javaType; + } + + public void setJavaType(String javaType) { + this.javaType = javaType; + } + + public String getJavaField() { + return javaField; + } + + public void setJavaField(String javaField) { + this.javaField = javaField; + } + + public String getIsList() { + return isList; + } + + public void setIsList(String isList) { + this.isList = isList; + } + + public String getIsQuery() { + return isQuery; + } + + public void setIsQuery(String isQuery) { + this.isQuery = isQuery; + } + + public String getQueryType() { + return queryType; + } + + public void setQueryType(String queryType) { + this.queryType = queryType; + } + + public String getHtmlType() { + return htmlType; + } + + public void setHtmlType(String htmlType) { + this.htmlType = htmlType; + } + + public String getDictType() { + return dictType; + } + + public void setDictType(String dictType) { + this.dictType = dictType; + } + + public Integer getSort() { + return sort; + } + + public void setSort(Integer sort) { + this.sort = sort; + } + + public long getCreateBy() { + return createBy; + } + + public void setCreateBy(long createBy) { + this.createBy = createBy; + } +} diff --git a/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/entity/RelTable.java b/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/entity/RelTable.java new file mode 100644 index 0000000..0f89736 --- /dev/null +++ b/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/entity/RelTable.java @@ -0,0 +1,140 @@ +package com.hchyun.generator.entity; + +import javax.validation.Valid; +import javax.validation.constraints.NotBlank; +import java.util.List; + +public class RelTable { + + + //表id + private long id; + //unionid + private long unionId; + //主表id + private long tableId; + //是否是一级关联查询 + private Integer isMain; + //关联子表表名 + private String relName; + //关联子表描述 + private String relComment; + //关联子表的字段 + private String relColumn; + //关联父表字段 + private String tableColumn; + //实体类名称(子表) + private String relClass; + //查询方式 + private String queryType; + //排序 + private Integer sort; + //创建者 + private long createBy; + + private List relColumns; + + public List getRelColumns() { + return relColumns; + } + + public void setRelColumns(List relColumns) { + this.relColumns = relColumns; + } + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public long getUnionId() { + return unionId; + } + + public void setUnionId(long unionId) { + this.unionId = unionId; + } + + public long getTableId() { + return tableId; + } + + public void setTableId(long tableId) { + this.tableId = tableId; + } + + public Integer getIsMain() { + return isMain; + } + + public void setIsMain(Integer isMain) { + this.isMain = isMain; + } + + public String getRelName() { + return relName; + } + + public void setRelName(String relName) { + this.relName = relName; + } + + public String getRelComment() { + return relComment; + } + + public void setRelComment(String relComment) { + this.relComment = relComment; + } + + public String getRelColumn() { + return relColumn; + } + + public void setRelColumn(String relColumn) { + this.relColumn = relColumn; + } + + public String getTableColumn() { + return tableColumn; + } + + public void setTableColumn(String tableColumn) { + this.tableColumn = tableColumn; + } + + public String getRelClass() { + return relClass; + } + + public void setRelClass(String relClass) { + this.relClass = relClass; + } + + public String getQueryType() { + return queryType; + } + + public void setQueryType(String queryType) { + this.queryType = queryType; + } + + public Integer getSort() { + return sort; + } + + public void setSort(Integer sort) { + this.sort = sort; + } + + public long getCreateBy() { + return createBy; + } + + public void setCreateBy(long createBy) { + this.createBy = createBy; + } +} diff --git a/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/service/RelService.java b/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/service/RelService.java new file mode 100644 index 0000000..22ac4a6 --- /dev/null +++ b/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/service/RelService.java @@ -0,0 +1,49 @@ +package com.hchyun.generator.service; + +import com.hchyun.generator.entity.RelColumn; +import com.hchyun.generator.entity.RelTable; +import com.hchyun.generator.utils.GenServerResult; + +import java.util.List; +import java.util.Map; + +/** + * @Author 18209 + * @Date 2021/2/24 16:21 + * @Version 1.0 + */ +public interface RelService { + + /** + * 获取到数据库表信息 + * + * @return + */ + GenServerResult>> tableInfos(); + + /** + * 获取到关联边字段信息 + * + * @param tableName 关联表表名 + * @param relId 关联关系id + * @return + */ + GenServerResult> relColumns(String tableName, Long relId); + + /** + * 通过tableName获取到字段信息 + * + * @param tableName + * @return + */ + GenServerResult>> tableColumns(String tableName); + + /** + * 通过主表id查询子表信息 + * + * @param tableId + * @return + */ + GenServerResult> relTableByTableId(Long tableId); + +} diff --git a/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/service/impl/AssociatedServiceImpl.java b/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/service/impl/AssociatedServiceImpl.java index dab1ab6..44f1e68 100644 --- a/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/service/impl/AssociatedServiceImpl.java +++ b/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/service/impl/AssociatedServiceImpl.java @@ -30,7 +30,7 @@ public class AssociatedServiceImpl implements AssociatedService { public GenServerResult> assColumnsByTable(Long tableId) { try { List assColumns = associatedDao.selectTableColumnByTableId(tableId); - return new GenServerResult<>(true, assColumns); + return new GenServerResult<>(assColumns); } catch (RuntimeException e) { logger.error(e.getMessage()); return new GenServerResult<>(false, GenReturnConstants.DB_EX); @@ -41,7 +41,7 @@ public class AssociatedServiceImpl implements AssociatedService { public GenServerResult>> tableInfos() { try { List> dataMap = associatedDao.tableInfos(); - return new GenServerResult<>(true, dataMap); + return new GenServerResult<>(dataMap); } catch (RuntimeException e) { logger.error(e.getMessage()); return new GenServerResult<>(false, GenReturnConstants.DB_EX); @@ -55,7 +55,7 @@ public class AssociatedServiceImpl implements AssociatedService { for (AssColumn assColumn : assColumns) { AssociatedUtils.initAssColumn(assColumn, tableId); } - return new GenServerResult<>(true, assColumns); + return new GenServerResult<>(assColumns); } catch (RuntimeException e) { logger.error(e.getMessage()); return new GenServerResult<>(false, GenReturnConstants.DB_EX); diff --git a/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/service/impl/GenTableServiceImpl.java b/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/service/impl/GenTableServiceImpl.java index d25c58d..c64eef5 100644 --- a/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/service/impl/GenTableServiceImpl.java +++ b/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/service/impl/GenTableServiceImpl.java @@ -12,7 +12,9 @@ import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; import com.hchyun.generator.dao.AssociatedDao; +import com.hchyun.generator.dao.RelDao; import com.hchyun.generator.entity.AssColumn; +import com.hchyun.generator.entity.RelTable; import com.hchyun.generator.service.GenTableService; import com.hchyun.generator.utils.*; import com.hchyun.generator.utils.constant.Constants; @@ -55,6 +57,9 @@ public class GenTableServiceImpl implements GenTableService { @Autowired private AssociatedDao associatedDao; + @Autowired + private RelDao relDao; + /** * 查询业务信息 * @@ -67,7 +72,7 @@ public class GenTableServiceImpl implements GenTableService { GenTable genTable = genTableDao.selectGenTableById(id); setTableFromOptions(genTable); return genTable; - }catch (RuntimeException e){ + } catch (RuntimeException e) { logger.error(e.getMessage()); throw new GenCustomException(GenReturnConstants.OP_ERROR); } @@ -83,7 +88,7 @@ public class GenTableServiceImpl implements GenTableService { public List selectGenTableList(GenTable genTable) { try { return genTableDao.selectGenTableList(genTable); - }catch (RuntimeException e){ + } catch (RuntimeException e) { logger.error(e.getMessage()); throw new GenCustomException(GenReturnConstants.OP_ERROR); } @@ -99,7 +104,7 @@ public class GenTableServiceImpl implements GenTableService { public List selectDbTableList(GenTable genTable) { try { return genTableDao.selectDbTableList(genTable); - }catch (RuntimeException e){ + } catch (RuntimeException e) { logger.error(e.getMessage()); throw new GenCustomException(GenReturnConstants.OP_ERROR); } @@ -115,7 +120,7 @@ public class GenTableServiceImpl implements GenTableService { public List selectDbTableListByNames(String[] tableNames) { try { return genTableDao.selectDbTableListByNames(tableNames); - }catch (RuntimeException e){ + } catch (RuntimeException e) { logger.error(e.getMessage()); throw new GenCustomException(GenReturnConstants.OP_ERROR); } @@ -130,7 +135,7 @@ public class GenTableServiceImpl implements GenTableService { public List selectGenTableAll() { try { return genTableDao.selectGenTableAll(); - }catch (RuntimeException e){ + } catch (RuntimeException e) { logger.error(e.getMessage()); throw new GenCustomException(GenReturnConstants.OP_ERROR); } @@ -156,6 +161,25 @@ public class GenTableServiceImpl implements GenTableService { associatedDao.deleteTableColumn(genTable.getTableId()); associatedDao.insertColumns(assColumns); } + if (genTable.getTplCategory().equals("rel")){ + List relTables = relDao.relTableByTableId(genTable.getTableId()); + for (RelTable relTable : relTables) { + relDao.deleteRelColumnByRelId(relTable.getId()); + } + relDao.deleteRelTableByTableId(genTable.getTableId()); + relTables = genTable.getRelTables(); + for (int i = 0; i < relTables.size(); i++) { + RelTable relTable = relTables.get(i); + relTable.setRelClass(GenUtils.convertClassName(relTable.getRelName())); + relTables.set(i,relTable); + } + if (relTables != null) { + relDao.insertRelTables(relTables); + for (RelTable relTable : relTables) { + relDao.insertRelColumns(relTable.getRelColumns()); + } + } + } } } catch (GenCustomException e) { logger.error(e.getMessage()); @@ -247,7 +271,7 @@ public class GenTableServiceImpl implements GenTableService { dataMap.put(template, sw.toString()); } return dataMap; - }catch (RuntimeException e){ + } catch (RuntimeException e) { logger.error(e.getMessage()); throw new GenCustomException(e.getMessage()); } @@ -267,7 +291,7 @@ public class GenTableServiceImpl implements GenTableService { generatorCode(tableName, zip); IOUtils.closeQuietly(zip); return outputStream.toByteArray(); - }catch (RuntimeException e){ + } catch (RuntimeException e) { logger.error(e.getMessage()); throw new GenCustomException(GenReturnConstants.OP_ERROR); } @@ -318,7 +342,7 @@ public class GenTableServiceImpl implements GenTableService { } } return true; - }catch (RuntimeException e){ + } catch (RuntimeException e) { logger.error(e.getMessage()); throw new GenCustomException(GenReturnConstants.OP_ERROR); } @@ -354,7 +378,7 @@ public class GenTableServiceImpl implements GenTableService { if (GenStringUtils.isNotEmpty(delColumns)) { genTableColumnDao.deleteGenTableColumns(delColumns); } - }catch (RuntimeException e){ + } catch (RuntimeException e) { logger.error(e.getMessage()); throw new GenCustomException(GenReturnConstants.OP_ERROR); } @@ -380,7 +404,7 @@ public class GenTableServiceImpl implements GenTableService { } IOUtils.closeQuietly(zip); return outputStream.toByteArray(); - }catch (RuntimeException e){ + } catch (RuntimeException e) { logger.error(e.getMessage()); throw new GenCustomException(GenReturnConstants.OP_ERROR); } @@ -409,7 +433,7 @@ public class GenTableServiceImpl implements GenTableService { private ZipOutputStream generatorCode(String tableName, ZipOutputStream zip) { try { - }catch (RuntimeException e){ + } catch (RuntimeException e) { logger.error(e.getMessage()); throw new GenCustomException(GenReturnConstants.OP_ERROR); } diff --git a/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/service/impl/RelServiceImpl.java b/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/service/impl/RelServiceImpl.java new file mode 100644 index 0000000..1f5217f --- /dev/null +++ b/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/service/impl/RelServiceImpl.java @@ -0,0 +1,87 @@ +package com.hchyun.generator.service.impl; + +import com.hchyun.generator.dao.RelDao; +import com.hchyun.generator.entity.RelColumn; +import com.hchyun.generator.entity.RelTable; +import com.hchyun.generator.service.RelService; +import com.hchyun.generator.utils.GenServerResult; +import com.hchyun.generator.utils.RelUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; + +/** + * @Author 18209 + * @Date 2021/2/24 16:21 + * @Version 1.0 + */ +@Service +public class RelServiceImpl implements RelService { + private Logger logger = LoggerFactory.getLogger(RelServiceImpl.class); + + @Autowired + private RelDao relDao; + + /** + * 获取到数据库表信息 + * + * @return + */ + @Override + public GenServerResult>> tableInfos() { + try { + List> dataMap = relDao.tableInfos(); + return new GenServerResult<>(dataMap); + } catch (RuntimeException e) { + logger.error(e.getMessage()); + return new GenServerResult<>(false, "获取数据库表信息错误"); + } + } + + /** + * 获取到关联边字段信息 + * + * @param tableName 关联表表名 + * @param relId 关联关系id + * @return + */ + @Override + public GenServerResult> relColumns(String tableName, Long relId) { + try { + List relColumns = relDao.selectTableColumn(tableName); + for (RelColumn relColumn : relColumns) { + RelUtil.initRelColumn(relColumn, relId); + } + return new GenServerResult<>(true,relColumns); + } catch (RuntimeException e) { + logger.error(e.getMessage()); + return new GenServerResult<>(false, "获取关联边字段信息错误"); + } + } + + @Override + public GenServerResult>> tableColumns(String tableName) { + try { + List> columns = relDao.tableColumns(tableName); + return new GenServerResult<>(columns); + }catch (RuntimeException e){ + logger.error(e.getMessage()); + return new GenServerResult<>(false,"获取字段信息错误!"); + } + } + + @Override + public GenServerResult> relTableByTableId(Long tableId) { + try { + List relTables = relDao.relTableByTableId(tableId); + return new GenServerResult<>(relTables); + }catch (RuntimeException e){ + logger.error(e.getMessage()); + return new GenServerResult<>(false,"获取关联数据错误!"); + } + } +} \ No newline at end of file diff --git a/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/utils/GenServerResult.java b/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/utils/GenServerResult.java index 3adcbca..2e4d2fd 100644 --- a/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/utils/GenServerResult.java +++ b/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/utils/GenServerResult.java @@ -16,6 +16,12 @@ public class GenServerResult { public GenServerResult() { } + public GenServerResult(T data) { + this.data = data; + this.start = true; + this.msg = "操作成功"; + } + public GenServerResult(boolean start, T data, Integer count) { this.data = data; diff --git a/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/utils/RelUtil.java b/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/utils/RelUtil.java new file mode 100644 index 0000000..866dc7a --- /dev/null +++ b/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/utils/RelUtil.java @@ -0,0 +1,74 @@ +package com.hchyun.generator.utils; + +import com.hchyun.generator.entity.RelColumn; +import com.hchyun.generator.utils.constant.GenConstants; + +/** + * @Author 18209 + * @Date 2021/2/24 22:46 + * @Version 1.0 + */ +public class RelUtil { + + + public static void initRelColumn(RelColumn relColumn, Long relId) { + //获取数据库数据类型 + String dataType = GenUtils.getDbType(relColumn.getColumnType()); + //获取字段名称 + String columnName = relColumn.getColumnName(); + //设置tableid + relColumn.setRelId(relId); + //设置创建者id + relColumn.setCreateBy(1); + //转为设置java字段名称 + relColumn.setJavaField(GenStringUtils.toCamelCase(columnName)); + //默认类型 + relColumn.setJavaType(GenConstants.TYPE_STRING); + //默认查询条件 精确查询 + relColumn.setQueryType(GenConstants.QUERY_EQ); + + if (GenUtils.arraysContains(GenConstants.COLUMNTYPE_STR, dataType) || GenUtils.arraysContains(GenConstants.COLUMNTYPE_TEXT, dataType)) { + //字符串长度超500设置htmlType为文本域 + Integer columnLength = GenUtils.getColumnLength(relColumn.getColumnType()); + String htmlType = columnLength >= 500 || GenUtils.arraysContains(GenConstants.COLUMNTYPE_TEXT, dataType) ? GenConstants.HTML_TEXTAREA : GenConstants.HTML_INPUT; + relColumn.setHtmlType(htmlType); + } else if (GenUtils.arraysContains(GenConstants.COLUMNTYPE_TIME, dataType)) { + relColumn.setJavaType(GenConstants.TYPE_DATE); + relColumn.setHtmlType(GenConstants.HTML_DATETIME); + } else if (GenUtils.arraysContains(GenConstants.COLUMNTYPE_NUMBER, dataType)) { + relColumn.setHtmlType(GenConstants.HTML_INPUT); + + // 如果是浮点型 统一用BigDecimal + String[] str = GenStringUtils.split(GenStringUtils.substringBetween(relColumn.getColumnType(), "(", ")"), ","); + if (str != null && str.length == 2 && Integer.parseInt(str[1]) > 0) { + relColumn.setJavaType(GenConstants.TYPE_BIGDECIMAL); + } + // 如果是整形 + else if (str != null && str.length == 1 && Integer.parseInt(str[0]) <= 10) { + relColumn.setJavaType(GenConstants.TYPE_INTEGER); + } + // 长整形 + else { + relColumn.setJavaType(GenConstants.TYPE_LONG); + } + } + // 列表字段 + relColumn.setIsList(GenConstants.REQUIRE); + // 查询字段 + relColumn.setIsQuery(GenConstants.NO_REQUIRE); + // 查询字段类型 + if (GenStringUtils.endsWithIgnoreCase(columnName, "name")) { + relColumn.setQueryType(GenConstants.QUERY_LIKE); + } + // 状态字段设置单选框 + if (GenStringUtils.endsWithIgnoreCase(columnName, "status")) { + relColumn.setHtmlType(GenConstants.HTML_RADIO); + } + // 类型&性别字段设置下拉框 + else if (GenStringUtils.endsWithIgnoreCase(columnName, "type") + || GenStringUtils.endsWithIgnoreCase(columnName, "sex")) { + relColumn.setHtmlType(GenConstants.HTML_SELECT); + } + } + +} diff --git a/hchyun/hchyun-generator/src/main/resources/mapper/generator/RelMapper.xml b/hchyun/hchyun-generator/src/main/resources/mapper/generator/RelMapper.xml new file mode 100644 index 0000000..e054de3 --- /dev/null +++ b/hchyun/hchyun-generator/src/main/resources/mapper/generator/RelMapper.xml @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + insert into gen_rel_table(id, union_id, table_id, is_main, rel_name, rel_comment, + rel_column, table_column, rel_class, query_type, sort, create_by) + values + + (#{item.id},#{item.unionId},#{item.tableId},#{item.isMain}, + #{item.relName},#{item.relComment},#{item.relColumn},#{item.tableColumn},#{item.relClass}, + #{item.queryType},#{item.sort},#{item.createBy}) + + + + + insert into gen_rel_column(rel_id, column_name, column_comment, column_type, java_type, java_field, is_list, + is_query, query_type, html_type, dict_type, sort, create_by) + values + + (#{item.relId},#{item.columnName},#{item.columnComment},#{item.columnType}, + #{item.javaType},#{item.javaField},#{item.isList},#{item.isQuery}, + #{item.queryType},#{item.htmlType},#{item.dictType},#{item.sort}, + #{item.createBy}) + + + + + + + + delete from gen_rel_column where rel_id = #{relId} + + + + delete from gen_rel_table where table_id = #{tableId} + + + \ No newline at end of file diff --git a/hchyun/hchyun-system/src/main/java/com/hchyun/system/dao/SequenceDao.java b/hchyun/hchyun-system/src/main/java/com/hchyun/system/dao/SequenceDao.java new file mode 100644 index 0000000..30b4d45 --- /dev/null +++ b/hchyun/hchyun-system/src/main/java/com/hchyun/system/dao/SequenceDao.java @@ -0,0 +1,23 @@ +package com.hchyun.system.dao; + +/** + * @Author 18209 + * @Date 2021/2/24 17:56 + * @Version 1.0 + */ +public interface SequenceDao { + + /** + * 当前值 + * @param tableName + * @return + */ + Long currval(String tableName); + + /** + * 下一个值 + * @param tableName + * @return + */ + Long nextval(String tableName); +} diff --git a/hchyun/hchyun-system/src/main/java/com/hchyun/system/service/SequenceService.java b/hchyun/hchyun-system/src/main/java/com/hchyun/system/service/SequenceService.java new file mode 100644 index 0000000..808f8d9 --- /dev/null +++ b/hchyun/hchyun-system/src/main/java/com/hchyun/system/service/SequenceService.java @@ -0,0 +1,23 @@ +package com.hchyun.system.service; + +/** + * @Author 18209 + * @Date 2021/2/24 17:56 + * @Version 1.0 + */ +public interface SequenceService { + /** + * 当前值 + * @param tableName + * @return + */ + Long currval(String tableName); + + /** + * 下一个值 + * @param tableName + * @return + */ + Long nextval(String tableName); + +} diff --git a/hchyun/hchyun-system/src/main/java/com/hchyun/system/service/impl/SequenceServiceImpl.java b/hchyun/hchyun-system/src/main/java/com/hchyun/system/service/impl/SequenceServiceImpl.java new file mode 100644 index 0000000..38af3f6 --- /dev/null +++ b/hchyun/hchyun-system/src/main/java/com/hchyun/system/service/impl/SequenceServiceImpl.java @@ -0,0 +1,31 @@ +package com.hchyun.system.service.impl; + +import com.hchyun.system.dao.SequenceDao; +import com.hchyun.system.service.SequenceService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * @Author 18209 + * @Date 2021/2/24 17:56 + * @Version 1.0 + */ +@Service +public class SequenceServiceImpl implements SequenceService { + private Logger logger = LoggerFactory.getLogger(SequenceServiceImpl.class); + + @Autowired + private SequenceDao sequenceDao; + + @Override + public Long currval(String tableName) { + return sequenceDao.currval(tableName); + } + + @Override + public Long nextval(String tableName) { + return sequenceDao.nextval(tableName); + } +} diff --git a/hchyun/hchyun-system/src/main/resources/mapper/system/SeqMapper.xml b/hchyun/hchyun-system/src/main/resources/mapper/system/SeqMapper.xml new file mode 100644 index 0000000..e0f58b9 --- /dev/null +++ b/hchyun/hchyun-system/src/main/resources/mapper/system/SeqMapper.xml @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file