In the project, how to generate the next serial number according to the current serial number.
Datatype.java
Package cn.itcast.crm.util;
Import Org.apache.commons.lang.StringUtils; public class DataType {/** * generates the first serial number * Water bit 3-----001 * Flow bit 4-----0001/public static String Genefi with a given stream bit Rstglidenumber (Integer glidebit) {if glidebit==null| |
glidebit<3) {glidebit=3;
} String glidenumber= "";
for (int i=0;i<glidebit-1;i++) {glidenumber=glidenumber+ "0";
} glidenumber=glidenumber+ "1";
return glidenumber; /** * According to the current serial number, generate the next serial number * is currently 001 the next 002 * is currently 005 next 006 * @param curglidenumber Current serial number * @return * String
10005----Shaping 10005 * Plastic 10005+1----shaping 10006 * shaping 10006----String 10006 * string 10006----intercept 0006 */ public static string Genenextglidenumber (String curglidenumber) {if (Stringutils.isblank (Curglidenumber)) {throw new
RuntimeException ("Cannot calculate next serial number");
} curglidenumber= "1" +curglidenumber;
Integer Icurglidenumber=integer.parseint (Curglidenumber);
icurglidenumber++;
Curglidenumber=icurglidenumber+ ""; CurGlidenumber=curglidenumber.substring (1);
return curglidenumber;
public static void Main (string[] args) {System.out.println (Genenextglidenumber ("004"));
}
}
Companyserviceimpl.java
Package Cn.itcast.crm.service.impl;
Import Java.util.Date;
Import java.util.List;
Import Javax.annotation.Resource;
Import Org.apache.commons.lang.time.DateFormatUtils;
Import Org.springframework.stereotype.Service;
Import org.springframework.transaction.annotation.Isolation;
Import org.springframework.transaction.annotation.Propagation;
Import org.springframework.transaction.annotation.Transactional;
Import Cn.itcast.crm.dao.ISysCodeRuleDao;
Import Cn.itcast.crm.domain.SysCodeRule;
Import Cn.itcast.crm.service.ICompanyService;
Import Cn.itcast.crm.util.DataType; @Transactional (readonly=true) @Service (icompanyservice.service_name) public class Companyserviceimpl implements
Icompanyservice {@Resource (name=isyscoderuledao.service_name) private Isyscoderuledao Syscoderuledao; @Transactional (isolation=isolation.default,propagation=propagation.required,readonly=false) public String Getcompanycodebytabname (String tabname) {//Get Code rules, query Sys_code_rule String wherehql= "and O. tabname=? ";
Object[] Params={tabname};
List<syscoderule> list=syscoderuledao.findobjectbyconditionwithnopage (WHEREHQL, params); if (list==null| |
List.size ()!=1) {throw new RuntimeException ("Cannot generate a customer's encoding");
} syscoderule syscoderule=list.get (0); * Gets whether the value of the field that has been modified or newly added is//* if it has been modified or added = = ' Y ' if (syscoderule.getavailable (). Equals ("Y")) {//* gets
Flow bit =3 Integer glidebit=syscoderule.getglidebit ();
* Generate the first serial number 001 String Firstglidenumber=datatype.genefirstglidenumber (glidebit);
* Compute the next serial number 002 String nextglidenumber=datatype.genenextglidenumber (firstglidenumber);
* Get the current time format of the system YyyyMMdd 20110914 String Curdate=dateformatutils.format (New Date (), "yyyyMMdd"); * Generate customer code//* prefix + "-" + date bit format to generate the current date [Yyyy-mm-dd]+ "-" +001 c-2011-09-14-001 S
Tring Code=syscoderule.getareaprefix () + "-" +dateformatutils.format (New Date (), Syscoderule.getareatime ()) + "-" +firstglidenumber;
* Modify Code Rules table//* the next serial number = "002" Syscoderule.setnextseq (Nextglidenumber);
* Current date 20110914 syscoderule.setcurdate (curdate);
* Whether it has been modified = ' n ' syscoderule.setavailable ("n");
Syscoderuledao.update (Syscoderule);
System.out.println ("1:code:" +code);
return code;
}else{//whether modified or newly added = = ' N '//* gets the value of the current date field in the Code Rule table String curdate=syscoderule.getcurdate ();
* Get the current date of the system, String Syscurdate=dateformatutils.format (new Date (), "yyyyMMdd");
* If the value of the current date field in the code rules table = = The current date of the system, if (Curdate.equals (syscurdate)) {//* Gets the next serial number = "002"
String Nextseq=syscoderule.getnextseq ();
* Calculate the new serial number 003 String Nextglidenumber=datatype.genenextglidenumber (NEXTSEQ); * Generate customer code//* prefix + "-" + date bit format to generate the current date [Yyyy-mm-dd]+ "-" +001 String code=syscod Erule.getareaprefix () + "-" +dateformatutils.format (New Date (), Syscoderule.getareatime
()) + "-" +NEXTSEQ;
* Modify Code Rules table//* the next serial number = "003" Syscoderule.setnextseq (Nextglidenumber); * Current date 20110914//* has been modified = ' N ' syscoderuledao.update (Syscoderu
Le);
System.out.println ("2:code:" +code);
return code; }else{//If the value of the current date field in the Code Rules table!= the current date of the system,//* gets the running bit =3 Integer Glidebit=syscoderul
E.getglidebit ();
* Generate the first serial number 001 String Firstglidenumber=datatype.genefirstglidenumber (glidebit); * Compute the next serial number 002 String nextglidenumber=datatype.genenextglidenumber (firstglidenumber);
* Generate customer code//* prefix + "-" + date-bit format to generate the current date [Yyyy-mm-dd]+ "-" +001 String Code=syscoderule.getareaprefix () + "-" +dateformatutils.format (New Date (), Syscoderule.getareati
Me ()) + "-" +firstglidenumber;
* Modify Code Rules table//* the next serial number = "002" Syscoderule.setnextseq (Nextglidenumber);
* Current date 20110915 syscoderule.setcurdate (syscurdate);
* Whether it has been modified = ' n ' syscoderule.setavailable ("n");
Syscoderuledao.update (Syscoderule);
System.out.println ("3:code:" +code);
return code;
}
}
}
}
Using the above code, you can automatically generate the serial number.