生成自增流水号 并每年第一天重新排序 生成HHTG170980001

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));
}
}
Controller调用:
在这里插入图片描述

no = list.get(0).getBillSeq()这里是查看你数据库的本月最后一条记录,如果有,则继续增加,如果是新月份,则从0001开始计数

结果如下:

在这里插入图片描述

换下月份结果如下:

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值