public class xxxGenerator {

@Autowired
private IRedisService redisService;

/**
* @desc : xxx规则:H+年+月+日+时+分+类型+000000(最后六位为自然数增长加1)
**/
public String generator(TypeEnum type){
LocalDateTime nowTime = LocalDateTime.now();
StringBuffer sb = new StringBuffer();
sb.append("H");
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(couponType.getValue());

StringBuffer redisKey = new StringBuffer();
redisKey.append("H");
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);
}
}
posted on 2020-11-19 15:33  毛会懂  阅读(242)  评论(0编辑  收藏  举报