Serial custom prefix generator

   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>

Guess you like

Origin www.cnblogs.com/qq376324789/p/12171094.html