diff --git a/src/main/java/org/apache/fineract/api/BatchApi.java b/src/main/java/org/apache/fineract/api/BatchApi.java index 300fd9af..d9070b44 100644 --- a/src/main/java/org/apache/fineract/api/BatchApi.java +++ b/src/main/java/org/apache/fineract/api/BatchApi.java @@ -141,15 +141,15 @@ public BatchPaginatedResponse getBatch(@RequestParam(value = "offset", required } @GetMapping("/batch") - public ResponseEntity batchDetails(@RequestParam(value = "batchId", required = false) String batchId, + public ResponseEntity batchDetails(@RequestParam(value = "batchId", required = false) String batchId, @RequestParam(value = "requestId", required = false) String requestId) { Batch batch = batchRepository.findByBatchId(batchId); if (batch == null) { String errorMessage = "Batch corresponding to batchId: " + batchId + " does not exist."; - return ResponseEntity.status(HttpStatus.NOT_FOUND).body(errorMessage); + return (ResponseEntity) ResponseEntity.status(HttpStatus.NOT_FOUND).body(errorMessage); } - return ResponseEntity.ok(generateBatchSummaryResponse(batch)); + return (ResponseEntity) ResponseEntity.ok((batchService.getBatchAndSubBatchSummary(batchId, requestId))); } @GetMapping("/batch/{batchId}") diff --git a/src/main/java/org/apache/fineract/service/BatchServiceImpl.java b/src/main/java/org/apache/fineract/service/BatchServiceImpl.java index fcee61b9..db651375 100644 --- a/src/main/java/org/apache/fineract/service/BatchServiceImpl.java +++ b/src/main/java/org/apache/fineract/service/BatchServiceImpl.java @@ -63,6 +63,48 @@ public BatchAndSubBatchSummaryResponse getBatchAndSubBatchSummary(String batchId return response; } + public void populateBatchSummary(Batch batch){ + double batchFailedPercent = 0; + double batchCompletedPercent = 0; + + if(batch.getTotalTransactions() != null){ + batchFailedPercent = ((double) batch.getFailed()) / batch.getTotalTransactions() * 100; + batchCompletedPercent = ((double) batch.getCompleted()) / batch.getTotalTransactions() * 100; + } + + DecimalFormat decimalFormat = new DecimalFormat("#.##"); + decimalFormat.setRoundingMode(RoundingMode.FLOOR); + + Optional totalAmount = Optional.ofNullable(batch.getTotalAmount()); + Optional completedAmount = Optional.ofNullable(batch.getCompletedAmount()); + Optional ongoingAmount = Optional.ofNullable(batch.getOngoingAmount()); + Optional failedAmount = Optional.ofNullable(batch.getFailedAmount()); + + Long nullValue = 0L; + + BatchDTO batchDTO = new BatchDTO(batch.getBatchId(), + batch.getRequestId(), batch.getTotalTransactions(), batch.getOngoing(), + batch.getFailed(), batch.getCompleted(), + BigDecimal.valueOf(totalAmount.orElse(nullValue)), + BigDecimal.valueOf(completedAmount.orElse(nullValue)), + BigDecimal.valueOf(ongoingAmount.orElse(nullValue)), + BigDecimal.valueOf(failedAmount.orElse(nullValue)), + batch.getResult_file(), batch.getNote(), + decimalFormat.format(batchFailedPercent), decimalFormat.format(batchCompletedPercent), + batch.getRegisteringInstitutionId(), batch.getPayerFsp(), batch.getCorrelationId()); + + if (batch.getTotalTransactions() != null && + batch.getCompleted() != null && + batch.getTotalTransactions().longValue() == batch.getCompleted().longValue()) { + batchDTO.setStatus("COMPLETED"); + } else if (batch.getOngoing() != null && batch.getOngoing() != 0 && batch.getCompletedAt() == null) { + batchDTO.setStatus("Pending"); + } else { + batchDTO.setStatus("UNKNOWN"); + } + + } + @Override public PaymentBatchDetail getPaymentBathDetail(String batchId, String clientCorrelationId, int offset, int limit, String orderBy, String sortBy) { List batchAndSubBatches = batchRepository.findAllByBatchId(batchId);