You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
1.6 KiB
69 lines
1.6 KiB
/**
|
|
* ID生成器工具类
|
|
* 提供生成唯一ID的功能
|
|
* 遵循单例设计模式
|
|
*/
|
|
package com.employeetraining.util;
|
|
|
|
import java.time.LocalDateTime;
|
|
import java.time.format.DateTimeFormatter;
|
|
import java.util.concurrent.atomic.AtomicLong;
|
|
|
|
public class IdGenerator {
|
|
// 单例实例
|
|
private static final IdGenerator instance = new IdGenerator();
|
|
|
|
// 原子计数器,确保线程安全
|
|
private final AtomicLong counter = new AtomicLong(0);
|
|
|
|
// 日期时间格式化器
|
|
private final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
|
|
|
|
// 私有构造函数,防止外部实例化
|
|
private IdGenerator() {
|
|
}
|
|
|
|
/**
|
|
* 获取单例实例
|
|
*/
|
|
public static IdGenerator getInstance() {
|
|
return instance;
|
|
}
|
|
|
|
/**
|
|
* 生成唯一ID
|
|
*/
|
|
public String generateId(String prefix) {
|
|
String timestamp = LocalDateTime.now().format(formatter);
|
|
long sequence = counter.incrementAndGet();
|
|
return prefix + "-" + timestamp + "-" + sequence;
|
|
}
|
|
|
|
/**
|
|
* 生成员工ID
|
|
*/
|
|
public String generateEmployeeId() {
|
|
return generateId("EMP");
|
|
}
|
|
|
|
/**
|
|
* 生成课程ID
|
|
*/
|
|
public String generateCourseId() {
|
|
return generateId("CSE");
|
|
}
|
|
|
|
/**
|
|
* 生成培训记录ID
|
|
*/
|
|
public String generateTrainingRecordId() {
|
|
return generateId("TRN");
|
|
}
|
|
|
|
/**
|
|
* 生成证书ID
|
|
*/
|
|
public String generateCertificateId() {
|
|
return generateId("CRT");
|
|
}
|
|
} |