根據型別生成每年的新的流水號(四個大型別中的兩個小型別)
阿新 • • 發佈:2019-01-08
程式碼如下:
package com;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
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;
}
/**
* 每年從0001開始計數 type 1 煤礦安許證 2 煤礦安資證 3 安全設施設計審查 4 中介機構 types 1 受理 2 不受理
* */
public static synchronized String getnumber(String thisCode,
String typeString, Integer types) {
String id = null;
Date date = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yy");
String thisData = thisCode.substring(thisCode.length() - 6,
thisCode.length() - 4);
String formatData = formatter.format(date);
Integer newDate = Integer.parseInt(formatData);
Integer newThisData = Integer.parseInt(thisData);
// 這個判斷就是判斷你資料取出來的最後一個單號是不是當年的
if (newDate < newThisData) {
System.out.println("新的一年");
thisData = formatter.format(date);
// 如果是新的一年的就直接變成0001
if (types == 1) {
id = typeString + "受" + thisData + "0001";
} else {
id = typeString + "不受" + thisData + "0001";
}
} else if (newDate == newThisData) {
System.out.println("當年");
DecimalFormat df = new DecimalFormat("0000");
// 不是新的一年加
if (types == 1) {
id = typeString
+ "受"
+ formatter.format(date)
+ df.format(1 + Integer.parseInt(thisCode.substring(
thisCode.length() - 6, thisCode.length())));
} else {
id = typeString
+ "不受"
+ formatter.format(date)
+ df.format(1 + Integer.parseInt(thisCode.substring(
thisCode.length() - 6, thisCode.length())));
}
} else {
System.out.println("年份出錯!");
}
return id;
}
public static void main(String[] args) {
/**
* types 煤礦安許證 types1 煤礦安資證 types2 安全設施設計審查 types3 中介機構
* */
String[] types = { "安全生產許可證首次申請", "延期", "直接延期", "變更" };
String[] types1 = { "安全資格證(企業)", "安全資格證(專案部)" };
String[] types2 = { "安全設施設計審查" };
String[] types3 = { "職業衛生技術服務機構資質", "安全評價機構資質", "安全生產檢測檢驗機構資質" };
TypeEntity en = new TypeEntity(1, types);
TypeEntity en1 = new TypeEntity(2, types1);
TypeEntity en2 = new TypeEntity(3, types2);
TypeEntity en3 = new TypeEntity(4, types3);
// 1為受理 2不受理
Integer ii = 1;
List<TypeEntity> list = new ArrayList<TypeEntity>();
list.add(en);
list.add(en1);
list.add(en2);
list.add(en3);
/**
* 型別名稱 + 年月 + 0001 typeEntity.getTypes()[i].equals("xxx") 中的 安全設施設計審查
* 是前臺傳來的型別的值 getnumber(sno,typeString,number) 其中sno是取得資料庫中的最後一個欄位
* typeString 前臺傳來的型別的值 number 是受理和不受理型別 1 受理 2 不受理
* */
for (TypeEntity typeEntity : list) {
for (TypeEntity typeEntity : list) {
for (int i = 0; i < typeEntity.getTypes().length; i++) {
if (typeEntity.getTypes()[i].equals("安全生產許可證首次申請")) {
String sno = "煤礦安許證受192991";
String typeString = "煤礦安許證";
System.out.println(getnumber(sno, typeString, 1));
}
}
}
}
}
輸出結果:
當年:
新的一年: