У меня есть список платежей:
Payment 1
CountyTaxAmount = 250.00
CityTaxAmount = 101.00
LienAmount = 0.00
HazardAmount = 0.00
PaymentDueDate = "2018-06-01"
Payment 2
CountyTaxAmount = 10.00
CityTaxAmount = 20.00
LienAmount = 0.00
HazardAmount = 0.00
PaymentDueDate = "2018-05-01"
Я создал функцию, которая берет в этом списке currentDueDate
.
Если paymentDueDate
равно равно или до currentDueDate
и ближайшему к currentDueDate
, я хочу использовать эту строку в моих вычислениях.
Почему-то мой вид не работает должным образом.
Может кто-нибудь пролить свет на то, что я делаю не так.
Вот мой код:
private EscrowStatusEnum determineEscrowStatus(Payment pcm, LocalDate currentDueDate) {
EscrowStatusEnum escrowStatus = null;
if(currentDueDate!= null && pcm!=null
&& pcm.getPayment() != null
&& !pcm.getPayment().isEmpty()) {
Predicate<Payment> pcmRow =
it->it.getPaymentDueDate()!=null && !it.getPaymentDueDate().isAfter(currentDueDate);
final Payment sortedRow =
pcm.getPayment().stream().sorted((el1, el2) -> el1.getPaymentDueDate().compareTo(el2.getPaymentDueDate())).
filter(pcmRow).findFirst().orElse(null);
if(sortedRow != null) {
BigDecimal countyCityLienHazardSum = sortedRow.getCountyTaxAmount().add(sortedRow.getCityTaxAmount()).add(sortedRow.getLienAmount()).add(sortedRow.getHazardAmount());
BigDecimal countyCityLienSum = sortedRow.getCountyTaxAmount().add(sortedRow.getCityTaxAmount()).add(sortedRow.getLienAmount());
if(countyCityLienHazardSum.compareTo(BigDecimal.ZERO) == 0)
escrowStatus = EscrowStatusEnum.NONESCROWED;
else if(countyCityLienSum.compareTo(BigDecimal.ZERO) > 0 && sortedRow.getHazardAmount().compareTo(BigDecimal.ZERO) == 0 ||
countyCityLienSum.compareTo(BigDecimal.ZERO) >= 0 && sortedRow.getHazardAmount().compareTo(BigDecimal.ZERO) > 0)
escrowStatus = EscrowStatusEnum.ESCROWED;
}
}
return escrowStatus;
}
Когда я передаю currentDueDate
из "2018-06-01"
, я хочу, чтобы мой код возвращал Payment 1
.
В настоящее время возвращается Payment 2
.
Если я удаляю Payment 2
из моих тестов, он возвращает Payment 1
.
Так что с сортировкой что-то не так.