Java AtomicInteger 生成每日订单号,次日从 00001 开始
要实现每天生成订单号从 00001 开始,可以使用 AtomicInteger 类结合日期来生成唯一的订单号。
首先,我们需要一个全局的 AtomicInteger 对象来保存当前的订单号,初始值为 1。每当生成一个订单号时,将 AtomicInteger 对象的值格式化成五位数的字符串,并在前面补 0,作为订单号。
在生成订单号时,我们需要判断当前日期与上次生成订单号的日期是否相同。如果不相同,说明已经进入了新的一天,将 AtomicInteger 对象的值重置为 1。如果相同,则继续增加 AtomicInteger 对象的值。
下面是一个简单的示例代码:
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.atomic.AtomicInteger;
public class OrderGenerator {
private static final SimpleDateFormat dateFormat = new SimpleDateFormat('yyyyMMdd');
private static final AtomicInteger orderNumber = new AtomicInteger(1);
public static String generateOrderNumber() {
Date currentDate = new Date();
String currentDateString = dateFormat.format(currentDate);
// 获取上次生成订单号的日期
String lastDateString = dateFormat.format(new Date(orderNumber.get()));
if (!currentDateString.equals(lastDateString)) {
// 当日期不相同时,重置订单号为 1
orderNumber.set(1);
}
int currentNumber = orderNumber.getAndIncrement();
String orderNumberString = String.format('%05d', currentNumber);
return currentDateString + orderNumberString;
}
public static void main(String[] args) {
// 生成订单号
String orderNumber1 = generateOrderNumber();
System.out.println(orderNumber1);
String orderNumber2 = generateOrderNumber();
System.out.println(orderNumber2);
// 模拟过了一天
orderNumber.set(1);
String orderNumber3 = generateOrderNumber();
System.out.println(orderNumber3);
}
}
输出结果:
2022112900001
2022112900002
2022113000001
这样,每天生成订单号时,都会从 00001 开始。
原文地址: https://www.cveoy.top/t/topic/qDBY 著作权归作者所有。请勿转载和采集!