java生成申請(qǐng)單序列號(hào)的實(shí)現(xiàn)方法
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.commons.lang3.StringUtils;
/**
* 產(chǎn)生流水號(hào)工具類(lèi)
* @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)生流水號(hào)
*/
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;
}
/**
* 獲取撤展單序列號(hào)
*/
public synchronized static String getMoveOrderNo(String serialNum) {
String nyr = StringUtils.substring(serialNum, 2, 10); // 獲取年月日字符串
String countV = StringUtils.substring(serialNum, 10); // 獲取流水號(hào)
if (Integer.valueOf(countV) > Integer.valueOf(count)) {
dateValue = nyr;
count = String.valueOf(countV);
}
return getMoveOrderNo();
}
/**
* 返回當(dāng)天的訂單數(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());
}
}
}
注意:上面的程序如果服務(wù)器一直能夠正常運(yùn)行就不會(huì)出什么問(wèn)題,要是重啟服務(wù)器或者中間出現(xiàn)什么故障需要重啟服務(wù)都可能造成重復(fù)序列號(hào)的產(chǎn)生,為了能夠保證唯一,我們需要配合上數(shù)據(jù)庫(kù)的查詢,查詢最后一條記錄,然后拿出序列號(hào)在調(diào)用getMoveOrderNo(String serialNum)這個(gè)方法,就能夠保證什么情況下生成的序列號(hào)都是正確唯一的。
- SQL Server自動(dòng)生成日期加數(shù)字的序列號(hào)
- .net獲取硬件信息_CPU序列號(hào)
- C#獲得MAC地址(網(wǎng)卡序列號(hào))的實(shí)現(xiàn)代碼
- C#利用win32 Api 修改本地系統(tǒng)時(shí)間、獲取硬盤(pán)序列號(hào)
- mysql簡(jiǎn)單實(shí)現(xiàn)查詢結(jié)果添加序列號(hào)的方法
- PowerShell中獲取Windows系統(tǒng)序列號(hào)的腳本分享
- 安裝完成后如何找回SQL Server實(shí)例安裝時(shí)的序列號(hào)
- C#獲取U盤(pán)序列號(hào)的方法
- C#實(shí)現(xiàn)讀取指定盤(pán)符硬盤(pán)序列號(hào)的方法
- ORACLE實(shí)現(xiàn)自定義序列號(hào)生成的方法
相關(guān)文章
JAVA中的日期LocalDate類(lèi)詳細(xì)用法講解
Java中存在一個(gè)日歷表示法的類(lèi)庫(kù),LocalDate類(lèi),如果只想要指定的年月日就可以用這個(gè)LocalDate類(lèi),下面這篇文章主要給大家介紹了關(guān)于JAVA中日期LocalDate類(lèi)詳細(xì)用法講解的相關(guān)資料,需要的朋友可以參考下2024-01-01
Spring關(guān)閉Tomcat Servlet容器時(shí)內(nèi)存泄漏問(wèn)題解決方案
這篇文章主要介紹了Spring關(guān)閉Tomcat Servlet容器時(shí)內(nèi)存泄漏問(wèn)題解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10
Spring cloud oauth2如何搭建認(rèn)證資源中心
這篇文章主要介紹了Spring cloud oauth2如何搭建認(rèn)證資源中心,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11
詳解SpringBoot項(xiàng)目整合Vue做一個(gè)完整的用戶注冊(cè)功能
本文主要介紹了SpringBoot項(xiàng)目整合Vue做一個(gè)完整的用戶注冊(cè)功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
SpringBoot+MyBatis-Plus+Velocity實(shí)現(xiàn)代碼自動(dòng)生成
本文主要介紹了使用SpringBoot、MyBatis-Plus和Velocity模板引擎實(shí)現(xiàn)代碼自動(dòng)生成器,該生成器能夠根據(jù)數(shù)據(jù)庫(kù)表結(jié)構(gòu)自動(dòng)生成增刪改查操作的代碼,感興趣的可以了解一下2025-03-03
Mybatis-plus selectByMap條件查詢方式
這篇文章主要介紹了Mybatis-plus selectByMap條件查詢方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06
Mybatis的動(dòng)態(tài)Sql組合模式詳情
這篇文章主要介紹了Mybatis的動(dòng)態(tài)Sql組合模式詳情,這篇文章從組合模式的角度分析了Mybatis動(dòng)態(tài)sql的部分,SqlNode是組合模式的Component接口,更多相關(guān)內(nèi)容需要的小伙伴可以參考一下2022-08-08
SpringBoot集成WebSocket實(shí)現(xiàn)后臺(tái)向前端推送信息
在一次項(xiàng)目開(kāi)發(fā)中,使用到了Netty網(wǎng)絡(luò)應(yīng)用框架,以及MQTT進(jìn)行消息數(shù)據(jù)的收發(fā),這其中需要后臺(tái)來(lái)將獲取到的消息主動(dòng)推送給前端,所以本文記錄了SpringBoot集成WebSocket實(shí)現(xiàn)后臺(tái)向前端推送信息的操作,需要的朋友可以參考下2024-02-02
詳解Spring中使用@within與@target的區(qū)別
這篇文章主要介紹了Spring中使用@within與@target的一些區(qū)別,本文通過(guò)項(xiàng)目案例給大家詳細(xì)分析,給大家介紹的非常詳細(xì),代碼簡(jiǎn)單易懂,需要的朋友可以參考下2021-09-09

