Преглед изворни кода

【代码评审】BPM:ID 编码器

YunaiV пре 6 месеци
родитељ
комит
129e9868fb

+ 3 - 5
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/redis/BpmProcessIdRedisDAO.java

@@ -1,6 +1,7 @@
 package cn.iocoder.yudao.module.bpm.dal.redis;
 
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.StrUtil;
 import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.BpmModelMetaInfoVO;
 import jakarta.annotation.Resource;
 import org.springframework.data.redis.core.StringRedisTemplate;
@@ -29,7 +30,6 @@ public class BpmProcessIdRedisDAO {
     public String generate(BpmModelMetaInfoVO.ProcessIdRule processIdRule) {
         // 生成日期前缀
         String infix = "";
-        boolean expireEnable = true;
         switch (processIdRule.getInfix()) {
             case "DAY":
                 infix = DateUtil.format(LocalDateTime.now(), "yyyyMMDD");
@@ -43,16 +43,14 @@ public class BpmProcessIdRedisDAO {
             case "SECOND":
                 infix = DateUtil.format(LocalDateTime.now(), "yyyyMMDDHHmmss");
                 break;
-            default:
-                expireEnable = false;
-                break;
         }
 
         // 生成序号
         String noPrefix = processIdRule.getPrefix() + infix + processIdRule.getPostfix();
         String key = RedisKeyConstants.BPM_PROCESS_ID + noPrefix;
         Long no = stringRedisTemplate.opsForValue().increment(key);
-        if (Boolean.TRUE.equals(expireEnable)) {
+        if (StrUtil.isEmpty(infix)) {
+            // 特殊:没有前缀,则不能过期,不能每次都是从 0 开始
             stringRedisTemplate.expire(key, Duration.ofDays(1L));
         }
         return noPrefix + String.format("%0" + processIdRule.getLength() + "d", no);