SysConfigDataImpl.java 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. package cc.iotkit.data.service;
  2. import cc.iotkit.common.api.PageRequest;
  3. import cc.iotkit.common.api.Paging;
  4. import cc.iotkit.common.enums.ErrCode;
  5. import cc.iotkit.common.exception.BizException;
  6. import cc.iotkit.common.utils.MapstructUtils;
  7. import cc.iotkit.common.utils.StringUtils;
  8. import cc.iotkit.data.dao.IJPACommData;
  9. import cc.iotkit.data.dao.SysConfigRepository;
  10. import cc.iotkit.data.model.TbSysConfig;
  11. import cc.iotkit.data.system.ISysConfigData;
  12. import cc.iotkit.data.util.PageBuilder;
  13. import cc.iotkit.data.util.PredicateBuilder;
  14. import cc.iotkit.model.system.SysConfig;
  15. import com.querydsl.core.QueryResults;
  16. import com.querydsl.core.types.Predicate;
  17. import com.querydsl.jpa.impl.JPAQueryFactory;
  18. import lombok.RequiredArgsConstructor;
  19. import org.apache.commons.collections.IteratorUtils;
  20. import org.springframework.context.annotation.Primary;
  21. import org.springframework.data.domain.Page;
  22. import org.springframework.data.jpa.repository.JpaRepository;
  23. import org.springframework.stereotype.Service;
  24. import java.util.Collection;
  25. import java.util.Iterator;
  26. import java.util.List;
  27. import java.util.Objects;
  28. import static cc.iotkit.data.model.QTbSysConfig.tbSysConfig;
  29. @Primary
  30. @Service
  31. @RequiredArgsConstructor
  32. public class SysConfigDataImpl implements ISysConfigData, IJPACommData<SysConfig, Long> {
  33. private final SysConfigRepository baseRepository;
  34. private final JPAQueryFactory jpaQueryFactory;
  35. @Override
  36. public JpaRepository getBaseRepository() {
  37. return baseRepository;
  38. }
  39. @Override
  40. public Class getJpaRepositoryClass() {
  41. return TbSysConfig.class;
  42. }
  43. @Override
  44. public Class getTClass() {
  45. return SysConfig.class;
  46. }
  47. @Override
  48. public SysConfig findById(Long id) {
  49. TbSysConfig tbSysConfig = baseRepository.findById(id).orElseThrow(() ->
  50. new BizException(ErrCode.DATA_NOT_EXIST));
  51. return MapstructUtils.convert(tbSysConfig, SysConfig.class);
  52. }
  53. @Override
  54. public SysConfig save(SysConfig data) {
  55. baseRepository.save(MapstructUtils.convert(data, TbSysConfig.class));
  56. return data;
  57. }
  58. @Override
  59. public List<SysConfig> findByIds(Collection<Long> id) {
  60. Iterable<TbSysConfig> allById = baseRepository.findAllById(id);
  61. Iterator<TbSysConfig> iterator = allById.iterator();
  62. return MapstructUtils.convert(IteratorUtils.toList(iterator), SysConfig.class);
  63. }
  64. @Override
  65. public Paging<SysConfig> findAll(PageRequest<SysConfig> pageRequest) {
  66. SysConfig query = pageRequest.getData();
  67. Predicate predicate = PredicateBuilder.instance()
  68. .and(StringUtils.isNotEmpty(query.getConfigName()), () -> tbSysConfig.configName.like(query.getConfigName()))
  69. .and(StringUtils.isNotEmpty(query.getConfigType()), () -> tbSysConfig.configType.eq(query.getConfigType()))
  70. .and(StringUtils.isNotEmpty(query.getConfigKey()), () -> tbSysConfig.configKey.like(query.getConfigKey()))
  71. .build();
  72. Page<TbSysConfig> all = baseRepository.findAll(predicate, PageBuilder.toPageable(pageRequest));
  73. return PageBuilder.toPaging(all, SysConfig.class);
  74. }
  75. @Override
  76. public List<SysConfig> findAllByCondition(SysConfig data) {
  77. Predicate predicate = PredicateBuilder.instance()
  78. .and(StringUtils.isNotEmpty(data.getConfigKey()), () -> tbSysConfig.configKey.eq(data.getConfigKey()))
  79. .and(StringUtils.isNotEmpty(data.getTenantId()), () -> tbSysConfig.tenantId.eq(data.getTenantId()))
  80. .build();
  81. Iterator<TbSysConfig> iterator = baseRepository.findAll(predicate).iterator();
  82. return MapstructUtils.convert(IteratorUtils.toList(iterator), SysConfig.class);
  83. }
  84. @Override
  85. public SysConfig findOneByCondition(SysConfig data) {
  86. Predicate predicate = PredicateBuilder.instance()
  87. .and(StringUtils.isNotBlank(data.getConfigKey()), () -> tbSysConfig.configKey.eq(data.getConfigKey()))
  88. .and(StringUtils.isNotBlank(data.getTenantId()),()-> tbSysConfig.tenantId.eq(data.getTenantId()))
  89. .build();
  90. TbSysConfig tbSysConfig = baseRepository.findOne(predicate).orElse(null);
  91. if(Objects.isNull(tbSysConfig)){
  92. return null;
  93. }
  94. return MapstructUtils.convert(tbSysConfig, SysConfig.class);
  95. }
  96. @Override
  97. public SysConfig findByConfigKey(String configKey) {
  98. TbSysConfig tbSysConfig = baseRepository.findByConfigKey(configKey).orElse(null);
  99. if(Objects.isNull(tbSysConfig)){
  100. return null;
  101. }
  102. return MapstructUtils.convert(tbSysConfig, SysConfig.class);
  103. }
  104. @Override
  105. public Paging<SysConfig> findAllByConditions(PageRequest<SysConfig> pageRequest) {
  106. SysConfig data = pageRequest.getData();
  107. Predicate predicate = buildPredicate(data);
  108. QueryResults<TbSysConfig> tbSysConfigQueryResults = jpaQueryFactory.select(tbSysConfig).from(tbSysConfig).where(predicate).limit(pageRequest.getPageSize()).offset(pageRequest.getOffset()).fetchResults();
  109. return PageBuilder.queryResults2Page(tbSysConfigQueryResults, SysConfig.class);
  110. }
  111. private Predicate buildPredicate(SysConfig data) {
  112. return PredicateBuilder.instance()
  113. .and(StringUtils.isNotEmpty(data.getConfigKey()), () -> tbSysConfig.configKey.eq(data.getConfigKey()))
  114. .and(StringUtils.isNotEmpty(data.getConfigName()), () -> tbSysConfig.configName.like(data.getConfigName()))
  115. .and(StringUtils.isNotEmpty(data.getConfigType()), () -> tbSysConfig.configType.eq(data.getConfigType()))
  116. .and(StringUtils.isNotEmpty(data.getTenantId()), () -> tbSysConfig.tenantId.eq(data.getTenantId()))
  117. .build();
  118. }
  119. }