From 1fd02b71b303a419803998878c836deab52b259c Mon Sep 17 00:00:00 2001 From: xueqingkun Date: Thu, 4 Jan 2024 17:07:15 +0800 Subject: [PATCH] =?UTF-8?q?web:=E9=87=8D=E6=9E=84sequenceUtil=E5=88=B0comm?= =?UTF-8?q?on=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../supervision/util/RedisSequenceUtil.java | 48 +++++++++++++++++++ .../service/impl/AskProcessServiceImpl.java | 6 +-- .../com/supervision/util/SequenceUtil.java | 29 ----------- 3 files changed, 50 insertions(+), 33 deletions(-) create mode 100644 virtual-patient-common/src/main/java/com/supervision/util/RedisSequenceUtil.java delete mode 100644 virtual-patient-web/src/main/java/com/supervision/util/SequenceUtil.java 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 new file mode 100644 index 00000000..bb0402d8 --- /dev/null +++ b/virtual-patient-common/src/main/java/com/supervision/util/RedisSequenceUtil.java @@ -0,0 +1,48 @@ +package com.supervision.util; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.ApplicationContext; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.core.ValueOperations; + +@Slf4j +public class RedisSequenceUtil { + + private volatile static RedisTemplate redisTemplate = null; + + + public static String getProcessNo(){ + // 从零开始计算 + long processNoSeq = getIncrement("process_no_seq") -1; + + char prefix = (char) ('a' + processNoSeq / 1000000); + Long suffix = processNoSeq % 1000000; + return prefix + String.format("%06d", suffix); + + } + + public static Long getIncrement(String key){ + ValueOperations operations = getRedisTemplate().opsForValue(); + return operations.increment( key,1L); + } + + public static RedisTemplate getRedisTemplate() { + if (redisTemplate == null) { + synchronized (RedisSequenceUtil.class){ + if (null == redisTemplate){ + redisTemplate = createRedisTemplate(); + } + } + } + return redisTemplate; + } + + private static RedisTemplate createRedisTemplate() { + ApplicationContext applicationContext = SpringBeanUtil.getApplicationContext(); + if (null == applicationContext){ + return null; + } + return applicationContext.getBean(RedisTemplate.class); + } + +} diff --git a/virtual-patient-web/src/main/java/com/supervision/service/impl/AskProcessServiceImpl.java b/virtual-patient-web/src/main/java/com/supervision/service/impl/AskProcessServiceImpl.java index 08fb7c3d..af5c7093 100644 --- a/virtual-patient-web/src/main/java/com/supervision/service/impl/AskProcessServiceImpl.java +++ b/virtual-patient-web/src/main/java/com/supervision/service/impl/AskProcessServiceImpl.java @@ -4,13 +4,11 @@ import cn.hutool.core.lang.Assert; import com.supervision.exception.BusinessException; import com.supervision.model.MedicalRec; import com.supervision.model.Process; -import com.supervision.model.ProcessMedical; import com.supervision.model.User; import com.supervision.service.AskProcessService; import com.supervision.service.MedicalRecService; -import com.supervision.service.ProcessMedicalService; import com.supervision.service.ProcessService; -import com.supervision.util.SequenceUtil; +import com.supervision.util.RedisSequenceUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -39,7 +37,7 @@ public class AskProcessServiceImpl implements AskProcessService { process.setCreateUserId(user.getId()); process.setUpdateUserId(user.getId()); process.setProcessType(0);//默认学习类型 - process.setProcessNo(SequenceUtil.getProcessNo()); + process.setProcessNo(RedisSequenceUtil.getProcessNo()); processService.save(process); return process; } diff --git a/virtual-patient-web/src/main/java/com/supervision/util/SequenceUtil.java b/virtual-patient-web/src/main/java/com/supervision/util/SequenceUtil.java deleted file mode 100644 index 802ce6b1..00000000 --- a/virtual-patient-web/src/main/java/com/supervision/util/SequenceUtil.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.supervision.util; - -import lombok.extern.slf4j.Slf4j; -import org.springframework.data.redis.core.RedisTemplate; -import org.springframework.data.redis.core.ValueOperations; - -@Slf4j -public class SequenceUtil { - - private static final RedisTemplate redisTemplate = SpringBeanUtil.getBean("redisTemplate", RedisTemplate.class); - - - public static String getProcessNo(){ - - // 从零开始计算 - long processNoSeq = getIncrement("process_no_seq") -1; - - char prefix = (char) ('a' + processNoSeq / 1000000); - Long suffix = processNoSeq % 1000000; - return prefix + String.format("%06d", suffix); - - } - - public static Long getIncrement(String key){ - ValueOperations operations = redisTemplate.opsForValue(); - return operations.increment( key,1L); - } - -}