工具类,生称编号

package util;

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

public class GetNextNumber {
    /**
     * 
     * describe: 按照模版生成编号
     * user:choiyubo
     * date:2017年6月5日下午7:28:59
     * @param model 起始编号[2016][0000]
     * @param oldno 当前的编号
     * @param yearStart 时间开始下标(下标从0开始)
     * @param noStart 编号开始下标(下标从0开始)
     * @param noLength 编号长度
     * @return 新的编号
     */
    public static String getnextnumber(String model,String oldnumber,int yearStart,int noStart,int noLength){
        
        if(oldnumber==null||oldnumber.length()!=model.length()){//如果没有参数,模版的长度和传入的不一致,则返回模版
            oldnumber= model;
        }
        StringBuffer newno=new StringBuffer("");
        SimpleDateFormat df=new SimpleDateFormat("yyyy");
        int year= Integer.valueOf(df.format(new Date()));
        newno.append(oldnumber.substring(0,yearStart));//时间之前
        newno.append(year);//时间
        newno.append(oldnumber.substring(yearStart+4,noStart));//时间之后,no之前
        int no=Integer.valueOf(oldnumber.substring(noStart,noStart+noLength));//原来的no
        String modelno=model.substring(noStart,noStart+noLength);//模版的no
        String newnum=new DecimalFormat(modelno).format(no+1);
        
        if(newnum.length()>noLength){
            newnum=modelno;
        }
        newno.append(newnum);//新的number
        newno.append(oldnumber.substring(noStart+noLength));
        return newno.toString();
    }    
    


}

测试方法如下

package util;


import org.junit.Before;
import org.junit.Test;

public class GetNextNumberTest {
    
    private static GetNextNumber getNextNumber=new GetNextNumber();
    @Before
    public void setUp() throws Exception {
        
    }

    @SuppressWarnings("static-access")
    @Test
    public void test() {
        String model="[2016][00000]";//模版
        String oldnumber=null;//当前的编号
        String testnumber="[2016][00001]";//预期的结果
        int yearStart=1;
        int noStart=7;
        int noLength=5;
        String newnumber=getNextNumber.getnextnumber(model, oldnumber, yearStart, noStart, noLength);
        assert(testnumber.equals(newnumber));
    }

}

 

posted @ 2017-06-05 20:02  影子影  阅读(192)  评论(0编辑  收藏  举报