java生成請求單序列號的完成辦法。本站提示廣大學習愛好者:(java生成請求單序列號的完成辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是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)這個辦法,就可以夠包管甚麼情形下生成的序列號都是准確獨一的。