代码如下:
package com;
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;
}
/**
* TEST+年月+0001
* 每年从0001开始计数
* */
public static synchronized String getnumber(String thisCode){
String id = null;
Date date = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yy");
String thisData = thisCode.substring(4, 6);
//这个判断就是判断你数据取出来的最后一个业务单号是不是当年的
if(!formatter.format(date).equals(thisData)){
System.out.println("新的一年");
thisData = formatter.format(date);
//如果是新的一年的就直接变成0001
id = "TEST" + thisData + "0001";
}else{
System.out.println("当年");
DecimalFormat df = new DecimalFormat("0000");
//不是新的一年就累加
id ="TEST"+ formatter.format(date)
+ df.format(1 + Integer.parseInt(thisCode.substring(9, 12)));
}
return id;
}
public static void main(String[] args){
/**
* TEST18090001
* 测试名称 + 年月 + 0001
*
* */
String sno = "TEST18090001";
System.out.println(getnumber(sno));
}
}
输出结果:
当年:
新的一年: