Advertisement
Guest User

Untitled

a guest
Sep 19th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.80 KB | None | 0 0
  1. CriteriaBuilder cb = entityManager.getCriteriaBuilder();
  2. CriteriaQuery<ReportVendorDetailsDTO> query = cb.createQuery(ReportVendorDetailsDTO.class);
  3.  
  4. Root<PayableCheckInfo> checkInfoRoot = query.from(PayableCheckInfo.class);
  5. Join<PayableCheckInfo, PayableCheck> payableCheckJoin = checkInfoRoot.join(PayableCheckInfo_.check,
  6. JoinType.INNER);
  7. Join<PayableCheck, Vendor> vendorJoin = payableCheckJoin.join(PayableCheck_.vendor, JoinType.INNER);
  8. Join<PayableCheckInfo, Vendor> secVendorJoin = checkInfoRoot.join(PayableCheckInfo_.vendor, JoinType.LEFT);
  9. Join<PayableCheckInfo, Employee> secEmployeeJoin = checkInfoRoot.join(PayableCheckInfo_.employee,
  10. JoinType.LEFT);
  11.  
  12. Expression<String> firstName = cb.concat(secEmployeeJoin.get(Employee_.firstName), " ") ;
  13. Expression<String> firstMiddleName = cb.concat(firstName, secEmployeeJoin.get(Employee_.middleName));
  14. Expression<String> lastName = cb.concat(" ", secEmployeeJoin.get(Employee_.lastName));
  15.  
  16. Expression<String> payeeName = cb.<String>selectCase()
  17. .when(cb.isNotNull(secVendorJoin.get(Vendor_.name1)), secVendorJoin.get(Vendor_.name1))
  18. .otherwise(cb.concat(firstMiddleName, lastName));
  19.  
  20.  
  21. Expression<String> payeeNumber = cb.<String>selectCase()
  22. .when(cb.isNotNull(secVendorJoin.get(Vendor_.id)), cb.function("TO_CHAR", String.class, secVendorJoin.get(Vendor_.vendorNumber), cb.literal("999999")))
  23. .otherwise(secEmployeeJoin.get(Employee_.ssn));
  24.  
  25. List<Predicate> predicates = new ArrayList<>();
  26.  
  27. if (CollectionUtils.isNotEmpty(vendorIds)) {
  28. predicates.add(vendorJoin.in(vendorIds));
  29. }
  30.  
  31. predicates.add(PredUtil.byDates(cb, payableCheckJoin, from, to));
  32. predicates.add(PredUtil.skipRepays(cb, payableCheckJoin));
  33. predicates.add(PredUtil.skipVoidedOnSameDate(cb, payableCheckJoin));
  34.  
  35. if (isShort) {
  36. predicates.add((cb.isFalse(payableCheckJoin.get(PayableCheck_.fundTransfer))));
  37. }
  38.  
  39. if (CollectionUtils.isNotEmpty(accountIds)) {
  40. Join<PayableCheckInfo, Fund> fundJoin = checkInfoRoot.join(PayableCheckInfo_.account, JoinType.LEFT);
  41. predicates.add((cb.not(fundJoin.in(accountIds))));
  42. }
  43.  
  44.  
  45. List<Selection<?>> selections = new ArrayList<Selection<?>>();
  46. selections.add(vendorJoin.get(Vendor_.id));
  47. selections.add(vendorJoin.get(Vendor_.vendorNumber));
  48. selections.add(vendorJoin.get(Vendor_.name1));
  49. selections.add(payeeName);
  50. selections.add(payeeNumber);
  51. selections.add(vendorJoin.get(Vendor_.type1099));
  52. selections.add(cb.sum(checkInfoRoot.get(PayableCheckInfo_.invoiceAmount)));
  53. query.multiselect(selections)
  54. .where(cb.and(predicates.toArray(new Predicate[predicates.size()])))
  55. .groupBy(vendorJoin.get(Vendor_.id), secVendorJoin.get(Vendor_.id), secEmployeeJoin.get(Employee_.id));
  56.  
  57. vendorsData = entityManager.createQuery(query).getResultList();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement