Files
cashier/fuintBackend/fuint-utils/src/main/java/com/fuint/utils/SeqUtil.java
砂糖 8015759c65 init
2026-02-07 18:01:13 +08:00

122 lines
3.3 KiB
Java

package com.fuint.utils;
import java.math.BigInteger;
import java.util.Calendar;
import java.util.UUID;
import java.util.concurrent.ThreadLocalRandom;
/**
* 序列工具类
*
* Created by FSQ
* CopyRight https://www.fuint.cn
*/
public class SeqUtil {
/**
* 产生字符串序列(长度:32)
*
* @return String 32位字符串序列
*/
public static String getUUID() {
String uuid = UUID.randomUUID().toString();
return uuid.replaceAll("\\-", "").toUpperCase();
}
/**
* 产生日期序列(长度:32)
* [yyyyMMddHHmmssSSS+15位随机数]
*
* @return Long
*/
public static BigInteger getTimeSeq() {
String date = CommonUtil.formatDate(Calendar.getInstance().getTime(), "yyyyMMddHHmmssSSS");
StringBuilder sb = new StringBuilder();
sb.append(date);
int length = 32 - sb.length();
String randNum = getRandomNumber(length);
sb.append(randNum);
return new BigInteger(sb.toString());
}
/**
* 产生日期序列(长度:大于17位)
* [yyyyMMddHHmmssSSS+15位随机数]
*
* @return Long
*/
public static String getTimeSeq(int length) {
String date = CommonUtil.formatDate(Calendar.getInstance().getTime(), "yyyyMMddHHmmssSSS");
StringBuilder sb = new StringBuilder();
sb.append(date);
length = length - sb.length();
if (length > 0) {
String randNum = getRandomNumber(length);
sb.append(randNum);
}
return sb.toString();
}
/**
* 根据客户自定义前缀获取序列(长度:32)
* [前缀+yyyyMMddHHmmssSSS+随机数]
*
* @param prefix
* @return String
*/
public static String getCustSeq(String prefix) {
String date = CommonUtil.formatDate(Calendar.getInstance().getTime(), "yyyyMMddHHmmssSSS");
StringBuilder sb = new StringBuilder(prefix);
sb.append(date);
int length = 32 - sb.length();
String randNum = getRandomNumber(length);
sb.append(randNum);
return sb.toString();
}
/**
* 产生指定长度随机字母
*
* @param length
* @return String
*/
public static String getRandomLetter(int length) {
String base = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int rang = 26;
ThreadLocalRandom rand = ThreadLocalRandom.current();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < length; i++) {
sb.append(base.charAt(rand.nextInt(rang)));
}
return sb.toString();
}
/**
* 产生指定长度随机数字
*
* @param length
* @return String
*/
public static String getRandomNumber(int length) {
String base = "0123456789";
int rang = 10;
ThreadLocalRandom rand = ThreadLocalRandom.current();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < length; i++) {
sb.append(base.charAt(rand.nextInt(rang)));
}
return sb.toString();
}
/**
* 产生指定区间的随机整数
*
* @param min
* @param max
* @return int
*/
public static int getRandomNumber(int min, int max) {
ThreadLocalRandom rand = ThreadLocalRandom.current();
return rand.nextInt(min, max);
}
}