用(Atomic原子类 使用)实现自增

// 静态变量存储最大值
private static final AtomicInteger atomicNum = new AtomicInteger();
private static final Integer INIT_CODE_NUM = 0;
public String getCode(){
   //获取当前月日
   String date = new SimpleDateFormat("MMdd").format(new Date());
   String code = "XM"+date+"-";
   String format="";
   //从数据库筛选
   LambdaQueryWrapper<Project> wrapper = new LambdaQueryWrapper<>();
   wrapper.orderByDesc(Project::getCode);
   String projectCode = projectServiceImpl.list(wrapper).iterator().next().getCode();


   if(!ValidationUtil.isEmpty(projectCode)){
      //获取到当前code月日
      String proDate = projectCode.substring(projectCode.indexOf("M")+1,projectCode.length() - 5);
      if (proDate.equals(date)){
         String substring = projectCode.substring(projectCode.length() - 4);
         atomicNum.set(Integer.parseInt(substring));
      }else {
      //重置数量
         atomicNum.set(INIT_CODE_NUM);
      }
      //生成四位随机数自加1后并返回
      format = String.format("%04d", atomicNum.incrementAndGet());

   }
   return code+format;
}
posted @ 2022-11-11 15:01  爱笙灬  阅读(162)  评论(0)    收藏  举报