packagecom.pab.bloan.order.service.impl;importjava.util.Date;importlombok.extern.slf4j.Slf4j;importcom.pab.bloan.order.utils.DateUtils;importorg.apache.commons.lang3.StringUtils;importorg.springframework.stereotype.Service;importcom.pab.bloan.order.dao.bloanb.SequencePojoMapper;importcom.pab.bloan.order.service.SequenceGeneratorService;importorg.springframework.beans.factory.annotation.Autowired;/*** 获取流水号服务
* Created by*/@Slf4j
@Servicepublic class SequenceGeneratorServiceImpl implementsSequenceGeneratorService {
@AutowiredprivateSequencePojoMapper sequencePojoMapper;/*** {@inheritDoc}
*@paramseqName
*@return
*/@OverridepublicString getSerialNo(String prefix, String seqName) {return getSerialNo(prefix, 0, seqName);
}/*** {@inheritDoc}
*@paramprefix
*@paramidLength
*@paramseqName
*@return
*/@OverridepublicString getSerialNo(String prefix, Integer idLength, String seqName) {try{if(StringUtils.isEmpty(seqName)) {return "";
}if (idLength < 8){
idLength= 8;
}else if (idLength > 12){
idLength= 12;
}
String dateString= DateUtils.formatDate(new Date(),"yyyy/MM/dd");
dateString= dateString.replace("/", "");
StringBuilder sequenceSqlBuilder= newStringBuilder();
sequenceSqlBuilder.append(" select ");
sequenceSqlBuilder.append(seqName+ ".NEXTVAL");
sequenceSqlBuilder.append(" FROM DUAL ");
Long sequenceId=sequencePojoMapper.getSequenceBySequenceName(sequenceSqlBuilder.toString());
String seqIdString= String.format("%0" + idLength + "d", sequenceId);
String serialNo;if (seqIdString.length() >idLength) {
serialNo= String.format("%s%s%s", prefix, dateString, seqIdString.substring(seqIdString.length() -idLength, seqIdString.length()));
}else{
serialNo= String.format("%s%s%s", prefix, dateString, seqIdString);
}returnserialNo;
}catch(Exception e) {
log.error("SequenceGeneratorService.getSerialNo", e);
}return "";
}
}