java生成申请单序列号的实现方法_Java教程-查字典教程网
java生成申请单序列号的实现方法
java生成申请单序列号的实现方法
发布时间:2016-12-28 来源:查字典编辑
摘要:复制代码代码如下:importjava.text.SimpleDateFormat;importjava.util.Date;importo...

复制代码 代码如下:

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)这个方法,就能够保证什么情况下生成的序列号都是正确唯一的。

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新Java学习
    热门Java学习
    编程开发子分类