다음과 같이 코드 코드를 복사합니다.
import java.text.SimpleDateFormat;
java.util.Date 가져오기;
org.apache.commons.lang3.StringUtils 가져오기;
/**
* 일련번호 도구 클래스 생성
* @version V1.0
* @날짜: 2013-11-16 오후 5:21:37
*/
공개 클래스 SerialNum {
개인 정적 문자열 개수 = "000";
개인 정적 문자열 날짜 값 = "20131115";
/**
* 일련번호 생성
*/
공개 동기화 정적 문자열 getMoveOrderNo() {
긴 아니요 = 0;
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String nowdate = sdf.format(new Date());
아니요 = Long.parseLong(nowdate);
if (!(String.valueOf(No)).equals(dateValue)) {
개수 = "000";
dateValue = String.valueOf(No);
}
문자열 번호 = String.valueOf(No);
num += getNo(개수);
숫자 = "CB" + 숫자;
반환 번호;
}
/**
* 퇴거 명령의 일련 번호를 얻습니다.
*/
공개 동기화 정적 String getMoveOrderNo(String serialNum) {
String nyr = StringUtils.substring(serialNum, 2, 10); // 연도, 월, 일 문자열을 가져옵니다.
String countV = StringUtils.substring(serialNum, 10) // 일련번호를 가져옵니다.
if (Integer.valueOf(countV) > Integer.valueOf(count)) {
날짜값 = Nyr;
개수 = String.valueOf(countV);
}
getMoveOrderNo()를 반환합니다.
}
/**
* 해당일의 주문수를 반환합니다. +1
*/
공개 정적 문자열 getNo(문자열 s) {
문자열 rs = s;
int i = Integer.parseInt(rs);
나는 += 1;
rs = "" + i;
for (int j = rs.length(); j < 3; j++) {
RS = "0" + RS;
}
개수 = rs;
RS를 반환;
}
공개 정적 무효 메인(String[] args) {
for (int i = 0; i < 10; i++) {
System.out.println(getMoveOrderNo());
}
}
}
참고: 위 프로그램은 서버가 항상 정상적으로 실행될 경우 문제가 발생하지 않습니다. 서버를 다시 시작하거나 프로세스에 오류가 발생하여 서비스를 다시 시작해야 하는 경우 중복된 일련 번호가 생성될 수 있습니다. 고유성을 보장하려면 데이터베이스 쿼리에 협력하고 마지막 레코드를 쿼리한 다음 일련 번호를 꺼내고 getMoveOrderNo(String serialNum) 메서드를 호출하여 어떤 상황에서도 생성된 일련 번호가 정확하고 고유한지 확인해야 합니다. .