UploadFileCodeService.java 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. package com.jiayue.ipfcst.fileupload.service;
  2. import com.jiayue.ipfcst.common.data.entity.UploadFileCode;
  3. import com.jiayue.ipfcst.common.data.repository.UploadFileCodeRepository;
  4. import net.sf.ehcache.Cache;
  5. import net.sf.ehcache.Element;
  6. import net.sf.ehcache.search.*;
  7. import net.sf.ehcache.search.Results;
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import org.springframework.cache.ehcache.EhCacheCacheManager;
  10. import org.springframework.stereotype.Service;
  11. import org.springframework.transaction.annotation.Propagation;
  12. import org.springframework.transaction.annotation.Transactional;
  13. import java.util.*;
  14. /**
  15. * 上报文件CODE码服务类
  16. * @author xsl
  17. * @version 3.0
  18. */
  19. @Service
  20. public class UploadFileCodeService {
  21. @Autowired
  22. UploadFileCodeRepository uploadFileCodeRepository;
  23. @Autowired
  24. EhCacheCacheManager ehCacheCacheManager;
  25. /**
  26. * 保存CODE码
  27. *
  28. * @param uploadFileCode CODE信息
  29. */
  30. @Transactional(propagation = Propagation.REQUIRED)
  31. public UploadFileCode save(UploadFileCode uploadFileCode) {
  32. uploadFileCodeRepository.save(uploadFileCode);
  33. clearFileCodeCache();
  34. return uploadFileCode;
  35. }
  36. @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
  37. public void saveCloud(List<UploadFileCode> beans) {
  38. if(beans != null && beans.size() > 0){
  39. clearFileCodeCache();
  40. uploadFileCodeRepository.deleteAll();
  41. uploadFileCodeRepository.saveAll(beans);
  42. }
  43. }
  44. /**
  45. * 删除通道信息
  46. *
  47. * @param uploadFileCode CODE信息
  48. */
  49. @Transactional(propagation = Propagation.REQUIRED)
  50. public void delete(UploadFileCode uploadFileCode) {
  51. clearFileCodeCache();
  52. uploadFileCodeRepository.delete(uploadFileCode);
  53. }
  54. /**
  55. * 移除缓存中的CODE信息
  56. */
  57. public void clearFileCodeCache() {
  58. List<UploadFileCode> uploadFileCodeList = this.get();
  59. Cache cache = ehCacheCacheManager.getCacheManager().getCache("searchablecache");
  60. for (UploadFileCode uploadFileCode : uploadFileCodeList) {
  61. cache.remove("code" + uploadFileCode.getId());
  62. }
  63. }
  64. /**
  65. * 查询通道信息
  66. *
  67. * @return 通道信息
  68. */
  69. public List<UploadFileCode> get() {
  70. Cache cache = ehCacheCacheManager.getCacheManager().getCache("searchablecache");
  71. Query query = cache.createQuery();
  72. //查询结果中包含Key和value
  73. query.includeKeys().includeValues();
  74. Attribute<String> keyName = cache.getSearchAttribute("key");
  75. query.addCriteria(keyName.ilike("*code*"));
  76. Results results = query.execute();
  77. List<Result> resultList = results.all();
  78. List<UploadFileCode> list = new ArrayList();
  79. if (resultList != null && !resultList.isEmpty()) {
  80. for (Result result : resultList) {
  81. UploadFileCode e = (UploadFileCode) result.getValue();
  82. list.add(e);
  83. }
  84. results.discard();
  85. } else {
  86. //查询数据库
  87. list = uploadFileCodeRepository.findAll();
  88. for (UploadFileCode uploadFileCode : list) {
  89. //将结果存入缓存
  90. cache.put(new Element("code" + uploadFileCode.getId(), uploadFileCode));
  91. }
  92. }
  93. return list;
  94. }
  95. }