1. 程式人生 > >java生成自增流水號,並從每月第一天重新清零計數(原創)

java生成自增流水號,並從每月第一天重新清零計數(原創)

equals code ext 數據庫操作 get color mage 隨機數 static

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

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生成自增流水號,並從每月第一天重新清零計數(原創)