生成每年的新的流水号

代码如下:

package com;

import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

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


        /**
         * TEST+年月+0001
         * 每年从0001开始计数
         * */
        public static synchronized String getnumber(String thisCode){

              String id = null;
              Date date = new Date();
              SimpleDateFormat formatter = new SimpleDateFormat("yy");
              String thisData = thisCode.substring(4, 6);
              //这个判断就是判断你数据取出来的最后一个业务单号是不是当年的
              if(!formatter.format(date).equals(thisData)){
                  System.out.println("新的一年");
                  thisData = formatter.format(date);
                  //如果是新的一年的就直接变成0001
                  id = "TEST" + thisData + "0001";
              }else{
                  System.out.println("当年");
                  DecimalFormat df = new DecimalFormat("0000");

                  //不是新的一年就累加
                  id ="TEST"+ formatter.format(date)
                        + df.format(1 + Integer.parseInt(thisCode.substring(9, 12)));
              }
            return id;
            }



          public static void main(String[] args){
            /**
             *  TEST18090001
             *  测试名称 + 年月  + 0001
             * 
             *  */
              String sno = "TEST18090001";
              System.out.println(getnumber(sno));
              }
          }

输出结果:
当年:
这里写图片描述
新的一年:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_32230309/article/details/81708800