java 实现调用方法计数 从01开始,调用一次就加1,到了第二天这个数值又自动还原成01

项目中打印出库单,在出库单上要实现一个流水号,每次调用方法打印就得到当前日期在后面加上今天打印的次数,例如 2021071301,
今天打印第二次就是2021071302,到了第二天后面的次数就又要还原成01,以此类推,怎么实现呢?

已经解决了,将数值存在redis中,每次调用方法从redis中取值,得到字符串,截取日期那一段用来判断是否是同一天,然后在将值修改存入redis即可。

数据库创建一张表,一个编码对应一个计数器,写一个定时任务每天0:00将计数器置零

打印记录打印时间,打印时查询今天打印次数总和,例如今天打印次数总和为5,那么今天的下一次打印流水号2021071306

package com.eleven;


import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class ElevenTest {
    private static Integer num = 0;
    //
    private static LocalDate signTime = LocalDate.now();

    public static void main(String[] args) {
        System.out.println(getNum(LocalDate.now()));
        System.out.println(getNum(LocalDate.now()));
        System.out.println(getNum(LocalDate.now()));
        System.out.println(getNum(LocalDate.now().plusDays(1)));
    }

    public synchronized static String getNum(LocalDate localDate){
        if (localDate.compareTo(signTime) > 0) {
            num = 0;
        } else {
            num++;
        }
        String numStr = "" + num;
        while (numStr.length() < 2){
            numStr = "0" + numStr;
        }
        return DateTimeFormatter.ofPattern("yyyyMMdd").format(localDate) + numStr;
    }
}


2021071301
2021071302
2021071303
2021071400

想了想不大符合要求,还删除不了,吼吼吼

https://blog.csdn.net/nmgrd/article/details/77015206
看看这个吧

一个对象记录运行日期和此时标记,通过这个对象生成流水

第一次运行日期为空设置当前日期,编号是1,
以后运行判断当前时间和记录的时间是不是同一天, 如果是就流水编码+1,如果不是就重置日期和编号

这个对象是单例的要加锁防并发

可以存Redis