標籤:java 產生條碼號
在實際業務中會有很多通過和流水號拼接,形成一個使用者唯一id的標識。由於本次用的是和oracle資料庫結合,所以會用到oracle的序列,為了示範方便,所以把動態得到的序號寫成了靜態了。具體源碼如下:
package com.evan.string;import java.text.SimpleDateFormat;public class BarcodeGenerateTest { public static void main(String[] args) { String dept = "0001";//分院id號 int max = 202;//當前序列的下一個序列 SimpleDateFormat sd = new SimpleDateFormat("yyMMdd"); String day = sd.format(new java.util.Date()); String spk = String.format("%05d", max); //條碼號建置規則: 分院id號+999+當前日期+當前序列的下一個序列 String barcode = dept + "999" + day + spk; System.out.println(barcode);//000199915050700202 /**前面補零 將條碼號強制補齊為十八位,在Excel匯入時,可能會遇到,因為excel條碼顯示為000199915050700202 但是傳遞到後台後就變成199915050700202,三個零自動就沒了。可以用強制補零來解決。*/ String sglCheckId = "123456789"; String result = String.format("%018d", Integer.valueOf(sglCheckId)); System.out.println(result); }}
但是這樣做可能會有一個問題,就是在同一天當序列增長到最大值時,序列會從最小值重新開始,這樣會導致條碼重複。
解決辦法目前可能有兩個個:
1、要求業務部門,當前最多可匯入10萬條資料 。(目前真是這樣做的)
2、將條碼號的建置規則改變,增加兩個數量級。
java產生條碼號的源碼