当前位置:  编程技术>java/j2ee

java生成申请单序列号的实现方法

    来源: 互联网  发布时间:2014-10-31

    本文导语:  代码如下: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 dateVa...

代码如下:

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


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java将类序列化并存储到mysql(使用hibernate)
  • java序列化和java反序列化示例
  • java序列化实现Serializable接口
  • java 基本类型或可序列化类型,这里说的可序列化类型是什么意思???具体都有哪些类型??谢谢
  • Java对象序列化和反序列化工具 Xson
  • Java 序列化库 JID
  • 请教java在序列化时的中文问题?
  • Java对象序列化框架 Kryo
  • Java序列化类库 protostuff
  • 在java中如何序列化
  • Java 快速序列化库 FST
  • Java是否有能够将经过quoted-printable编码的字符序列转换为原文的函数?
  • 深入理解Java对象的序列化与反序列化的应用
  • java序列化问题(求救,高手在哪里)
  • java对象序列化与反序列化的默认格式和json格式使用示例
  • java教程之对象序列化使用基础示例详解
  • java 序列化对象 serializable 读写数据的实例
  • 基于序列化存取实现java对象深度克隆的方法详解
  • Java序列化机制与原理的深入分析
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍
  • 本人想学java,请问java程序员的待遇如何,和java主要有几个比较强的方向
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: stringflavor定义及介绍
  • 我对JAVA一窍不通,可惜别人却给我一个Java的project,要我做一个安装程序,请问哪里有JAVA INSTALLER下载,而且我要不要安装java的sdk才能完成此项任务?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3