/**
* 生成任务时,任务编号的规则是“XJRW-”+nowday(格式yyyyMMdd)+“-”+(当天生成任务数量+1)左补零4位
*
* @author hlliut 2021年10月12日
*/
public class TaskNumberUtil {
private static String _KEY = "XJRW-";
public static String generateTaskNumber() {
String key = _KEY + DateUtil.dateToString(new Date(), DateUtil.ISO_DATE_FORMAT);
long value = getNumber(key);
return String.format("%s-%s", key, String.format("%04d", value));
}
private static long getNumber(String key) {
if (!RedisUtils.hasKey(key)) {
RedisUtils.setIfAbsent(key, 0, 25, TimeUnit.HOURS);// 25小时过期
}
long value = RedisUtils.incr(key);// 自增
if (value > 9999) {
RedisUtils.set(key, 0);
return getNumber(key);// 重新计数
}
return value;
}
}
该博客介绍了一个用于生成任务编号的实用工具类,编号规则为‘XJRW-’加上当前日期(yyyyMMdd)再连接上以0填充的4位自增数字。通过Redis实现自增操作,并在数值超过9999时重置计数,确保编号的唯一性和顺序性。此策略适用于需要有序且不重复的任务编号生成场景。
1305

被折叠的 条评论
为什么被折叠?



