Skip to content

Commit

Permalink
Merge pull request #32 from cardano-foundation/fix/pending_query
Browse files Browse the repository at this point in the history
fix: batch pending query
  • Loading branch information
M4rc0Russ0 authored Sep 9, 2024
2 parents 7b400ab + 1d5c07b commit 67936ec
Showing 1 changed file with 22 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -97,25 +97,25 @@ private Collection<Predicate> queryCriteria(Root<TransactionBatchEntity> rootEnt

if (body.getBatchStatistics().stream().anyMatch(s -> s.equals(LedgerDispatchStatusView.PENDING))) {

List<Predicate> andPredicatesJoin = new ArrayList<>();

Subquery<String> subqueryItemsIn = builder.createQuery(rootEntry.getClass()).subquery(String.class);
Root<TransactionEntity> transactionEntityRootItem = subqueryItemsIn.from(TransactionEntity.class);
subqueryItemsIn.select(transactionEntityRootItem.get("id"));
Subquery<String> subqueryItemsIn = builder.createQuery().subquery(String.class);
Root<TransactionItemEntity> transactionEntityRootItem = subqueryItemsIn.from(TransactionItemEntity.class);

subqueryItemsIn.select(transactionEntityRootItem.get("transaction").get("id"));
Predicate whereItem =
builder.and(
transactionEntityJoin.get("items").get("rejection").get("rejectionCode").in(RejectionCode.getSourceBasedRejectionCodes(Source.LOB).stream().map(Enum::ordinal).toList()),
builder.equal(transactionEntityRootItem.get("id"),transactionEntityJoin.get("id"))
transactionEntityRootItem.get("rejection").get("rejectionCode").in(RejectionCode.getSourceBasedRejectionCodes(Source.LOB).stream().map(Enum::ordinal).toList()),
builder.equal(transactionEntityRootItem.get("transaction").get("id"), transactionEntityJoin.get("id"))
);
subqueryItemsIn.where(whereItem);

Subquery<String> subqueryItemsOut = builder.createQuery(rootEntry.getClass()).subquery(String.class);
Root<TransactionEntity> transactionEntityRootItem2 = subqueryItemsOut.from(TransactionEntity.class);
subqueryItemsOut.select(transactionEntityRootItem2.get("id"));
Subquery<String> subqueryItemsOut = builder.createQuery().subquery(String.class);
Root<TransactionItemEntity> transactionEntityRootItem2 = subqueryItemsOut.from(TransactionItemEntity.class);
subqueryItemsOut.select(transactionEntityRootItem2.get("transaction").get("id"));
Predicate whereItem2 =
builder.and(
transactionEntityJoin.get("items").get("rejection").get("rejectionCode").in(RejectionCode.getSourceBasedRejectionCodes(Source.ERP).stream().map(Enum::ordinal).toList()),
builder.equal(transactionEntityRootItem2.get("id"),transactionEntityJoin.get("id"))
transactionEntityRootItem2.get("rejection").get("rejectionCode").in(RejectionCode.getSourceBasedRejectionCodes(Source.ERP).stream().map(Enum::ordinal).toList()),
builder.equal(transactionEntityRootItem2.get("transaction").get("id"), transactionEntityJoin.get("id"))
);
subqueryItemsOut.where(whereItem2);

Expand All @@ -124,25 +124,29 @@ private Collection<Predicate> queryCriteria(Root<TransactionBatchEntity> rootEnt
subqueryErp.select(transactionEntityRoot.get("id"));
Predicate whereErp = builder.and(
builder.equal(transactionEntityRoot.get("violations").get("source"), "ERP"),
builder.equal(transactionEntityRoot.get("id"),transactionEntityJoin.get("id"))
);
builder.equal(transactionEntityRoot.get("id"), transactionEntityJoin.get("id"))
);
subqueryErp.where(whereErp);

Subquery<String> subqueryLob = builder.createQuery(transactionEntityJoin.getClass()).subquery(String.class);
Root<TransactionEntity> transactionEntityRootLob = subqueryLob.from(TransactionEntity.class);
subqueryLob.select(transactionEntityRootLob.get("id"));
Predicate whereLob = builder.and(
builder.equal(transactionEntityRootLob.get("violations").get("source"), "LOB"),
builder.equal(transactionEntityRootLob.get("id"),transactionEntityJoin.get("id"))
builder.equal(transactionEntityRootLob.get("id"), transactionEntityJoin.get("id"))
);
subqueryLob.where(whereLob);

andPredicatesJoin.add(builder.not(builder.in(transactionEntityJoin.get("id")).value(subqueryErp)));
andPredicatesJoin.add((builder.in(transactionEntityJoin.get("id")).value(subqueryLob)));

orPredicates.add(builder.and(builder.in(transactionEntityJoin.get("id")).value(subqueryItemsOut).not(), builder.in(transactionEntityJoin.get("id")).value(subqueryItemsIn)));
orPredicates.add(builder.and(
builder.in(transactionEntityJoin.get("id")).value(subqueryItemsOut).not(),
builder.in(transactionEntityJoin.get("id")).value(subqueryErp).not(),
builder.or(
builder.in(transactionEntityJoin.get("id")).value(subqueryItemsIn),
builder.in(transactionEntityJoin.get("id")).value(subqueryLob)
)
));

orPredicates.add(builder.and(andPredicatesJoin.toArray(new Predicate[0])));
}

if (body.getBatchStatistics().stream().anyMatch(s -> s.equals(LedgerDispatchStatusView.APPROVE))) {
Expand Down

0 comments on commit 67936ec

Please sign in to comment.