码迷,mamicode.com
首页 > 编程语言 > 详细

java生成自增流水号,并从每月第一天重新清零计数(原创)

时间:2017-09-07 18:13:30      阅读:643      评论:0      收藏:0      [点我收藏+]

标签:private   ges   new   this   java   部门   logs   .com   公司   

 如果你不想在数据库操作的话,这里有个方法可以一试,直接上代码:

package com.seawin.common.util.convert;

import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Date;


public class PrimaryGenerater {
  private static String SERIAL_NUMBER = "0001" ;
  private static PrimaryGenerater primaryGenerater = null;
  
  private PrimaryGenerater(){
      
  }
  
  /**
   * 取得PrimaryGenerater的单例实现
   *
   * @return
   */
  public static PrimaryGenerater getInstance() {
      if (primaryGenerater == null) {
          synchronized (PrimaryGenerater.class) {
              if (primaryGenerater == null) {
                  primaryGenerater = new PrimaryGenerater();
              }
          }
      }
      return primaryGenerater;
  }
  

  
/**
 * 生成 日期+随机数的流水号
 * */
  public String getNumberForPK(){  
      String id="";  
      SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss");  
      String temp = sf.format(new Date());  
      int random=(int) (Math.random()*10000);  
      id=temp+random;  
      return id;  
  }  
  
  
  
/**
 * HHTG+年月+8+0001
 * 每月从0001开始计数
 * */
public static synchronized String getnumber(String thisCode){
        
      String id = null;
      Date date = new Date();
      SimpleDateFormat formatter = new SimpleDateFormat("yyMM");
      String thisData = thisCode.substring(4, 8);
      //这个判断就是判断你数据取出来的最后一个业务单号是不是当月的
      if(!formatter.format(date).equals(thisData)){
          System.out.println("新的一月");
          thisData = formatter.format(date);
          //如果是新的一月的就直接变成0001
          id = "HHTG" + thisData + "80001";
      }else{
          System.out.println("当月");
          DecimalFormat df = new DecimalFormat("0000");
          
          //不是新的一月就累加
          id ="HHTG"+ formatter.format(date)+"8"
                + df.format(1 + Integer.parseInt(thisCode.substring(9, 13)));
      }
    return id;
    }



  public static void main(String[] args){
    /**
     *  HHTG170980001
     *  HH公司简称  + TG业务类型 + 年月 + 8部门 + 0001
     * 
     *  */
      String sno = "HHTG170980001";
      System.out.println(getnumber(sno));
      }
  }
  

结果如下:

技术分享

换下月份结果如下:

技术分享

 

java生成自增流水号,并从每月第一天重新清零计数(原创)

标签:private   ges   new   this   java   部门   logs   .com   公司   

原文地址:http://www.cnblogs.com/jbml-154312/p/7490810.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!