Advertisement
Guest User

Untitled

a guest
Oct 18th, 2017
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.74 KB | None | 0 0
  1. @Override
  2. public ListWithCount<BillingConsolidated> getConsolidatedBilling(BillingSearchQueryParams params) {
  3. CriteriaBuilder criteriaBuilder = getEm().getCriteriaBuilder();
  4. CriteriaQuery<BillingConsolidated> query = criteriaBuilder.createQuery(BillingConsolidated.class);
  5.  
  6. Root<Billing> billing = query.from(Billing.class);
  7. Join<Billing, Creditor> creditor = billing.join("creditor", JoinType.LEFT);
  8. Set<Predicate> predicates = new HashSet<>();
  9.  
  10. query.multiselect(creditor, billing.get("reportType"), criteriaBuilder.count(billing))
  11. .groupBy(creditor, billing.get("reportType"));
  12.  
  13. predicates.add(criteriaBuilder.equal(billing.get("deleted"), false));
  14.  
  15. if (StringUtils.isNotBlank(params.getBin())) {
  16. predicates.add(criteriaBuilder.equal(creditor.get("bin"), params.getBin()));
  17. }
  18. if (StringUtils.isNotBlank(params.getCreditorName())) {
  19. predicates.add(criteriaBuilder.or(
  20. criteriaBuilder.equal(creditor.get("nameRu"), params.getCreditorName()),
  21. criteriaBuilder.equal(creditor.get("nameEn"), params.getCreditorName()),
  22. criteriaBuilder.equal(creditor.get("nameKz"), params.getCreditorName())
  23. ));
  24. }
  25. if (StringUtils.isNotBlank(params.getCreditorId())) {
  26. if (!BillingSearchSpecification.SCB.equals(params.getCreditorId())) {
  27. predicates.add(criteriaBuilder.equal(creditor.get("id"), params.getCreditorId()));
  28. } else{
  29. predicates.add(criteriaBuilder.isNull(creditor.get("id")));
  30. }
  31. }
  32.  
  33. predicates.add(criteriaBuilder.isNotNull(billing.<Date>get("reportFinishDate")));
  34.  
  35. predicates.add(criteriaBuilder.isTrue(billing.<Boolean>get("billable")));
  36.  
  37. predicates.add(criteriaBuilder.isTrue(billing.join("reportType", JoinType.LEFT).<Boolean>get("billable")));
  38.  
  39. if (StringUtils.isNotBlank(params.getReportType())) {
  40. predicates.add(criteriaBuilder.equal(billing.join("reportType", JoinType.LEFT).<String>get("code"), params.getReportType()));
  41. }
  42.  
  43. if (StringUtils.isNoneBlank(params.getContractNumber())) {
  44. predicates.add(criteriaBuilder.equal(billing.join("creditor", JoinType.LEFT).<String>get("agreementNumber"), params.getContractNumber()));
  45. }
  46.  
  47. predicates.addAll(BillingSearchSpecification.addDatePredicatesConsideringMovedTo(billing, query, criteriaBuilder, params));
  48.  
  49. if (!predicates.isEmpty()) {
  50. query.where(criteriaBuilder.and(predicates.toArray(new Predicate[predicates.size()])));
  51. }
  52.  
  53. return CriteriaUtils.listWithCount(query, getEm(), billing, params);
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement