效果:英文和日期加上流水号拼接
一、步骤:
1、新建常量类**Constants
2、设置常量为编号开头
/**
* 8**常量类
*/
public class DjkConstants {
/**
* 编号开头
*/
public static final String RTNM_CODE = "RTM";
public static final String RPOT_CODE = "RT";
public static final String TOUCH_CODE = "TCH";
}
3、新建工具类:**NumberUtil并加上注解
注入redis模板类
4、复制下面代码,其他地方调用即可
public String getEp***emicTOHNum() {
LocalDateTime nowTime = LocalDateTime.now();
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyyMMdd");
String dateStr = dateTimeFormatter.format(nowTime);
RedisAtomicLong atomicLong = new RedisAtomicLong(TOH_CODE + dateStr, redisTemplate.getConnectionFactory());
Double randExpireTime = Math.floor(Math.random() * 10) + 24;
atomicLong.expire(randExpireTime.longValue(), TimeUnit.HOURS);
// Long expire1 = atomicLong.getExpire();
// System.out.println(expire1);
Long incrementAndGet = atomicLong.incrementAndGet();
int incrementResult = incrementAndGet.intValue() % 99999999;
String incrementStr = String.format("%08d", incrementResult);
return TOH_CODE + dateStr + incrementStr;
}
二、比一可用
import cn.hutool.extra.spring.SpringUtil;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.redisson.api.*;
import org.redisson.config.Config;
import java.time.Duration;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.function.Consumer;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* redis 工具类
*/
@NoArgsConstructor(access = AccessLevel.PRIVATE)
@SuppressWarnings(value = {"unchecked", "rawtypes"})
public class RedisUtils {
private static final RedissonClient CLIENT = SpringUtil.getBean(RedissonClient.class);
/**
* 时间格式化内容
*/
private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyyMMdd");
/**
* 获得业务的唯一编号
* 按天设定
*
* @param key
* @return
*/
public static String getBusinessNum(String key) {
LocalDateTime nowTime = LocalDateTime.now();
String dateStr = DATE_TIME_FORMATTER.format(nowTime);
RAtomicLong atomicLong = CLIENT.getAtomicLong(key + dateStr);
atomicLong.expire(Duration.ofDays(1));
Long incrementAndGet = atomicLong.incrementAndGet();
int incrementResult = incrementAndGet.intValue() % 99999;
String incrementStr = String.format("%05d", incrementResult);
return key + dateStr + incrementStr;
}
}
public class TabletwextConstant {
/**
* 订单编号前缀
*/
public static final String TICKET_ORDER = "mp";
}