public class xxxGenerator {
@Autowired
private IRedisService redisService;
/**
* @desc : xxx规则:F+年+月+日+时+分+类型+六位自然数(自然数增长加1)
**/
public String generator(TypeEnum type){
LocalDateTime nowTime = LocalDateTime.now();
StringBuffer sb = new StringBuffer();
sb.append("F");
sb.append(String.valueOf(nowTime.getYear()).substring(2,4));
sb.append(String.format("%02d",nowTime.getMonthValue()));
sb.append(String.format("%02d",nowTime.getDayOfMonth()));
sb.append(String.format("%02d",nowTime.getHour()));
sb.append(String.format("%02d",nowTime.getMinute()));
sb.append(Type.getValue());
StringBuffer redisKey = new StringBuffer();
redisKey.append("F");
redisKey.append(nowTime.getYear());
redisKey.append(nowTime.getMonthValue());
redisKey.append(nowTime.getDayOfMonth());
LocalDateTime midnight = nowTime.plusDays(1).withHour(0).withMinute(0).withSecond(0).withNano(0);
long seconds = ChronoUnit.SECONDS.between(nowTime, midnight);
sb.append(String.format("%06d",redisService.incr(redisKey.toString(),seconds)));
log.info("xxx号:{}",sb.toString());
return sb.toString();
}
public String next(TypeEnum type) {
//return UuidUtil.nextAsTextWithoutHyphen();
return generator(type);
}
}