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. 17
      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) { public Long incr(String key, long liveTime) {
ValueOperations<String, Object> ops = redisTemplate.opsForValue(); ValueOperations<String, Object> ops = redisTemplate.opsForValue();
Long increment = ops.increment(key, 1); Long increment = ops.increment(key, 1);
if ((null == increment || increment.longValue() == 0) && liveTime > 0) { if (increment != null && increment != 0 && liveTime > 0) {
expire(key, liveTime); expire(key, liveTime);
} }
return increment; return increment;

17
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); 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); millMinutes = ChronoUnit.YEARS.between(LocalDateTime.now(), midnight);
} }
boolean flag = true; StringBuilder code = new StringBuilder();
String code;
do {
StringBuilder sb = new StringBuilder();
Long increment = redisCache.incr(encodedRule.getRuleCode() + pattern, millMinutes); Long increment = redisCache.incr(encodedRule.getRuleCode() + pattern, millMinutes);
sb.append(encodedRule.getPrefix()); code.append(encodedRule.getPrefix());
sb.append(pattern); code.append(pattern);
sb.append(encodedRule.getSeparator()); code.append(encodedRule.getSeparator());
String incrementStr = increment.toString(); String incrementStr = increment.toString();
if (incrementStr.length() <= encodedRule.getLength()) { if (incrementStr.length() <= encodedRule.getLength()) {
sb.append(String.format("%0" + encodedRule.getLength() + "d", increment)); code.append(String.format("%0" + encodedRule.getLength() + "d", increment));
} else { } else {
throw exception(SERIAL_NUMBER_NOT_ENOUGH); throw exception(SERIAL_NUMBER_NOT_ENOUGH);
} }
code = sb.toString(); return code.toString();
} while (flag);
return code;
} }
} }

Loading…
Cancel
Save