• 自定义前缀生成流水号


       自定义前缀生成流水号 

       前缀、中间为yyyyMMdd日期、后面6位自增

       数据库截图

       

     逻辑代码service

    @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次,如果还失败,则停止重试!
                     for(int i=0;i<=10;i++){
                         map.put("NUMBER",number);
                         map.put("VS2",map.get("VS"));//用于版本控制
                         map.put("VS",Integer.parseInt(String.valueOf(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接口

    @Mapper
    public interface NumerDao {
    
        Map<String,Object> getNumber();
    
        Integer save(Map<String,Object> map);
    
        Integer edit(Map<String,Object> map);
    
    }

    xml文件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>
  • 相关阅读:
    zookeeper集群的部署
    【转】始于Jupyter Notebooks:一份全面的初学者实用指南
    【转】Jupyter Notebook主题字体设置及自动代码补全
    【转】pip install 快速下载
    【转】Sublime Text 3 常用快捷键
    【转】Python——DataFrame基础操作
    【转】sqlite3 小结
    【转】SQLite3的安装与使用
    Python Pandas pandas.DataFrame.to_sql函数方法的使用
    处理异常 ‘try’——‘except’ 方法
  • 原文地址:https://www.cnblogs.com/qq376324789/p/12171094.html
Copyright © 2020-2023  润新知