手机
当前位置:查字典教程网 >编程开发 >Java >java生成申请单序列号的实现方法
java生成申请单序列号的实现方法
摘要:复制代码代码如下: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生成申请单序列号的实现方法】相关文章:

myeclipse智能提示设置的实现方法

Java 使用poi把数据库中数据导入Excel的解决方法

java 字符串相减(很简单的一个方法)

解析分别用递归与循环的方式求斐波那契数列的实现方法

java dom4j解析xml用到的几个方法

java 全角半角字符转换的方法实例

java中数组的应用及方法

Java调用.dll文件的方法

五种单件模式之Singleton的实现方法详解

解决java 查看JDK中底层源码的实现方法

精品推荐
分类导航