
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
package com.takensoft.common.idgen.service;
import com.takensoft.common.idgen.dao.IdgenMapper;
import com.takensoft.common.idgen.vo.IdgenVO;
import lombok.Getter;
import lombok.Setter;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
@Setter
@Getter
public class IdgenService {
protected Log log = LogFactory.getLog(this.getClass());
private String prefix; // 아이디에 고정적으로 붙일 명칭
private int cipers; // 고정적인 명칭(prefix)를 제외한 아이디의 길이
private char fillChar; // 0
private String tblNm; // 테이블명
@Autowired
private IdgenMapper idgenMapper;
public String getNextStringId() {
IdgenVO idgenVO = idgenMapper.selectNextId(tblNm); // 다음 아이디값 조회
boolean firstFlag = false; // 신규 생성인지 확인
if(idgenVO == null) { // 신규 생성일 경우
idgenVO = new IdgenVO(); // 신규 객체 생성
idgenVO.setAftrId(1); // 신규 아이디값 설정
idgenVO.setTblNm(tblNm); // 신규 테이블명 설정
firstFlag = true; // 신규 등록 여부
}
// 1. 아이디변수 생성(String)
// 2. 아이디 변수 prefix를 넣고 + fillChar를 cipers-prefix.length-id.length 만큼 넣고 + (id + 1)를 넣는다.
String nextId = ""; // 아이디값 객체 생성
nextId = prefix; // prefix 설정
// 2번째부터는 1씩 업데이트
if(!firstFlag) { // 기존에 데이터가 존재하는 경우
idgenVO.setTblNm(tblNm);
idgenVO.setAftrId(idgenVO.getAftrId() + 1);
}
idgenMapper.upsertSeqNmg(idgenVO); // 아이디값을 1추가하여 데이터 수정
int fillCharSize = cipers - (int)(Math.log10(idgenVO.getAftrId()) + 1); // 아이디에 0이 들어갈 길이 지정
for(int i = 0 ; i < fillCharSize; i++) { // 아이디에 0 설정
nextId = nextId + fillChar; // ex_ TEST_00 + 0 0이 추가되는중
}
nextId = nextId + String.valueOf(idgenVO.getAftrId()); // 아이디 생성 완료
return nextId;
}
}