按你的需求,可以先根据父类部门编号长度来得到子部编号长度,然后用这个长度做限制从子部门编码的数组中过滤出长度等于这个的,过滤出来的就是跟要生成的子部门的编码同一级别的,然后在过滤出来的这些编码中选取最大值加1,OK了~~这个实现的是Encode增长+1.三位一组 生成一个部门下的子部门的EnCode,要求根据已有子部门的Encode增长+1,填空中间空值. 你这里的或是有空就填,还是两种方法处理都行呢?

解决方案 »

  1.   

    搞了 半天才弄出下面的代码,有点长 
    public String getCode(){ 
    String str = "001001"; String s[] = { "001", "001001","001002","001003","001004", "001005","001001001","001001003" ,"001001004"  }; 
    List it =new ArrayList(); //子部门集合 
    for (int i = 0; i < s.length; i++) { String st=""; 
    if (str.length() == 3) { st = s[i].substring(0, 3); 

    else if (str.length() == 6 && s[i].length() > str.length()) { 
    st = s[i].substring(0, 6); 

    else if (str.length() == 9 && s[i].length() > str.length()) { 
    st = s[i].substring(0, 9); 

    else if (str.length() == 12 && s[i].length() > str.length()) { 
    st = s[i].substring(0, 12); 

    else if (str.length() == 15 && s[i].length() > str.length()) { 
    st = s[i].substring(0, 15); 

    if (str.equals(st) && s[i].length()==str.length()+3 ) {//筛选子类 
    Integer zstr=Integer.valueOf(s[i].substring(str.length(), str.length()+3));//转换为Integer类型 
    it.add(zstr);//添加子类 


    int num=0; 
    String stri=""; 
    String code=""; 
    for (int k = 0; k < it.size(); k++) { int inte =((Integer)it.get(k)).intValue(); 
    int inte2 =0; 
    if(k <it.size()-1){ 
    inte2 =((Integer)it.get(k+1)).intValue(); 
    } if(inte2-inte>1){//插空隙 
    num=inte+1; 
    stri=String.valueOf(num); if(stri.length()==3){ 
    code=str+stri; 
    return code; 
    }else if(stri.length()==2){ 
    code=str+"0"+stri; 
    return code; }else if(stri.length()==1){ 
    code=str+"00"+stri; 
    return code; 

    }else{ 
    num=((Integer)it.get(it.size()-1)).intValue()+1;//code+1 
    stri=String.valueOf(num); 
    if(stri.length()==3){ 
    code=str+stri; 
    return code; 
    }else if(stri.length()==2){ 
    code=str+"0"+stri; 
    return code; }else if(stri.length()==1){ 
    code=str+"00"+stri; 
    return code; 

    } } 
    return code; 
    }