From d01999fe4c525c4807e66bd9f5475dda347e7440 Mon Sep 17 00:00:00 2001 From: xueqingkun Date: Thu, 4 Jan 2024 17:44:23 +0800 Subject: [PATCH] =?UTF-8?q?common:=20RedisSequenceUtil=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=20getComplexDiseaseNo=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../supervision/util/RedisSequenceUtil.java | 42 +++++++++++++++++-- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git a/virtual-patient-common/src/main/java/com/supervision/util/RedisSequenceUtil.java b/virtual-patient-common/src/main/java/com/supervision/util/RedisSequenceUtil.java index bb0402d8..ab0f3fe4 100644 --- a/virtual-patient-common/src/main/java/com/supervision/util/RedisSequenceUtil.java +++ b/virtual-patient-common/src/main/java/com/supervision/util/RedisSequenceUtil.java @@ -1,16 +1,26 @@ package com.supervision.util; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.context.ApplicationContext; import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.ValueOperations; +import java.util.Date; +import java.util.Map; + @Slf4j public class RedisSequenceUtil { private volatile static RedisTemplate redisTemplate = null; + /** + * 获取流程编号 + * @return 流程编号规则 a000001-a999999 b000001-b999999 ... + */ public static String getProcessNo(){ // 从零开始计算 long processNoSeq = getIncrement("process_no_seq") -1; @@ -21,28 +31,54 @@ public class RedisSequenceUtil { } + /** + * 获取复合疾病编号。生成规则:当天日期(YYYMMDD)+自增序列号(3位)20240104001 + * @return + */ + public static String getComplexDiseaseNo(){ + String nowDay = DateUtil.format(new Date(), "YYYYMMdd"); + return nowDay + String.format("%03d", getIncrement("complex_disease_no_seq_"+nowDay)); + } + + /** + * 获取自增长值,增长步伐为1 + * @param key redis key + * @return 自增序列号 + */ public static Long getIncrement(String key){ ValueOperations operations = getRedisTemplate().opsForValue(); return operations.increment( key,1L); } + /** + * 获取redisTemplate + * @return redisTemplate + */ public static RedisTemplate getRedisTemplate() { if (redisTemplate == null) { synchronized (RedisSequenceUtil.class){ if (null == redisTemplate){ - redisTemplate = createRedisTemplate(); + redisTemplate = getRedisTemplateInContext(); } } } return redisTemplate; } - private static RedisTemplate createRedisTemplate() { + private static RedisTemplate getRedisTemplateInContext() { ApplicationContext applicationContext = SpringBeanUtil.getApplicationContext(); if (null == applicationContext){ return null; } - return applicationContext.getBean(RedisTemplate.class); + // 优先选择stringRedisTemplate + if (applicationContext.containsBean("stringRedisTemplate")){ + return applicationContext.getBean("stringRedisTemplate",StringRedisTemplate.class); + } + Map redisTemplateMap = applicationContext.getBeansOfType(RedisTemplate.class); + if (CollUtil.isNotEmpty(redisTemplateMap)){ + return CollUtil.getFirst(redisTemplateMap.values()); + } + return null; } }