123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256 |
- package com.ruoyi.gen.util;
- import java.util.Arrays;
- import org.apache.commons.lang3.RegExUtils;
- import com.ruoyi.common.core.constant.GenConstants;
- import com.ruoyi.common.core.utils.StringUtils;
- import com.ruoyi.gen.config.GenConfig;
- import com.ruoyi.gen.domain.GenTable;
- import com.ruoyi.gen.domain.GenTableColumn;
- /**
- * 代码生成器 工具类
- *
- * @author ruoyi
- */
- public class GenUtils
- {
- /**
- * 初始化表信息
- */
- public static void initTable(GenTable genTable, String operName)
- {
- genTable.setClassName(convertClassName(genTable.getTableName()));
- genTable.setPackageName(GenConfig.getPackageName());
- genTable.setModuleName(getModuleName(GenConfig.getPackageName()));
- genTable.setBusinessName(getBusinessName(genTable.getTableName()));
- genTable.setFunctionName(replaceText(genTable.getTableComment()));
- genTable.setFunctionAuthor(GenConfig.getAuthor());
- genTable.setCreateBy(operName);
- }
- /**
- * 初始化列属性字段
- */
- 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));
- // 设置默认类型
- column.setJavaType(GenConstants.TYPE_STRING);
- 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))
- {
- column.setJavaType(GenConstants.TYPE_DATE);
- column.setHtmlType(GenConstants.HTML_DATETIME);
- }
- 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)
- {
- column.setJavaType(GenConstants.TYPE_BIGDECIMAL);
- }
- // 如果是整形
- else if (str != null && str.length == 1 && Integer.parseInt(str[0]) <= 10)
- {
- column.setJavaType(GenConstants.TYPE_INTEGER);
- }
- // 长整形
- else
- {
- column.setJavaType(GenConstants.TYPE_LONG);
- }
- }
- // 插入字段(默认所有字段都需要插入)
- column.setIsInsert(GenConstants.REQUIRE);
- // 编辑字段
- if (!arraysContains(GenConstants.COLUMNNAME_NOT_EDIT, columnName) && !column.isPk())
- {
- column.setIsEdit(GenConstants.REQUIRE);
- }
- // 列表字段
- if (!arraysContains(GenConstants.COLUMNNAME_NOT_LIST, columnName) && !column.isPk())
- {
- column.setIsList(GenConstants.REQUIRE);
- }
- // 查询字段
- if (!arraysContains(GenConstants.COLUMNNAME_NOT_QUERY, columnName) && !column.isPk())
- {
- column.setIsQuery(GenConstants.REQUIRE);
- }
- // 查询字段类型
- if (StringUtils.endsWithIgnoreCase(columnName, "name"))
- {
- column.setQueryType(GenConstants.QUERY_LIKE);
- }
- // 状态字段设置单选框
- if (StringUtils.endsWithIgnoreCase(columnName, "status"))
- {
- column.setHtmlType(GenConstants.HTML_RADIO);
- }
- // 类型&性别字段设置下拉框
- else if (StringUtils.endsWithIgnoreCase(columnName, "type")
- || StringUtils.endsWithIgnoreCase(columnName, "sex"))
- {
- column.setHtmlType(GenConstants.HTML_SELECT);
- }
- // 图片字段设置图片上传控件
- else if (StringUtils.endsWithIgnoreCase(columnName, "image"))
- {
- column.setHtmlType(GenConstants.HTML_IMAGE_UPLOAD);
- }
- // 文件字段设置文件上传控件
- else if (StringUtils.endsWithIgnoreCase(columnName, "file"))
- {
- column.setHtmlType(GenConstants.HTML_FILE_UPLOAD);
- }
- // 内容字段设置富文本控件
- else if (StringUtils.endsWithIgnoreCase(columnName, "content"))
- {
- column.setHtmlType(GenConstants.HTML_EDITOR);
- }
- }
- /**
- * 校验数组是否包含指定值
- *
- * @param arr 数组
- * @param targetValue 值
- * @return 是否包含
- */
- public static boolean arraysContains(String[] arr, String targetValue)
- {
- return Arrays.asList(arr).contains(targetValue);
- }
- /**
- * 获取模块名
- *
- * @param packageName 包名
- * @return 模块名
- */
- public static String getModuleName(String packageName)
- {
- int lastIndex = packageName.lastIndexOf(".");
- int nameLength = packageName.length();
- return StringUtils.substring(packageName, lastIndex + 1, nameLength);
- }
- /**
- * 获取业务名
- *
- * @param tableName 表名
- * @return 业务名
- */
- public static String getBusinessName(String tableName)
- {
- int lastIndex = tableName.lastIndexOf("_");
- int nameLength = tableName.length();
- return StringUtils.substring(tableName, lastIndex + 1, nameLength);
- }
- /**
- * 表名转换成Java类名
- *
- * @param tableName 表名称
- * @return 类名
- */
- public static String convertClassName(String tableName)
- {
- boolean autoRemovePre = GenConfig.getAutoRemovePre();
- String tablePrefix = GenConfig.getTablePrefix();
- if (autoRemovePre && StringUtils.isNotEmpty(tablePrefix))
- {
- String[] searchList = StringUtils.split(tablePrefix, ",");
- tableName = replaceFirst(tableName, searchList);
- }
- return StringUtils.convertToCamelCase(tableName);
- }
- /**
- * 批量替换前缀
- *
- * @param replacementm 替换值
- * @param searchList 替换列表
- * @return
- */
- public static String replaceFirst(String replacementm, String[] searchList)
- {
- String text = replacementm;
- for (String searchString : searchList)
- {
- if (replacementm.startsWith(searchString))
- {
- text = replacementm.replaceFirst(searchString, "");
- break;
- }
- }
- return text;
- }
- /**
- * 关键字替换
- *
- * @param text 需要被替换的名字
- * @return 替换后的名字
- */
- public static String replaceText(String text)
- {
- return RegExUtils.replaceAll(text, "(?:表|若依)", "");
- }
- /**
- * 获取数据库类型字段
- *
- * @param columnType 列类型
- * @return 截取后的列类型
- */
- public static String getDbType(String columnType)
- {
- if (StringUtils.indexOf(columnType, "(") > 0)
- {
- return StringUtils.substringBefore(columnType, "(");
- }
- else
- {
- return columnType;
- }
- }
- /**
- * 获取字段长度
- *
- * @param columnType 列类型
- * @return 截取后的列类型
- */
- public static Integer getColumnLength(String columnType)
- {
- if (StringUtils.indexOf(columnType, "(") > 0)
- {
- String length = StringUtils.substringBetween(columnType, "(", ")");
- return Integer.valueOf(length);
- }
- else
- {
- return 0;
- }
- }
- }
|