From 9ccc80291edde8f3b28a3649ab8d0cf6036c9075 Mon Sep 17 00:00:00 2001 From: "20932067@zju.edu.cn" Date: Sat, 6 Feb 2021 18:25:22 +0800 Subject: [PATCH] 11 --- hchyun-ui/src/api/tool/associated.js | 32 ++ hchyun-ui/src/router/index.js | 8 +- hchyun-ui/src/views/tool/gen/editTable.vue | 4 +- hchyun-ui/src/views/tool/gen/genInfoForm.vue | 329 +++++++++++++----- hchyun-ui/src/views/tool/query/queryDate.vue | 2 +- hchyun-ui/src/views/tool/query/uniQuery.vue | 2 +- .../main/resources/mybatis/mybatis-config.xml | 6 +- .../hchyun/common/constant/GenConstants.java | 4 + .../hchyun/common/core/text/StrFormatter.java | 46 +-- .../com/hchyun/common/utils/StringUtils.java | 252 +++++--------- .../com/hchyun/framework/dao/ShutdownDao.java | 17 +- .../controller/AssociatedController.java | 82 +++++ .../generator/controller/QueryController.java | 2 +- .../hchyun/generator/controller/SysTest.java | 44 --- .../hchyun/generator/dao/AssociatedDao.java | 48 +++ .../hchyun/generator/entity/AssColumn.java | 155 +++++++++ .../com/hchyun/generator/entity/GenTable.java | 42 +++ .../generator/entity/GenTableColumn.java | 267 +++++++------- .../generator/service/AssociatedService.java | 38 ++ .../service/impl/AssociatedServiceImpl.java | 64 ++++ .../service/impl/GenTableServiceImpl.java | 30 +- .../generator/util/AssociatedUtils.java | 77 ++++ .../com/hchyun/generator/util/GenUtils.java | 126 +++---- .../mapper/generator/AssociateMapper.xml | 46 +++ .../mapper/generator/GenTableMapper.xml | 74 ++-- .../src/main/resources/vm/java/class.java.vm | 6 +- .../main/resources/vm/java/controller.java.vm | 1 + 27 files changed, 1203 insertions(+), 601 deletions(-) create mode 100644 hchyun-ui/src/api/tool/associated.js create mode 100644 hchyun/hchyun-generator/src/main/java/com/hchyun/generator/controller/AssociatedController.java delete mode 100644 hchyun/hchyun-generator/src/main/java/com/hchyun/generator/controller/SysTest.java create mode 100644 hchyun/hchyun-generator/src/main/java/com/hchyun/generator/dao/AssociatedDao.java create mode 100644 hchyun/hchyun-generator/src/main/java/com/hchyun/generator/entity/AssColumn.java create mode 100644 hchyun/hchyun-generator/src/main/java/com/hchyun/generator/service/AssociatedService.java create mode 100644 hchyun/hchyun-generator/src/main/java/com/hchyun/generator/service/impl/AssociatedServiceImpl.java create mode 100644 hchyun/hchyun-generator/src/main/java/com/hchyun/generator/util/AssociatedUtils.java create mode 100644 hchyun/hchyun-generator/src/main/resources/mapper/generator/AssociateMapper.xml diff --git a/hchyun-ui/src/api/tool/associated.js b/hchyun-ui/src/api/tool/associated.js new file mode 100644 index 0000000..a4f5b39 --- /dev/null +++ b/hchyun-ui/src/api/tool/associated.js @@ -0,0 +1,32 @@ +import request from "@/utils/request"; + +/** + * 获取表信息 + * @returns {AxiosPromise} + */ +export function getTableInfos() { + return request({ + url: '/ass/tableinfos', + method: 'get' + }) +} + +/** + * 获取关联表表的字段信息 + * @param tableName 关联表表名 + * @param tableId 关联表id + * @returns {AxiosPromise} + */ +export function getAssColumns(tableName,tableId){ + return request({ + url: '/ass/'+tableName+'/'+tableId, + method: 'get' + }) +} + +export function getAssColumnsByTableId(tableId){ + return request({ + url:'/ass/'+tableId, + method: 'get' + }) +} diff --git a/hchyun-ui/src/router/index.js b/hchyun-ui/src/router/index.js index 161edad..9f9a668 100644 --- a/hchyun-ui/src/router/index.js +++ b/hchyun-ui/src/router/index.js @@ -129,13 +129,7 @@ export const constantRoutes = [ component: (resolve) => require(['@/views/tool/query/uniQuery'], resolve), name: 'UniQuery', meta: { title: '万能查询配置' } - }, - // { - // path: 'data/:dataId(\\d+)', - // component: (resolve) => require(['@/views/tool/query/queryDate'], resolve), - // name: 'QueryDate', - // meta: { title: '信息统计' } - // } + } ] }, { diff --git a/hchyun-ui/src/views/tool/gen/editTable.vue b/hchyun-ui/src/views/tool/gen/editTable.vue index 5b01b46..9b4ccd7 100644 --- a/hchyun-ui/src/views/tool/gen/editTable.vue +++ b/hchyun-ui/src/views/tool/gen/editTable.vue @@ -122,7 +122,7 @@ - + @@ -204,11 +204,13 @@ export default { submitForm() { const basicForm = this.$refs.basicInfo.$refs.basicInfoForm; const genForm = this.$refs.genInfo.$refs.genInfoForm; + const assColumns = this.$refs.genInfo.$refs.assCloumnTable.data; Promise.all([basicForm, genForm].map(this.getFormPromise)).then(res => { const validateResult = res.every(item => !!item); if (validateResult) { const genTable = Object.assign({}, basicForm.model, genForm.model); genTable.columns = this.cloumns; + genTable.assColumns = assColumns; genTable.params = { treeCode: genTable.treeCode, treeName: genTable.treeName, diff --git a/hchyun-ui/src/views/tool/gen/genInfoForm.vue b/hchyun-ui/src/views/tool/gen/genInfoForm.vue index c99f150..52c1ebe 100644 --- a/hchyun-ui/src/views/tool/gen/genInfoForm.vue +++ b/hchyun-ui/src/views/tool/gen/genInfoForm.vue @@ -5,9 +5,10 @@ 生成模板 - - - + + + + @@ -20,7 +21,7 @@ - + @@ -32,7 +33,7 @@ - + @@ -44,7 +45,7 @@ - + @@ -56,7 +57,7 @@ - + @@ -172,6 +173,7 @@ +

关联信息

@@ -211,90 +213,257 @@
+
+ +

关联关系

+ + + + 主表id + + + + + + + + + + + + + 关联表表名 + + + + + + + + + + + + + 关联表表名 + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/hchyun-ui/src/views/tool/query/queryDate.vue b/hchyun-ui/src/views/tool/query/queryDate.vue index 1f6fae0..a819680 100644 --- a/hchyun-ui/src/views/tool/query/queryDate.vue +++ b/hchyun-ui/src/views/tool/query/queryDate.vue @@ -151,7 +151,7 @@ export default { /** 导出按钮操作 */ handleExport() { var that = this - this.$confirm('是否确认查询数据项?', "警告", { + this.$confirm('是否确认导出查询数据项?', "警告", { confirmButtonText: "确定", cancelButtonText: "取消", type: "warning" diff --git a/hchyun-ui/src/views/tool/query/uniQuery.vue b/hchyun-ui/src/views/tool/query/uniQuery.vue index 02e657a..60c86fb 100644 --- a/hchyun-ui/src/views/tool/query/uniQuery.vue +++ b/hchyun-ui/src/views/tool/query/uniQuery.vue @@ -415,7 +415,7 @@ export default { var that = this let list = JSONString(that.cloumns) let data = that.info - this.$confirm('是否确认查询数据项?', "警告", { + this.$confirm('是否确认导出查询数据项?', "警告", { confirmButtonText: "确定", cancelButtonText: "取消", type: "warning" diff --git a/hchyun/hchyun-admin/src/main/resources/mybatis/mybatis-config.xml b/hchyun/hchyun-admin/src/main/resources/mybatis/mybatis-config.xml index e8b52be..a5241ec 100644 --- a/hchyun/hchyun-admin/src/main/resources/mybatis/mybatis-config.xml +++ b/hchyun/hchyun-admin/src/main/resources/mybatis/mybatis-config.xml @@ -3,13 +3,13 @@ PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> - + - + - + diff --git a/hchyun/hchyun-common/src/main/java/com/hchyun/common/constant/GenConstants.java b/hchyun/hchyun-common/src/main/java/com/hchyun/common/constant/GenConstants.java index 14cb0c6..965c5d3 100644 --- a/hchyun/hchyun-common/src/main/java/com/hchyun/common/constant/GenConstants.java +++ b/hchyun/hchyun-common/src/main/java/com/hchyun/common/constant/GenConstants.java @@ -109,7 +109,11 @@ public class GenConstants /** 模糊查询 */ public static final String QUERY_LIKE = "LIKE"; + /** 精确查询 */ + public static final String QUERY_EQ = "EQ"; /** 需要 */ public static final String REQUIRE = "1"; + /** 不需要 */ + public static final String NO_REQUIRE = "0"; } diff --git a/hchyun/hchyun-common/src/main/java/com/hchyun/common/core/text/StrFormatter.java b/hchyun/hchyun-common/src/main/java/com/hchyun/common/core/text/StrFormatter.java index f18afbe..be910bb 100644 --- a/hchyun/hchyun-common/src/main/java/com/hchyun/common/core/text/StrFormatter.java +++ b/hchyun/hchyun-common/src/main/java/com/hchyun/common/core/text/StrFormatter.java @@ -4,11 +4,10 @@ import com.hchyun.common.utils.StringUtils; /** * 字符串格式化 - * + * * @author hchyun */ -public class StrFormatter -{ +public class StrFormatter { public static final String EMPTY_JSON = "{}"; public static final char C_BACKSLASH = '\\'; public static final char C_DELIM_START = '{'; @@ -22,15 +21,13 @@ public class StrFormatter * 通常使用:format("this is {} for {}", "a", "b") -> this is a for b
* 转义{}: format("this is \\{} for {}", "a", "b") -> this is \{} for a
* 转义\: format("this is \\\\{} for {}", "a", "b") -> this is \a for b
- * + * * @param strPattern 字符串模板 - * @param argArray 参数列表 + * @param argArray 参数列表 * @return 结果 */ - public static String format(final String strPattern, final Object... argArray) - { - if (StringUtils.isEmpty(strPattern) || StringUtils.isEmpty(argArray)) - { + public static String format(final String strPattern, final Object... argArray) { + if (StringUtils.isEmpty(strPattern) || StringUtils.isEmpty(argArray)) { return strPattern; } final int strPatternLength = strPattern.length(); @@ -40,43 +37,30 @@ public class StrFormatter int handledPosition = 0; int delimIndex;// 占位符所在位置 - for (int argIndex = 0; argIndex < argArray.length; argIndex++) - { + for (int argIndex = 0; argIndex < argArray.length; argIndex++) { delimIndex = strPattern.indexOf(EMPTY_JSON, handledPosition); - if (delimIndex == -1) - { - if (handledPosition == 0) - { + if (delimIndex == -1) { + if (handledPosition == 0) { return strPattern; - } - else - { // 字符串模板剩余部分不再包含占位符,加入剩余部分后返回结果 + } else { // 字符串模板剩余部分不再包含占位符,加入剩余部分后返回结果 sbuf.append(strPattern, handledPosition, strPatternLength); return sbuf.toString(); } - } - else - { - if (delimIndex > 0 && strPattern.charAt(delimIndex - 1) == C_BACKSLASH) - { - if (delimIndex > 1 && strPattern.charAt(delimIndex - 2) == C_BACKSLASH) - { + } else { + if (delimIndex > 0 && strPattern.charAt(delimIndex - 1) == C_BACKSLASH) { + if (delimIndex > 1 && strPattern.charAt(delimIndex - 2) == C_BACKSLASH) { // 转义符之前还有一个转义符,占位符依旧有效 sbuf.append(strPattern, handledPosition, delimIndex - 1); sbuf.append(Convert.utf8Str(argArray[argIndex])); handledPosition = delimIndex + 2; - } - else - { + } else { // 占位符被转义 argIndex--; sbuf.append(strPattern, handledPosition, delimIndex - 1); sbuf.append(C_DELIM_START); handledPosition = delimIndex + 1; } - } - else - { + } else { // 正常占位符 sbuf.append(strPattern, handledPosition, delimIndex); sbuf.append(Convert.utf8Str(argArray[argIndex])); diff --git a/hchyun/hchyun-common/src/main/java/com/hchyun/common/utils/StringUtils.java b/hchyun/hchyun-common/src/main/java/com/hchyun/common/utils/StringUtils.java index c7e2bd9..08ba53f 100644 --- a/hchyun/hchyun-common/src/main/java/com/hchyun/common/utils/StringUtils.java +++ b/hchyun/hchyun-common/src/main/java/com/hchyun/common/utils/StringUtils.java @@ -6,186 +6,172 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; + import com.hchyun.common.core.text.StrFormatter; /** * 字符串工具类 - * + * * @author hchyun */ -public class StringUtils extends org.apache.commons.lang3.StringUtils -{ - /** 空字符串 */ +public class StringUtils extends org.apache.commons.lang3.StringUtils { + /** + * 空字符串 + */ private static final String NULLSTR = ""; - /** 下划线 */ + /** + * 下划线 + */ private static final char SEPARATOR = '_'; /** * 获取参数不为空值 - * + * * @param value defaultValue 要判断的value * @return value 返回值 */ - public static T nvl(T value, T defaultValue) - { + public static T nvl(T value, T defaultValue) { return value != null ? value : defaultValue; } /** * * 判断一个Collection是否为空, 包含List,Set,Queue - * + * * @param coll 要判断的Collection * @return true:为空 false:非空 */ - public static boolean isEmpty(Collection coll) - { + public static boolean isEmpty(Collection coll) { return isNull(coll) || coll.isEmpty(); } /** * * 判断一个Collection是否非空,包含List,Set,Queue - * + * * @param coll 要判断的Collection * @return true:非空 false:空 */ - public static boolean isNotEmpty(Collection coll) - { + public static boolean isNotEmpty(Collection coll) { return !isEmpty(coll); } /** * * 判断一个对象数组是否为空 - * + * * @param objects 要判断的对象数组 - ** @return true:为空 false:非空 + * * @return true:为空 false:非空 */ - public static boolean isEmpty(Object[] objects) - { + public static boolean isEmpty(Object[] objects) { return isNull(objects) || (objects.length == 0); } /** * * 判断一个对象数组是否非空 - * + * * @param objects 要判断的对象数组 * @return true:非空 false:空 */ - public static boolean isNotEmpty(Object[] objects) - { + public static boolean isNotEmpty(Object[] objects) { return !isEmpty(objects); } /** * * 判断一个Map是否为空 - * + * * @param map 要判断的Map * @return true:为空 false:非空 */ - public static boolean isEmpty(Map map) - { + public static boolean isEmpty(Map map) { return isNull(map) || map.isEmpty(); } /** * * 判断一个Map是否为空 - * + * * @param map 要判断的Map * @return true:非空 false:空 */ - public static boolean isNotEmpty(Map map) - { + public static boolean isNotEmpty(Map map) { return !isEmpty(map); } /** * * 判断一个字符串是否为空串 - * + * * @param str String * @return true:为空 false:非空 */ - public static boolean isEmpty(String str) - { + public static boolean isEmpty(String str) { return isNull(str) || NULLSTR.equals(str.trim()); } /** * * 判断一个字符串是否为非空串 - * + * * @param str String * @return true:非空串 false:空串 */ - public static boolean isNotEmpty(String str) - { + public static boolean isNotEmpty(String str) { return !isEmpty(str); } /** * * 判断一个对象是否为空 - * + * * @param object Object * @return true:为空 false:非空 */ - public static boolean isNull(Object object) - { + public static boolean isNull(Object object) { return object == null; } /** * * 判断一个对象是否非空 - * + * * @param object Object * @return true:非空 false:空 */ - public static boolean isNotNull(Object object) - { + public static boolean isNotNull(Object object) { return !isNull(object); } /** * * 判断一个对象是否是数组类型(Java基本型别的数组) - * + * * @param object 对象 * @return true:是数组 false:不是数组 */ - public static boolean isArray(Object object) - { + public static boolean isArray(Object object) { return isNotNull(object) && object.getClass().isArray(); } /** * 去空格 */ - public static String trim(String str) - { + public static String trim(String str) { return (str == null ? "" : str.trim()); } /** * 截取字符串 - * - * @param str 字符串 + * + * @param str 字符串 * @param start 开始 * @return 结果 */ - public static String substring(final String str, int start) - { - if (str == null) - { + public static String substring(final String str, int start) { + if (str == null) { return NULLSTR; } - if (start < 0) - { + if (start < 0) { start = str.length() + start; } - if (start < 0) - { + if (start < 0) { start = 0; } - if (start > str.length()) - { + if (start > str.length()) { return NULLSTR; } @@ -194,44 +180,36 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils /** * 截取字符串 - * - * @param str 字符串 + * + * @param str 字符串 * @param start 开始 - * @param end 结束 + * @param end 结束 * @return 结果 */ - public static String substring(final String str, int start, int end) - { - if (str == null) - { + public static String substring(final String str, int start, int end) { + if (str == null) { return NULLSTR; } - if (end < 0) - { + if (end < 0) { end = str.length() + end; } - if (start < 0) - { + if (start < 0) { start = str.length() + start; } - if (end > str.length()) - { + if (end > str.length()) { end = str.length(); } - if (start > end) - { + if (start > end) { return NULLSTR; } - if (start < 0) - { + if (start < 0) { start = 0; } - if (end < 0) - { + if (end < 0) { end = 0; } @@ -246,15 +224,13 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils * 通常使用:format("this is {} for {}", "a", "b") -> this is a for b
* 转义{}: format("this is \\{} for {}", "a", "b") -> this is \{} for a
* 转义\: format("this is \\\\{} for {}", "a", "b") -> this is \a for b
- * + * * @param template 文本模板,被替换的部分用 {} 表示 - * @param params 参数值 + * @param params 参数值 * @return 格式化后的文本 */ - public static String format(String template, Object... params) - { - if (isEmpty(params) || isEmpty(template)) - { + public static String format(String template, Object... params) { + if (isEmpty(params) || isEmpty(template)) { return template; } return StrFormatter.format(template, params); @@ -262,47 +238,40 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils /** * 字符串转set - * + * * @param str 字符串 * @param sep 分隔符 * @return set集合 */ - public static final Set str2Set(String str, String sep) - { + public static final Set str2Set(String str, String sep) { return new HashSet(str2List(str, sep, true, false)); } /** * 字符串转list - * - * @param str 字符串 - * @param sep 分隔符 + * + * @param str 字符串 + * @param sep 分隔符 * @param filterBlank 过滤纯空白 - * @param trim 去掉首尾空白 + * @param trim 去掉首尾空白 * @return list集合 */ - public static final List str2List(String str, String sep, boolean filterBlank, boolean trim) - { + public static final List str2List(String str, String sep, boolean filterBlank, boolean trim) { List list = new ArrayList(); - if (StringUtils.isEmpty(str)) - { + if (StringUtils.isEmpty(str)) { return list; } // 过滤空白字符串 - if (filterBlank && StringUtils.isBlank(str)) - { + if (filterBlank && StringUtils.isBlank(str)) { return list; } String[] split = str.split(sep); - for (String string : split) - { - if (filterBlank && StringUtils.isBlank(string)) - { + for (String string : split) { + if (filterBlank && StringUtils.isBlank(string)) { continue; } - if (trim) - { + if (trim) { string = string.trim(); } list.add(string); @@ -314,10 +283,8 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils /** * 下划线转驼峰命名 */ - public static String toUnderScoreCase(String str) - { - if (str == null) - { + public static String toUnderScoreCase(String str) { + if (str == null) { return null; } StringBuilder sb = new StringBuilder(); @@ -327,31 +294,23 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils boolean curreCharIsUpperCase = true; // 下一字符是否大写 boolean nexteCharIsUpperCase = true; - for (int i = 0; i < str.length(); i++) - { + for (int i = 0; i < str.length(); i++) { char c = str.charAt(i); - if (i > 0) - { + if (i > 0) { preCharIsUpperCase = Character.isUpperCase(str.charAt(i - 1)); - } - else - { + } else { preCharIsUpperCase = false; } curreCharIsUpperCase = Character.isUpperCase(c); - if (i < (str.length() - 1)) - { + if (i < (str.length() - 1)) { nexteCharIsUpperCase = Character.isUpperCase(str.charAt(i + 1)); } - if (preCharIsUpperCase && curreCharIsUpperCase && !nexteCharIsUpperCase) - { + if (preCharIsUpperCase && curreCharIsUpperCase && !nexteCharIsUpperCase) { sb.append(SEPARATOR); - } - else if ((i != 0 && !preCharIsUpperCase) && curreCharIsUpperCase) - { + } else if ((i != 0 && !preCharIsUpperCase) && curreCharIsUpperCase) { sb.append(SEPARATOR); } sb.append(Character.toLowerCase(c)); @@ -362,19 +321,15 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils /** * 是否包含字符串 - * - * @param str 验证字符串 + * + * @param str 验证字符串 * @param strs 字符串组 * @return 包含返回true */ - public static boolean inStringIgnoreCase(String str, String... strs) - { - if (str != null && strs != null) - { - for (String s : strs) - { - if (str.equalsIgnoreCase(trim(s))) - { + public static boolean inStringIgnoreCase(String str, String... strs) { + if (str != null && strs != null) { + for (String s : strs) { + if (str.equalsIgnoreCase(trim(s))) { return true; } } @@ -384,31 +339,25 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils /** * 将下划线大写方式命名的字符串转换为驼峰式。如果转换前的下划线大写方式命名的字符串为空,则返回空字符串。 例如:HELLO_WORLD->HelloWorld - * + * * @param name 转换前的下划线大写方式命名的字符串 * @return 转换后的驼峰式命名的字符串 */ - public static String convertToCamelCase(String name) - { + public static String convertToCamelCase(String name) { StringBuilder result = new StringBuilder(); // 快速检查 - if (name == null || name.isEmpty()) - { + if (name == null || name.isEmpty()) { // 没必要转换 return ""; - } - else if (!name.contains("_")) - { + } else if (!name.contains("_")) { // 不含下划线,仅将首字母大写 return name.substring(0, 1).toUpperCase() + name.substring(1); } // 用下划线将原始字符串分割 String[] camels = name.split("_"); - for (String camel : camels) - { + for (String camel : camels) { // 跳过原始字符串中开头、结尾的下换线或双重下划线 - if (camel.isEmpty()) - { + if (camel.isEmpty()) { continue; } // 首字母大写 @@ -421,30 +370,22 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils /** * 驼峰式命名法 例如:user_name->userName */ - public static String toCamelCase(String s) - { - if (s == null) - { + public static String toCamelCase(String s) { + if (s == null) { return null; } s = s.toLowerCase(); StringBuilder sb = new StringBuilder(s.length()); boolean upperCase = false; - for (int i = 0; i < s.length(); i++) - { + for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); - if (c == SEPARATOR) - { + if (c == SEPARATOR) { upperCase = true; - } - else if (upperCase) - { + } else if (upperCase) { sb.append(Character.toUpperCase(c)); upperCase = false; - } - else - { + } else { sb.append(c); } } @@ -452,8 +393,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils } @SuppressWarnings("unchecked") - public static T cast(Object obj) - { + public static T cast(Object obj) { return (T) obj; } } \ No newline at end of file diff --git a/hchyun/hchyun-framework/src/main/java/com/hchyun/framework/dao/ShutdownDao.java b/hchyun/hchyun-framework/src/main/java/com/hchyun/framework/dao/ShutdownDao.java index 8df8359..a3ee631 100644 --- a/hchyun/hchyun-framework/src/main/java/com/hchyun/framework/dao/ShutdownDao.java +++ b/hchyun/hchyun-framework/src/main/java/com/hchyun/framework/dao/ShutdownDao.java @@ -3,6 +3,7 @@ package com.hchyun.framework.dao; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; + import javax.annotation.PreDestroy; /** @@ -11,28 +12,22 @@ import javax.annotation.PreDestroy; * @author hchyun */ @Component -public class ShutdownDao -{ +public class ShutdownDao { private static final Logger logger = LoggerFactory.getLogger("sys-user"); @PreDestroy - public void destroy() - { + public void destroy() { shutdownAsyncManager(); } /** * 停止异步执行任务 */ - private void shutdownAsyncManager() - { - try - { + private void shutdownAsyncManager() { + try { logger.info("====关闭后台任务任务线程池===="); AsyncDao.me().shutdown(); - } - catch (Exception e) - { + } catch (Exception e) { logger.error(e.getMessage(), e); } } diff --git a/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/controller/AssociatedController.java b/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/controller/AssociatedController.java new file mode 100644 index 0000000..a8c49ba --- /dev/null +++ b/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/controller/AssociatedController.java @@ -0,0 +1,82 @@ +package com.hchyun.generator.controller; + +import com.hchyun.common.constant.ReturnConstants; +import com.hchyun.common.core.entity.AjaxResult; +import com.hchyun.common.utils.ServerResult; +import com.hchyun.generator.entity.AssColumn; +import com.hchyun.generator.service.AssociatedService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +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/5 17:38 + * @Version 1.0 + */ +@RestController +@Api("关联查询") +@RequestMapping("/ass") +public class AssociatedController { + private Logger logger = LoggerFactory.getLogger(AssociatedController.class); + + @Autowired + private AssociatedService associatedService; + + + @ApiOperation("tableid") + @GetMapping("/{tableId}") + private AjaxResult assColumnsByTable(@PathVariable("tableId")Long tableId){ + try { + ServerResult> serverResult = associatedService.assColumnsByTable(tableId); + if (serverResult.isStart()){ + return AjaxResult.success(serverResult.getData()); + }else { + return AjaxResult.error(serverResult.getMsg()); + } + }catch (RuntimeException e){ + logger.error(e.getMessage()); + return AjaxResult.error(); + } + } + + @ApiOperation("获取表信息") + @GetMapping("/tableinfos") + public AjaxResult tableInfos(){ + try { + ServerResult>> serverResult = associatedService.tableInfos(); + if (serverResult.isStart()){ + return AjaxResult.success(serverResult.getData()); + }else { + return AjaxResult.error(serverResult.getMsg()); + } + }catch (RuntimeException e){ + logger.error(e.getMessage()); + return AjaxResult.error(ReturnConstants.SYS_ERROR); + } + } + @ApiOperation("关联表字段") + @GetMapping("/{tableName}/{tableId}") + public AjaxResult assColumns(@PathVariable("tableName")String tableName,@PathVariable("tableId") Long tableId){ + try { + ServerResult> serverResult = associatedService.assColumns(tableName, tableId); + if (serverResult.isStart()){ + return AjaxResult.success(serverResult.getData()); + }else { + return AjaxResult.error(serverResult.getMsg()); + } + }catch (RuntimeException e){ + logger.error(e.getMessage()); + return AjaxResult.error(ReturnConstants.SYS_ERROR); + } + } +} diff --git a/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/controller/QueryController.java b/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/controller/QueryController.java index beb8462..e80f2de 100644 --- a/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/controller/QueryController.java +++ b/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/controller/QueryController.java @@ -35,7 +35,7 @@ import java.util.Map; @Api("query") @RequestMapping("/query") public class QueryController extends BaseController { - protected final Logger logger = LoggerFactory.getLogger(QueryController.class); + private Logger logger = LoggerFactory.getLogger(QueryController.class); @Autowired diff --git a/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/controller/SysTest.java b/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/controller/SysTest.java deleted file mode 100644 index 80729bf..0000000 --- a/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/controller/SysTest.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.hchyun.generator.controller; - -import com.hchyun.generator.dao.ApiclassDao; -import com.hchyun.generator.dao.InterTableDao; -import com.hchyun.generator.entity.Apiclass; -import com.hchyun.generator.entity.InterTable; -import com.hchyun.generator.service.InterTableService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.util.List; -import java.util.Map; - -@RestController -@RequestMapping("/tests") -public class SysTest { - @Autowired - private InterTableDao interTableDao; - @Autowired - private InterTableService interTableService; - - @GetMapping("/1") - public Apiclass test() { - return interTableDao.selectInterTableClass(3L); - } - - @GetMapping("/2") - public List test2() { - return interTableDao.selectInterTableModule(3L); - } - - @GetMapping("/3") - public Map test3(){ - return interTableService.previewCodeCalss(3L).getData(); - } - - @GetMapping("/4") - public Map test4(){ - return interTableService.previewCodeMoudle(3L).getData(); - } - -} diff --git a/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/dao/AssociatedDao.java b/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/dao/AssociatedDao.java new file mode 100644 index 0000000..fa85d78 --- /dev/null +++ b/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/dao/AssociatedDao.java @@ -0,0 +1,48 @@ +package com.hchyun.generator.dao; + +import com.hchyun.generator.entity.AssColumn; + +import java.util.List; +import java.util.Map; + +/** + * @Author 18209 + * @Date 2021/2/5 17:41 + * @Version 1.0 + */ +public interface AssociatedDao { + + /** + * 获取表信息 + * @return + */ + List> tableInfos(); + + /** + * 获取表字段信息 + * @param tableName + * @return + */ + List selectTableColumn(String tableName); + + /** + * 通过tableId删除字段信息 + * @param tableId + * @return + */ + Integer deleteTableColumn(Long tableId); + + /** + * 批量增加字段信息 + * @param assColumns + * @return + */ + Integer insertColumns(List assColumns); + + /** + * 通过tableId获取字段信息 + * @param tableId + * @return + */ + List selectTableColumnByTableId(Long tableId); +} diff --git a/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/entity/AssColumn.java b/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/entity/AssColumn.java new file mode 100644 index 0000000..5696203 --- /dev/null +++ b/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/entity/AssColumn.java @@ -0,0 +1,155 @@ +package com.hchyun.generator.entity; + + +public class AssColumn { + + private long id; + private long tableId; + private String columnName; + private String columnComment; + private String columnType; + private String javaType; + private String javaField; + private String isList; + private String isQuery; + private String queryType; + private String htmlType; + private String dictType; + private Integer sort; + private long createBy; + private long updateBy; + + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + + public long getTableId() { + return tableId; + } + + public void setTableId(long tableId) { + this.tableId = tableId; + } + + + 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; + } + + public long getUpdateBy() { + return updateBy; + } + + public void setUpdateBy(long updateBy) { + this.updateBy = updateBy; + } + +} 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 117d635..c33adb0 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 @@ -77,6 +77,9 @@ public class GenTable extends BaseEntity @Valid private List columns; + private List assColumns; + + /** 其它生成选项 */ private String options; @@ -95,6 +98,45 @@ public class GenTable extends BaseEntity /** 上级菜单名称字段 */ private String parentMenuName; + private String assTableName; + + private String assTableColumn; + + private String assTableFkColumn; + + + public List getAssColumns() { + return assColumns; + } + + public void setAssColumns(List assColumns) { + this.assColumns = assColumns; + } + + public String getAssTableName() { + return assTableName; + } + + public void setAssTableName(String assTableName) { + this.assTableName = assTableName; + } + + public String getAssTableColumn() { + return assTableColumn; + } + + public void setAssTableColumn(String assTableColumn) { + this.assTableColumn = assTableColumn; + } + + public String getAssTableFkColumn() { + return assTableFkColumn; + } + + public void setAssTableFkColumn(String assTableFkColumn) { + this.assTableFkColumn = assTableFkColumn; + } + public Long getTableId() { return tableId; diff --git a/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/entity/GenTableColumn.java b/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/entity/GenTableColumn.java index 1083f5d..00aa745 100644 --- a/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/entity/GenTableColumn.java +++ b/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/entity/GenTableColumn.java @@ -1,77 +1,117 @@ package com.hchyun.generator.entity; import javax.validation.constraints.NotBlank; + import com.hchyun.common.core.entity.BaseEntity; import com.hchyun.common.utils.StringUtils; /** * 代码生成业务字段表 gen_table_column - * + * * @author hchyun */ -public class GenTableColumn extends BaseEntity -{ +public class GenTableColumn extends BaseEntity { - /** 编号 */ + /** + * 编号 + */ private Long columnId; - /** 归属表编号 */ + /** + * 归属表编号 + */ private Long tableId; - /** 列名称 */ + /** + * 列名称 + */ private String columnName; - /** 列描述 */ + /** + * 列描述 + */ private String columnComment; - /** 列类型 */ + /** + * 列类型 + */ private String columnType; - /** JAVA类型 */ + /** + * JAVA类型 + */ private String javaType; - /** JAVA字段名 */ + /** + * JAVA字段名 + */ @NotBlank(message = "Java属性不能为空") private String javaField; - /** 是否主键(1是) */ + /** + * 是否主键(1是) + */ private String isPk; - /** 是否自增(1是) */ + /** + * 是否自增(1是) + */ private String isIncrement; - /** 是否必填(1是) */ + /** + * 是否必填(1是) + */ private String isRequired; - /** 是否为插入字段(1是) */ + /** + * 是否为插入字段(1是) + */ private String isInsert; - /** 是否编辑字段(1是) */ + /** + * 是否编辑字段(1是) + */ private String isEdit; - /** 是否列表字段(1是) */ + /** + * 是否列表字段(1是) + */ private String isList; - /** 是否查询字段(1是) */ + /** + * 是否查询字段(1是) + */ private String isQuery; - /** 是否正则(1否)*/ + /** + * 是否正则(1否) + */ private Long isRegular; - /** 正则表达式内容 */ + /** + * 正则表达式内容 + */ private String regular; - /** 查询方式(EQ等于、NE不等于、GT大于、LT小于、LIKE模糊、BETWEEN范围) */ + /** + * 查询方式(EQ等于、NE不等于、GT大于、LT小于、LIKE模糊、BETWEEN范围) + */ private String queryType; - /** 显示类型(input文本框、textarea文本域、select下拉框、checkbox复选框、radio单选框、datetime日期控件、image图片上传控件、upload文件上传控件、editor富文本控件) */ + /** + * 显示类型(input文本框、textarea文本域、select下拉框、checkbox复选框、radio单选框、datetime日期控件、image图片上传控件、upload文件上传控件、editor富文本控件) + */ private String htmlType; - /** 字典类型 */ + /** + * 字典类型 + */ private String dictType; - /** 排序 */ + /** + * 排序 + */ private Integer sort; @@ -91,268 +131,215 @@ public class GenTableColumn extends BaseEntity this.regular = regular; } - public void setColumnId(Long columnId) - { + public void setColumnId(Long columnId) { this.columnId = columnId; } - public Long getColumnId() - { + public Long getColumnId() { return columnId; } - public void setTableId(Long tableId) - { + public void setTableId(Long tableId) { this.tableId = tableId; } - public Long getTableId() - { + public Long getTableId() { return tableId; } - public void setColumnName(String columnName) - { + public void setColumnName(String columnName) { this.columnName = columnName; } - public String getColumnName() - { + public String getColumnName() { return columnName; } - public void setColumnComment(String columnComment) - { + public void setColumnComment(String columnComment) { this.columnComment = columnComment; } - public String getColumnComment() - { + public String getColumnComment() { return columnComment; } - public void setColumnType(String columnType) - { + public void setColumnType(String columnType) { this.columnType = columnType; } - public String getColumnType() - { + public String getColumnType() { return columnType; } - public void setJavaType(String javaType) - { + public void setJavaType(String javaType) { this.javaType = javaType; } - public String getJavaType() - { + public String getJavaType() { return javaType; } - public void setJavaField(String javaField) - { + public void setJavaField(String javaField) { this.javaField = javaField; } - public String getJavaField() - { + public String getJavaField() { return javaField; } - public String getCapJavaField() - { + public String getCapJavaField() { return StringUtils.capitalize(javaField); } - public void setIsPk(String isPk) - { + public void setIsPk(String isPk) { this.isPk = isPk; } - public String getIsPk() - { + public String getIsPk() { return isPk; } - public boolean isPk() - { + public boolean isPk() { return isPk(this.isPk); } - public boolean isPk(String isPk) - { + public boolean isPk(String isPk) { return isPk != null && StringUtils.equals("1", isPk); } - public String getIsIncrement() - { + public String getIsIncrement() { return isIncrement; } - public void setIsIncrement(String isIncrement) - { + public void setIsIncrement(String isIncrement) { this.isIncrement = isIncrement; } - public boolean isIncrement() - { + public boolean isIncrement() { return isIncrement(this.isIncrement); } - public boolean isIncrement(String isIncrement) - { + public boolean isIncrement(String isIncrement) { return isIncrement != null && StringUtils.equals("1", isIncrement); } - public void setIsRequired(String isRequired) - { + public void setIsRequired(String isRequired) { this.isRequired = isRequired; } - public String getIsRequired() - { + public String getIsRequired() { return isRequired; } - public boolean isRequired() - { + public boolean isRequired() { return isRequired(this.isRequired); } - public boolean isRequired(String isRequired) - { + public boolean isRequired(String isRequired) { return isRequired != null && StringUtils.equals("1", isRequired); } - public void setIsInsert(String isInsert) - { + public void setIsInsert(String isInsert) { this.isInsert = isInsert; } - public String getIsInsert() - { + public String getIsInsert() { return isInsert; } - public boolean isInsert() - { + public boolean isInsert() { return isInsert(this.isInsert); } - public boolean isInsert(String isInsert) - { + public boolean isInsert(String isInsert) { return isInsert != null && StringUtils.equals("1", isInsert); } - public void setIsEdit(String isEdit) - { + public void setIsEdit(String isEdit) { this.isEdit = isEdit; } - public String getIsEdit() - { + public String getIsEdit() { return isEdit; } - public boolean isEdit() - { + public boolean isEdit() { return isInsert(this.isEdit); } - public boolean isEdit(String isEdit) - { + public boolean isEdit(String isEdit) { return isEdit != null && StringUtils.equals("1", isEdit); } - public void setIsList(String isList) - { + public void setIsList(String isList) { this.isList = isList; } - public String getIsList() - { + public String getIsList() { return isList; } - public boolean isList() - { + public boolean isList() { return isList(this.isList); } - public boolean isList(String isList) - { + public boolean isList(String isList) { return isList != null && StringUtils.equals("1", isList); } - public void setIsQuery(String isQuery) - { + public void setIsQuery(String isQuery) { this.isQuery = isQuery; } - public String getIsQuery() - { + public String getIsQuery() { return isQuery; } - public boolean isQuery() - { + public boolean isQuery() { return isQuery(this.isQuery); } - public boolean isQuery(String isQuery) - { + public boolean isQuery(String isQuery) { return isQuery != null && StringUtils.equals("1", isQuery); } - public void setQueryType(String queryType) - { + public void setQueryType(String queryType) { this.queryType = queryType; } - public String getQueryType() - { + public String getQueryType() { return queryType; } - public String getHtmlType() - { + public String getHtmlType() { return htmlType; } - public void setHtmlType(String htmlType) - { + public void setHtmlType(String htmlType) { this.htmlType = htmlType; } - public void setDictType(String dictType) - { + public void setDictType(String dictType) { this.dictType = dictType; } - public String getDictType() - { + public String getDictType() { return dictType; } - public void setSort(Integer sort) - { + public void setSort(Integer sort) { this.sort = sort; } - public Integer getSort() - { + public Integer getSort() { return sort; } - public boolean isSuperColumn() - { + public boolean isSuperColumn() { return isSuperColumn(this.javaField); } - public static boolean isSuperColumn(String javaField) - { + public static boolean isSuperColumn(String javaField) { return StringUtils.equalsAnyIgnoreCase(javaField, // BaseEntity "createBy", "createTime", "updateBy", "updateTime", "remark", @@ -360,36 +347,28 @@ public class GenTableColumn extends BaseEntity "parentName", "parentId", "orderNum", "ancestors"); } - public boolean isUsableColumn() - { + public boolean isUsableColumn() { return isUsableColumn(javaField); } - public static boolean isUsableColumn(String javaField) - { + public static boolean isUsableColumn(String javaField) { // isSuperColumn()中的名单用于避免生成多余Domain属性,若某些属性在生成页面时需要用到不能忽略,则放在此处白名单 return StringUtils.equalsAnyIgnoreCase(javaField, "parentId", "orderNum", "remark"); } - public String readConverterExp() - { + public String readConverterExp() { String remarks = StringUtils.substringBetween(this.columnComment, "(", ")"); StringBuffer sb = new StringBuffer(); - if (StringUtils.isNotEmpty(remarks)) - { - for (String value : remarks.split(" ")) - { - if (StringUtils.isNotEmpty(value)) - { + if (StringUtils.isNotEmpty(remarks)) { + for (String value : remarks.split(" ")) { + if (StringUtils.isNotEmpty(value)) { Object startStr = value.subSequence(0, 1); String endStr = value.substring(1); sb.append("").append(startStr).append("=").append(endStr).append(","); } } return sb.deleteCharAt(sb.length() - 1).toString(); - } - else - { + } else { return this.columnComment; } } diff --git a/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/service/AssociatedService.java b/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/service/AssociatedService.java new file mode 100644 index 0000000..1ee4770 --- /dev/null +++ b/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/service/AssociatedService.java @@ -0,0 +1,38 @@ +package com.hchyun.generator.service; + +import com.hchyun.common.utils.ServerResult; +import com.hchyun.generator.entity.AssColumn; + +import java.util.List; +import java.util.Map; + +/** + * @Author 18209 + * @Date 2021/2/5 17:56 + * @Version 1.0 + */ +public interface AssociatedService { + /** + * 获取到数据库表信息 + * @return + */ + ServerResult>> tableInfos(); + + /** + * 获取到关联边字段信息 + * @param tableName 关联表表名 + * @param tableId 关联关系id + * @return + */ + ServerResult> assColumns(String tableName,Long tableId); + + /** + * 通过table获取到关联信息 + * @param tableId + * @return + */ + ServerResult> assColumnsByTable(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 new file mode 100644 index 0000000..6ddd549 --- /dev/null +++ b/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/service/impl/AssociatedServiceImpl.java @@ -0,0 +1,64 @@ +package com.hchyun.generator.service.impl; + +import com.hchyun.common.constant.ReturnConstants; +import com.hchyun.common.utils.ServerResult; +import com.hchyun.generator.dao.AssociatedDao; +import com.hchyun.generator.entity.AssColumn; +import com.hchyun.generator.service.AssociatedService; +import com.hchyun.generator.util.AssociatedUtils; +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/5 17:56 + * @Version 1.0 + */ +@Service +public class AssociatedServiceImpl implements AssociatedService { + private Logger logger = LoggerFactory.getLogger(AssociatedServiceImpl.class); + + @Autowired + private AssociatedDao associatedDao; + + @Override + public ServerResult> assColumnsByTable(Long tableId) { + try { + List assColumns = associatedDao.selectTableColumnByTableId(tableId); + return new ServerResult<>(true,assColumns); + }catch (RuntimeException e){ + logger.error(e.getMessage()); + return new ServerResult<>(false,ReturnConstants.DB_EX); + } + } + + @Override + public ServerResult>> tableInfos() { + try { + List> dataMap = associatedDao.tableInfos(); + return new ServerResult<>(true, dataMap); + } catch (RuntimeException e) { + logger.error(e.getMessage()); + return new ServerResult<>(false, ReturnConstants.DB_EX); + } + } + + @Override + public ServerResult> assColumns(String tableName, Long tableId) { + try { + List assColumns = associatedDao.selectTableColumn(tableName); + for (AssColumn assColumn : assColumns) { + AssociatedUtils.initAssColumn(assColumn, tableId); + } + return new ServerResult<>(true, assColumns); + } catch (RuntimeException e) { + logger.error(e.getMessage()); + return new ServerResult<>(false, ReturnConstants.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 550cd34..c320be1 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 @@ -11,6 +11,9 @@ import java.util.stream.Collectors; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; +import com.hchyun.common.constant.ReturnConstants; +import com.hchyun.generator.dao.AssociatedDao; +import com.hchyun.generator.entity.AssColumn; import com.hchyun.generator.service.IGenTableService; import org.apache.commons.io.IOUtils; import org.apache.velocity.Template; @@ -54,6 +57,9 @@ public class GenTableServiceImpl implements IGenTableService { @Autowired private GenTableColumnDao genTableColumnDao; + @Autowired + private AssociatedDao associatedDao; + /** * 查询业务信息 * @@ -119,14 +125,22 @@ public class GenTableServiceImpl implements IGenTableService { @Override @Transactional public void updateGenTable(GenTable genTable) { - String options = JSON.toJSONString(genTable.getParams()); - genTable.setOptions(options); - int row = genTableDao.updateGenTable(genTable); - if (row > 0) { -// for (GenTableColumn cenTableColumn : genTable.getColumns()) -// { - genTableColumnDao.updateGenTableColumn(genTable.getColumns()); -// } + try { + String options = JSON.toJSONString(genTable.getParams()); + genTable.setOptions(options); + int row = genTableDao.updateGenTable(genTable); + if (row > 0) { + genTableColumnDao.updateGenTableColumn(genTable.getColumns()); + List assColumns = genTable.getAssColumns(); + if (assColumns.size() > 0){ + associatedDao.deleteTableColumn(genTable.getTableId()); + associatedDao.insertColumns(assColumns); + } + } + }catch (CustomException e){ + log.error(e.getMessage()); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + throw new CustomException(ReturnConstants.DB_EX); } } diff --git a/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/util/AssociatedUtils.java b/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/util/AssociatedUtils.java new file mode 100644 index 0000000..e6cd71d --- /dev/null +++ b/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/util/AssociatedUtils.java @@ -0,0 +1,77 @@ +package com.hchyun.generator.util; + +import com.hchyun.common.constant.GenConstants; +import com.hchyun.common.utils.StringUtils; +import com.hchyun.generator.entity.AssColumn; +import org.apache.commons.lang3.RegExUtils; + +/** + * @Author 18209 + * @Date 2021/2/6 14:48 + * @Version 1.0 + */ +public class AssociatedUtils { + + + public static void initAssColumn(AssColumn assColumn, Long tableId) { + //获取数据库数据类型 + String dataType = GenUtils.getDbType(assColumn.getColumnType()); + //获取字段名称 + String columnName = assColumn.getColumnName(); + //设置tableid + assColumn.setTableId(tableId); + //设置创建者id + assColumn.setCreateBy(1); + //转为设置java字段名称 + assColumn.setJavaField(StringUtils.toCamelCase(columnName)); + //默认类型 + assColumn.setJavaType(GenConstants.TYPE_STRING); + //默认查询条件 精确查询 + assColumn.setQueryType(GenConstants.QUERY_EQ); + + if (GenUtils.arraysContains(GenConstants.COLUMNTYPE_STR, dataType) || GenUtils.arraysContains(GenConstants.COLUMNTYPE_TEXT, dataType)) { + //字符串长度超500设置htmlType为文本域 + Integer columnLength = GenUtils.getColumnLength(assColumn.getColumnType()); + String htmlType = columnLength >= 500 || GenUtils.arraysContains(GenConstants.COLUMNTYPE_TEXT, dataType) ? GenConstants.HTML_TEXTAREA : GenConstants.HTML_INPUT; + assColumn.setHtmlType(htmlType); + } else if (GenUtils.arraysContains(GenConstants.COLUMNTYPE_TIME, dataType)) { + assColumn.setJavaType(GenConstants.TYPE_DATE); + assColumn.setHtmlType(GenConstants.HTML_DATETIME); + } else if (GenUtils.arraysContains(GenConstants.COLUMNTYPE_NUMBER, dataType)) { + assColumn.setHtmlType(GenConstants.HTML_INPUT); + + // 如果是浮点型 统一用BigDecimal + String[] str = StringUtils.split(StringUtils.substringBetween(assColumn.getColumnType(), "(", ")"), ","); + if (str != null && str.length == 2 && Integer.parseInt(str[1]) > 0) { + assColumn.setJavaType(GenConstants.TYPE_BIGDECIMAL); + } + // 如果是整形 + else if (str != null && str.length == 1 && Integer.parseInt(str[0]) <= 10) { + assColumn.setJavaType(GenConstants.TYPE_INTEGER); + } + // 长整形 + else { + assColumn.setJavaType(GenConstants.TYPE_LONG); + } + } + // 列表字段 + assColumn.setIsList(GenConstants.REQUIRE); + // 查询字段 + assColumn.setIsQuery(GenConstants.NO_REQUIRE); + // 查询字段类型 + if (StringUtils.endsWithIgnoreCase(columnName, "name")) { + assColumn.setQueryType(GenConstants.QUERY_LIKE); + } + // 状态字段设置单选框 + if (StringUtils.endsWithIgnoreCase(columnName, "status")) { + assColumn.setHtmlType(GenConstants.HTML_RADIO); + } + // 类型&性别字段设置下拉框 + else if (StringUtils.endsWithIgnoreCase(columnName, "type") + || StringUtils.endsWithIgnoreCase(columnName, "sex")) { + assColumn.setHtmlType(GenConstants.HTML_SELECT); + } + } + + +} diff --git a/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/util/GenUtils.java b/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/util/GenUtils.java index 0e57952..fb7ef48 100644 --- a/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/util/GenUtils.java +++ b/hchyun/hchyun-generator/src/main/java/com/hchyun/generator/util/GenUtils.java @@ -1,6 +1,7 @@ package com.hchyun.generator.util; import java.util.Arrays; + import org.apache.commons.lang3.RegExUtils; import com.hchyun.common.constant.GenConstants; import com.hchyun.common.utils.StringUtils; @@ -10,16 +11,14 @@ import com.hchyun.generator.entity.GenTableColumn; /** * 代码生成器 工具类 - * + * * @author hchyun */ -public class GenUtils -{ +public class GenUtils { /** * 初始化表信息 */ - public static void initTable(GenTable genTable, Long operName) - { + public static void initTable(GenTable genTable, Long operName) { genTable.setClassName(convertClassName(genTable.getTableName())); genTable.setPackageName(GenConfig.getPackageName()); genTable.setModuleName(getModuleName(GenConfig.getPackageName())); @@ -32,8 +31,7 @@ public class GenUtils /** * 初始化列属性字段 */ - public static void initColumnField(GenTableColumn column, GenTable table) - { + public static void initColumnField(GenTableColumn column, GenTable table) { String dataType = getDbType(column.getColumnType()); String columnName = column.getColumnName(); column.setTableId(table.getTableId()); @@ -43,36 +41,28 @@ public class GenUtils // 设置默认类型 column.setJavaType(GenConstants.TYPE_STRING); - if (arraysContains(GenConstants.COLUMNTYPE_STR, dataType) || arraysContains(GenConstants.COLUMNTYPE_TEXT, dataType)) - { + if (arraysContains(GenConstants.COLUMNTYPE_STR, dataType) || arraysContains(GenConstants.COLUMNTYPE_TEXT, dataType)) { // 字符串长度超过500设置为文本域 Integer columnLength = getColumnLength(column.getColumnType()); String htmlType = columnLength >= 500 || arraysContains(GenConstants.COLUMNTYPE_TEXT, dataType) ? GenConstants.HTML_TEXTAREA : GenConstants.HTML_INPUT; column.setHtmlType(htmlType); - } - else if (arraysContains(GenConstants.COLUMNTYPE_TIME, dataType)) - { + } else if (arraysContains(GenConstants.COLUMNTYPE_TIME, dataType)) { column.setJavaType(GenConstants.TYPE_DATE); column.setHtmlType(GenConstants.HTML_DATETIME); - } - else if (arraysContains(GenConstants.COLUMNTYPE_NUMBER, dataType)) - { + } else if (arraysContains(GenConstants.COLUMNTYPE_NUMBER, dataType)) { column.setHtmlType(GenConstants.HTML_INPUT); // 如果是浮点型 统一用BigDecimal String[] str = StringUtils.split(StringUtils.substringBetween(column.getColumnType(), "(", ")"), ","); - if (str != null && str.length == 2 && Integer.parseInt(str[1]) > 0) - { + if (str != null && str.length == 2 && Integer.parseInt(str[1]) > 0) { column.setJavaType(GenConstants.TYPE_BIGDECIMAL); } // 如果是整形 - else if (str != null && str.length == 1 && Integer.parseInt(str[0]) <= 10) - { + else if (str != null && str.length == 1 && Integer.parseInt(str[0]) <= 10) { column.setJavaType(GenConstants.TYPE_INTEGER); } // 长整形 - else - { + else { column.setJavaType(GenConstants.TYPE_LONG); } } @@ -81,74 +71,63 @@ public class GenUtils column.setIsInsert(GenConstants.REQUIRE); // 编辑字段 - if (!arraysContains(GenConstants.COLUMNNAME_NOT_EDIT, columnName) && !column.isPk()) - { + if (!arraysContains(GenConstants.COLUMNNAME_NOT_EDIT, columnName) && !column.isPk()) { column.setIsEdit(GenConstants.REQUIRE); } // 列表字段 - if (!arraysContains(GenConstants.COLUMNNAME_NOT_LIST, columnName) && !column.isPk()) - { + if (!arraysContains(GenConstants.COLUMNNAME_NOT_LIST, columnName) && !column.isPk()) { column.setIsList(GenConstants.REQUIRE); } // 查询字段 - if (!arraysContains(GenConstants.COLUMNNAME_NOT_QUERY, columnName) && !column.isPk()) - { + if (!arraysContains(GenConstants.COLUMNNAME_NOT_QUERY, columnName) && !column.isPk()) { column.setIsQuery(GenConstants.REQUIRE); } // 查询字段类型 - if (StringUtils.endsWithIgnoreCase(columnName, "name")) - { + if (StringUtils.endsWithIgnoreCase(columnName, "name")) { column.setQueryType(GenConstants.QUERY_LIKE); } // 状态字段设置单选框 - if (StringUtils.endsWithIgnoreCase(columnName, "status")) - { + if (StringUtils.endsWithIgnoreCase(columnName, "status")) { column.setHtmlType(GenConstants.HTML_RADIO); } // 类型&性别字段设置下拉框 else if (StringUtils.endsWithIgnoreCase(columnName, "type") - || StringUtils.endsWithIgnoreCase(columnName, "sex")) - { + || StringUtils.endsWithIgnoreCase(columnName, "sex")) { column.setHtmlType(GenConstants.HTML_SELECT); } // 图片字段设置图片上传控件 - else if (StringUtils.endsWithIgnoreCase(columnName, "image")) - { + else if (StringUtils.endsWithIgnoreCase(columnName, "image")) { column.setHtmlType(GenConstants.HTML_IMAGE_UPLOAD); } // 文件字段设置文件上传控件 - else if (StringUtils.endsWithIgnoreCase(columnName, "file")) - { + else if (StringUtils.endsWithIgnoreCase(columnName, "file")) { column.setHtmlType(GenConstants.HTML_FILE_UPLOAD); } // 内容字段设置富文本控件 - else if (StringUtils.endsWithIgnoreCase(columnName, "content")) - { + else if (StringUtils.endsWithIgnoreCase(columnName, "content")) { column.setHtmlType(GenConstants.HTML_EDITOR); } } /** * 校验数组是否包含指定值 - * - * @param arr 数组 + * + * @param arr 数组 * @param targetValue 值 * @return 是否包含 */ - public static boolean arraysContains(String[] arr, String targetValue) - { + public static boolean arraysContains(String[] arr, String targetValue) { return Arrays.asList(arr).contains(targetValue); } /** * 获取模块名 - * + * * @param packageName 包名 * @return 模块名 */ - public static String getModuleName(String packageName) - { + public static String getModuleName(String packageName) { int lastIndex = packageName.lastIndexOf("."); int nameLength = packageName.length(); String moduleName = StringUtils.substring(packageName, lastIndex + 1, nameLength); @@ -157,12 +136,11 @@ public class GenUtils /** * 获取业务名 - * + * * @param tableName 表名 * @return 业务名 */ - public static String getBusinessName(String tableName) - { + public static String getBusinessName(String tableName) { int lastIndex = tableName.lastIndexOf("_"); int nameLength = tableName.length(); String businessName = StringUtils.substring(tableName, lastIndex + 1, nameLength); @@ -171,16 +149,14 @@ public class GenUtils /** * 表名转换成Java类名 - * + * * @param tableName 表名称 * @return 类名 */ - public static String convertClassName(String tableName) - { + public static String convertClassName(String tableName) { boolean autoRemovePre = GenConfig.getAutoRemovePre(); String tablePrefix = GenConfig.getTablePrefix(); - if (autoRemovePre && StringUtils.isNotEmpty(tablePrefix)) - { + if (autoRemovePre && StringUtils.isNotEmpty(tablePrefix)) { String[] searchList = StringUtils.split(tablePrefix, ","); tableName = replaceFirst(tableName, searchList); } @@ -189,18 +165,15 @@ public class GenUtils /** * 批量替换前缀 - * + * * @param replacementm 替换值 - * @param searchList 替换列表 + * @param searchList 替换列表 * @return */ - public static String replaceFirst(String replacementm, String[] searchList) - { + public static String replaceFirst(String replacementm, String[] searchList) { String text = replacementm; - for (String searchString : searchList) - { - if (replacementm.startsWith(searchString)) - { + for (String searchString : searchList) { + if (replacementm.startsWith(searchString)) { text = replacementm.replaceFirst(searchString, ""); break; } @@ -210,48 +183,39 @@ public class GenUtils /** * 关键字替换 - * + * * @param text 需要被替换的名字 * @return 替换后的名字 */ - public static String replaceText(String text) - { + public static String replaceText(String text) { return RegExUtils.replaceAll(text, "(?:表|若依)", ""); } /** * 获取数据库类型字段 - * + * * @param columnType 列类型 * @return 截取后的列类型 */ - public static String getDbType(String columnType) - { - if (StringUtils.indexOf(columnType, "(") > 0) - { + public static String getDbType(String columnType) { + if (StringUtils.indexOf(columnType, "(") > 0) { return StringUtils.substringBefore(columnType, "("); - } - else - { + } else { return columnType; } } /** * 获取字段长度 - * + * * @param columnType 列类型 * @return 截取后的列类型 */ - public static Integer getColumnLength(String columnType) - { - if (StringUtils.indexOf(columnType, "(") > 0) - { + public static Integer getColumnLength(String columnType) { + if (StringUtils.indexOf(columnType, "(") > 0) { String length = StringUtils.substringBetween(columnType, "(", ")"); return Integer.valueOf(length); - } - else - { + } else { return 0; } } diff --git a/hchyun/hchyun-generator/src/main/resources/mapper/generator/AssociateMapper.xml b/hchyun/hchyun-generator/src/main/resources/mapper/generator/AssociateMapper.xml new file mode 100644 index 0000000..024030e --- /dev/null +++ b/hchyun/hchyun-generator/src/main/resources/mapper/generator/AssociateMapper.xml @@ -0,0 +1,46 @@ + + + + + + + + + + delete + from gen_acc_column + where table_id = #{tableId} + + + + + + insert into gen_acc_column(table_id, column_name, column_comment, column_type, java_type, java_field, is_list, + is_query, query_type, html_type, dict_type, sort, create_by, update_by) + values + + (#{item.tableId},#{item.columnName},#{item.columnComment},#{item.columnType}, + #{item.javaType},#{item.javaField},#{item.isList},#{item.isQuery}, + #{item.queryType},#{item.htmlType},#{item.dictType},#{item.sort}, + #{item.createBy},#{item.updateBy}) + + + + + \ No newline at end of file diff --git a/hchyun/hchyun-generator/src/main/resources/mapper/generator/GenTableMapper.xml b/hchyun/hchyun-generator/src/main/resources/mapper/generator/GenTableMapper.xml index 34243cd..6e4f258 100644 --- a/hchyun/hchyun-generator/src/main/resources/mapper/generator/GenTableMapper.xml +++ b/hchyun/hchyun-generator/src/main/resources/mapper/generator/GenTableMapper.xml @@ -4,28 +4,31 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + @@ -59,7 +62,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ${paramSQL} - select table_id, table_name, table_comment, sub_table_name, sub_table_fk_name, class_name, tpl_category, package_name, module_name, business_name, function_name, function_author, gen_type, gen_path, options, create_by, create_time, update_by, update_time, remark from gen_table + select table_id, table_name, table_comment, sub_table_name, sub_table_fk_name, class_name, tpl_category, + package_name, module_name, business_name, function_name, function_author, gen_type, gen_path, + options, ass_table_name, ass_table_column, ass_table_fk_column, create_by, create_time, update_by, update_time, remark from gen_table - SELECT t.table_id, t.table_name, t.table_comment, t.sub_table_name, t.sub_table_fk_name, t.class_name, t.tpl_category, t.package_name, t.module_name, t.business_name, t.function_name, t.function_author, t.gen_type, t.gen_path, t.options, t.remark, - c.column_id, c.column_name, c.column_comment, c.column_type, c.java_type, c.java_field, c.is_pk, c.is_increment, c.is_required, c.is_insert, c.is_edit, c.is_list, c.is_query, c.query_type, c.html_type, c.dict_type, c.sort, c.is_regular, r.regular + SELECT t.table_id, t.table_name, t.table_comment, t.sub_table_name, t.sub_table_fk_name,t.ass_table_name,t.ass_table_column, + t.ass_table_fk_column, t.class_name, t.tpl_category, t.package_name, t.module_name, t.business_name, t.function_name, + t.function_author, t.gen_type, t.gen_path, t.options, t.remark, + c.column_id, c.column_name, c.column_comment, c.column_type, c.java_type, c.java_field, c.is_pk, c.is_increment, c.is_required, + c.is_insert, c.is_edit, c.is_list, c.is_query, c.query_type, c.html_type, c.dict_type, c.sort, c.is_regular, r.regular FROM gen_table t LEFT JOIN gen_table_column c ON t.table_id = c.table_id LEFT JOIN sys_regular r ON c.is_regular = r.id @@ -125,8 +133,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"