package com.highdatas.mdm.util; import com.baomidou.mybatisplus.annotations.TableName; import com.highdatas.mdm.entity.Maintain; import com.highdatas.mdm.entity.TableSchemaResult; import com.highdatas.mdm.pojo.Segment; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.text.MessageFormat; import java.util.Random; import java.util.UUID; /** * @author kimi * @description * @date 2019-12-16 15:13 */ @Slf4j public class DbUtils { public static String versionAddSub (String baseVersion) { if (StringUtils.isEmpty(baseVersion)) { return null; } String[] split = baseVersion.split(Constant.Dot); if (split.length == 1) { return null; } int smallVersion = Integer.valueOf(split[1]); smallVersion++; return MessageFormat.format("{0}.{1}",split[0], smallVersion); } public static Integer compareVersion(Maintain baseVersion, Maintain compareVersion) { if ((baseVersion == null) || (compareVersion == null)) { return null; } return baseVersion.getOrderNo().compareTo(compareVersion.getOrderNo()); } public static String versionAddBig(String baseVersion) { if (StringUtils.isEmpty(baseVersion)) { return null; } String[] split = baseVersion.split(Constant.Dot); if (split.length == 1) { return null; } String bigVersionStr = split[0].substring(1); int bigVersion = Integer.valueOf(bigVersionStr); bigVersion++; return MessageFormat.format("V{0}.{1}",bigVersion, 0); } public static Integer getSubVersion(String baseVersion) { if (StringUtils.isEmpty(baseVersion)) { return null; } String[] split = baseVersion.split(Constant.Dot); if (split.length == 1) { return null; } return Integer.valueOf(split[1]); } public static Integer getBigVersion(String baseVersion) { if (StringUtils.isEmpty(baseVersion)) { return null; } String[] split = baseVersion.split(Constant.Dot); if (split.length == 0 || split[0].length() < 2) { return null; } return Integer.valueOf(split[0].substring(1)); } public static String getUUID() { String id = UUID.randomUUID().toString().replaceAll("-", ""); return id; } public static String getUUID(int i) { String id = UUID.randomUUID().toString().replaceAll("-", "").substring(0, i); return id; } public static String combieOneSegment(String name, String value) { Segment segment = new Segment(name, value); return segment.toString(); } public static String getTableNameFromEntity(Object object) { Field[] fields = object.getClass().getDeclaredFields(); for (Field field : fields) { field.setAccessible(true); // 获取表名 TableName table = object.getClass().getAnnotation(TableName.class); if (table != null) { String tableName = table.value(); return tableName; } } return null; } public static Object toSqlToJava(String value, TableSchemaResult tableSchema) throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InstantiationException { String dbType = tableSchema.getDbType(); String javaType = toSqlToJava(dbType); Class baseWapperClaz = Class.forName("java.lang." + javaType); Object baseWapper = baseWapperClaz.newInstance(); Method valueOfMethod = baseWapperClaz.getDeclaredMethod("valueOf"); return null; // valueOfMethod.invoke(baseWapper, ) } public static String toSqlToJava(String sqlType) { if( sqlType == null || sqlType.trim().length() == 0 ) return sqlType; sqlType = sqlType.toLowerCase(); switch(sqlType){ case "nvarchar":return "String"; case "char":return "String"; case "varchar":return "String"; case "text":return "String"; case "nchar":return "String"; case "blob":return "byte[]"; case "integer":return "Long"; case "tinyint":return "Integer"; case "smallint":return "Integer"; case "mediumint":return "Integer"; case "bit":return "Boolean"; case "bigint":return "java.math.BigInteger"; case "float":return "Fload"; case "double":return "Double"; case "decimal":return "java.math.BigDecimal"; case "boolean":return "Boolean"; case "id":return "Long"; case "date":return "java.util.Date"; case "datetime":return "java.util.Date"; case "year":return "java.util.Date"; case "time":return "java.sql.Time"; case "timestamp":return "java.sql.Timestamp"; case "numeric":return "java.math.BigDecimal"; case "real":return "java.math.BigDecimal"; case "money":return "Double"; case "smallmoney":return "Double"; case "image":return "byte[]"; default: log.error("-----------------》转化失败:未发现的类型:{0}",sqlType); break; } return sqlType; } public static void sqlValueToJava(Object value, String dbType) throws Exception { String javaType = toSqlToJava(dbType); Class baseWapperClaz = Class.forName("java.lang." + javaType); Object baseWapper = baseWapperClaz.newInstance(); Method valueOfMethod = baseWapperClaz.getDeclaredMethod("valueOf"); } public static String quotedStr(Object o) { return quotedStr(String.valueOf(o)); } public static String quotedStr(String str) { if (str != null) return "'" + str + "'"; else return "''"; } public static String bracketStr(String str) { if (str != null) return "(" + str + ")"; else return "()"; } public static String StrJoin(String... objects){ ContentBuilder builder = new ContentBuilder(Constant.EMPTY); for (String object : objects) { builder.append(object); } return builder.toString(); } public static String getRandomString(int length) { Random random = new Random(); StringBuffer sb = new StringBuffer(); for (int i = 0; i < length; i++) { int number = random.nextInt(3); long result = 0; switch (number) { case 0: result = Math.round(Math.random() * 25 + 65); sb.append(String.valueOf((char) result)); break; case 1: result = Math.round(Math.random() * 25 + 97); sb.append(String.valueOf((char) result)); break; case 2: sb.append(String.valueOf(new Random().nextInt(10))); break; } } return sb.toString(); } public static int getOrderNoAdd(int orderNo) { return orderNo + 1; } public static final String getChineseOrEnglishOrNumber(String str) { StringBuffer sbf = new StringBuffer(); char[] charArray = str.toCharArray(); for (int i = 0; i < charArray.length; i++) { if ((charArray[i] >= 0x4e00) && (charArray[i] <= 0x9fbb)) { sbf.append(charArray[i]); } if ((charArray[i] >= 65) && (charArray[i] <= 122)) { sbf.append(charArray[i]); } if (str.charAt(i) >= 48 && str.charAt(i) <= 57) { sbf.append(charArray[i]); } } return sbf.toString(); } }