|
34 | 34 | import no.nav.fpsak.tidsserie.LocalDateTimeline;
|
35 | 35 | import no.nav.vedtak.konfig.Tid;
|
36 | 36 |
|
| 37 | +import static no.nav.abakus.iaygrunnlag.kodeverk.PermisjonsbeskrivelseType.finnForKodeverkEiersKode; |
| 38 | + |
37 | 39 | @ApplicationScoped
|
38 | 40 | public class ArbeidsforholdDtoTjeneste {
|
39 | 41 |
|
@@ -74,38 +76,50 @@ private ArbeidsforholdDto mapTilArbeidsforholdMedPermisjoner(Map.Entry<Arbeidsfo
|
74 | 76 | ArbeidsforholdDto dto = new ArbeidsforholdDto(arbeidsgiver, arbeidType);
|
75 | 77 | dto.setArbeidsforholdId(mapArbeidsforholdId(key.getArbeidsforholdId()));
|
76 | 78 | dto.setAnsettelsesperiode(mapAnsettelsesPerioder(arbeidsforholdEntry.getValue()));
|
77 |
| - dto.setArbeidsavtaler(arbeidsforholdEntry.getValue().stream().map(this::mapArbeidsavtaler).flatMap(Collection::stream).toList()); |
78 |
| - dto.setPermisjoner(arbeidsforholdEntry.getValue().stream().map(this::mapPermisjoner).flatMap(Collection::stream).toList()); |
| 79 | + dto.setArbeidsavtaler(tilArbeidsavtaler(arbeidsforholdEntry.getValue())); |
| 80 | + dto.setPermisjoner(tilPermisjoner(arbeidsforholdEntry.getValue())); |
79 | 81 | return dto;
|
80 | 82 | }
|
81 | 83 |
|
| 84 | + private List<PermisjonDto> tilPermisjoner(List<Arbeidsforhold> arbeidsforhold) { |
| 85 | + return arbeidsforhold.stream().map(this::mapPermisjoner).flatMap(Collection::stream).toList(); |
| 86 | + } |
| 87 | + |
| 88 | + private List<ArbeidsavtaleDto> tilArbeidsavtaler(List<Arbeidsforhold> arbeidsforhold) { |
| 89 | + return arbeidsforhold.stream().map(this::mapArbeidsavtaler).flatMap(Collection::stream).toList(); |
| 90 | + } |
| 91 | + |
82 | 92 | private List<ArbeidsavtaleDto> mapArbeidsavtaler(Arbeidsforhold arbeidsforhold) {
|
83 |
| - LocalDateInterval ansettelse = new LocalDateInterval(arbeidsforhold.getArbeidFom(), arbeidsforhold.getArbeidTom()); |
84 |
| - var tidslinje = arbeidsforhold.getArbeidsavtaler().stream() |
| 93 | + var ansettelse = new LocalDateInterval(arbeidsforhold.getArbeidFom(), arbeidsforhold.getArbeidTom()); |
| 94 | + var arbeidsavtalerTidlinje = arbeidsforhold.getArbeidsavtaler().stream() |
85 | 95 | .filter(arbeidsavtale -> !arbeidsavtale.getErAnsettelsesPerioden())
|
86 | 96 | .filter(arbeidsavtale -> arbeidsavtale.getStillingsprosent() != null)
|
87 |
| - .map(a -> new LocalDateSegment<>(a.getArbeidsavtaleFom(), a.getArbeidsavtaleTom(), a.getStillingsprosent())) |
| 97 | + .map(a -> new LocalDateSegment<>(safeFom(a.getArbeidsavtaleFom()), safeTom(a.getArbeidsavtaleTom()), a.getStillingsprosent())) |
88 | 98 | .collect(Collectors.collectingAndThen(Collectors.toList(), LocalDateTimeline::new));
|
89 |
| - return tidslinje.intersection(ansettelse).stream().map(s -> new ArbeidsavtaleDto(new Periode(safeFom(s.getFom()), safeTom(s.getTom())), s.getValue())).toList(); |
| 99 | + return arbeidsavtalerTidlinje.intersection(ansettelse).stream() |
| 100 | + .map(s -> new ArbeidsavtaleDto(new Periode(s.getFom(), s.getTom()), s.getValue())) |
| 101 | + .toList(); |
90 | 102 | }
|
91 | 103 |
|
92 | 104 | private List<PermisjonDto> mapPermisjoner(Arbeidsforhold arbeidsforhold) {
|
93 |
| - LocalDateInterval ansettelse = new LocalDateInterval(arbeidsforhold.getArbeidFom(), arbeidsforhold.getArbeidTom()); |
94 |
| - var tidslinje = arbeidsforhold.getPermisjoner() |
95 |
| - .stream() |
| 105 | + var ansettelse = new LocalDateInterval(arbeidsforhold.getArbeidFom(), arbeidsforhold.getArbeidTom()); |
| 106 | + var permisjonTidslinje = arbeidsforhold.getPermisjoner().stream() |
96 | 107 | .filter(permisjon -> permisjon.getPermisjonsprosent() != null)
|
97 |
| - .map(p -> new LocalDateSegment<>(p.getPermisjonFom(), p.getPermisjonTom(), |
| 108 | + .map(p -> new LocalDateSegment<>(safeFom(p.getPermisjonFom()), safeTom(p.getPermisjonTom()), |
98 | 109 | new PermisjonTidslinjeObjekt(p.getPermisjonsprosent(), p.getPermisjonsÅrsak())))
|
99 | 110 | .collect(Collectors.collectingAndThen(Collectors.toList(), LocalDateTimeline::new));
|
100 | 111 |
|
101 |
| - return tidslinje.intersection(ansettelse) |
| 112 | + return permisjonTidslinje.intersection(ansettelse) |
102 | 113 | .stream()
|
103 |
| - .map(s -> new PermisjonDto(new Periode(safeFom(s.getFom()), safeTom(s.getTom())), |
104 |
| - PermisjonsbeskrivelseType.finnForKodeverkEiersKode(s.getValue().permisjonsÅrsak)) |
105 |
| - .medProsentsats(s.getValue().permisjonsprosent())) |
| 114 | + .map(ArbeidsforholdDtoTjeneste::tilPermisjonDto) |
106 | 115 | .toList();
|
107 | 116 | }
|
108 | 117 |
|
| 118 | + private static PermisjonDto tilPermisjonDto(LocalDateSegment<PermisjonTidslinjeObjekt> s) { |
| 119 | + return new PermisjonDto(new Periode(s.getFom(), s.getTom()), finnForKodeverkEiersKode(s.getValue().permisjonsÅrsak)) |
| 120 | + .medProsentsats(s.getValue().permisjonsprosent()); |
| 121 | + } |
| 122 | + |
109 | 123 | private static LocalDate safeFom(LocalDate fom) {
|
110 | 124 | return fom != null ? fom : Tid.TIDENES_BEGYNNELSE;
|
111 | 125 | }
|
|
0 commit comments