java生成自增流水号,并从每月第一天重新清零计数(原创)

如果你不想在数据库操作的话,这里有个方法可以一试,直接上代码:

package com.seawin.common.util.convert;

import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

public class PrimaryGenerater {
  private static String SERIAL_NUMBER = "0001" ;
  private static PrimaryGenerater primaryGenerater = null;

  private PrimaryGenerater(){

  }

  /**
   * 取得PrimaryGenerater的单例实现
   *
   * @return
   */
  public static PrimaryGenerater getInstance() {
      if (primaryGenerater == null) {
          synchronized (PrimaryGenerater.class) {
              if (primaryGenerater == null) {
                  primaryGenerater = new PrimaryGenerater();
              }
          }
      }
      return primaryGenerater;
  }

/**
 * 生成 日期+随机数的流水号
 * */
  public String getNumberForPK(){
      String id="";
      SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss");
      String temp = sf.format(new Date());
      int random=(int) (Math.random()*10000);
      id=temp+random;
      return id;
  }  

/**
 * HHTG+年月+8+0001
 * 每月从0001开始计数
 * */
public static synchronized String getnumber(String thisCode){

      String id = null;
      Date date = new Date();
      SimpleDateFormat formatter = new SimpleDateFormat("yyMM");
      String thisData = thisCode.substring(4, 8);
      //这个判断就是判断你数据取出来的最后一个业务单号是不是当月的
      if(!formatter.format(date).equals(thisData)){
          System.out.println("新的一月");
          thisData = formatter.format(date);
          //如果是新的一月的就直接变成0001
          id = "HHTG" + thisData + "80001";
      }else{
          System.out.println("当月");
          DecimalFormat df = new DecimalFormat("0000");

          //不是新的一月就累加
          id ="HHTG"+ formatter.format(date)+"8"
                + df.format(1 + Integer.parseInt(thisCode.substring(9, 13)));
      }
    return id;
    }

  public static void main(String[] args){
    /**
     *  HHTG170980001
     *  HH公司简称  + TG业务类型 + 年月 + 8部门 + 0001
     *
     *  */
      String sno = "HHTG170980001";
      System.out.println(getnumber(sno));
      }
  }
  

结果如下:

换下月份结果如下:

时间: 2024-10-11 05:39:50

java生成自增流水号,并从每月第一天重新清零计数(原创)的相关文章

POI以SAX方式解析Excel2007大文件(包含空单元格的处理) Java生成CSV文件实例详解

http://blog.csdn.net/l081307114/article/details/46009015 http://www.cnblogs.com/dreammyle/p/5458280.html . Office2007与Office Open XML 在Office 2007之前,Office一直都是以二进制位的方式存储,但这种格式不易被其它软件拿来使用,在各界的压力下,MicroSoft于2005年发布了基于XML的ooxml开放文档标准.ooxml的xml schema强调减

javascript生成表格增删改查 JavaScript动态改变表格单元格内容 动态生成表格 JS获取表格任意单元格 javascript如何动态删除表格某一行

jsp页面表格布局Html代码 <body > <center> <input type="text" value="111" id="mytext"> <table border="1" width="60%" id="mytable"> <tr> <td id="td1">第一行第一列<

Java生成XML文件

<Java眼中的XML ---文件写入> 四种方法用Java生成一个XML文件. 1.通过DOM方式生成XML文档 import java.io.File; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transfo

2016/1/14 java生成指定范围的随机数

java生成指定范围的随机数 1 package edu.sjtu.erplab.io; 2 3 import java.util.Random; 4 5 public class RandomTest { 6 public static void main(String[] args) { 7 int max=20; 8 int min=10; 9 Random random = new Random(); 10 11 int s = random.nextInt(max)%(max-min+

Android Studio library R.java生成失败解决

今天在Android Studio里面创建library,library里有引用到一些资源,但是发现R一直引用不了.查看了下,build\generated\source\r\debug目录里面的R.java文件一直没有生成.谷歌许久,没有找到答案.最后自己找到了解决方案:菜单build->Make Module “yourLibrary”,然后发现R.java生成了,资源文件就可以引用了. 原文: http://blog.csdn.net/viviwen123/article/details/

Java生成并打印二维码

本次做订餐系统中,需要用到在Java生成二维码,并在jsp页面打印并输出,其中在action中生成二维码. 关键代码如下 1 public void reWeiMa() throws Exception{ 2 //设置页面不缓存 3 HttpServletResponse response = ServletActionContext.getResponse(); 4 HttpServletRequest quest = ServletActionContext.getRequest(); 5

java 生成 二维码 和jquery 生成二维码

生成二维码 Java 生成二维码: 思路为拿到jar 包知道里面的方法使用 Step one : 在https://github.com/zxing中下载(点击网页中名为 zxing 的a标签,跳转到源码页面,点击release 查看所有发布的源码,下载zip压缩文件 Step two:  解压文件后打开文件夹,将core包和javase包 中的com包拷贝到一java项目src目录下.右键导出 jar file  得到一个二维码开发的jar包 Step three: 进行二维码制作 impor

JAVA 生成 MD5摘要 和SHA1摘要 及MD5的彩虹表破解

MD5  和SHA1 这两个摘要算法,使用很普遍,几乎每个项目我们都会用这两个算法来骗自己和骗用户,看啊,我们保存的用户密码是加密的.对,存的不是明文,是密文.然而MD5真的安全么? 上干货 JAVA生成MD5摘要的代码: MessageDigest md5 =MessageDigest.getInstance("MD5");         String messageStr="123456";         md5.update(messageStr.getB

java生成验证码

一:需求分析 使用java生成验证码: 1:生成画布,画好背景图 2:画随机数 3:画干扰线 4:将内存中的图片保存到硬盘上 二:代码如下 1 /** 2 * 3 */ 4 package com.hlcui.io; 5 6 import java.awt.Color; 7 import java.awt.Font; 8 import java.awt.Graphics; 9 import java.awt.image.BufferedImage; 10 import java.io.File;