java 实现,将一条数据的code 按照这种方式保存: 'BSGK'+当前年份+当前月份+序号(比如0001,0002,0003四位数),序号取当前月份的最大序号+1,如果当前月份没得数据,而保存的数据正好是当前月份,那么编号就为0001,以2023年6月为例子,当前月没有数据,本次编号就为BSGK2023060001,
时间: 2024-03-03 09:50:53 浏览: 95
好的,这个需求可以通过以下代码实现:
```java
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class DataCodeGenerator {
private static int sequence = 0;
private static String lastDate = null;
public static String getDataCode() {
String prefix = "BSGK";
String date = new SimpleDateFormat("yyyyMM").format(Calendar.getInstance().getTime());
String code = null;
// 如果是当月第一条数据,则序号为0001
if (lastDate == null || !date.equals(lastDate)) {
lastDate = date;
sequence = 1;
} else {
sequence++;
}
code = prefix + date + String.format("%04d", sequence);
return code;
}
}
```
使用时只需要调用 `getDataCode()` 方法即可获取当前时间的数据编号。需要注意的是,该实现中使用了类变量 `sequence` 和 `lastDate` 来记录当前月份的最大序号和上一次获取数据编号的日期,所以需要保证该类在整个应用程序中只有一个实例,否则会存在线程安全问题。如果需要在多线程环境下使用,可以对 `getDataCode()` 方法加锁或者使用线程本地变量。
阅读全文