欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java生成申請單序列號的實(shí)現(xiàn)方法

 更新時間:2014年01月03日 15:17:22   作者:  
申請單序列號一般要求根據(jù)一定的規(guī)則生成后幾位連續(xù)的字符串,下面是我項(xiàng)目中使用的生成序列號的代碼,其中用到了鎖機(jī)制,有需要的朋友可以參考一下

復(fù)制代碼 代碼如下:

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();
 }

 /**
  * 返回當(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)行就不會出什么問題,要是重啟服務(wù)器或者中間出現(xiàn)什么故障需要重啟服務(wù)都可能造成重復(fù)序列號的產(chǎn)生,為了能夠保證唯一,我們需要配合上數(shù)據(jù)庫的查詢,查詢最后一條記錄,然后拿出序列號在調(diào)用getMoveOrderNo(String serialNum)這個方法,就能夠保證什么情況下生成的序列號都是正確唯一的。

相關(guān)文章

最新評論