Change the deduplication logic used in loan loss provisioning (FINERACT-1404)
This commit is contained in:
committed by
Petri Tuomola
parent
bcdf9df136
commit
d2521886ba
+7
@@ -143,4 +143,11 @@ public class LoanProductProvisioningEntry extends AbstractPersistableCustom {
|
||||
return Objects.hash(entry.getId(), criteriaId, office.getId(), currencyCode, loanProduct.getId(), provisioningCategory.getId(),
|
||||
overdueInDays, reservedAmount, liabilityAccount.getId(), expenseAccount.getId());
|
||||
}
|
||||
|
||||
public int partialHashCode() {
|
||||
// this is used to group together all the entries that have similar parameters (excluding the amount reserved)
|
||||
// rather than a check for if the objects are the same based on their values, this tells if they are similar
|
||||
return Objects.hash(entry.getId(), criteriaId, office.getId(), currencyCode, loanProduct.getId(), provisioningCategory.getId(),
|
||||
overdueInDays, liabilityAccount.getId(), expenseAccount.getId());
|
||||
}
|
||||
}
|
||||
|
||||
+4
-4
@@ -230,7 +230,7 @@ public class ProvisioningEntriesWritePlatformServiceJpaRepositoryImpl implements
|
||||
private Collection<LoanProductProvisioningEntry> generateLoanProvisioningEntry(ProvisioningEntry parent, Date date) {
|
||||
Collection<LoanProductProvisioningEntryData> entries = this.provisioningEntriesReadPlatformService
|
||||
.retrieveLoanProductsProvisioningData(date);
|
||||
Map<LoanProductProvisioningEntry, LoanProductProvisioningEntry> provisioningEntries = new HashMap<>();
|
||||
Map<Integer, LoanProductProvisioningEntry> provisioningEntries = new HashMap<>();
|
||||
for (LoanProductProvisioningEntryData data : entries) {
|
||||
LoanProduct loanProduct = this.loanProductRepository.findById(data.getProductId()).get();
|
||||
Office office = this.officeRepositoryWrapper.findOneWithNotFoundDetection(data.getOfficeId());
|
||||
@@ -245,10 +245,10 @@ public class ProvisioningEntriesWritePlatformServiceJpaRepositoryImpl implements
|
||||
provisioningCategory, data.getOverdueInDays(), amountToReserve.getAmount(), liabilityAccount, expenseAccount,
|
||||
criteraId);
|
||||
entry.setProvisioningEntry(parent);
|
||||
if (!provisioningEntries.containsKey(entry)) {
|
||||
provisioningEntries.put(entry, entry);
|
||||
if (!provisioningEntries.containsKey(entry.partialHashCode())) {
|
||||
provisioningEntries.put(entry.partialHashCode(), entry);
|
||||
} else {
|
||||
LoanProductProvisioningEntry entry1 = provisioningEntries.get(entry);
|
||||
LoanProductProvisioningEntry entry1 = provisioningEntries.get(entry.partialHashCode());
|
||||
entry1.addReservedAmount(entry.getReservedAmount());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user