Skip to content
Open
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package no.nav.dolly.domain.dto;

import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import no.nav.dolly.domain.jpa.Testident.Master;

import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@JsonInclude(JsonInclude.Include.NON_NULL)
public class BestillingProgressDTO implements Serializable {

private LocalDateTime sistOppdatert;
private LocalDate bestillingDato;

private Long bestillingId;

private String ident;
private Master master;

private String aaregStatus;
private String arbeidsplassencvStatus;
private String arbeidssoekerregisteretStatus;
private String arenaforvalterStatus;
private String brregstubStatus;
private String dokarkivStatus;
private String etterlatteStatus;
private String feil;
private String fullmaktStatus;
private String histarkStatus;
private String inntektsmeldingStatus;
private String inntektstubStatus;
private String instdataStatus;
private String kelvinAapStatus;
private String kontoregisterStatus;
private String krrstubStatus;
private String medlStatus;
private String nomStatus;
private String pdlForvalterStatus;
private String pdlImportStatus;
private String pdlOrdreStatus;
private String pdlPersonStatus;
private String pensjonforvalterStatus;
private String sigrunstubStatus;
private String skattekortStatus;
private String skjermingsregisterStatus;
private String sykemeldingStatus;
private String udistubStatus;
private String yrkesskadeStatus;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package no.nav.dolly.domain.dto;

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

import java.time.Month;

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

@JsonIgnore
private String aarManed;

private Integer aar;
private Month maaned;
private Integer totaltAntallPersoner;
private Integer nye;
private Integer gjenopprettede;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package no.nav.dolly.domain.projection;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

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

private String maaned;
private Long antall;
private String gjenopprettstatus;
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,18 @@
import lombok.RequiredArgsConstructor;
import no.nav.dolly.domain.dto.DashboardDollyTeamsDTO;
import no.nav.dolly.domain.dto.DashboardOrganisasjonerDTO;
import no.nav.dolly.domain.dto.DashboardOversiktDTO;
import no.nav.dolly.domain.dto.DashboardPersonerDTO;
import no.nav.dolly.domain.dto.DashboardTeamsDTO;
import no.nav.dolly.service.DashboardService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Flux;
import tools.jackson.databind.JsonNode;

import java.time.Month;

@RequestMapping("/api/v1/dashboard")
@RestController
Expand All @@ -26,6 +31,29 @@ public Flux<DashboardPersonerDTO> getDashboardPersoner() {
return dashboardService.getPersonerStatus();
}

@GetMapping(value = "/feil/detaljert")
@Operation(description = "Henter detaljert feilstatus for personer opprettet.")
public Flux<JsonNode> getDashboardFeilDetaljert(@RequestParam int year,
@RequestParam Month month,
@RequestParam int day) {

return dashboardService.getFeilstatusDetaljert(year, month, day);
}

@GetMapping(value = "/feil/summert")
@Operation(description = "Henter summert feilstatus for personer opprettet.")
public Flux<JsonNode> getDashboardFeil(@RequestParam int year, @RequestParam Month month) {

return dashboardService.getFeilstatusSummert(year, month);
}

@GetMapping(value = "/oversikt")
@Operation(description = "Henter tilgjengelige perioder.")
public Flux<DashboardOversiktDTO> getDashboardFeilOversikt() {

return dashboardService.getPerioderOversikt();
}

@GetMapping(value = "/teams")
@Operation(description = "Henter status per team i hht Teamkatalogen og antall unike personer som har bestilt. Gjelder AZURE-brukere.")
public Flux<DashboardTeamsDTO> getDashboardTeams() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,6 @@
@ControllerAdvice
public class HttpExceptionAdvice extends DefaultErrorWebExceptionHandler {

private static final String GATEWAY_ORIGINAL_REQUEST_URL = "org.springframework.web.reactive.HandlerMapping.pathWithinHandlerMapping";

public HttpExceptionAdvice(ErrorAttributes errorAttributes,
WebProperties webProperties,
ErrorProperties errorProperties,
Expand All @@ -47,7 +45,7 @@ private ExceptionInformation informationForException(RuntimeException exception,
.error(status.getReasonPhrase())
.status(status.value())
.message(exception.getMessage())
.path(serverWebExchange.getAttribute(GATEWAY_ORIGINAL_REQUEST_URL))
.path(serverWebExchange.getRequest().getURI().getPath())
.timestamp(LocalDateTime.now())
.build();
log.warn("HttpException: {}", exceptionInfo);
Expand Down Expand Up @@ -86,12 +84,12 @@ ExceptionInformation notFoundRequest(ServerWebExchange serverWebExchange, Runtim
@ExceptionHandler(Exception.class)
@ResponseStatus(value = HttpStatus.INTERNAL_SERVER_ERROR)
ExceptionInformation internalServerError(ServerWebExchange serverWebExchange, Exception exception) {
log.error("Uventet feil ved request til {}", serverWebExchange.getAttribute(GATEWAY_ORIGINAL_REQUEST_URL), exception);
log.error("Uventet feil ved request til {}", serverWebExchange.getRequest().getURI().getPath(), exception);
return ExceptionInformation.builder()
.error(HttpStatus.INTERNAL_SERVER_ERROR.getReasonPhrase())
.status(HttpStatus.INTERNAL_SERVER_ERROR.value())
.message(exception.getMessage())
.path(serverWebExchange.getAttribute(GATEWAY_ORIGINAL_REQUEST_URL))
.path(serverWebExchange.getRequest().getURI().getPath())
.timestamp(LocalDateTime.now())
.build();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,4 +52,15 @@ where bp.bestilling_id in (select b.id

@Query(value = "select * from bestilling_progress where id = :id for update")
Mono<BestillingProgress> findByIdAndLock(@Param("id") Long id);

@Query("""
SELECT DISTINCT column_name
FROM information_schema.columns
WHERE table_name = 'bestilling_progress'
AND column_name LIKE '%status%'
AND column_name NOT LIKE 'tps_messaging_status'
OR column_name = 'feil'
ORDER BY column_name;
Comment thread
krharum marked this conversation as resolved.
Outdated
""")
Flux<String> findStatusColumns();
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import no.nav.dolly.domain.projection.BestillingerFragment;
import no.nav.dolly.domain.projection.DollyTeamFragment;
import no.nav.dolly.domain.projection.OrganisasjonFragment;
import no.nav.dolly.domain.projection.OversiktFragment;
import no.nav.dolly.domain.projection.RsBestillingFragment;
import no.nav.dolly.domain.projection.TeamFragment;
import org.springframework.data.domain.Pageable;
Expand Down Expand Up @@ -203,4 +204,20 @@ select count(*) antall, to_char(b.sist_oppdatert, 'YYYY-MM') interval,
order by interval desc;
""")
Flux<DollyTeamFragment> findBestillingerForDollyTeamsOrderBySistOppdatert();

@Query("""
SELECT TO_CHAR(b.sist_oppdatert, 'YYYY-MM') maaned,
COUNT(*) antall,
CASE
when b.opprettet_fra_id is not null then 'GJENOPPRETTING'
when b.gjenopprettet_fra_ident is not null then 'GJENOPPRETTING'
when b.opprett_fra_gruppe is not null then 'GJENOPPRETTING'
else 'NYBESTILLING'
END gjenopprettStatus
FROM bestilling b
JOIN bestilling_progress bp ON b.id = bp.bestilling_id
GROUP BY maaned, gjenopprettStatus
ORDER BY maaned DESC;
""")
Flux<OversiktFragment> findByAvailIntervals();
}
Loading
Loading