1. 程式人生 > >根據型別生成每年的新的流水號(四個大型別中的兩個小型別)

根據型別生成每年的新的流水號(四個大型別中的兩個小型別)

程式碼如下:

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

輸出結果:
當年:
這裡寫圖片描述
新的一年:
這裡寫圖片描述