Serial custom prefix generator
Prefix, the middle yyyyMMdd date, six behind self-energizing
Database Screenshot
Service logic code
@Service public class NumerService { @Autowired private NumerDao numerDao; public String getNumber(String bef){ String number=bef+DateUtils.getDateTime("yyyyMMdd"); Map<String, Object> map = numerDao.getNumber(); if(map==null){ number+="000001"; Map<String, Object> data = new HashMap<>(); data.put("ID",UUID.randomUUID().toString()); data.put("NUMBER",number); data.put("VS","0"); Integer save = numerDao.save(data); if(save>=1){ return number; } }else{ String numberData=String.valueOf(map.get("NUMBER")); String s1 =""; String s2=""; String s3 =""; if(numberData.indexOf(DateUtils.getDateTime("yyyyMMdd"))<0){ number+="000001"; }else{ //最后的6位自增数字 s1 = numberData.substring(numberData.length() - 6); //日期 s2=DateUtils.getDateTime("yyyyMMdd"); //自增+1 s3 = String.valueOf(Integer.parseInt(s1) + 1); int length=s3.length(); for (int i=0;i<6-length;i++){ s3="0"+s3; } Number = BEF + S2 + S3; } // 10 cycles, if it fails, retry is stopped! for ( int I = 0; I <= 10; I ++ ) { map.put ( "NUMBER" , Number); map.put ( "VS2 of", as map.get ( "VS")); // for versioning map.put ( "VS", the Integer.parseInt (String.valueOf (as map.get ( "VS"))) +. 1 ); Integer Edit = numerDao.edit (Map); IF (Edit> =. 1 ) { return Number ;else{ s3 = String.valueOf(Integer.parseInt(s3) + 1); int length=s3.length(); for (int j=0;j<6-length;j++){ s3="0"+s3; } number=bef+s2+s3; } } } return ""; } }
dao Interface
@Mapper public interface NumerDao { Map<String,Object> getNumber(); Integer save(Map<String,Object> map); Integer edit(Map<String,Object> map); }
xml file sql
<select id="getNumber" resultType="java.util.Map"> SELECT * FROM OA.EHR_NUMBER </select> <!--保存年假数据--> <insert id="save" parameterType="java.util.Map"> INSERT INTO OA.EHR_NUMBER ( "ID", "NUMBER", "VS" ) VALUES( #{ID,jdbcType=VARCHAR}, #{NUMBER,jdbcType=VARCHAR}, #{VS,jdbcType=VARCHAR} ) </insert> <update id="edit" parameterType="java.util.Map"> update OA.EHR_NUMBER set "NUMBER"=#{NUMBER}, "VS"=#{VS} where "ID"=#{ID} and "VS"=#{VS2} </update>