diff --git a/apps/dolly-backend/src/main/java/no/nav/dolly/DollyBackendApplicationStarter.java b/apps/dolly-backend/src/main/java/no/nav/dolly/DollyBackendApplicationStarter.java index f0ef428e58d..6af8668f777 100644 --- a/apps/dolly-backend/src/main/java/no/nav/dolly/DollyBackendApplicationStarter.java +++ b/apps/dolly-backend/src/main/java/no/nav/dolly/DollyBackendApplicationStarter.java @@ -10,4 +10,4 @@ public static void main(String[] args) { SpringApplication.run(DollyBackendApplicationStarter.class, args); } -} +} \ No newline at end of file diff --git a/apps/dolly-backend/src/main/java/no/nav/dolly/bestilling/aareg/AaregClient.java b/apps/dolly-backend/src/main/java/no/nav/dolly/bestilling/aareg/AaregClient.java index dedf69d338d..c01e025da1d 100644 --- a/apps/dolly-backend/src/main/java/no/nav/dolly/bestilling/aareg/AaregClient.java +++ b/apps/dolly-backend/src/main/java/no/nav/dolly/bestilling/aareg/AaregClient.java @@ -133,8 +133,17 @@ private Flux doInsertOrUpdate(ArbeidsforholdRespons response, List eksistens.getUbestemmeligArbeidsforhold().stream() + .noneMatch(ubestemmelig -> isEqualArbeidsforhold(ubestemmelig, arbeidsforhold))) .flatMap(eksisterende -> appendArbeidsforholdId(response, eksisterende) - .flatMap(arbeidsforhold -> aaregConsumer.endreArbeidsforhold(arbeidsforhold, miljoe, token)))) + .flatMap(arbeidsforhold -> aaregConsumer.endreArbeidsforhold(arbeidsforhold, miljoe, token))), + Flux.fromIterable(eksistens.getUbestemmeligArbeidsforhold()) + .map(ubestemmelig -> ArbeidsforholdRespons.builder() + .miljo(miljoe) + .build()) + .reduce(Flux.empty(), (a, b) -> Flux.just(b)) + .flatMap(Flux::next) + .map(t -> (ArbeidsforholdRespons) t)) .map(reply -> decodeStatus(miljoe, reply)); } diff --git a/apps/dolly-backend/src/main/java/no/nav/dolly/bestilling/aareg/domain/ArbeidsforholdEksistens.java b/apps/dolly-backend/src/main/java/no/nav/dolly/bestilling/aareg/domain/ArbeidsforholdEksistens.java index 733f9cad2f7..382dd578e72 100644 --- a/apps/dolly-backend/src/main/java/no/nav/dolly/bestilling/aareg/domain/ArbeidsforholdEksistens.java +++ b/apps/dolly-backend/src/main/java/no/nav/dolly/bestilling/aareg/domain/ArbeidsforholdEksistens.java @@ -16,4 +16,5 @@ public class ArbeidsforholdEksistens { private List nyeArbeidsforhold; private List eksisterendeArbeidsforhold; + private List ubestemmeligArbeidsforhold; } diff --git a/apps/dolly-backend/src/main/java/no/nav/dolly/bestilling/aareg/util/AaregUtility.java b/apps/dolly-backend/src/main/java/no/nav/dolly/bestilling/aareg/util/AaregUtility.java index e1d5db0c1af..b57ac8a83df 100644 --- a/apps/dolly-backend/src/main/java/no/nav/dolly/bestilling/aareg/util/AaregUtility.java +++ b/apps/dolly-backend/src/main/java/no/nav/dolly/bestilling/aareg/util/AaregUtility.java @@ -43,6 +43,12 @@ public static ArbeidsforholdEksistens doEksistenssjekk(ArbeidsforholdRespons res .anyMatch(response1 -> isEqualArbeidsforhold(response1, arbeidsforhold)) && (isTrue(arbeidsforhold.getIsOppdatering()) || !isOpprettEndre)) .toList()) + .ubestemmeligArbeidsforhold(request.stream() + .filter(arbeidsforhold -> response.getEksisterendeArbeidsforhold().stream() + .filter(response1 -> isEqualArbeidsforhold(response1, arbeidsforhold) && + isNull(arbeidsforhold.getArbeidsforholdId()) && !isOpprettEndre) + .count() > 1L) + .toList()) .build(); } diff --git a/apps/dolly-backend/src/main/resources/db/migration/V1.7.25__AlterTableBestillingProgress.sql b/apps/dolly-backend/src/main/resources/db/migration/V1.7.25__AlterTableBestillingProgress.sql new file mode 100644 index 00000000000..a8cf3e3009c --- /dev/null +++ b/apps/dolly-backend/src/main/resources/db/migration/V1.7.25__AlterTableBestillingProgress.sql @@ -0,0 +1,6 @@ +----------------------------- +-- A L T E R T A B L E S -- +----------------------------- + +alter table bestilling_progress + add column fullmakt_status varchar(1000); \ No newline at end of file diff --git a/apps/dolly-frontend/src/main/js/src/components/bestilling/sammendrag/kriterier/BestillingKriterieMapper.tsx b/apps/dolly-frontend/src/main/js/src/components/bestilling/sammendrag/kriterier/BestillingKriterieMapper.tsx index 7c36bd9369d..64bde954c53 100644 --- a/apps/dolly-frontend/src/main/js/src/components/bestilling/sammendrag/kriterier/BestillingKriterieMapper.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/bestilling/sammendrag/kriterier/BestillingKriterieMapper.tsx @@ -1057,7 +1057,7 @@ export const arbeidsforholdVisning = (arbeidsforhold, i, harAmelding, aaregKrite }, obj('Orgnummer', arbeidsforhold.arbeidsgiver?.orgnummer), obj('Arbeidsgiver ident', arbeidsforhold.arbeidsgiver?.ident), - obj('Arbeidsforhold-ID', arbeidsforhold.arbeidsforholdID), + obj('Arbeidsforhold-ID', arbeidsforhold.arbeidsforholdId), obj('Ansatt fra', formatDate(arbeidsforhold.ansettelsesPeriode?.fom)), obj('Ansatt til', formatDate(arbeidsforhold.ansettelsesPeriode?.tom)), { diff --git a/apps/dolly-frontend/src/main/js/src/components/fagsystem/aareg/AaregTypes.tsx b/apps/dolly-frontend/src/main/js/src/components/fagsystem/aareg/AaregTypes.tsx index 89397cd7eb3..640de3b9593 100644 --- a/apps/dolly-frontend/src/main/js/src/components/fagsystem/aareg/AaregTypes.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/fagsystem/aareg/AaregTypes.tsx @@ -29,7 +29,7 @@ export type Amelding = { } type Arbeidsforhold = { - arbeidsforholdID: string + arbeidsforholdId: string } export type KodeverkValue = { diff --git a/apps/dolly-frontend/src/main/js/src/components/fagsystem/aareg/form/initialValues.tsx b/apps/dolly-frontend/src/main/js/src/components/fagsystem/aareg/form/initialValues.tsx index e33c6fbd2a8..23d14d51674 100644 --- a/apps/dolly-frontend/src/main/js/src/components/fagsystem/aareg/form/initialValues.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/fagsystem/aareg/form/initialValues.tsx @@ -14,7 +14,7 @@ export const initialForenkletOppgjoersordningOrg = { arbeidsavtale: { yrke: '', }, - navArbeidsforholdPeriode: null, + arbeidsforholdstype: 'ordinaertArbeidsforhold', } export const initialForenkletOppgjoersordningPers = { @@ -30,11 +30,11 @@ export const initialForenkletOppgjoersordningPers = { arbeidsavtale: { yrke: '', }, - navArbeidsforholdPeriode: null, + arbeidsforholdstype: 'ordinaertArbeidsforhold', } export const initialArbeidsforholdOrg = { - arbeidsforholdstype: '', + arbeidsforholdstype: 'ordinaertArbeidsforhold', arbeidsgiver: { aktoertype: 'ORG', orgnummer: '', @@ -53,7 +53,6 @@ export const initialArbeidsforholdOrg = { arbeidstidsordning: 'ikkeSkift', avtaltArbeidstimerPerUke: 37.5, }, - navArbeidsforholdPeriode: undefined, antallTimerForTimeloennet: [], utenlandsopphold: [], permisjon: [], @@ -65,7 +64,7 @@ export const initialArbeidsforholdPers = { aktoertype: 'PERS', ident: '', }, - arbeidsforholdID: '', + arbeidsforholdId: '', ansettelsesPeriode: { fom: subYears(new Date(), 20), tom: null, @@ -80,7 +79,6 @@ export const initialArbeidsforholdPers = { arbeidstidsordning: 'ikkeSkift', avtaltArbeidstimerPerUke: 37.5, }, - navArbeidsforholdPeriode: null, } export const initialPeriode = { @@ -112,18 +110,18 @@ export const initialAmelding = [ ] export const initialValues = { - arbeidsforholdstype: '', + arbeidsforholdstype: 'ordinaertArbeidsforhold', genererPeriode: initialPeriode, amelding: initialAmelding, } export const initialAaregOrg = { - arbeidsforholdstype: '', + arbeidsforholdstype: 'ordinaertArbeidsforhold', ...initialArbeidsforholdOrg, } export const initialAaregPers = { - arbeidsforholdstype: '', + arbeidsforholdstype: 'ordinaertArbeidsforhold', ...initialArbeidsforholdPers, } diff --git a/apps/dolly-frontend/src/main/js/src/components/fagsystem/aareg/form/partials/arbeidsforholdForm.tsx b/apps/dolly-frontend/src/main/js/src/components/fagsystem/aareg/form/partials/arbeidsforholdForm.tsx index 6b1daa1491f..b9b117bddc6 100644 --- a/apps/dolly-frontend/src/main/js/src/components/fagsystem/aareg/form/partials/arbeidsforholdForm.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/fagsystem/aareg/form/partials/arbeidsforholdForm.tsx @@ -1,4 +1,4 @@ -import React, { useContext, useEffect, useState } from 'react' +import React, { useContext, useEffect } from 'react' import { FormSelect } from '@/components/ui/form/inputs/select/Select' import { FormTextInput } from '@/components/ui/form/inputs/textInput/TextInput' import { FormDatepicker } from '@/components/ui/form/inputs/datepicker/Datepicker' @@ -23,34 +23,73 @@ import { isDate } from 'date-fns' import { EgneOrganisasjoner } from '@/components/fagsystem/brregstub/form/partials/EgneOrganisasjoner' import { BestillingsveilederContext } from '@/components/bestillingsveileder/BestillingsveilederContext' import _ from 'lodash' -import { Monthpicker } from '@/components/ui/form/inputs/monthpicker/Monthpicker' import { fixTimezone } from '@/components/ui/form/formUtils' import { useFormContext } from 'react-hook-form' -type Arbeidsforhold = { - isOppdatering?: boolean - type?: string - ansettelsesPeriode?: Ansettelsesperiode - antallTimerForTimeloennet?: Array - arbeidsavtaler?: Array - arbeidsgiver?: ArbeidsgiverProps - fartoy?: any - permisjonPermitteringer?: Array - utenlandsopphold?: Array - arbeidsforholdId?: string - navArbeidsforholdPeriode?: Date -} +export const hentStoersteArregdata = () => { + const { personFoerLeggTil } = useContext(BestillingsveilederContext) + if (_.isEmpty(personFoerLeggTil?.aareg)) { + return null + } -type ArbeidsgiverProps = { - type?: string - orgnummer?: string - offentligIdent?: string -} + let stoersteAaregdata: any = [] + personFoerLeggTil?.aareg?.forEach((aareg: any) => { + if (aareg.data?.length > stoersteAaregdata.length) { + stoersteAaregdata = aareg?.data + } + }) + + stoersteAaregdata.sort((a: any, b: any) => a.arbeidsforholdId.localeCompare(b.arbeidsforholdId)) + + let copy = structuredClone(stoersteAaregdata) + + copy.forEach((aareg: any) => { + aareg.arbeidsgiver['orgnummer'] = aareg?.arbeidsgiver?.organisasjonsnummer + aareg.arbeidsgiver['aktoertype'] = aareg.arbeidsgiver?.type === 'Organisasjon' ? 'ORG' : 'PERS' + aareg.arbeidsgiver['ident'] = aareg?.arbeidsgiver?.offentligIdent + aareg['arbeidsforholdstype'] = aareg.type + aareg['arbeidsavtale'] = aareg.arbeidsavtaler?.[0] + aareg.arbeidsavtale['avtaltArbeidstimerPerUke'] = Number( + aareg.arbeidsavtaler?.[0]?.antallTimerPrUke, + ) + aareg['arbeidsavtaler'] = undefined + aareg['ansettelsesPeriode'] = {} + aareg.ansettelsesPeriode['fom'] = aareg.ansettelsesperiode?.periode?.fom + aareg.ansettelsesPeriode['tom'] = aareg.ansettelsesperiode?.periode?.tom + aareg.ansettelsesPeriode['sluttaarsak'] = aareg.ansettelsesperiode?.sluttaarsak + aareg.ansettelsesperiode = undefined + if (aareg.utenlandsopphold) { + aareg.utenlandsopphold.forEach((opphold: any) => (opphold['land'] = opphold.landkode)) + } + if (aareg.type === 'maritimtArbeidsforhold') { + aareg['fartoy'] = [] + aareg.fartoy.push({ + fartsomraade: aareg.arbeidsavtale?.fartsomraade, + skipsregister: aareg.arbeidsavtale.skipsregister, + skipstype: aareg.arbeidsavtale?.skipstype, + }) + } + aareg['permisjon'] = [] + aareg['permittering'] = [] + if (aareg.permisjonPermitteringer) { + aareg.permisjonPermitteringer.forEach((permisjonPermittering: any) => { + if (permisjonPermittering.type === 'permittering') { + aareg.permittering.push({ + permitteringsPeriode: permisjonPermittering.periode, + permitteringsprosent: permisjonPermittering.prosent, + }) + } else { + aareg.permisjon.push({ + permisjonsPeriode: permisjonPermittering.periode, + permisjonsprosent: permisjonPermittering.prosent, + permisjon: permisjonPermittering.type, + }) + } + }) + } + }) -type Ansettelsesperiode = { - fom?: string - tom?: string - sluttaarsak?: string + return copy } export const ArbeidsforholdForm = ({ @@ -61,23 +100,6 @@ export const ArbeidsforholdForm = ({ arbeidsgiverType, warningMessage, }) => { - const hentUnikeAaregBestillinger = (bestillinger) => { - if (_.isEmpty(bestillinger) || ameldingIndex) { - return null - } - - const aaregBestillinger = bestillinger - ?.filter((bestilling) => bestilling?.data?.aareg) - ?.flatMap((bestilling) => bestilling.data?.aareg) - ?.filter((bestilling) => _.isEmpty(bestilling?.amelding)) - - return _.uniqWith( - aaregBestillinger, - (best1: Arbeidsforhold, best2) => - best1?.arbeidsgiver?.orgnummer === best2?.arbeidsgiver?.orgnummer, - ) - } - const harGjortFormEndringer = () => { if (watch('aareg').length > 1) { return true @@ -88,30 +110,19 @@ export const ArbeidsforholdForm = ({ ) } - const { setError, watch, control, getValues, setValue, trigger, resetField } = useFormContext() - const eksisterendeArbeidsforholdPeriode = watch(`${path}.navArbeidsforholdPeriode`) - const [navArbeidsforholdPeriode, setNavArbeidsforholdPeriode] = useState( - eksisterendeArbeidsforholdPeriode - ? new Date( - eksisterendeArbeidsforholdPeriode.year, - eksisterendeArbeidsforholdPeriode.monthValue, - ) - : null, - ) - const { tidligereBestillinger }: any = useContext(BestillingsveilederContext) - const tidligereAaregBestillinger = hentUnikeAaregBestillinger(tidligereBestillinger) - const erLaastArbeidsforhold = - (arbeidsgiverType === ArbeidsgiverTyper.felles || - arbeidsgiverType === ArbeidsgiverTyper.fritekst) && - arbeidsforholdIndex < tidligereAaregBestillinger?.length + const { setError, watch, getValues, setValue, trigger } = useFormContext() + + const tidligereAaregdata = hentStoersteArregdata() + + const erLaastArbeidsforhold = arbeidsforholdIndex < tidligereAaregdata?.length useEffect(() => { - if (_.isEmpty(tidligereAaregBestillinger) || harGjortFormEndringer()) { + if (_.isEmpty(tidligereAaregdata) || harGjortFormEndringer()) { return } setValue( 'aareg', - tidligereAaregBestillinger?.map((aaregBestilling) => { + tidligereAaregdata?.map((aaregBestilling) => { aaregBestilling.isOppdatering = true return aaregBestilling }), @@ -213,19 +224,6 @@ export const ArbeidsforholdForm = ({ } } - useEffect(() => { - setValue( - `${path}.navArbeidsforholdPeriode`, - navArbeidsforholdPeriode - ? { - year: navArbeidsforholdPeriode.getFullYear(), - monthValue: navArbeidsforholdPeriode.getMonth(), - } - : undefined, - ) - trigger() - }, [navArbeidsforholdPeriode]) - const checkAktiveArbeidsforhold = () => { const aaregValues = getValues('aareg') const aktiveArbeidsforhold = aaregValues.map((arbeidsforhold) => { @@ -292,6 +290,11 @@ export const ArbeidsforholdForm = ({ isDisabled={erLaastArbeidsforhold} /> )} + - {arbeidsforholdstype === 'forenkletOppgjoersordning' && ( { + let aaregdata = hentStoersteArregdata() + const formMethods = useFormContext() const { organisasjoner } = useDollyFasteDataOrganisasjoner(true) - const getArbeidsgiverType = () => { - const orgnummer = formMethods.watch('aareg[0].arbeidsgiver.orgnummer') - if (formMethods.watch('aareg[0].amelding[0]') || formMethods.watch('aareg[0].arbeidsforhold')) { + const orgnr = aaregdata?.[0].arbeidsgiver?.orgnummer + if (aaregdata?.[0].amelding?.[0]) { return ArbeidsgiverTyper.egen - } else if (formMethods.watch('aareg[0].arbeidsgiver.aktoertype') === 'PERS') { + } else if (aaregdata?.[0].arbeidsgiver?.aktoertype === 'PERS') { return ArbeidsgiverTyper.privat } else if ( - !orgnummer || - organisasjoner.map((organisasjon) => organisasjon.orgnummer).some((org) => org === orgnummer) + !orgnr || + organisasjoner.map((organisasjon) => organisasjon.orgnummer).some((org) => org === orgnr) ) { return ArbeidsgiverTyper.felles } else { @@ -66,6 +68,7 @@ export const ArbeidsforholdToggle = (): ReactElement => { const handleToggleChange = (value: ArbeidsgiverTyper) => { setTypeArbeidsgiver(value) + if (value === ArbeidsgiverTyper.privat) { formMethods.resetField('aareg', { defaultValue: [initialAaregPers] }) } else if (value === ArbeidsgiverTyper.felles || value === ArbeidsgiverTyper.fritekst) { @@ -87,17 +90,19 @@ export const ArbeidsforholdToggle = (): ReactElement => { return (
- handleToggleChange(value)} - value={typeArbeidsgiver} - size={'small'} - > - {toggleValues.map((type) => ( - - {type.label} - - ))} - + {!aaregdata?.[0].arbeidsgiver?.orgnummer && !aaregdata?.[0].arbeidsgiver?.ident && ( + handleToggleChange(value)} + value={typeArbeidsgiver} + size={'small'} + > + {toggleValues.map((type) => ( + + {type.label} + + ))} + + )} {typeArbeidsgiver === ArbeidsgiverTyper.egen ? ( <> { @@ -112,8 +117,8 @@ export const ArbeidsforholdToggle = (): ReactElement => { header="Arbeidsforhold" newEntry={ typeArbeidsgiver === ArbeidsgiverTyper.privat - ? { ...initialArbeidsforholdPers, arbeidsforholdstype: '' } - : { ...initialArbeidsforholdOrg, arbeidsforholdstype: '' } + ? { ...initialArbeidsforholdPers, arbeidsforholdstype: 'ordinaertArbeidsforhold' } + : { ...initialArbeidsforholdOrg, arbeidsforholdstype: 'ordinaertArbeidsforhold' } } canBeEmpty={false} > diff --git a/apps/dolly-frontend/src/main/js/src/components/fagsystem/aareg/form/validation.tsx b/apps/dolly-frontend/src/main/js/src/components/fagsystem/aareg/form/validation.tsx index b5e381e5967..d220ff37eda 100644 --- a/apps/dolly-frontend/src/main/js/src/components/fagsystem/aareg/form/validation.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/fagsystem/aareg/form/validation.tsx @@ -128,7 +128,7 @@ export const validation = { Yup.object({ ansettelsesPeriode: ifPresent('$aareg[0].arbeidsgiver.aktoertype', ansettelsesPeriode), arbeidsforholdstype: requiredString, - arbeidsforholdID: Yup.string().nullable(), + arbeidsforholdId: Yup.string().nullable(), arbeidsgiver: ifPresent('$aareg[0].arbeidsgiver.aktoertype', arbeidsgiver), arbeidsavtale: ifPresent('$aareg[0].arbeidsgiver.aktoertype', arbeidsavtale), fartoy: Yup.mixed().when({ @@ -187,7 +187,7 @@ export const validation = { arbeidsforhold: Yup.array().of( Yup.object({ ansettelsesPeriode: ansettelsesPeriode, - arbeidsforholdID: Yup.string().nullable(), + arbeidsforholdId: Yup.string().nullable(), arbeidsgiver: arbeidsgiver, arbeidsavtale: arbeidsavtale, fartoy: fartoy, diff --git a/apps/dolly-frontend/src/main/js/src/components/ui/form/fieldArray/DollyFieldArray.tsx b/apps/dolly-frontend/src/main/js/src/components/ui/form/fieldArray/DollyFieldArray.tsx index a8b199028aa..869b9a7c182 100644 --- a/apps/dolly-frontend/src/main/js/src/components/ui/form/fieldArray/DollyFieldArray.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/ui/form/fieldArray/DollyFieldArray.tsx @@ -6,7 +6,6 @@ import './dollyFieldArray.less' import { ErrorBoundary } from '@/components/ui/appError/ErrorBoundary' import styled from 'styled-components' import { useFieldArray, useFormContext } from 'react-hook-form' -import { useEffect } from 'react' const numberColor = { ARRAY_LEVEL_ONE: '#CCE3ED', @@ -225,20 +224,12 @@ export const FormDollyFieldArray = ({ errorText = null, }) => { const formMethods = useFormContext() - const { append, update, fields, remove } = useFieldArray({ + const { append, remove } = useFieldArray({ control: formMethods.control, name: name, }) - useEffect(() => { - // Noen ganger blir formet oppdatert utenfra via setValue, - // da vil denne sjekken sørge for at vi oppdaterer fields også - if (formMethods.watch(name).length !== fields.length) { - formMethods.watch(name).forEach((entry, idx) => { - update(idx, entry) - }) - } - }, [fields]) + const values = formMethods.watch(name) || [] const addNewEntry = () => { handleNewEntry ? handleNewEntry() : append(newEntry) @@ -248,8 +239,8 @@ export const FormDollyFieldArray = ({ return ( - {fields.map((curr, idx) => { - const showDeleteButton = canBeEmpty ? true : fields.length >= 2 + {values.map((curr, idx) => { + const showDeleteButton = canBeEmpty ? true : values.length >= 2 const path = `${name}.${idx}` const number = tag ? `${tag}.${idx + 1}` : `${idx + 1}` const handleRemove = () => { @@ -300,10 +291,10 @@ export const FormDollyFieldArray = ({ })} {errorText && {errorText}} diff --git a/apps/dolly-frontend/src/main/js/src/components/ui/form/inputs/monthpicker/Monthpicker.tsx b/apps/dolly-frontend/src/main/js/src/components/ui/form/inputs/monthpicker/Monthpicker.tsx index 82928157630..e414b1f2c7a 100644 --- a/apps/dolly-frontend/src/main/js/src/components/ui/form/inputs/monthpicker/Monthpicker.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/ui/form/inputs/monthpicker/Monthpicker.tsx @@ -14,7 +14,6 @@ interface MonthpickerProps { onChange?: (date: Date) => void minDate?: Date maxDate?: Date - placeholder?: string } export const Monthpicker = ({ @@ -25,8 +24,6 @@ export const Monthpicker = ({ onChange, minDate = null, maxDate = null, - placeholder = null, - ...props }: MonthpickerProps) => { const formMethods = useFormContext() const val = formMethods.watch(name) @@ -71,12 +68,7 @@ export const Monthpicker = ({ diff --git a/apps/tps-messaging-service/src/main/java/no/nav/testnav/apps/tpsmessagingservice/service/PersonService.java b/apps/tps-messaging-service/src/main/java/no/nav/testnav/apps/tpsmessagingservice/service/PersonService.java index 870d77d39dc..acc050f7f25 100644 --- a/apps/tps-messaging-service/src/main/java/no/nav/testnav/apps/tpsmessagingservice/service/PersonService.java +++ b/apps/tps-messaging-service/src/main/java/no/nav/testnav/apps/tpsmessagingservice/service/PersonService.java @@ -90,47 +90,53 @@ public TpsServicerutineS610Response unmarshallFromXml(String endringsmeldingResp public List getPerson(String ident, List miljoer) { - if (miljoer.isEmpty()) { - miljoer = testmiljoerServiceConsumer.getMiljoer(); - } - - var tpsPersoner = readFromTps(ident, miljoer); - - var relasjoner = getRelasjoner(tpsPersoner.entrySet().stream() - .filter(entry -> nonNull(entry.getValue().getTpsPersonData()) && - nonNull(entry.getValue().getTpsPersonData().getTpsSvar()) && - isStatusOK(entry.getValue().getTpsPersonData().getTpsSvar().getSvarStatus())) - .collect(Collectors.toMap(Entry::getKey, entry -> entry.getValue() - .getTpsPersonData() - .getTpsSvar() - .getPersonDataS610() - .getPerson()))); - - var personerMedRelasjoner = buildMiljoePersonWithRelasjon(relasjoner).entrySet().stream() - .map(entry -> PersonMiljoeDTO.builder() - .ident(ident) - .miljoe(entry.getKey()) - .status("OK") - .person(entry.getValue()) - .build()) - .toList(); + if (miljoer.isEmpty()) { + miljoer = testmiljoerServiceConsumer.getMiljoer(); + } + + try { + var tpsPersoner = readFromTps(ident, miljoer); + + var relasjoner = getRelasjoner(tpsPersoner.entrySet().stream() + .filter(entry -> nonNull(entry.getValue().getTpsPersonData()) && + nonNull(entry.getValue().getTpsPersonData().getTpsSvar()) && + isStatusOK(entry.getValue().getTpsPersonData().getTpsSvar().getSvarStatus())) + .collect(Collectors.toMap(Entry::getKey, entry -> entry.getValue() + .getTpsPersonData() + .getTpsSvar() + .getPersonDataS610() + .getPerson()))); + + var personerMedRelasjoner = buildMiljoePersonWithRelasjon(relasjoner).entrySet().stream() + .map(entry -> PersonMiljoeDTO.builder() + .ident(ident) + .miljoe(entry.getKey()) + .status("OK") + .person(entry.getValue()) + .build()) + .toList(); + + var hentingMedFeil = tpsPersoner.entrySet().stream() + .filter(entry -> nonNull(entry.getValue().getTpsPersonData()) && + nonNull(entry.getValue().getTpsPersonData().getTpsSvar()) && + !isStatusOK(entry.getValue().getTpsPersonData().getTpsSvar().getSvarStatus())) + .map(entry -> PersonMiljoeDTO.builder() + .miljoe(entry.getKey()) + .status("FEIL") + .melding(entry.getValue().getTpsPersonData().getTpsSvar().getSvarStatus().getReturMelding()) + .utfyllendeMelding(entry.getValue().getTpsPersonData().getTpsSvar().getSvarStatus().getUtfyllendeMelding()) + .build()) + .toList(); - var hentingMedFeil = tpsPersoner.entrySet().stream() - .filter(entry -> nonNull(entry.getValue().getTpsPersonData()) && - nonNull(entry.getValue().getTpsPersonData().getTpsSvar()) && - !isStatusOK(entry.getValue().getTpsPersonData().getTpsSvar().getSvarStatus())) - .map(entry -> PersonMiljoeDTO.builder() - .miljoe(entry.getKey()) - .status("FEIL") - .melding(entry.getValue().getTpsPersonData().getTpsSvar().getSvarStatus().getReturMelding()) - .utfyllendeMelding(entry.getValue().getTpsPersonData().getTpsSvar().getSvarStatus().getUtfyllendeMelding()) - .build()) - .toList(); + return Stream.of(personerMedRelasjoner, hentingMedFeil) + .flatMap(Collection::stream) + .filter(entry -> isBlank(entry.getUtfyllendeMelding()) || !NOT_FOUND.equals(entry.getUtfyllendeMelding())) + .toList(); - return Stream.of(personerMedRelasjoner, hentingMedFeil) - .flatMap(Collection::stream) - .filter(entry -> isBlank(entry.getUtfyllendeMelding()) || !NOT_FOUND.equals(entry.getUtfyllendeMelding())) - .toList(); + } catch (Exception e) { + log.error("Feilet å hente data for {} i miløer {}, melding {}", ident, miljoer, e.getMessage(), e); + throw e; + } } private Map buildMiljoePersonWithRelasjon(Map personRelasjon) { diff --git a/libs/reactive-core/src/main/java/no/nav/testnav/libs/reactivecore/config/WebClientConfig.java b/libs/reactive-core/src/main/java/no/nav/testnav/libs/reactivecore/config/WebClientConfig.java index 541a1dcae74..e08de24b740 100644 --- a/libs/reactive-core/src/main/java/no/nav/testnav/libs/reactivecore/config/WebClientConfig.java +++ b/libs/reactive-core/src/main/java/no/nav/testnav/libs/reactivecore/config/WebClientConfig.java @@ -52,7 +52,7 @@ public WebClient.Builder webClientBuilder(ApplicationContext context) { .option(EpollChannelOption.TCP_KEEPIDLE, 300) .option(EpollChannelOption.TCP_KEEPINTVL, 60) .option(EpollChannelOption.TCP_KEEPCNT, 8) - .responseTimeout(Duration.ofSeconds(5)) + .responseTimeout(Duration.ofSeconds(10)) )); } catch (NoSuchBeanDefinitionException e) {