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(),
|
return Objects.hash(entry.getId(), criteriaId, office.getId(), currencyCode, loanProduct.getId(), provisioningCategory.getId(),
|
||||||
overdueInDays, reservedAmount, liabilityAccount.getId(), expenseAccount.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) {
|
private Collection<LoanProductProvisioningEntry> generateLoanProvisioningEntry(ProvisioningEntry parent, Date date) {
|
||||||
Collection<LoanProductProvisioningEntryData> entries = this.provisioningEntriesReadPlatformService
|
Collection<LoanProductProvisioningEntryData> entries = this.provisioningEntriesReadPlatformService
|
||||||
.retrieveLoanProductsProvisioningData(date);
|
.retrieveLoanProductsProvisioningData(date);
|
||||||
Map<LoanProductProvisioningEntry, LoanProductProvisioningEntry> provisioningEntries = new HashMap<>();
|
Map<Integer, LoanProductProvisioningEntry> provisioningEntries = new HashMap<>();
|
||||||
for (LoanProductProvisioningEntryData data : entries) {
|
for (LoanProductProvisioningEntryData data : entries) {
|
||||||
LoanProduct loanProduct = this.loanProductRepository.findById(data.getProductId()).get();
|
LoanProduct loanProduct = this.loanProductRepository.findById(data.getProductId()).get();
|
||||||
Office office = this.officeRepositoryWrapper.findOneWithNotFoundDetection(data.getOfficeId());
|
Office office = this.officeRepositoryWrapper.findOneWithNotFoundDetection(data.getOfficeId());
|
||||||
@@ -245,10 +245,10 @@ public class ProvisioningEntriesWritePlatformServiceJpaRepositoryImpl implements
|
|||||||
provisioningCategory, data.getOverdueInDays(), amountToReserve.getAmount(), liabilityAccount, expenseAccount,
|
provisioningCategory, data.getOverdueInDays(), amountToReserve.getAmount(), liabilityAccount, expenseAccount,
|
||||||
criteraId);
|
criteraId);
|
||||||
entry.setProvisioningEntry(parent);
|
entry.setProvisioningEntry(parent);
|
||||||
if (!provisioningEntries.containsKey(entry)) {
|
if (!provisioningEntries.containsKey(entry.partialHashCode())) {
|
||||||
provisioningEntries.put(entry, entry);
|
provisioningEntries.put(entry.partialHashCode(), entry);
|
||||||
} else {
|
} else {
|
||||||
LoanProductProvisioningEntry entry1 = provisioningEntries.get(entry);
|
LoanProductProvisioningEntry entry1 = provisioningEntries.get(entry.partialHashCode());
|
||||||
entry1.addReservedAmount(entry.getReservedAmount());
|
entry1.addReservedAmount(entry.getReservedAmount());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user