Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @Override
- public ListWithCount<BillingConsolidated> getConsolidatedBilling(BillingSearchQueryParams params) {
- CriteriaBuilder criteriaBuilder = getEm().getCriteriaBuilder();
- CriteriaQuery<BillingConsolidated> query = criteriaBuilder.createQuery(BillingConsolidated.class);
- Root<Billing> billing = query.from(Billing.class);
- Join<Billing, Creditor> creditor = billing.join("creditor", JoinType.LEFT);
- Set<Predicate> predicates = new HashSet<>();
- query.multiselect(creditor, billing.get("reportType"), criteriaBuilder.count(billing))
- .groupBy(creditor, billing.get("reportType"));
- predicates.add(criteriaBuilder.equal(billing.get("deleted"), false));
- if (StringUtils.isNotBlank(params.getBin())) {
- predicates.add(criteriaBuilder.equal(creditor.get("bin"), params.getBin()));
- }
- if (StringUtils.isNotBlank(params.getCreditorName())) {
- predicates.add(criteriaBuilder.or(
- criteriaBuilder.equal(creditor.get("nameRu"), params.getCreditorName()),
- criteriaBuilder.equal(creditor.get("nameEn"), params.getCreditorName()),
- criteriaBuilder.equal(creditor.get("nameKz"), params.getCreditorName())
- ));
- }
- if (StringUtils.isNotBlank(params.getCreditorId())) {
- if (!BillingSearchSpecification.SCB.equals(params.getCreditorId())) {
- predicates.add(criteriaBuilder.equal(creditor.get("id"), params.getCreditorId()));
- } else{
- predicates.add(criteriaBuilder.isNull(creditor.get("id")));
- }
- }
- predicates.add(criteriaBuilder.isNotNull(billing.<Date>get("reportFinishDate")));
- predicates.add(criteriaBuilder.isTrue(billing.<Boolean>get("billable")));
- predicates.add(criteriaBuilder.isTrue(billing.join("reportType", JoinType.LEFT).<Boolean>get("billable")));
- if (StringUtils.isNotBlank(params.getReportType())) {
- predicates.add(criteriaBuilder.equal(billing.join("reportType", JoinType.LEFT).<String>get("code"), params.getReportType()));
- }
- if (StringUtils.isNoneBlank(params.getContractNumber())) {
- predicates.add(criteriaBuilder.equal(billing.join("creditor", JoinType.LEFT).<String>get("agreementNumber"), params.getContractNumber()));
- }
- predicates.addAll(BillingSearchSpecification.addDatePredicatesConsideringMovedTo(billing, query, criteriaBuilder, params));
- if (!predicates.isEmpty()) {
- query.where(criteriaBuilder.and(predicates.toArray(new Predicate[predicates.size()])));
- }
- return CriteriaUtils.listWithCount(query, getEm(), billing, params);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement