|
|
@@ -1,25 +1,24 @@
|
|
|
package com.jjt.generator.util;
|
|
|
|
|
|
-import java.util.Arrays;
|
|
|
-import org.apache.commons.lang3.RegExUtils;
|
|
|
import com.jjt.common.constant.GenConstants;
|
|
|
import com.jjt.common.utils.StringUtils;
|
|
|
import com.jjt.generator.config.GenConfig;
|
|
|
import com.jjt.generator.domain.GenTable;
|
|
|
import com.jjt.generator.domain.GenTableColumn;
|
|
|
+import org.apache.commons.lang3.RegExUtils;
|
|
|
+
|
|
|
+import java.util.Arrays;
|
|
|
|
|
|
/**
|
|
|
* 代码生成器 工具类
|
|
|
- *
|
|
|
+ *
|
|
|
* @author ruoyi
|
|
|
*/
|
|
|
-public class GenUtils
|
|
|
-{
|
|
|
+public class GenUtils {
|
|
|
/**
|
|
|
* 初始化表信息
|
|
|
*/
|
|
|
- public static void initTable(GenTable genTable, String operName)
|
|
|
- {
|
|
|
+ public static void initTable(GenTable genTable, String operName) {
|
|
|
genTable.setClassName(convertClassName(genTable.getTableName()));
|
|
|
genTable.setPackageName(GenConfig.getPackageName());
|
|
|
genTable.setModuleName(getModuleName(GenConfig.getPackageName()));
|
|
|
@@ -32,48 +31,46 @@ 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());
|
|
|
column.setCreateBy(table.getCreateBy());
|
|
|
// 设置java字段名
|
|
|
column.setJavaField(StringUtils.toCamelCase(columnName));
|
|
|
+ // 如果字段全部是大写,说明字段配置成大写。要改成小写。例如:TITLE -> title
|
|
|
+ // 还需要考虑字符加数字的全大写,比如MD5 这种需要转换成md5
|
|
|
+ // 利用正则表达式,将数字替换,再判断是否是全大写
|
|
|
+ String digit = "[0-9]";
|
|
|
+ if (StringUtils.isAllUpperCase(column.getJavaField().replaceAll(digit, ""))) {
|
|
|
+ column.setJavaField(column.getJavaField().toLowerCase());
|
|
|
+ }
|
|
|
// 设置默认类型
|
|
|
column.setJavaType(GenConstants.TYPE_STRING);
|
|
|
column.setQueryType(GenConstants.QUERY_EQ);
|
|
|
|
|
|
- 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);
|
|
|
}
|
|
|
}
|
|
|
@@ -82,74 +79,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();
|
|
|
return StringUtils.substring(packageName, lastIndex + 1, nameLength);
|
|
|
@@ -157,12 +143,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();
|
|
|
return StringUtils.substring(tableName, lastIndex + 1, nameLength);
|
|
|
@@ -170,16 +155,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);
|
|
|
}
|
|
|
@@ -188,18 +171,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;
|
|
|
}
|
|
|
@@ -209,48 +189,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;
|
|
|
}
|
|
|
}
|