Мне нужно иметь доступ к объекту groupCoverPeriod после того, как я отфильтровал к нему дочерние объекты. Как мне сделать это с помощью потоков. Я написал приведенный ниже код, но получил ошибку в ** groupCoverPeriod * (пожалуйста,игнорируйте префикс и суффикс ** в коде)
boolean isCalMethodCal=newInsurancePeriod.getPensionGroup().getGroupCoverPeriods().stream()
.filter(groupCoverPeriod -> groupCoverPeriod.getStartDate().isBefore(newInsurancePeriod.getStartDate()) && (
Objects.isNull(newInsurancePeriod.getEndDate()) || groupCoverPeriod.getStartDate().isAfter(newInsurancePeriod.getEndDate())))
.filter(groupCoverPeriod -> !groupCoverPeriod.getCalcMethod().equalsIgnoreCase("kiinnitetty"))
.flatMap(groupCoverPeriod -> groupCoverPeriod.getInsuranceCoverInfos().stream())
.filter(ici -> ici.getBenefitType().equalsIgnoreCase("VE"))
.anyMatch(ici -> !ici.getOverServiceNotification().equals(true)
|| !ici.getConsideredEarningsInRTAge().equals(true)
|| (ici.getConsideredStatutoryEarningsInRTAge().equalsIgnoreCase("6300") && beginDate >= 6300)
|| (ici.getConsideredStatutoryEarningsInRTAge().equalsIgnoreCase("6500") && beginDate >= 6500)
|| (ici.getDeferralIncreaseSupplementaryPension().equalsIgnoreCase("ei") || ici.getDeferralIncreaseSupplementaryPension().equalsIgnoreCase("elakemuunnos"))
|| (**groupCoverPeriod**.getTerminationAge().equalsIgnoreCase("yhteinen") && groupCoverPeriod.getGroupSuplInsuranceRTAge() >= beginDate)
|| (**groupCoverPeriod**.getTerminationAge().equalsIgnoreCase("yksilollinen") && insurancePeriod.getPersonsCoverInfo().getAgeForSupplementaryPension() >= beginDate)
|| (**groupCoverPeriod**.getTerminationAge().equalsIgnoreCase("wtyel_vahvistettu") && Integer.parseInt(ykService.getPersonBirthYear(newInsurancePeriod.getPerson().getPersonNumber())) >= beginDate)
|| (**groupCoverPeriod**.getTerminationAge().equalsIgnoreCase("wtyel_ennustettu") && Integer.parseInt(ykService.getPersonBirthYear(newInsurancePeriod.getPerson().getPersonNumber())) >= beginDate));
Я даже пытался, но это не возвращает ожидаемого ..
newInsurancePeriod.getPensionGroup().getGroupCoverPeriods().stream()
.filter(groupCoverPeriod -> groupCoverPeriod.getStartDate().isBefore(newInsurancePeriod.getStartDate()) && (
Objects.isNull(newInsurancePeriod.getEndDate()) || groupCoverPeriod.getStartDate().isAfter(newInsurancePeriod.getEndDate())))
.filter(groupCoverPeriod -> !groupCoverPeriod.getCalcMethod().equalsIgnoreCase("kiinnitetty"))
.forEach(groupCoverPeriod -> {
boolean isCalMethodCal = groupCoverPeriod.getInsuranceCoverInfos().stream()
.filter(ici -> ici.getBenefitType().equalsIgnoreCase("VE"))
.anyMatch(ici -> !ici.getOverServiceNotification().equals(true)
|| !ici.getConsideredEarningsInRTAge().equals(true)
|| (ici.getConsideredStatutoryEarningsInRTAge().equalsIgnoreCase("6300") && beginDate >= 6300)
|| (ici.getConsideredStatutoryEarningsInRTAge().equalsIgnoreCase("6500") && beginDate >= 6500)
|| (ici.getDeferralIncreaseSupplementaryPension().equalsIgnoreCase("ei") || ici.getDeferralIncreaseSupplementaryPension().equalsIgnoreCase("elakemuunnos"))
|| (groupCoverPeriod.getTerminationAge().equalsIgnoreCase("yhteinen") && groupCoverPeriod.getGroupSuplInsuranceRTAge() >= beginDate)
|| (groupCoverPeriod.getTerminationAge().equalsIgnoreCase("yksilollinen") && insurancePeriod.getPersonsCoverInfo().getAgeForSupplementaryPension() >= beginDate)
|| (groupCoverPeriod.getTerminationAge().equalsIgnoreCase("wtyel_vahvistettu") && Integer.parseInt(ykService.getPersonBirthYear(newInsurancePeriod.getPerson().getPersonNumber())) >= beginDate)
|| (groupCoverPeriod.getTerminationAge().equalsIgnoreCase("wtyel_ennustettu") && Integer.parseInt(ykService.getPersonBirthYear(newInsurancePeriod.getPerson().getPersonNumber())) >= beginDate));