Skip to content

Commit

Permalink
Merge branch 'master' into feature/opprett-pensjonsavtale
Browse files Browse the repository at this point in the history
  • Loading branch information
krharum committed Aug 9, 2024
2 parents 663bfd2 + 63de518 commit eb2174b
Show file tree
Hide file tree
Showing 8 changed files with 96 additions and 143 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@ public static void main(String[] args) {

SpringApplication.run(SkattekortServiceApplicationStarter.class, args);
}
}
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
package no.nav.skattekortservice.dto;

import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.RequiredArgsConstructor;
import lombok.experimental.SuperBuilder;
import no.nav.testnav.libs.dto.skattekortservice.v1.IdentifikatorForEnhetEllerPerson;

import java.time.LocalDate;
Expand Down Expand Up @@ -88,9 +92,6 @@ public static class Skattekort {
private LocalDate utstedtDato;
private Long skattekortidentifikator;
private List<Forskuddstrekk> forskuddstrekk;
private List<Frikort> frikort;
private List<Trekktabell> trekktabell;
private List<Trekkprosent> trekkprosent;

public List<Forskuddstrekk> getForskuddstrekk() {

Expand All @@ -99,71 +100,53 @@ public List<Forskuddstrekk> getForskuddstrekk() {
}
return forskuddstrekk;
}

public List<Frikort> getFrikort() {

if (isNull(frikort)) {
frikort = new ArrayList<>();
}
return frikort;
}

public List<Trekktabell> getTrekktabell() {

if (isNull(trekktabell)) {
trekktabell = new ArrayList<>();
}
return trekktabell;
}

public List<Trekkprosent> getTrekkprosent() {

if (isNull(trekkprosent)) {
trekkprosent = new ArrayList<>();
}
return trekkprosent;
}
}

@Data
@Builder
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public static class Forskuddstrekk {
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "xsi:type")
@JsonSubTypes({
@JsonSubTypes.Type(value = Frikort.class, name = "Frikort"),
@JsonSubTypes.Type(value = Trekktabell.class, name = "Trekktabell"),
@JsonSubTypes.Type(value = Trekkprosent.class, name = "Trekkprosent")
})
public abstract static class Forskuddstrekk {

private Trekkode trekkode;
private String type;
}

@EqualsAndHashCode(callSuper = true)
@Data
@Builder
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public static class Frikort {

private Trekkode trekkode;
public static class Frikort extends Forskuddstrekk {

private Integer frikortbeloep;
}

@EqualsAndHashCode(callSuper = true)
@Data
@Builder
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public static class Trekktabell {

private Trekkode trekkode;
public static class Trekktabell extends Forskuddstrekk {

private Tabelltype tabelltype;
private String tabellnummer;
private Integer prosentsats;
private Integer antallMaanederForTrekk;
}

@EqualsAndHashCode(callSuper = true)
@Data
@Builder
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public static class Trekkprosent {
public static class Trekkprosent extends Forskuddstrekk {

private Trekkode trekkode;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import ma.glasnost.orika.MapperFactory;
import ma.glasnost.orika.MappingContext;
import no.nav.skattekortservice.dto.SkattekortResponsIntermediate;
import no.nav.testnav.libs.dto.skattekortservice.v1.Forskuddstrekk;
import no.nav.testnav.libs.dto.skattekortservice.v1.Frikort;
import no.nav.testnav.libs.dto.skattekortservice.v1.Resultatstatus;
import no.nav.testnav.libs.dto.skattekortservice.v1.Skattekort;
Expand All @@ -17,6 +16,8 @@
import no.nav.testnav.libs.dto.skattekortservice.v1.Trekktabell;
import org.springframework.stereotype.Component;

import static java.util.Objects.nonNull;

@Slf4j
@Component
public class ArbeidsgiverMappingStrategy implements MappingStrategy {
Expand All @@ -39,22 +40,12 @@ public void mapAtoB(SkattekortResponsIntermediate.Skattekortmelding source, Skat
})
.register();

factory.classMap(SkattekortResponsIntermediate.Forskuddstrekk.class, Forskuddstrekk.class)
.customize(new CustomMapper<>() {
@Override
public void mapAtoB(SkattekortResponsIntermediate.Forskuddstrekk source, Forskuddstrekk target, MappingContext context) {

target.setTrekkode(Trekkode.valueOf(source.getTrekkode().getValue()));
}
})
.register();

factory.classMap(SkattekortResponsIntermediate.Frikort.class, Frikort.class)
.customize(new CustomMapper<>() {
@Override
public void mapAtoB(SkattekortResponsIntermediate.Frikort source, Frikort target, MappingContext context) {

target.setTrekkode(Trekkode.valueOf(source.getTrekkode().getValue()));
target.setTrekkode(getTrekkodeValue(source.getTrekkode()));
target.setFrikortbeloep(source.getFrikortbeloep());
}
})
Expand All @@ -65,7 +56,7 @@ public void mapAtoB(SkattekortResponsIntermediate.Frikort source, Frikort target
@Override
public void mapAtoB(SkattekortResponsIntermediate.Trekktabell source, Trekktabell target, MappingContext context) {

target.setTrekkode(Trekkode.valueOf(source.getTrekkode().getValue()));
target.setTrekkode(getTrekkodeValue(source.getTrekkode()));
target.setTabelltype(Tabelltype.valueOf(source.getTabelltype().getValue()));
target.setTabellnummer(source.getTabellnummer());
target.setProsentsats(source.getProsentsats());
Expand All @@ -79,11 +70,16 @@ public void mapAtoB(SkattekortResponsIntermediate.Trekktabell source, Trekktabel
@Override
public void mapAtoB(SkattekortResponsIntermediate.Trekkprosent source, Trekkprosent target, MappingContext context) {

target.setTrekkode(Trekkode.valueOf(target.getTrekkode().getValue()));
target.setTrekkode(getTrekkodeValue(source.getTrekkode()));
target.setProsentsats(source.getProsentsats());
target.setAntallMaanederForTrekk(source.getAntallMaanederForTrekk());
}
})
.register();
}

private static Trekkode getTrekkodeValue(SkattekortResponsIntermediate.Trekkode trekkode) {

return nonNull(trekkode.getValue()) ? Trekkode.valueOf(trekkode.getValue()) : null;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,14 @@
import no.nav.testnav.libs.dto.skattekortservice.v1.Skattekort;
import no.nav.testnav.libs.dto.skattekortservice.v1.Trekkprosent;
import no.nav.testnav.libs.dto.skattekortservice.v1.Trekktabell;
import no.nav.testnav.libs.dto.skattekortservice.v1.Trekktype;
import org.springframework.stereotype.Component;

import java.util.Objects;

import static java.util.Objects.nonNull;

@Component
public class TrekktypeMappingStrategy implements MappingStrategy {
public class ForskuddstrekkMappingStrategy implements MappingStrategy {
@Override
public void register(MapperFactory factory) {

Expand All @@ -26,20 +25,17 @@ public void register(MapperFactory factory) {
@Override
public void mapAtoB(Skattekort skattekort, no.skatteetaten.fastsetting.formueinntekt.forskudd.skattekorttilarbeidsgiver.v3.Skattekort skattekort2, MappingContext context) {

skattekort2.getForskuddstrekk().addAll(skattekort.getTrekktype().stream()
.map(trekktype -> {
if (nonNull(trekktype.getFrikort())) {
return mapperFacade.map(trekktype.getFrikort(),
skattekort2.getForskuddstrekk().addAll(skattekort.getForskuddstrekk().stream()
.map(forskuddstrekk -> {
if (nonNull(forskuddstrekk.getFrikort())) {
return mapperFacade.map(forskuddstrekk.getFrikort(),
no.skatteetaten.fastsetting.formueinntekt.forskudd.skattekorttilarbeidsgiver.v3.Frikort.class);
} else if (nonNull(trekktype.getTrekktabell())) {
return mapperFacade.map(trekktype.getTrekktabell(),
} else if (nonNull(forskuddstrekk.getTrekktabell())) {
return mapperFacade.map(forskuddstrekk.getTrekktabell(),
no.skatteetaten.fastsetting.formueinntekt.forskudd.skattekorttilarbeidsgiver.v3.Trekktabell.class);
} else if (nonNull(trekktype.getTrekkprosent())) {
return mapperFacade.map(trekktype.getTrekkprosent(),
} else if (nonNull(forskuddstrekk.getTrekkprosent())) {
return mapperFacade.map(forskuddstrekk.getTrekkprosent(),
no.skatteetaten.fastsetting.formueinntekt.forskudd.skattekorttilarbeidsgiver.v3.Trekkprosent.class);
} else if (nonNull(trekktype.getForskuddstrekk())) {
return mapperFacade.map(trekktype.getForskuddstrekk(),
no.skatteetaten.fastsetting.formueinntekt.forskudd.skattekorttilarbeidsgiver.v3.Forskuddstrekk.class);
} else {
return null;
}
Expand All @@ -48,7 +44,7 @@ public void mapAtoB(Skattekort skattekort, no.skatteetaten.fastsetting.formueinn
.toList());
}
})
.exclude("trekktype")
.exclude("forskuddstrekk")
.byDefault()
.register();

Expand All @@ -57,29 +53,21 @@ public void mapAtoB(Skattekort skattekort, no.skatteetaten.fastsetting.formueinn
@Override
public void mapAtoB(SkattekortResponsIntermediate.Skattekort skattekort, Skattekort skattekort2, MappingContext context) {

skattekort2.getTrekktype().addAll(skattekort.getFrikort().stream()
.map(frikort -> Trekktype.builder()
.frikort(mapperFacade.map(frikort, Frikort.class))
.build())
.toList());
skattekort2.getTrekktype().addAll(skattekort.getForskuddstrekk().stream()
.map(forskuddstrekk -> Trekktype.builder()
.forskuddstrekk(mapperFacade.map(forskuddstrekk, Forskuddstrekk.class))
.build())
.toList());
skattekort2.getTrekktype().addAll(skattekort.getTrekkprosent().stream()
.map(trekkprosent -> Trekktype.builder()
.trekkprosent(mapperFacade.map(trekkprosent, Trekkprosent.class))
.build())
.toList());
skattekort2.getTrekktype().addAll(skattekort.getTrekktabell().stream()
.map(trekktabell -> Trekktype.builder()
.trekktabell(mapperFacade.map(trekktabell, Trekktabell.class))
.build())
.toList());
skattekort2.setSkattekortidentifikator(skattekort.getSkattekortidentifikator());
skattekort2.setUtstedtDato(skattekort.getUtstedtDato());
skattekort.getForskuddstrekk()
.forEach(forskuddstrekk -> skattekort2.getForskuddstrekk().add(
Forskuddstrekk.builder()
.frikort(forskuddstrekk instanceof SkattekortResponsIntermediate.Frikort ?
mapperFacade.map(forskuddstrekk, Frikort.class) : null)
.trekktabell(forskuddstrekk instanceof SkattekortResponsIntermediate.Trekktabell ?
mapperFacade.map(forskuddstrekk, Trekktabell.class) : null)
.trekkprosent(forskuddstrekk instanceof SkattekortResponsIntermediate.Trekkprosent ?
mapperFacade.map(forskuddstrekk, Trekkprosent.class) : null)
.build()
));
}
})
.byDefault()
.register();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ private static void validateSkattekort(SkattekortRequestDTO skattekort) {
.map(ArbeidsgiverSkatt::getArbeidstaker)
.flatMap(Collection::stream)
.map(Skattekortmelding::getSkattekort)
.map(Skattekort::getTrekktype)
.map(Skattekort::getForskuddstrekk)
.flatMap(Collection::stream)
.forEach(trekktype -> {
if (trekktype.isAllEmpty()) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,48 @@
package no.nav.testnav.libs.dto.skattekortservice.v1;

import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Arrays;
import java.util.Objects;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Forskuddstrekk {

private Trekkode trekkode;
private Frikort frikort;
private Trekktabell trekktabell;
private Trekkprosent trekkprosent;

@JsonIgnore
public boolean isAllEmpty() {

return contentsCount() == 0;
}

@JsonIgnore
public boolean isAmbiguous() {

return contentsCount() > 1;
}

private long contentsCount() {

return Arrays.stream(getClass().getDeclaredFields())
.map(field -> {
try {
field.setAccessible(true);
return field.get(this);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
})
.filter(Objects::nonNull)
.count();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,14 @@ public class Skattekort {

private LocalDate utstedtDato;
private Long skattekortidentifikator;
private List<Trekktype> trekktype;
private List<Forskuddstrekk> forskuddstrekk;

public List<Trekktype> getTrekktype() {
public List<Forskuddstrekk> getForskuddstrekk() {

if (isNull(trekktype)) {
trekktype = new ArrayList<>();
if (isNull(forskuddstrekk)) {
forskuddstrekk = new ArrayList<>();
}
return trekktype;

return forskuddstrekk;
}
}
Loading

0 comments on commit eb2174b

Please sign in to comment.