From 044c4ae881e60c7df771866b0912cc76dd73cce9 Mon Sep 17 00:00:00 2001 From: huangfeng Date: Mon, 11 Mar 2024 17:09:45 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=BC=93=E5=AD=98=E4=B8=BB=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=EF=BC=8C=E5=8C=BA=E5=9F=9F=EF=BC=8C=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=EF=BC=8C=E5=8D=95=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/xydl/cac/CacBackendApplication.java | 2 ++ .../xydl/cac/service/impl/JgServiceImpl.java | 12 ++++++-- .../service/impl/ModevTypeServiceImpl.java | 11 +++++-- .../cac/service/impl/UnitServiceImpl.java | 16 +++++----- .../xydl/cac/service/impl/ZsbServiceImpl.java | 14 ++++++--- .../java/com/xydl/cac/task/CacheTask.java | 29 +++++++++++++++++++ 6 files changed, 66 insertions(+), 18 deletions(-) create mode 100644 src/main/java/com/xydl/cac/task/CacheTask.java diff --git a/src/main/java/com/xydl/cac/CacBackendApplication.java b/src/main/java/com/xydl/cac/CacBackendApplication.java index cfe3887..d76f9ef 100644 --- a/src/main/java/com/xydl/cac/CacBackendApplication.java +++ b/src/main/java/com/xydl/cac/CacBackendApplication.java @@ -6,6 +6,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCaching; import org.springframework.context.annotation.Bean; import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder; import springfox.documentation.swagger2.annotations.EnableSwagger2; @@ -15,6 +16,7 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2; @SpringBootApplication @EnableCaching @EnableAsync +@EnableScheduling public class CacBackendApplication { @Bean(name = "passwordEncoder") diff --git a/src/main/java/com/xydl/cac/service/impl/JgServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/JgServiceImpl.java index b0be02c..adf1001 100644 --- a/src/main/java/com/xydl/cac/service/impl/JgServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/JgServiceImpl.java @@ -8,6 +8,7 @@ import com.xydl.cac.repository.BdzRepository; import com.xydl.cac.repository.JgRepository; import com.xydl.cac.repository.ZsbRepository; import com.xydl.cac.service.JgService; +import com.xydl.cac.task.CacheTask; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -32,9 +33,11 @@ public class JgServiceImpl implements JgService { @Override public List listAll(Integer bdzid) { if (bdzid == null) { - List result = repository.findAll(); - this.fillBdzName(result); - return result; + if (CacheTask.jg_Cache == null) { + CacheTask.jg_Cache = repository.findAll(); + this.fillBdzName(CacheTask.jg_Cache); + } + return CacheTask.jg_Cache; } else { List result = repository.findByBdzid(bdzid); Optional optional = bdzRepository.findById(bdzid); @@ -72,6 +75,7 @@ public class JgServiceImpl implements JgService { if (!CollectionUtils.isEmpty(list)) { throw new BusinessException("该名称已被使用"); } + CacheTask.jg_Cache = null; return repository.save(item); } @@ -86,6 +90,7 @@ public class JgServiceImpl implements JgService { throw new BusinessException("该名称已被使用"); } repository.save(item); + CacheTask.jg_Cache = null; } @Override @@ -95,6 +100,7 @@ public class JgServiceImpl implements JgService { throw new BusinessException("已被主设备使用不能删除"); } repository.deleteById(id); + CacheTask.jg_Cache = null; } @Override diff --git a/src/main/java/com/xydl/cac/service/impl/ModevTypeServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/ModevTypeServiceImpl.java index 6b799f1..395b76d 100644 --- a/src/main/java/com/xydl/cac/service/impl/ModevTypeServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/ModevTypeServiceImpl.java @@ -7,6 +7,7 @@ import com.xydl.cac.repository.ModevTypePointRepository; import com.xydl.cac.repository.ModevTypeRepository; import com.xydl.cac.repository.NSensorRepository; import com.xydl.cac.service.ModevTypeService; +import com.xydl.cac.task.CacheTask; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -30,12 +31,15 @@ public class ModevTypeServiceImpl implements ModevTypeService { @Override public List listAll() { - return repository.findAll(); + if (CacheTask.modevType_Cache == null) { + CacheTask.modevType_Cache = repository.findAll(); + } + return CacheTask.modevType_Cache; } @Override public List listAllCount() { - List list = repository.findAll(); + List list = this.listAll(); for (ModevType modevType : list) { long count = sensorRepository.countByTypeId(modevType.getId()); modevType.setSensorCount(count); @@ -50,6 +54,7 @@ public class ModevTypeServiceImpl implements ModevTypeService { if (!CollectionUtils.isEmpty(byMc)) { throw new BusinessException("该监测装置类型已存在"); } + CacheTask.modevType_Cache = null; return repository.save(item); } @@ -64,6 +69,7 @@ public class ModevTypeServiceImpl implements ModevTypeService { } } repository.save(item); + CacheTask.modevType_Cache = null; } @Override @@ -74,6 +80,7 @@ public class ModevTypeServiceImpl implements ModevTypeService { } repository.deleteById(id); pointRepository.deleteByModevtypeId(id); + CacheTask.modevType_Cache = null; } @Override diff --git a/src/main/java/com/xydl/cac/service/impl/UnitServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/UnitServiceImpl.java index 3ddb82e..075d9a7 100644 --- a/src/main/java/com/xydl/cac/service/impl/UnitServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/UnitServiceImpl.java @@ -4,13 +4,13 @@ import com.xydl.cac.entity.Unit; import com.xydl.cac.exception.BusinessException; import com.xydl.cac.repository.UnitRepository; import com.xydl.cac.service.UnitService; +import com.xydl.cac.task.CacheTask; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; -import java.util.HashMap; import java.util.List; @Service @@ -21,8 +21,6 @@ public class UnitServiceImpl implements UnitService { @Resource UnitRepository repository; - HashMap cache = new HashMap<>(); - @Override public List listAll() { return repository.findAll(); @@ -35,30 +33,30 @@ public class UnitServiceImpl implements UnitService { if (!CollectionUtils.isEmpty(list)) { throw new BusinessException("该字段已存在"); } - cache.clear(); + CacheTask.unit_Cache.clear(); return repository.save(item); } @Override public void update(Unit item) throws Exception { repository.save(item); - cache.clear(); + CacheTask.unit_Cache.clear(); } @Override public void delete(Integer id) { repository.deleteById(id); - cache.clear(); + CacheTask.unit_Cache.clear(); } @Override public String findUnitInCache(String field) { - if (cache.size() < 1) { + if (CacheTask.unit_Cache.size() < 1) { List list = repository.findAll(); for (Unit item : list) { - cache.put(item.getField().toLowerCase(), item.getUnit()); + CacheTask.unit_Cache.put(item.getField().toLowerCase(), item.getUnit()); } } - return cache.get(field.toLowerCase()); + return CacheTask.unit_Cache.get(field.toLowerCase()); } } diff --git a/src/main/java/com/xydl/cac/service/impl/ZsbServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/ZsbServiceImpl.java index 9457251..af301ab 100644 --- a/src/main/java/com/xydl/cac/service/impl/ZsbServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/ZsbServiceImpl.java @@ -10,6 +10,7 @@ import com.xydl.cac.repository.ModevRepository; import com.xydl.cac.repository.ZsbRepository; import com.xydl.cac.service.JgService; import com.xydl.cac.service.ZsbService; +import com.xydl.cac.task.CacheTask; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -36,10 +37,12 @@ public class ZsbServiceImpl implements ZsbService { @Override public List listAll(Integer jgid) throws Exception { if (jgid == null) { - List result = repository.findAll(); - this.fillJgBdzName(result); - this.fillLxName(result); - return result; + if (CacheTask.zsb_Cache == null) { + CacheTask.zsb_Cache = repository.findAll(); + this.fillJgBdzName(CacheTask.zsb_Cache); + this.fillLxName(CacheTask.zsb_Cache); + } + return CacheTask.zsb_Cache; } else { List result = repository.findByJgid(jgid); Jg jg = jgService.detail(jgid); @@ -96,6 +99,7 @@ public class ZsbServiceImpl implements ZsbService { if (!CollectionUtils.isEmpty(list)) { throw new BusinessException("该名称已被使用"); } + CacheTask.zsb_Cache = null; return repository.save(item); } @@ -112,6 +116,7 @@ public class ZsbServiceImpl implements ZsbService { throw new BusinessException("该名称已被使用"); } repository.save(item); + CacheTask.zsb_Cache = null; } @Override @@ -121,6 +126,7 @@ public class ZsbServiceImpl implements ZsbService { throw new BusinessException("已被监测装置使用不能删除"); } repository.deleteById(id); + CacheTask.zsb_Cache = null; } @Override diff --git a/src/main/java/com/xydl/cac/task/CacheTask.java b/src/main/java/com/xydl/cac/task/CacheTask.java new file mode 100644 index 0000000..3a3d7ec --- /dev/null +++ b/src/main/java/com/xydl/cac/task/CacheTask.java @@ -0,0 +1,29 @@ +package com.xydl.cac.task; + +import com.xydl.cac.entity.Jg; +import com.xydl.cac.entity.ModevType; +import com.xydl.cac.entity.Zsb; +import lombok.extern.slf4j.Slf4j; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.List; + +@Service +@Slf4j +public class CacheTask { + + public static HashMap unit_Cache = new HashMap<>(); + public static List modevType_Cache = null; + public static List jg_Cache = null; + public static List zsb_Cache = null; + + @Scheduled(cron = "0 1 * * * ?") + private void clearCache() { + unit_Cache.clear(); + modevType_Cache = null; + jg_Cache = null; + zsb_Cache = null; + } +}