common: RedisSequenceUtil添加 getComplexDiseaseNo功能

dev_2.1.0
xueqingkun 1 year ago
parent 1fd02b71b3
commit d01999fe4c

@ -1,16 +1,26 @@
package com.supervision.util; package com.supervision.util;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContext;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.ValueOperations; import org.springframework.data.redis.core.ValueOperations;
import java.util.Date;
import java.util.Map;
@Slf4j @Slf4j
public class RedisSequenceUtil { public class RedisSequenceUtil {
private volatile static RedisTemplate<String, String> redisTemplate = null; private volatile static RedisTemplate<String, String> redisTemplate = null;
/**
*
* @return a000001-a999999 b000001-b999999 ...
*/
public static String getProcessNo(){ public static String getProcessNo(){
// 从零开始计算 // 从零开始计算
long processNoSeq = getIncrement("process_no_seq") -1; long processNoSeq = getIncrement("process_no_seq") -1;
@ -21,28 +31,54 @@ public class RedisSequenceUtil {
} }
/**
* YYYMMDD+320240104001
* @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){ public static Long getIncrement(String key){
ValueOperations<String, String> operations = getRedisTemplate().opsForValue(); ValueOperations<String, String> operations = getRedisTemplate().opsForValue();
return operations.increment( key,1L); return operations.increment( key,1L);
} }
/**
* redisTemplate
* @return redisTemplate
*/
public static RedisTemplate<String, String> getRedisTemplate() { public static RedisTemplate<String, String> getRedisTemplate() {
if (redisTemplate == null) { if (redisTemplate == null) {
synchronized (RedisSequenceUtil.class){ synchronized (RedisSequenceUtil.class){
if (null == redisTemplate){ if (null == redisTemplate){
redisTemplate = createRedisTemplate(); redisTemplate = getRedisTemplateInContext();
} }
} }
} }
return redisTemplate; return redisTemplate;
} }
private static RedisTemplate<String, String> createRedisTemplate() { private static RedisTemplate<String, String> getRedisTemplateInContext() {
ApplicationContext applicationContext = SpringBeanUtil.getApplicationContext(); ApplicationContext applicationContext = SpringBeanUtil.getApplicationContext();
if (null == applicationContext){ if (null == applicationContext){
return null; return null;
} }
return applicationContext.getBean(RedisTemplate.class); // 优先选择stringRedisTemplate
if (applicationContext.containsBean("stringRedisTemplate")){
return applicationContext.getBean("stringRedisTemplate",StringRedisTemplate.class);
}
Map<String, RedisTemplate> redisTemplateMap = applicationContext.getBeansOfType(RedisTemplate.class);
if (CollUtil.isNotEmpty(redisTemplateMap)){
return CollUtil.getFirst(redisTemplateMap.values());
}
return null;
} }
} }

Loading…
Cancel
Save