メモリは流水番号の自動生成を実現して、日によってリセットします
4817 ワード
既存のビジネスニーズに基づいて、ネット上の資料に基づいて参考にして(実はこれがトップを占めて、原理級に属しているため、へへ)、この方法を書いて、コードは以下の通りです:
package groovy
import java.text.DecimalFormat
import java.text.SimpleDateFormat;
/**
* : ,
*/
class SerialNumberTool {
private static SerialNumberTool serialNumberTool = null;
private static SimpleDateFormat yMd = new SimpleDateFormat("yyyyMMdd");
//
private int flag;
//
private Date date;
private SerialNumberTool() {
if(date == null || !(yMd.format(new Date()).equals(yMd.format(date)))){
date = new Date();
flag = 1;
}
}
/**
*
*/
private void checkChangeDay(){
if(date == null || !(yMd.format(new Date()).equals(yMd.format(date)))){
date = new Date();
flag = 1;
}
}
/**
* PrimaryGenerater
*
* @return
*/
public static SerialNumberTool getInstance() {
if (serialNumberTool == null) {
synchronized (SerialNumberTool.class) {
if (serialNumberTool == null) {
serialNumberTool = new SerialNumberTool();
}
}
}
return serialNumberTool;
}
/**
* , 0
* params:
* 2.places
*
*/
public synchronized String generaterNextNumber(int places) {
checkChangeDay();
StringBuffer stringBuffer = new StringBuffer();
int numPlaces = flag.toString().length();
// , 0
if(numPlaces < places ){
for (int i = 0; i < places - numPlaces; i++) {
stringBuffer.append("0");
}
stringBuffer.append(flag.toString());
}
else stringBuffer.append(flag.toString());
flag++;
return stringBuffer.toString();
}
/**
* flag 0, flag
* @param args
*/
public void operateFlag(int position){
this.flag = position;
}
public static void main(String[] args) {
for (int i = 0; i <10000 ; i++) {
println(SerialNumberTool.getInstance().generaterNextNumber(6));
}
}
}