java生成自增流水號,並從每月第一天重新清零計數將業務流水號添加到數據庫(原創)


 如果你不想在數據庫操作的話,這里有個方法可以一試,直接上代碼:

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));
      }
  }
  

 

Controller調用:

 

 

 no = list.get(0).getBillSeq()這里是查看你數據庫的本月最后一條記錄,如果有,則繼續增加,如果是新月份,則從0001開始計數

結果如下:

換下月份結果如下:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM