idataimpl.java.vm 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. package ${packageName}.data;
  2. import ${packageName}.repository.${ClassName}Repository;
  3. import ${packageName}.data.I${ClassName}Data;
  4. import ${packageName}.data.model.Tb${ClassName};
  5. import ${packageName}.model.${ClassName};
  6. import java.util.List;
  7. import com.querydsl.core.types.Predicate;
  8. import com.querydsl.jpa.impl.JPAQueryFactory;
  9. import lombok.RequiredArgsConstructor;
  10. import org.springframework.context.annotation.Primary;
  11. import org.springframework.stereotype.Service;
  12. import cc.iotkit.data.util.PredicateBuilder;
  13. import cc.iotkit.common.api.PageRequest;
  14. import cc.iotkit.common.api.Paging;
  15. import cc.iotkit.common.utils.StringUtils;
  16. import java.util.Collection;
  17. import java.util.Objects;
  18. import java.util.Optional;
  19. import com.google.common.collect.Lists;
  20. import cc.iotkit.common.utils.MapstructUtils;
  21. import cc.iotkit.data.util.PageBuilder;
  22. import static ${packageName}.data.model.QTb${ClassName}.tb${ClassName};
  23. /**
  24. * 数据实现接口
  25. *
  26. * @author ${author}
  27. * @date ${datetime}
  28. */
  29. @Primary
  30. @Service
  31. @RequiredArgsConstructor
  32. public class ${ClassName}DataImpl implements I${ClassName}Data {
  33. private final ${ClassName}Repository baseRepository;
  34. private final JPAQueryFactory jpaQueryFactory;
  35. @Override
  36. public Paging<${ClassName}> findAll(PageRequest<${ClassName}> pageRequest) {
  37. return PageBuilder.toPaging(baseRepository.findAll(buildQueryCondition(pageRequest.getData()), PageBuilder.toPageable(pageRequest))).to(${ClassName}.class);
  38. }
  39. private Predicate buildQueryCondition(${ClassName} bo) {
  40. PredicateBuilder builder = PredicateBuilder.instance();
  41. if(Objects.nonNull(bo)) {
  42. #foreach($column in $columns)
  43. #if($column.query)
  44. #set($queryType=$column.queryType)
  45. #set($javaField=$column.javaField)
  46. #set($javaType=$column.javaType)
  47. #set($columnName=$column.columnName)
  48. #set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
  49. #if($queryType != 'BETWEEN')
  50. #if($javaType == 'String')
  51. #set($condition='StringUtils.isNotBlank(bo.get'+$AttrName+'())')
  52. #else
  53. #set($condition='bo.get'+$AttrName+'() != null')
  54. #end
  55. builder.and($condition, () -> tb${ClassName}.${javaField}.eq(bo.get${AttrName}()));
  56. #else
  57. builder.and(params.get("begin$AttrName") != null && params.get("end$AttrName") != null,
  58. () -> tb${ClassName}.${javaField}.bettwen(params.get("begin$AttrName"), params.get("end$AttrName")));
  59. #end
  60. #end
  61. #end
  62. }
  63. return builder.build();
  64. }
  65. @Override
  66. public List<${ClassName}> findByIds(Collection<Long> ids) {
  67. List<Tb${ClassName}> allById = baseRepository.findAllById(ids);
  68. return MapstructUtils.convert(allById, ${ClassName}.class);
  69. }
  70. @Override
  71. public ${ClassName} save(${ClassName} data) {
  72. Object o = baseRepository.save(MapstructUtils.convert(data, Tb${ClassName}.class));
  73. return MapstructUtils.convert(o, ${ClassName}.class);
  74. }
  75. @Override
  76. public void batchSave(List<${ClassName}> data) {
  77. baseRepository.saveAll(MapstructUtils.convert(data, Tb${ClassName}.class));
  78. }
  79. @Override
  80. public void deleteById(Long id) {
  81. baseRepository.deleteById(id);
  82. }
  83. @Override
  84. public void deleteByIds(Collection<Long> ids) {
  85. baseRepository.deleteAllById(ids);
  86. }
  87. @Override
  88. public ${ClassName} findById(Long id) {
  89. Tb${ClassName} ret = jpaQueryFactory.select(tb${ClassName}).from(tb${ClassName}).where(tb${ClassName}.id.eq(id)).fetchOne();
  90. return MapstructUtils.convert(ret, ${ClassName}.class);
  91. }
  92. @Override
  93. public long count() {
  94. return baseRepository.count();
  95. }
  96. @Override
  97. public List<IotContributor> findAll() {
  98. return MapstructUtils.convert(baseRepository.findAll(), IotContributor.class);
  99. }
  100. @Override
  101. public List<IotContributor> findAllByCondition(IotContributor data) {
  102. Iterable<TbIotContributor> all = baseRepository.findAll(buildQueryCondition(data));
  103. return MapstructUtils.convert(Lists.newArrayList(all), IotContributor.class);
  104. }
  105. @Override
  106. public IotContributor findOneByCondition(IotContributor data) {
  107. Optional<TbIotContributor> one = baseRepository.findOne(buildQueryCondition(data));
  108. if(one.isPresent()){
  109. return MapstructUtils.convert(one.get(), IotContributor.class);
  110. }
  111. return null;
  112. }
  113. }