Browse Source

修改生成单号bug。

master
刘忱 2 years ago
parent
commit
3879d0b53d
  1. 2
      win-framework/win-spring-boot-starter-redis/src/main/java/com/win/framework/redis/util/RedisCache.java
  2. 29
      win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/serialnumber/SerialNumberServiceImpl.java

2
win-framework/win-spring-boot-starter-redis/src/main/java/com/win/framework/redis/util/RedisCache.java

@ -249,7 +249,7 @@ public class RedisCache {
public Long incr(String key, long liveTime) {
ValueOperations<String, Object> ops = redisTemplate.opsForValue();
Long increment = ops.increment(key, 1);
if ((null == increment || increment.longValue() == 0) && liveTime > 0) {
if (increment != null && increment != 0 && liveTime > 0) {
expire(key, liveTime);
}
return increment;

29
win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/serialnumber/SerialNumberServiceImpl.java

@ -124,23 +124,18 @@ public class SerialNumberServiceImpl implements SerialNumberService {
LocalDateTime midnight = LocalDateTime.now().plusYears(1).plusMonths(1).plusDays(1).withHour(0).withMinute(0).withSecond(0).withNano(1);
millMinutes = ChronoUnit.YEARS.between(LocalDateTime.now(), midnight);
}
boolean flag = true;
String code;
do {
StringBuilder sb = new StringBuilder();
Long increment = redisCache.incr(encodedRule.getRuleCode() + pattern, millMinutes);
sb.append(encodedRule.getPrefix());
sb.append(pattern);
sb.append(encodedRule.getSeparator());
String incrementStr = increment.toString();
if (incrementStr.length() <= encodedRule.getLength()) {
sb.append(String.format("%0" + encodedRule.getLength() + "d", increment));
} else {
throw exception(SERIAL_NUMBER_NOT_ENOUGH);
}
code = sb.toString();
} while (flag);
return code;
StringBuilder code = new StringBuilder();
Long increment = redisCache.incr(encodedRule.getRuleCode() + pattern, millMinutes);
code.append(encodedRule.getPrefix());
code.append(pattern);
code.append(encodedRule.getSeparator());
String incrementStr = increment.toString();
if (incrementStr.length() <= encodedRule.getLength()) {
code.append(String.format("%0" + encodedRule.getLength() + "d", increment));
} else {
throw exception(SERIAL_NUMBER_NOT_ENOUGH);
}
return code.toString();
}
}

Loading…
Cancel
Save