java生成申請單序列號的實現(xiàn)方法
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.commons.lang3.StringUtils;
/**
* 產(chǎn)生流水號工具類
* @version V1.0
* @date: 2013-11-16 下午5:21:37
*/
public class SerialNum {
private static String count = "000";
private static String dateValue = "20131115";
/**
* 產(chǎn)生流水號
*/
public synchronized static String getMoveOrderNo() {
long No = 0;
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String nowdate = sdf.format(new Date());
No = Long.parseLong(nowdate);
if (!(String.valueOf(No)).equals(dateValue)) {
count = "000";
dateValue = String.valueOf(No);
}
String num = String.valueOf(No);
num += getNo(count);
num = "CB" + num;
return num;
}
/**
* 獲取撤展單序列號
*/
public synchronized static String getMoveOrderNo(String serialNum) {
String nyr = StringUtils.substring(serialNum, 2, 10); // 獲取年月日字符串
String countV = StringUtils.substring(serialNum, 10); // 獲取流水號
if (Integer.valueOf(countV) > Integer.valueOf(count)) {
dateValue = nyr;
count = String.valueOf(countV);
}
return getMoveOrderNo();
}
/**
* 返回當天的訂單數(shù)+1
*/
public static String getNo(String s) {
String rs = s;
int i = Integer.parseInt(rs);
i += 1;
rs = "" + i;
for (int j = rs.length(); j < 3; j++) {
rs = "0" + rs;
}
count = rs;
return rs;
}
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
System.out.println(getMoveOrderNo());
}
}
}
注意:上面的程序如果服務器一直能夠正常運行就不會出什么問題,要是重啟服務器或者中間出現(xiàn)什么故障需要重啟服務都可能造成重復序列號的產(chǎn)生,為了能夠保證唯一,我們需要配合上數(shù)據(jù)庫的查詢,查詢最后一條記錄,然后拿出序列號在調(diào)用getMoveOrderNo(String serialNum)這個方法,就能夠保證什么情況下生成的序列號都是正確唯一的。
相關文章
Spring?Boot?MQTT?Too?many?publishes?in?progress錯誤的解決方
本文介紹Spring?Boot?MQTT?Too?many?publishes?in?progress錯誤的解決方案,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下2022-07-07Java8實現(xiàn)優(yōu)雅的獲取重復字符與次數(shù)
這篇文章主要為大家詳細介紹了在Java8中,我們應該如何進行字符及字符串的去重,以及計算去重次數(shù),文中的示例代碼講解詳細,感興趣的小伙伴可以了解下2023-12-12springboot整合mybatis的超詳細過程(配置模式+注解模式)
這篇文章主要介紹了springboot整合mybatis的詳細過程(配置模式+注解模式),這里我使用的是配置模式+注解模式所以需要配置全局文件,本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下2022-04-04淺談springboot一個service內(nèi)組件的加載順序
這篇文章主要介紹了springboot一個service內(nèi)組件的加載順序,具有很好的參考價值,希望對大家有所幫助。以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家2021-08-08java使用randomaccessfile在文件任意位置寫入數(shù)據(jù)
Java在文件任意位置寫入數(shù)據(jù)可以使用RandomAccessFile方法來完成,下面看一個簡單的示例就明白了2014-01-01Spring如何消除代碼中的if-else/switch-case
這篇文章主要給大家介紹了關于Spring如何消除代碼中if-else/switch-case的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Spring具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧2019-04-04