标签:Java String list 订单号 生成 流水号 编号 new caseNo
前言
最近用到了一些编号的生成规则记录一下,有序的生成订单号或者流水号
概述
第一种方式,适用于循环生成订单编号,例如有 100 条数据,需要循环生成相对应编号可以使用,下方的方法,仅限于特定场景
// 静态变量存储最大值
private static final AtomicInteger atomicNum = new AtomicInteger();
// 调用方法
public String getNewAutoNum(){
for (int i = 0; i <3; i++) {
//线程安全的原子操作,所以此方法无需同步
int newNum = atomicNum.incrementAndGet();
//数字长度为5位,长度不够数字前面补0
String newStrNum = String.format("%05d", newNum);
System.out.println(newStrNum);
}
}
## 输出结果
00001
00002
00003
第二种方式,调用时获取最大编号,如果没有数据则默认生成初始编号,根据最大编号递增,比较常用
// 调用时生成编号
private String getNumberID(){
SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
String caseNo="";
try {
//获取(最大)值
List<User> list = xxxService.getMaxOrderNo();
if (list.size()>0) {
// 定义补 0 位数
DecimalFormat decimalFormat = new DecimalFormat("000000");
String value=list.get(0).getNumbmer().substring(16,list.get(0).getNumbmer().length());
int i = Integer.parseInt(value) + 1;
String k = decimalFormat.format(i);
// 订单号
caseNo="RXD" + df.format(new Date()) +k;
} else {
//初始、默认值
caseNo = "RXD" + df.format(new Date()) + "000001";
}
} catch (Exception e) {
e.printStackTrace();
}
return caseNo;
}
## 输出结果
RXD20210820000001
RXD20210820000002
RXD20210820000003
总结
以上方式建议根据自己的需求添加同步锁,谨防生成重复订单编号
————————————————
版权声明:本文为CSDN博主「平凡的人类」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_36537546/article/details/119816957
标签:Java,
String,
list,
订单号,
生成,
流水号,
编号,
new,
caseNo
From: https://www.cnblogs.com/haohaiyou/p/17108528.html