天天看點

Java生成流水号

<code>import</code> <code>java.text.DecimalFormat;</code>

<code>import</code> <code>java.text.SimpleDateFormat;</code>

<code>import</code> <code>java.util.Date;</code>

<code>public</code> <code>class</code> <code>PrimaryGenerater {</code>

<code>    </code><code>private</code> <code>static</code> <code>final</code> <code>String SERIAL_NUMBER = </code><code>"XXXX"</code><code>; </code><code>// 流水号格式</code>

<code>    </code><code>private</code> <code>static</code> <code>PrimaryGenerater primaryGenerater = </code><code>null</code><code>;</code>

<code>    </code><code>private</code> <code>PrimaryGenerater() {</code>

<code>    </code><code>}</code>

<code>    </code><code>/**</code>

<code>     </code><code>* 取得PrimaryGenerater的單例實作</code>

<code>     </code><code>*</code>

<code>     </code><code>* @return</code>

<code>     </code><code>*/</code>

<code>    </code><code>public</code> <code>static</code> <code>PrimaryGenerater getInstance() {</code>

<code>        </code><code>if</code> <code>(primaryGenerater == </code><code>null</code><code>) {</code>

<code>            </code><code>synchronized</code> <code>(PrimaryGenerater.</code><code>class</code><code>) {</code>

<code>                </code><code>if</code> <code>(primaryGenerater == </code><code>null</code><code>) {</code>

<code>                    </code><code>primaryGenerater = </code><code>new</code> <code>PrimaryGenerater();</code>

<code>                </code><code>}</code>

<code>            </code><code>}</code>

<code>        </code><code>}</code>

<code>        </code><code>return</code> <code>primaryGenerater;</code>

<code>     </code><code>* 生成下一個編号</code>

<code>    </code><code>public</code> <code>synchronized</code> <code>String generaterNextNumber(String sno) {</code>

<code>        </code><code>String id = </code><code>null</code><code>;</code>

<code>        </code><code>Date date = </code><code>new</code> <code>Date();</code>

<code>        </code><code>SimpleDateFormat formatter = </code><code>new</code> <code>SimpleDateFormat(</code><code>"yyyyMMdd"</code><code>);</code>

<code>        </code><code>if</code> <code>(sno == </code><code>null</code><code>) {</code>

<code>            </code><code>id = formatter.format(date) + </code><code>"0001"</code><code>;</code>

<code>        </code><code>} </code><code>else</code> <code>{</code>

<code>            </code><code>int</code> <code>count = SERIAL_NUMBER.length();</code>

<code>            </code><code>StringBuilder sb = </code><code>new</code> <code>StringBuilder();</code>

<code>            </code><code>for</code> <code>(</code><code>int</code> <code>i = </code><code>0</code><code>; i &lt; count; i++) {</code>

<code>                </code><code>sb.append(</code><code>"0"</code><code>);</code>

<code>            </code><code>DecimalFormat df = </code><code>new</code> <code>DecimalFormat(</code><code>"0000"</code><code>);</code>

<code>            </code><code>id = formatter.format(date)</code>

<code>                    </code><code>+ df.format(</code><code>1</code> <code>+ Integer.parseInt(sno.substring(</code><code>8</code><code>, </code><code>12</code><code>)));</code>

<code>        </code><code>return</code> <code>id;</code>

<code>}</code>

本文轉自yunlielai51CTO部落格,原文連結:http://blog.51cto.com/4925054/1333368,如需轉載請自行聯系原作者