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

java 获取数据库连接的实现代码

java mail使用qq邮箱发邮件的配置方法

生成8位随机不重复的数字编号的方法

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

Java多线程下载的实现方法

Java解析XML的四种方法详解

windows下java环境变量的设置方法

java多线程复制文件的实例代码

Java 将字符串动态生成字节码的实现方法

java生成图片验证码示例程序

精品推荐
分类导航