Java自動生成訂單序列號
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.commons.lang3.StringUtils;
/**
* 產生流水號工具類
* @version V1.0
* @date: 2013-11-16 下午5:21:37
*/
public class SerialNum {
private static String count = "000";
private static String dateValue = "20131115";
/**
* 產生流水號
*/
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();
}
/**
* 返回當天的訂單數+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());
}
}
}
注意:上面的程式如果伺服器一直能夠正常執行就不會出什麼問題,
要是重啟伺服器或者中間出現什麼故障需要重啟服務都可能造成重複序列號的產生,
為了能夠保證唯一,我們需要配合上資料庫的查詢,查詢最後一條記錄,
然後拿出序列號在呼叫getMoveOrderNo(String serialNum)這個方法,
就能夠保證什麼情況下生成的序列號都是正確唯一的。
相關文章
- 【譯】自動生成整型序列
- Laravel 結合 Redis 生成訂單號 (年月日+6 位自增)LaravelRedis
- 「crudapi」零程式碼實現訂單序列號SequenceAPI
- 利用 Redis 生成序列號的功能實現編號自增Redis
- 為 Docsify 自動生成 RSS 訂閱
- Java如何解決同時出庫入庫訂單號自動獲取問題Java
- 18 位無重複訂單號生成程式碼
- Jenkins持續部署-自動生成版本號Jenkins
- 微信訂閱號實現AI自動回覆AI
- As/IDEA json自動生成java beanIdeaJSONJavaBean
- 訂單自動過期實現方案 - 轉
- java 文件自動生成的神器 idocJava
- 在大流量下,直播app原始碼中訂單號的生成方式APP原始碼
- Intellij IDEA 2018用快捷鍵自動生成序列化idIntelliJIdea
- 訂單自動確認或取消設計方案
- PHP 做 RSA 簽名 生成訂單PHP
- 微信公眾號自動回覆_JavaJava
- 記一次訂單號事故
- XML節點自動生成簡單例項XML單例
- 最簡單的mybatis自動程式碼生成MyBatis
- [xmlbeans]自動生成讀寫xml的java類XMLBeanJava
- 自定義hybris生成訂單的ID格式
- Java五種設計模式實現奶茶訂單生成系統小DEMOJava設計模式
- SAP S/4HANA銷售訂單建立時,會自動觸發生產訂單的建立
- 生成序列
- 自動生成serialVersionUIDUI
- uuid自動生成UI
- im客戶端生成訊息序列號演算法客戶端演算法
- 訂單30分鐘未支付自動取消怎麼實現?
- 訂單超時自動關閉的實現方案總結
- Mysql實現自增長編號,日期+序列MySql
- 好用漂亮的Android 表格框架4(自動生成表單)Android框架
- Wings-讓單元測試智慧全自動生成
- 自動生成Sql--基於Mybatis的單表SqlSQLMyBatis
- 【譯】Angular自動取消訂閱Angular
- java程式碼自動生成帶swagger3註解JavaSwagger
- 高效實現銷售出庫單與訂單自動對接的方案介紹
- xorm自動生成modelORM