From 9df86164234ea2a43b89f467497074aa8792bdda Mon Sep 17 00:00:00 2001 From: Christian Date: Mon, 8 Jul 2024 10:50:18 +0200 Subject: [PATCH 1/4] feat(aem): object for export - AEMTable export for the main object - Companion with ListOfActions --- .../entities/aem/AEMCulturalMaritime.kt | 4 + .../domain/entities/aem/AEMEnvTraffic.kt | 4 + .../domain/entities/aem/AEMIllegalFish.kt | 4 + .../entities/aem/AEMIllegalImmigration.kt | 4 + .../domain/entities/aem/AEMMigrationRescue.kt | 50 ++++ .../aem/AEMNotPollutionControlSurveillance.kt | 4 + .../entities/aem/AEMOutOfMigrationRescue.kt | 32 +++ .../aem/AEMPollutionControlSurveillance.kt | 4 + .../domain/entities/aem/AEMSeaSafety.kt | 11 + .../entities/aem/AEMSovereignProtect.kt | 9 + .../domain/entities/aem/AEMTableExport.kt | 235 ++++++++++++++++++ .../domain/entities/aem/AEMVesselRescue.kt | 39 +++ 12 files changed, 400 insertions(+) create mode 100644 backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMCulturalMaritime.kt create mode 100644 backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMEnvTraffic.kt create mode 100644 backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMIllegalFish.kt create mode 100644 backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMIllegalImmigration.kt create mode 100644 backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMMigrationRescue.kt create mode 100644 backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMNotPollutionControlSurveillance.kt create mode 100644 backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMOutOfMigrationRescue.kt create mode 100644 backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMPollutionControlSurveillance.kt create mode 100644 backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMSeaSafety.kt create mode 100644 backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMSovereignProtect.kt create mode 100644 backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMTableExport.kt create mode 100644 backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMVesselRescue.kt diff --git a/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMCulturalMaritime.kt b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMCulturalMaritime.kt new file mode 100644 index 00000000..39657f11 --- /dev/null +++ b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMCulturalMaritime.kt @@ -0,0 +1,4 @@ +package fr.gouv.dgampa.rapportnav.domain.entities.aem + +class AEMCulturalMaritime { +} diff --git a/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMEnvTraffic.kt b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMEnvTraffic.kt new file mode 100644 index 00000000..e1ffd5ba --- /dev/null +++ b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMEnvTraffic.kt @@ -0,0 +1,4 @@ +package fr.gouv.dgampa.rapportnav.domain.entities.aem + +class AEMEnvTraffic { +} diff --git a/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMIllegalFish.kt b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMIllegalFish.kt new file mode 100644 index 00000000..27d89430 --- /dev/null +++ b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMIllegalFish.kt @@ -0,0 +1,4 @@ +package fr.gouv.dgampa.rapportnav.domain.entities.aem + +class AEMIllegalFish { +} diff --git a/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMIllegalImmigration.kt b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMIllegalImmigration.kt new file mode 100644 index 00000000..382283ee --- /dev/null +++ b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMIllegalImmigration.kt @@ -0,0 +1,4 @@ +package fr.gouv.dgampa.rapportnav.domain.entities.aem + +class AEMIllegalImmigration { +} diff --git a/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMMigrationRescue.kt b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMMigrationRescue.kt new file mode 100644 index 00000000..48807286 --- /dev/null +++ b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMMigrationRescue.kt @@ -0,0 +1,50 @@ +package fr.gouv.dgampa.rapportnav.domain.entities.aem + +import fr.gouv.dgampa.rapportnav.domain.entities.mission.nav.action.ActionRescueEntity +import java.time.ZonedDateTime + +data class AEMMigrationRescue( + val nbrOfHourInSea: Int, // 1.2.1 + val nbrOfOperation: Int?,// 1.2.3 + val nbrOfVesselsTrackedWithoutIntervention: Int, //1.2.4 + val nbrAssistedVesselsReturningToShore: Int?, //1.2.5 + val nbrPersonsRescued: Int?, + val nbrOfRescuedOperation: Int?,// 1.2.3 +) { + constructor( + actionRescues: List + ) : this( + nbrOfHourInSea = AEMMigrationRescue.processNbrOfHourInSea(actionRescues), + nbrPersonsRescued = AEMMigrationRescue.processNbrPersonsRescued(actionRescues), + nbrOfOperation = 0, //TODO: Define correctly what that means + nbrOfVesselsTrackedWithoutIntervention = AEMMigrationRescue.processNbrOfVesselsTrackedWithoutIntervention(actionRescues), + nbrAssistedVesselsReturningToShore = AEMMigrationRescue.processAssistedVesselsReturningToShore(actionRescues), + nbrOfRescuedOperation = actionRescues.size, + ) { + + } + + companion object { + fun processNbrOfHourInSea(actionRescues: List): Int { + //startDateTimeUtc = actionRescue.startDateTimeUtc, + //endDateTimeUtc = actionRescue.endDateTimeUtc + return 0; + } + + fun processNbrPersonsRescued(actionRescues: List): Int { + //Reduce Action with SUM OF actionRescues.numberPersonsRescued + return 0; + } + + fun processNbrOfVesselsTrackedWithoutIntervention(actionRescues: List): Int { + //Reduce Action with SUM OF actionRescues.numberPersonsRescued + return 0; + } + + fun processAssistedVesselsReturningToShore(actionRescues: List): Int { + //Reduce Action with SUM OF actionRescues.numberPersonsRescued + return 0; + } + } + +} diff --git a/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMNotPollutionControlSurveillance.kt b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMNotPollutionControlSurveillance.kt new file mode 100644 index 00000000..7779f24e --- /dev/null +++ b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMNotPollutionControlSurveillance.kt @@ -0,0 +1,4 @@ +package fr.gouv.dgampa.rapportnav.domain.entities.aem + +class AEMNotPollutionControlSurveillance { +} diff --git a/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMOutOfMigrationRescue.kt b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMOutOfMigrationRescue.kt new file mode 100644 index 00000000..fed7528e --- /dev/null +++ b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMOutOfMigrationRescue.kt @@ -0,0 +1,32 @@ +package fr.gouv.dgampa.rapportnav.domain.entities.aem + +import fr.gouv.dgampa.rapportnav.domain.entities.mission.nav.action.ActionRescueEntity + +data class AEMOutOfMigrationRescue( + val nbrOfHourInSea: Int, //1.1.1 + val nbrOfRescuedOperation: Int?, //1.1.3. + val nbrPersonsRescued: Int?, //1.1.4 +) { + constructor( + actionRescues: List + ) : this( + nbrOfHourInSea = AEMOutOfMigrationRescue.processNbrOfHourInSea(actionRescues), + nbrOfRescuedOperation = actionRescues.size, + nbrPersonsRescued = AEMOutOfMigrationRescue.processNbrPersonsRescued(actionRescues) + ) { + + } + companion object { + fun processNbrOfHourInSea(actionRescues: List): Int { + //startDateTimeUtc = actionRescue.startDateTimeUtc, + //endDateTimeUtc = actionRescue.endDateTimeUtc + return 0; + } + + fun processNbrPersonsRescued(actionRescues: List): Int { + //Reduce Action with SUM OF actionRescues.numberPersonsRescued + return 0; + } + } + +} diff --git a/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMPollutionControlSurveillance.kt b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMPollutionControlSurveillance.kt new file mode 100644 index 00000000..d1931fd4 --- /dev/null +++ b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMPollutionControlSurveillance.kt @@ -0,0 +1,4 @@ +package fr.gouv.dgampa.rapportnav.domain.entities.aem + +class AEMPollutionControlSurveillance { +} diff --git a/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMSeaSafety.kt b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMSeaSafety.kt new file mode 100644 index 00000000..d3e512bc --- /dev/null +++ b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMSeaSafety.kt @@ -0,0 +1,11 @@ +package fr.gouv.dgampa.rapportnav.domain.entities.aem + +import fr.gouv.dgampa.rapportnav.domain.entities.mission.nav.action.* + +data class AEMSeaSafety ( + val vigimerActions: List, + val nauticalActions: List, + val baaemActions: List, + val publicActions: List +){ +} diff --git a/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMSovereignProtect.kt b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMSovereignProtect.kt new file mode 100644 index 00000000..41a5cd13 --- /dev/null +++ b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMSovereignProtect.kt @@ -0,0 +1,9 @@ +package fr.gouv.dgampa.rapportnav.domain.entities.aem + +import fr.gouv.dgampa.rapportnav.domain.entities.mission.nav.action.ActionStatusEntity + +data class AEMSovereignProtect ( + val anchoredActions: List, + val navigationActions: List +){ +} diff --git a/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMTableExport.kt b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMTableExport.kt new file mode 100644 index 00000000..521379d5 --- /dev/null +++ b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMTableExport.kt @@ -0,0 +1,235 @@ +package fr.gouv.dgampa.rapportnav.domain.entities.aem + +import fr.gouv.dgampa.rapportnav.domain.entities.mission.MissionActionEntity +import fr.gouv.dgampa.rapportnav.domain.entities.mission.nav.action.* +import fr.gouv.dgampa.rapportnav.domain.entities.mission.nav.status.ActionStatusType +import org.slf4j.LoggerFactory + +data class AEMTableExport( + val outOfMigrationRescue: AEMOutOfMigrationRescue?, //1.1 + val migrationRescue: AEMMigrationRescue?, //1.2 + val vesselRescue: AEMVesselRescue?, // 2 + val envTraffic: AEMEnvTraffic?, // 3.3 + val illegalImmigration: AEMIllegalImmigration?, // 3.4 + val notPollutionControlSurveillance: AEMNotPollutionControlSurveillance?, //4.1 + val pollutionControlSurveillance: AEMPollutionControlSurveillance?, // 4.2 + val illegalFish: AEMIllegalFish?, // 4.3 + val culturalMaritime: AEMCulturalMaritime?, //4.4 + val seaSafety: AEMSeaSafety?, // 5. + val sovereignProtect: AEMSovereignProtect? // 7. +) { + private val logger = LoggerFactory.getLogger(AEMTableExport::class.java) + + companion object { + fun fromMissionAction(actions: List): AEMTableExport { + val navActions = actions.filterIsInstance().map { it.navAction }; + val envActions = actions.filterIsInstance().map { it.envAction }; + val fishActions = actions.filterIsInstance().map { it.fishAction }; + + return AEMTableExport( + migrationRescue = AEMTableExport.getMigrationRescue(navActions), //actionRescues + outOfMigrationRescue = AEMTableExport.getOutOfMigrationRescue(navActions), //actionRescues + vesselRescue = AEMTableExport.getVesselRescue(navActions), //actionRescues + envTraffic = AEMTableExport.getAgainstTraffic(envActions), //envActions + illegalImmigration = AEMTableExport.getIllegalImmigration(navActions), //illegalImmigrationActions + notPollutionControlSurveillance = AEMTableExport.getNotPollutionControlSurveillance(envActions), //envActions + pollutionControlSurveillance = AEMTableExport.getPollutionControlSurveillance( + navActions, + envActions + ), //antiPollutionActions + illegalFish = AEMTableExport.getIllegalFish(fishActions), //fishActions + culturalMaritime = AEMTableExport.getCulturalMaritime(envActions), //envActions + seaSafety = AEMTableExport.getSeaSafety(navActions), //vigimerActions, publicOrderActions, nauticalActions, baaempActions + sovereignProtect = AEMTableExport.getSovereignProtect(navActions) + ) + } + + private fun getMigrationRescue(navActions: List): AEMMigrationRescue { + val actions = navActions.filter { it.rescueAction != null && it.rescueAction.isMigrationRescue == true } + .map { action -> action.rescueAction }; + return AEMMigrationRescue(actions); + } + + private fun getOutOfMigrationRescue(navActions: List): AEMOutOfMigrationRescue { + val actions = navActions.filter { it.rescueAction != null && it.rescueAction.isMigrationRescue != true } + .map { action -> action.rescueAction }; + return AEMOutOfMigrationRescue(actions); + } + + private fun getVesselRescue(navActions: List): AEMVesselRescue { + val actions = navActions.filter { it.rescueAction != null && it.rescueAction.isVesselRescue == true } + .map { action -> action.rescueAction }; + return AEMVesselRescue(actions); + } + + private fun getAgainstTraffic(actions: List): AEMEnvTraffic { + return AEMEnvTraffic(); + /** + * + * 3.3.1 Nombre d’heures de mer Contrôle + surveillance thématique "espèces protégées" - importé de MonitorEnv Durée (date et heure de début et fin) + * 3.3.3 Nombre de navires ou embarcations déroutés ou saisis en mer Contrôle + surveillance thématique "espèces protégées" - importé de MonitorEnv Nombre de navires déroutés + * 3.3.4 Nombre de saisies Contrôle + surveillance thématique "espèces protégées" - importé de MonitorEnv Nb infractions ? + */ + /** + * + * 3.3.1 Nombre d’heures de mer Contrôle + surveillance thématique "espèces protégées" - importé de MonitorEnv Durée (date et heure de début et fin) + * 3.3.3 Nombre de navires ou embarcations déroutés ou saisis en mer Contrôle + surveillance thématique "espèces protégées" - importé de MonitorEnv Nombre de navires déroutés + * 3.3.4 Nombre de saisies Contrôle + surveillance thématique "espèces protégées" - importé de MonitorEnv Nb infractions ? + */ + } + + private fun getIllegalImmigration(navActions: List): AEMIllegalImmigration { + val actions = navActions.filter { it.illegalImmigrationAction != null } + .map { action -> action.illegalImmigrationAction }; + return AEMIllegalImmigration(); //AEMVesselRescue(actionRescues.filter { it.isVesselRescue == true }); + /** + * + * 3.4.1 Nombre d’heures de mer Autre activité de mission + Opération de lutte contre l'immigration illégale Durée (date et heure de début et fin) + * 3.4.3 Nombre de navires/embarcations interceptés Autre activité de mission + Opération de lutte contre l'immigration illégale Champ nombre "Nb de navires / embarcations interceptés" + * 3.4.4 Nombre de migrants interceptés  Autre activité de mission + Opération de lutte contre l'immigration illégale Champ nombre "Nb de migrants interceptés" + * 3.4.5 Nombre de passeurs présumés interceptés Autre activité de mission + Opération de lutte contre l'immigration illégale Champ nombre "Nb de passeurs présumés" + */ + /** + * + * 3.4.1 Nombre d’heures de mer Autre activité de mission + Opération de lutte contre l'immigration illégale Durée (date et heure de début et fin) + * 3.4.3 Nombre de navires/embarcations interceptés Autre activité de mission + Opération de lutte contre l'immigration illégale Champ nombre "Nb de navires / embarcations interceptés" + * 3.4.4 Nombre de migrants interceptés  Autre activité de mission + Opération de lutte contre l'immigration illégale Champ nombre "Nb de migrants interceptés" + * 3.4.5 Nombre de passeurs présumés interceptés Autre activité de mission + Opération de lutte contre l'immigration illégale Champ nombre "Nb de passeurs présumés" + */ + } + + private fun getNotPollutionControlSurveillance(envActions: List): AEMNotPollutionControlSurveillance { + /** + * 4.1.1 Nombre d'heures de mer de surveillance ou de contrôle pour la protection de l'environnement (hors rejets illicites) Contrôle + surveillance hors thématique "Rejets illicites" - importé de MonitorEnv Durée (date et heure de début et fin) + * 4.1.3 Nombre d'opérations de surveillance ou de contrôles (hors rejets illicites) Contrôle + surveillance hors thématique "Rejets illicites" - importé de MonitorEnv Nb Action + * 4.1.4 Nombre d’infractions à la réglementation relative à la protection de l'environnement en mer (hors rejets illicites) Contrôle hors thématique "Rejets illicites" - importé de MonitorEnv Champ infraction - issu des contrôles MonitorEnv + * 4.1.5 Nombre de Procès-Verbaux dressés en mer (hors rejets illicites) Contrôle hors thématique "Rejets illicites" - importé de MonitorEnv Champ infraction + bouton radio "avec PV" + */ + /** + * 4.1.1 Nombre d'heures de mer de surveillance ou de contrôle pour la protection de l'environnement (hors rejets illicites) Contrôle + surveillance hors thématique "Rejets illicites" - importé de MonitorEnv Durée (date et heure de début et fin) + * 4.1.3 Nombre d'opérations de surveillance ou de contrôles (hors rejets illicites) Contrôle + surveillance hors thématique "Rejets illicites" - importé de MonitorEnv Nb Action + * 4.1.4 Nombre d’infractions à la réglementation relative à la protection de l'environnement en mer (hors rejets illicites) Contrôle hors thématique "Rejets illicites" - importé de MonitorEnv Champ infraction - issu des contrôles MonitorEnv + * 4.1.5 Nombre de Procès-Verbaux dressés en mer (hors rejets illicites) Contrôle hors thématique "Rejets illicites" - importé de MonitorEnv Champ infraction + bouton radio "avec PV" + */ + return AEMNotPollutionControlSurveillance(); + } + + private fun getPollutionControlSurveillance( + navActions: List, + envActions: List + ): AEMPollutionControlSurveillance { + val actions = + navActions.filter { it.antiPollutionAction != null }.map { action -> action.antiPollutionAction }; + return AEMPollutionControlSurveillance(); //AEMVesselRescue(actionRescues.filter { it.isVesselRescue == true }); + /** + * 4.2.1 Nombre d'heures de mer (surveillance et lutte) Contrôle + surveillance thématique "Rejets illicites" - importé de MonitorEnv + autre activité de mission / opération de lutte anti-pollution Durée (date et heure de début et fin) + * 4.2.3 Participation à une opération de lutte ANTIPOL en mer (simple brassage) Autre activité de mission / opération de lutte anti-pollution Toggle simple brassage + * 4.2.4 Déploiement d’un dispositif de lutte anti-pollution en mer (dispersant, barrage, etc…) Autre activité de mission / opération de lutte anti-pollution Toggle déploiement de dispositif + * 4.2.5 Nombre d’infractions constatées Contrôle + surveillance thématique "Rejets illicites" - importé de MonitorEnv Champ infraction - issu des contrôles MonitorEnv + * 4.2.6 Nombre de procès-verbaux dressés Contrôle + surveillance thématique "Rejets illicites" - importé de MonitorEnv Champ infraction + bouton radio "avec PV" + * 4.2.7 Nombre de déroutements effectués Contrôle + surveillance thématique "Rejets illicites" - importé de MonitorEnv + autre activité de mission / opération de lutte anti-pollution à ajouter dans MonitorEnv / Rapp Nav case à cocher "déroutement effectué" + * 4.2.8 Nombre de pollutions détectées et/ou constatées par un agent habilité Contrôle + surveillance thématique "Rejets illicites" - importé de MonitorEnv + autre activité de mission / opération de lutte anti-pollution à ajouter dans MonitorEnv / Rapp Nav case à cocher "Pollution constatée par un agent habilité" + */ + /** + * 4.2.1 Nombre d'heures de mer (surveillance et lutte) Contrôle + surveillance thématique "Rejets illicites" - importé de MonitorEnv + autre activité de mission / opération de lutte anti-pollution Durée (date et heure de début et fin) + * 4.2.3 Participation à une opération de lutte ANTIPOL en mer (simple brassage) Autre activité de mission / opération de lutte anti-pollution Toggle simple brassage + * 4.2.4 Déploiement d’un dispositif de lutte anti-pollution en mer (dispersant, barrage, etc…) Autre activité de mission / opération de lutte anti-pollution Toggle déploiement de dispositif + * 4.2.5 Nombre d’infractions constatées Contrôle + surveillance thématique "Rejets illicites" - importé de MonitorEnv Champ infraction - issu des contrôles MonitorEnv + * 4.2.6 Nombre de procès-verbaux dressés Contrôle + surveillance thématique "Rejets illicites" - importé de MonitorEnv Champ infraction + bouton radio "avec PV" + * 4.2.7 Nombre de déroutements effectués Contrôle + surveillance thématique "Rejets illicites" - importé de MonitorEnv + autre activité de mission / opération de lutte anti-pollution à ajouter dans MonitorEnv / Rapp Nav case à cocher "déroutement effectué" + * 4.2.8 Nombre de pollutions détectées et/ou constatées par un agent habilité Contrôle + surveillance thématique "Rejets illicites" - importé de MonitorEnv + autre activité de mission / opération de lutte anti-pollution à ajouter dans MonitorEnv / Rapp Nav case à cocher "Pollution constatée par un agent habilité" + */ + } + + private fun getIllegalFish(fishActions: List): AEMIllegalFish { + return AEMIllegalFish(); //AEMVesselRescue(actionRescues.filter { it.isVesselRescue == true }); + /** + * + * 4.3.1 Nombre d’heures de mer (surveillance/police des pêches) : formulaire importé de MonitorFish Durée (date et heure de début et fin) + * 4.3.3 nombre d'opérations POLPECHE formulaire importé de MonitorFish Nb action + * 4.3.5 Nombre de navires inspectés en mer (montée à bord) formulaire importé de MonitorFish Nb action + * 4.3.6 Nombre de procès-verbaux dressés en mer (législation pêche) formulaire importé de MonitorFish Champ infraction + champ PV + * 4.3.7 Nombre d'infractions constatées en mer formulaire importé de MonitorFish Champ infraction + * 4.3.8 Nombre de navires accompagnés ou déroutés formulaire importé de MonitorFish Case à cocher "Appréhension et déroutement" + * 4.3.9 Quantité de produits de la pêche saisis en mer(en kg) formulaire importé de MonitorFish Somme des champs quantitées déclarées rubrique "espèces à bord" du formulaire Fish + */ + /** + * + * 4.3.1 Nombre d’heures de mer (surveillance/police des pêches) : formulaire importé de MonitorFish Durée (date et heure de début et fin) + * 4.3.3 nombre d'opérations POLPECHE formulaire importé de MonitorFish Nb action + * 4.3.5 Nombre de navires inspectés en mer (montée à bord) formulaire importé de MonitorFish Nb action + * 4.3.6 Nombre de procès-verbaux dressés en mer (législation pêche) formulaire importé de MonitorFish Champ infraction + champ PV + * 4.3.7 Nombre d'infractions constatées en mer formulaire importé de MonitorFish Champ infraction + * 4.3.8 Nombre de navires accompagnés ou déroutés formulaire importé de MonitorFish Case à cocher "Appréhension et déroutement" + * 4.3.9 Quantité de produits de la pêche saisis en mer(en kg) formulaire importé de MonitorFish Somme des champs quantitées déclarées rubrique "espèces à bord" du formulaire Fish + */ + } + + fun getCulturalMaritime(envActions: List): AEMCulturalMaritime { + return AEMCulturalMaritime(); //AEMVesselRescue(actionRescues.filter { it.isVesselRescue == true }); + /** + * 4.4.1 Nombre d’heures de mer Contrôle + surveillance thématique "Bien culturel maritime" - importé de MonitorEnv Durée (date et heure de début et fin) + * 4.4.2 Nombre d’opérations scientifiques Contrôle + surveillance thématique "Autre" / SS thém. "Campagne scientifique" - importé de MonitorEnv Nb action + * 4.4.3 Nombre d’opération de police des BCM Contrôle + surveillance thématique "Bien culturel maritime" - importé de MonitorEnv Nb action + * */ + /** + * 4.4.1 Nombre d’heures de mer Contrôle + surveillance thématique "Bien culturel maritime" - importé de MonitorEnv Durée (date et heure de début et fin) + * 4.4.2 Nombre d’opérations scientifiques Contrôle + surveillance thématique "Autre" / SS thém. "Campagne scientifique" - importé de MonitorEnv Nb action + * 4.4.3 Nombre d’opération de police des BCM Contrôle + surveillance thématique "Bien culturel maritime" - importé de MonitorEnv Nb action + * */ + } + + private fun getSeaSafety(navActions: List): AEMSeaSafety { + val vigimerActions = + navActions.filter { it.vigimerAction != null }.map { action -> action.vigimerAction }; + val nauticalActions = + navActions.filter { it.nauticalEventAction != null }.map { action -> action.nauticalEventAction }; + val baaemActions = + navActions.filter { it.baaemPermanenceAction != null }.map { action -> action.baaemPermanenceAction }; + val publicActions = + navActions.filter { it.publicOrderAction != null }.map { action -> action.publicOrderAction }; + return AEMSeaSafety( + baaemActions = baaemActions, + publicActions = publicActions, + vigimerActions = vigimerActions, + nauticalActions = nauticalActions, + ); + + /** + * 5.1 Nombre d'heures de mer sureté maritime (y compris Vigipirate-mer)   Autre activité de mission + Permanence Vigimer / Surveillance manifestations nautiques / Maintien de l'ordre public en mer / BAAEM Durée (date et heure de début et fin) + * 5.3 Nombre d'heures de mer de maintien de l'ordre public en mer Autre activité de mission + Maintien de l'ordre public en mer Durée (date et heure de début et fin) + * 5.4 Nombre d'opérations de maintien de l'ordre public en mer Autre activité de mission + Maintien de l'ordre public en mer Nb action + * */ + + /** + * 5.1 Nombre d'heures de mer sureté maritime (y compris Vigipirate-mer)   Autre activité de mission + Permanence Vigimer / Surveillance manifestations nautiques / Maintien de l'ordre public en mer / BAAEM Durée (date et heure de début et fin) + * 5.3 Nombre d'heures de mer de maintien de l'ordre public en mer Autre activité de mission + Maintien de l'ordre public en mer Durée (date et heure de début et fin) + * 5.4 Nombre d'opérations de maintien de l'ordre public en mer Autre activité de mission + Maintien de l'ordre public en mer Nb action + * */ + } + + private fun getSovereignProtect(navActions: List): AEMSovereignProtect { + val anchoredActions = + navActions.filter { it.statusAction != null }.map { action -> action.statusAction } + .filter { it?.status == ActionStatusType.ANCHORED }; + val navigationActions = + navActions.filter { it.statusAction != null }.map { action -> action.statusAction } + .filter { it?.status == ActionStatusType.NAVIGATING }; + return AEMSovereignProtect(anchoredActions = anchoredActions, navigationActions = navigationActions); + /** + * + * 7.1 Nombre d’heures de mer de surveillance générale des approches maritimes (ZEE) Statuts navire Totalité de la durée des statuts navigation et mouillage sur la mission + * 7.3 Nombre total de navires reconnus dans les approches maritimes (ZEE) Volet de gauche rapport Champ "compteur" : Nombre total de navires reconnus dans les approches maritimes (ZEE)* + * 7.4 Nombre de contrôles en mer de navires (toutes zones) Ensemble des contrôles sur navires Totalité des navires contrôlés : Fish + contrôles unités RPN + contrôles Env avec type de cible navire + */ + /** + * + * 7.1 Nombre d’heures de mer de surveillance générale des approches maritimes (ZEE) Statuts navire Totalité de la durée des statuts navigation et mouillage sur la mission + * 7.3 Nombre total de navires reconnus dans les approches maritimes (ZEE) Volet de gauche rapport Champ "compteur" : Nombre total de navires reconnus dans les approches maritimes (ZEE)* + * 7.4 Nombre de contrôles en mer de navires (toutes zones) Ensemble des contrôles sur navires Totalité des navires contrôlés : Fish + contrôles unités RPN + contrôles Env avec type de cible navire + */ + } + + + } +} diff --git a/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMVesselRescue.kt b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMVesselRescue.kt new file mode 100644 index 00000000..4b2dd7cd --- /dev/null +++ b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMVesselRescue.kt @@ -0,0 +1,39 @@ +package fr.gouv.dgampa.rapportnav.domain.entities.aem + +import fr.gouv.dgampa.rapportnav.domain.entities.mission.nav.action.ActionRescueEntity + +class AEMVesselRescue ( + val nbrOfHourInSea: Int, // 2.1 + val nbrOfRescuedOperation: Int?,// 2.3 + val nbrOfNoticedVessel: Int?, // 2.4 + val nbrOfTowedVessel: Int?, //2.5 +){ + constructor( + actionRescues: List + ) : this( + nbrOfHourInSea = AEMVesselRescue.processNbrOfHourInSea(actionRescues), + nbrOfRescuedOperation = actionRescues.size, + nbrOfNoticedVessel = AEMVesselRescue.processNbrOfNoticedVessel(actionRescues), + nbrOfTowedVessel = AEMVesselRescue.processNbrOfNoticedVessel(actionRescues) + ) { + + } + + companion object { + fun processNbrOfHourInSea(actionRescues: List): Int { + //startDateTimeUtc = actionRescue.startDateTimeUtc, + //endDateTimeUtc = actionRescue.endDateTimeUtc + return 0; + } + + fun processNbrOfNoticedVessel(actionRescues: List): Int { + //Reduce Action with SUM OF actionRescues.isVesselNoticed + return 0; + } + + fun processNbrOfTowedVessel(actionRescues: List): Int { + //Reduce Action with SUM OF actionRescues.isVesselTowed + return 0; + } + } +} From 65f68e343908397dc6f91f789cc7e054ec7c747a Mon Sep 17 00:00:00 2001 From: Christian Date: Mon, 8 Jul 2024 15:36:23 +0200 Subject: [PATCH 2/4] feat(aem): export cell object - Update export cell objects and mapping --- .../entities/aem/AEMCulturalMaritime.kt | 35 ++- .../domain/entities/aem/AEMEnvTraffic.kt | 36 ++- .../domain/entities/aem/AEMIllegalFish.kt | 64 ++++- .../entities/aem/AEMIllegalImmigration.kt | 58 ++++- .../domain/entities/aem/AEMMigrationRescue.kt | 21 +- .../aem/AEMNotPollutionControlSurveillance.kt | 43 +++- .../entities/aem/AEMOutOfMigrationRescue.kt | 9 +- .../aem/AEMPollutionControlSurveillance.kt | 65 ++++- .../domain/entities/aem/AEMSeaSafety.kt | 40 ++- .../entities/aem/AEMSovereignProtect.kt | 47 +++- .../domain/entities/aem/AEMTableExport.kt | 240 ++++-------------- .../domain/entities/aem/AEMVesselRescue.kt | 18 +- 12 files changed, 449 insertions(+), 227 deletions(-) diff --git a/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMCulturalMaritime.kt b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMCulturalMaritime.kt index 39657f11..e0ca6db2 100644 --- a/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMCulturalMaritime.kt +++ b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMCulturalMaritime.kt @@ -1,4 +1,37 @@ package fr.gouv.dgampa.rapportnav.domain.entities.aem -class AEMCulturalMaritime { +import fr.gouv.dgampa.rapportnav.domain.entities.mission.nav.action.* + +data class AEMCulturalMaritime ( + val nbrOfHourInSea: Int, //4.4.1 + val nbrOfScientificOperation: Int, // 4.4.2 + val nbrOfBCMPoliceOperation: Int, // 4.4.3 +) { + constructor( + envActions: List + ) : this( + nbrOfHourInSea = AEMCulturalMaritime.getNbrOfHourInSea(envActions), + nbrOfScientificOperation = AEMCulturalMaritime.getNbrOfScientificOperation(envActions), + nbrOfBCMPoliceOperation = AEMCulturalMaritime.getNbrOfBCMPoliceOperation(envActions), + ) { + } + companion object { + fun getNbrOfHourInSea(envActions: List): Int { + //startDateTimeUtc = actionRescue.startDateTimeUtc, + //endDateTimeUtc = actionRescue.endDateTimeUtc + return 0; + } + + fun getNbrOfScientificOperation(envActions: List): Int { + //Reduce Action with SUM OF actionRescues.numberPersonsRescued + return 0; + } + + fun getNbrOfBCMPoliceOperation(envActions: List): Int { + //Reduce Action with SUM OF actionRescues.numberPersonsRescued + return 0; + } + + } } + diff --git a/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMEnvTraffic.kt b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMEnvTraffic.kt index e1ffd5ba..2c408de9 100644 --- a/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMEnvTraffic.kt +++ b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMEnvTraffic.kt @@ -1,4 +1,38 @@ package fr.gouv.dgampa.rapportnav.domain.entities.aem -class AEMEnvTraffic { +import fr.gouv.dgampa.rapportnav.domain.entities.mission.nav.action.ActionRescueEntity +import fr.gouv.dgampa.rapportnav.domain.entities.mission.nav.action.ExtendedEnvActionEntity + +data class AEMEnvTraffic( + val nbrOfHourInSea: Int, //3.3.1 + val nbrOfRedirectShip: Int, // 3.3.3 + val nbrOfSeizure: Int // 3.3.4 +) { + constructor( + envActions: List + ) : this( + nbrOfHourInSea = AEMEnvTraffic.getNbrOfHourInSea(envActions), + nbrOfRedirectShip = AEMEnvTraffic.getNbrRedirectShip(envActions), + nbrOfSeizure = AEMEnvTraffic.getNbrOfSeizure(envActions) + ) { + + } + companion object { + fun getNbrOfHourInSea(envActions: List): Int { + //startDateTimeUtc = actionRescue.startDateTimeUtc, + //endDateTimeUtc = actionRescue.endDateTimeUtc + return 0; + } + + fun getNbrRedirectShip(envActions: List): Int { + //Reduce Action with SUM OF actionRescues.numberPersonsRescued + return 0; + } + + fun getNbrOfSeizure(envActions: List): Int { + //Reduce Action with SUM OF actionRescues.numberPersonsRescued + return 0; + } + + } } diff --git a/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMIllegalFish.kt b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMIllegalFish.kt index 27d89430..2583df7d 100644 --- a/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMIllegalFish.kt +++ b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMIllegalFish.kt @@ -1,4 +1,66 @@ package fr.gouv.dgampa.rapportnav.domain.entities.aem -class AEMIllegalFish { +import fr.gouv.dgampa.rapportnav.domain.entities.mission.nav.action.* + +data class AEMIllegalFish( + val nbrOfHourInSea: Int, //4.3.1 + val nbrOfPolFishAction: Int, // 4.1.3 + val nbrOfTargetedVessel: Int, // 4.1.4 + val nbrOfInfraction: Int, // 4.1.5 + val nbrOfInfractionWithPV: Int, // 4.1.5 + val nbrOfTowedVessel: Int, // 4.3.8 + val quantityOfFish: Int //4.3.9 +) { + constructor( + fishActions: List + ) : this( + nbrOfHourInSea = AEMIllegalFish.getNbrOfHourInSea(fishActions), + nbrOfPolFishAction = AEMIllegalFish.getNbrOfPolFishAction(fishActions), + nbrOfTargetedVessel = AEMIllegalFish.getNbrOfTargetedVessel(fishActions), + nbrOfInfraction = AEMIllegalFish.getNbrOfInfraction(fishActions), + nbrOfInfractionWithPV = AEMIllegalFish.getNbrOfInfractionWithPV(fishActions), + nbrOfTowedVessel = AEMIllegalFish.getNbrOfTowedVessel(fishActions), + quantityOfFish = AEMIllegalFish.getQuantityOfFish(fishActions) + ) { + + } + + companion object { + fun getNbrOfHourInSea(fishActions: List): Int { + //startDateTimeUtc = actionRescue.startDateTimeUtc, + //endDateTimeUtc = actionRescue.endDateTimeUtc + return 0; + } + + fun getNbrOfPolFishAction(fishActions: List): Int { + //Reduce Action with SUM OF actionRescues.numberPersonsRescued + return 0; + } + + fun getNbrOfTargetedVessel(fishActions: List): Int { + //Reduce Action with SUM OF actionRescues.numberPersonsRescued + return 0; + } + + fun getNbrOfInfraction(fishActions: List): Int { + //Reduce Action with SUM OF actionRescues.numberPersonsRescued + return 0; + } + + fun getNbrOfInfractionWithPV(fishActions: List): Int { + //Reduce Action with SUM OF actionRescues.numberPersonsRescued + return 0; + } + + fun getNbrOfTowedVessel(fishActions: List): Int { + //Reduce Action with SUM OF actionRescues.numberPersonsRescued + return 0; + } + + fun getQuantityOfFish(fishActions: List): Int { + //Reduce Action with SUM OF actionRescues.numberPersonsRescued + return 0; + } + + } } diff --git a/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMIllegalImmigration.kt b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMIllegalImmigration.kt index 382283ee..3b22e3c8 100644 --- a/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMIllegalImmigration.kt +++ b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMIllegalImmigration.kt @@ -1,4 +1,60 @@ package fr.gouv.dgampa.rapportnav.domain.entities.aem -class AEMIllegalImmigration { +import fr.gouv.dgampa.rapportnav.domain.entities.mission.nav.action.ActionIllegalImmigrationEntity + +data class AEMIllegalImmigration( + val nbrOfHourInSea: Int, //3.4.1 + val nbrOfInterceptedShip: Int, // 3.4.3 + val nbrOfInterceptedMigrant: Int, // 3.4.4 + val nbrOfAllegedTrafficker: Int // 3.4.4 +) { + constructor( + illegalActions: List + ) : this( + nbrOfHourInSea = AEMIllegalImmigration.getNbrOfHourInSea(illegalActions), + nbrOfInterceptedShip = AEMIllegalImmigration.getNbrOfInterceptedShip(illegalActions), + nbrOfInterceptedMigrant = AEMIllegalImmigration.getNbrOfInterceptedMigrant(illegalActions), + nbrOfAllegedTrafficker = AEMIllegalImmigration.getNbrOfAllegedTrafficker(illegalActions) + ) { + + } + + companion object { + fun getNbrOfHourInSea(illegalActions: List): Int { + //startDateTimeUtc = actionRescue.startDateTimeUtc, + //endDateTimeUtc = actionRescue.endDateTimeUtc + return 0; + } + + fun getNbrOfInterceptedShip(illegalActions: List): Int { + //Reduce Action with SUM OF actionRescues.numberPersonsRescued + return 0; + } + + fun getNbrOfInterceptedMigrant(illegalActions: List): Int { + //Reduce Action with SUM OF actionRescues.numberPersonsRescued + return 0; + } + + fun getNbrOfAllegedTrafficker(illegalActions: List): Int { + //Reduce Action with SUM OF actionRescues.numberPersonsRescued + return 0; + } + + } } + +/** + * + * 3.4.1 Nombre d’heures de mer Autre activité de mission + Opération de lutte contre l'immigration illégale Durée (date et heure de début et fin) + * 3.4.3 Nombre de navires/embarcations interceptés Autre activité de mission + Opération de lutte contre l'immigration illégale Champ nombre "Nb de navires / embarcations interceptés" + * 3.4.4 Nombre de migrants interceptés  Autre activité de mission + Opération de lutte contre l'immigration illégale Champ nombre "Nb de migrants interceptés" + * 3.4.5 Nombre de passeurs présumés interceptés Autre activité de mission + Opération de lutte contre l'immigration illégale Champ nombre "Nb de passeurs présumés" + */ +/** + * + * 3.4.1 Nombre d’heures de mer Autre activité de mission + Opération de lutte contre l'immigration illégale Durée (date et heure de début et fin) + * 3.4.3 Nombre de navires/embarcations interceptés Autre activité de mission + Opération de lutte contre l'immigration illégale Champ nombre "Nb de navires / embarcations interceptés" + * 3.4.4 Nombre de migrants interceptés  Autre activité de mission + Opération de lutte contre l'immigration illégale Champ nombre "Nb de migrants interceptés" + * 3.4.5 Nombre de passeurs présumés interceptés Autre activité de mission + Opération de lutte contre l'immigration illégale Champ nombre "Nb de passeurs présumés" + */ diff --git a/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMMigrationRescue.kt b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMMigrationRescue.kt index 48807286..9b109015 100644 --- a/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMMigrationRescue.kt +++ b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMMigrationRescue.kt @@ -1,7 +1,6 @@ package fr.gouv.dgampa.rapportnav.domain.entities.aem import fr.gouv.dgampa.rapportnav.domain.entities.mission.nav.action.ActionRescueEntity -import java.time.ZonedDateTime data class AEMMigrationRescue( val nbrOfHourInSea: Int, // 1.2.1 @@ -14,37 +13,37 @@ data class AEMMigrationRescue( constructor( actionRescues: List ) : this( - nbrOfHourInSea = AEMMigrationRescue.processNbrOfHourInSea(actionRescues), - nbrPersonsRescued = AEMMigrationRescue.processNbrPersonsRescued(actionRescues), + nbrOfHourInSea = AEMMigrationRescue.getNbrOfHourInSea(actionRescues), + nbrPersonsRescued = AEMMigrationRescue.getNbrPersonsRescued(actionRescues), nbrOfOperation = 0, //TODO: Define correctly what that means - nbrOfVesselsTrackedWithoutIntervention = AEMMigrationRescue.processNbrOfVesselsTrackedWithoutIntervention(actionRescues), - nbrAssistedVesselsReturningToShore = AEMMigrationRescue.processAssistedVesselsReturningToShore(actionRescues), + nbrOfVesselsTrackedWithoutIntervention = AEMMigrationRescue.getNbrOfVesselsTrackedWithoutIntervention( + actionRescues + ), + nbrAssistedVesselsReturningToShore = AEMMigrationRescue.getAssistedVesselsReturningToShore(actionRescues), nbrOfRescuedOperation = actionRescues.size, ) { } - companion object { - fun processNbrOfHourInSea(actionRescues: List): Int { + fun getNbrOfHourInSea(actionRescues: List): Int { //startDateTimeUtc = actionRescue.startDateTimeUtc, //endDateTimeUtc = actionRescue.endDateTimeUtc return 0; } - fun processNbrPersonsRescued(actionRescues: List): Int { + fun getNbrPersonsRescued(actionRescues: List): Int { //Reduce Action with SUM OF actionRescues.numberPersonsRescued return 0; } - fun processNbrOfVesselsTrackedWithoutIntervention(actionRescues: List): Int { + fun getNbrOfVesselsTrackedWithoutIntervention(actionRescues: List): Int { //Reduce Action with SUM OF actionRescues.numberPersonsRescued return 0; } - fun processAssistedVesselsReturningToShore(actionRescues: List): Int { + fun getAssistedVesselsReturningToShore(actionRescues: List): Int { //Reduce Action with SUM OF actionRescues.numberPersonsRescued return 0; } } - } diff --git a/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMNotPollutionControlSurveillance.kt b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMNotPollutionControlSurveillance.kt index 7779f24e..003c77b8 100644 --- a/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMNotPollutionControlSurveillance.kt +++ b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMNotPollutionControlSurveillance.kt @@ -1,4 +1,45 @@ package fr.gouv.dgampa.rapportnav.domain.entities.aem -class AEMNotPollutionControlSurveillance { +import fr.gouv.dgampa.rapportnav.domain.entities.mission.nav.action.ExtendedEnvActionEntity + +data class AEMNotPollutionControlSurveillance( + val nbrOfHourInSea: Int, //4.1.1 + val nbrOfAction: Int, // 4.1.3 + val nbrOfInfraction: Int, // 4.1.4 + val nbrOfInfractionWithPV: Int // 4.1.5 +) { + constructor( + envActions: List + ) : this( + nbrOfHourInSea = AEMNotPollutionControlSurveillance.getNbrOfHourInSea(envActions), + nbrOfAction = AEMNotPollutionControlSurveillance.getNbrOfAction(envActions), + nbrOfInfraction = AEMNotPollutionControlSurveillance.getNbrOfInfraction(envActions), + nbrOfInfractionWithPV = AEMNotPollutionControlSurveillance.getNbrOfInfractionWithPV(envActions) + ) { + + } + + companion object { + fun getNbrOfHourInSea(envActions: List): Int { + //startDateTimeUtc = actionRescue.startDateTimeUtc, + //endDateTimeUtc = actionRescue.endDateTimeUtc + return 0; + } + + fun getNbrOfAction(envActions: List): Int { + //Reduce Action with SUM OF actionRescues.numberPersonsRescued + return 0; + } + + fun getNbrOfInfraction(envActions: List): Int { + //Reduce Action with SUM OF actionRescues.numberPersonsRescued + return 0; + } + + fun getNbrOfInfractionWithPV(envActions: List): Int { + //Reduce Action with SUM OF actionRescues.numberPersonsRescued + return 0; + } + + } } diff --git a/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMOutOfMigrationRescue.kt b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMOutOfMigrationRescue.kt index fed7528e..36ca00c0 100644 --- a/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMOutOfMigrationRescue.kt +++ b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMOutOfMigrationRescue.kt @@ -10,23 +10,22 @@ data class AEMOutOfMigrationRescue( constructor( actionRescues: List ) : this( - nbrOfHourInSea = AEMOutOfMigrationRescue.processNbrOfHourInSea(actionRescues), + nbrOfHourInSea = AEMOutOfMigrationRescue.getNbrOfHourInSea(actionRescues), nbrOfRescuedOperation = actionRescues.size, - nbrPersonsRescued = AEMOutOfMigrationRescue.processNbrPersonsRescued(actionRescues) + nbrPersonsRescued = AEMOutOfMigrationRescue.getNbrPersonsRescued(actionRescues) ) { } companion object { - fun processNbrOfHourInSea(actionRescues: List): Int { + fun getNbrOfHourInSea(actionRescues: List): Int { //startDateTimeUtc = actionRescue.startDateTimeUtc, //endDateTimeUtc = actionRescue.endDateTimeUtc return 0; } - fun processNbrPersonsRescued(actionRescues: List): Int { + fun getNbrPersonsRescued(actionRescues: List): Int { //Reduce Action with SUM OF actionRescues.numberPersonsRescued return 0; } } - } diff --git a/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMPollutionControlSurveillance.kt b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMPollutionControlSurveillance.kt index d1931fd4..0eb9f5b4 100644 --- a/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMPollutionControlSurveillance.kt +++ b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMPollutionControlSurveillance.kt @@ -1,4 +1,67 @@ package fr.gouv.dgampa.rapportnav.domain.entities.aem -class AEMPollutionControlSurveillance { +import fr.gouv.dgampa.rapportnav.domain.entities.mission.nav.action.ActionAntiPollutionEntity +import fr.gouv.dgampa.rapportnav.domain.entities.mission.nav.action.ActionRescueEntity +import fr.gouv.dgampa.rapportnav.domain.entities.mission.nav.action.ExtendedEnvActionEntity + +data class AEMPollutionControlSurveillance( + val nbrOfHourInSea: Int, //4.2.1 + val nbrOfSimpleBrassage: Int, // 4.2.3 + val nbrOfDeploymentAction: Int, // 4.2.4 + val nbrOfDetectedPollution: Int, // 4.2.4 + val nbrOfInfractionWithPV: Int, // 4.2.6 + val nbrOfDiversionCarriedOut: Int, // 4.2.7 + val nbrOfPollutionObservedByAuthorizedAgent: Int //4.2.8 +) { + constructor( + antiPollutionActions: List, + envActions: List + ) : this( + nbrOfHourInSea = AEMPollutionControlSurveillance.getNbrOfHourInSea(antiPollutionActions), + nbrOfSimpleBrassage = AEMPollutionControlSurveillance.getNbrOfSimpleBrassage(antiPollutionActions), + nbrOfDeploymentAction = AEMPollutionControlSurveillance.getNbrOfDeploymentAction(antiPollutionActions), + nbrOfDetectedPollution = AEMPollutionControlSurveillance.getNbrOfDetectedPollution(antiPollutionActions), + nbrOfInfractionWithPV = AEMPollutionControlSurveillance.getNbrOfInfractionWithPV(antiPollutionActions), + nbrOfDiversionCarriedOut = AEMPollutionControlSurveillance.getNbrOfDiversionCarriedOut(antiPollutionActions), + nbrOfPollutionObservedByAuthorizedAgent = AEMPollutionControlSurveillance.getNbrOfPollutionObservedByAuthorizedAgent(antiPollutionActions), + ) { + } + + companion object { + fun getNbrOfHourInSea(antiPollutionActions: List): Int { + //startDateTimeUtc = actionRescue.startDateTimeUtc, + //endDateTimeUtc = actionRescue.endDateTimeUtc + return 0; + } + + fun getNbrOfSimpleBrassage(antiPollutionActions: List): Int { + //Reduce Action with SUM OF actionRescues.numberPersonsRescued + return 0; + } + + fun getNbrOfDeploymentAction(antiPollutionActions: List): Int { + //Reduce Action with SUM OF actionRescues.numberPersonsRescued + return 0; + } + + fun getNbrOfDetectedPollution(antiPollutionActions: List): Int { + //Reduce Action with SUM OF actionRescues.numberPersonsRescued + return 0; + } + + fun getNbrOfInfractionWithPV(antiPollutionActions: List): Int { + //Reduce Action with SUM OF actionRescues.numberPersonsRescued + return 0; + } + + fun getNbrOfDiversionCarriedOut(antiPollutionActions: List): Int { + //Reduce Action with SUM OF actionRescues.numberPersonsRescued + return 0; + } + + fun getNbrOfPollutionObservedByAuthorizedAgent(antiPollutionActions: List): Int { + //Reduce Action with SUM OF actionRescues.numberPersonsRescued + return 0; + } + } } diff --git a/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMSeaSafety.kt b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMSeaSafety.kt index d3e512bc..2d23d794 100644 --- a/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMSeaSafety.kt +++ b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMSeaSafety.kt @@ -2,10 +2,38 @@ package fr.gouv.dgampa.rapportnav.domain.entities.aem import fr.gouv.dgampa.rapportnav.domain.entities.mission.nav.action.* -data class AEMSeaSafety ( - val vigimerActions: List, - val nauticalActions: List, - val baaemActions: List, - val publicActions: List -){ +data class AEMSeaSafety( + val nbrOfHourInSea: Int, // 5.1 + val nbrOfHourPublicOrder: Int, // 5.3 + val nbrOfPublicOrderOperation: Int, // 5.4 +) { + constructor( + vigimerActions: List, + nauticalActions: List, + baaemActions: List, + publicActions: List + ) : this( + nbrOfPublicOrderOperation = publicActions.size, + nbrOfHourPublicOrder = AEMSeaSafety.getNbrOfHourPublicOrder(publicActions), + nbrOfHourInSea = AEMSeaSafety.getNbrOfHourInSea(vigimerActions, nauticalActions, baaemActions, publicActions), + ) { + } + + companion object { + fun getNbrOfHourInSea( + vigimerActions: List, + nauticalActions: List, + baaemActions: List, + publicActions: List + ): Int { + //startDateTimeUtc = actionRescue.startDateTimeUtc, + //endDateTimeUtc = actionRescue.endDateTimeUtc + return 0; + } + + fun getNbrOfHourPublicOrder(publicActions: List): Int { + //Reduce Action with SUM OF actionRescues.numberPersonsRescued + return 0; + } + } } diff --git a/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMSovereignProtect.kt b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMSovereignProtect.kt index 41a5cd13..70861b55 100644 --- a/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMSovereignProtect.kt +++ b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMSovereignProtect.kt @@ -1,9 +1,46 @@ package fr.gouv.dgampa.rapportnav.domain.entities.aem -import fr.gouv.dgampa.rapportnav.domain.entities.mission.nav.action.ActionStatusEntity +import fr.gouv.dgampa.rapportnav.domain.entities.mission.nav.action.* -data class AEMSovereignProtect ( - val anchoredActions: List, - val navigationActions: List -){ +data class AEMSovereignProtect( + val nbrOfHourInSea: Int, // 7.1 + val nbrOfReconizedVessel: Int, // 7.3 + val nbrOfControlledVessel: Int, // 7.4 +) { + constructor( + anchoredActions: List, + navigationActions: List + ) : this( + nbrOfHourInSea = AEMSovereignProtect.getNbrOfHourInSea(anchoredActions, navigationActions), + nbrOfReconizedVessel = AEMSovereignProtect.getNbrOfReconizedVessel(anchoredActions, navigationActions), + nbrOfControlledVessel = AEMSovereignProtect.getNbrOfControlledVessel(anchoredActions, navigationActions), + ) { + } + + companion object { + fun getNbrOfHourInSea( + anchoredActions: List, + navigationActions: List + ): Int { + //startDateTimeUtc = actionRescue.startDateTimeUtc, + //endDateTimeUtc = actionRescue.endDateTimeUtc + return 0; + } + + fun getNbrOfReconizedVessel( + anchoredActions: List, + navigationActions: List + ): Int { + //Reduce Action with SUM OF actionRescues.numberPersonsRescued + return 0; + } + + fun getNbrOfControlledVessel( + anchoredActions: List, + navigationActions: List + ): Int { + //Reduce Action with SUM OF actionRescues.numberPersonsRescued + return 0; + } + } } diff --git a/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMTableExport.kt b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMTableExport.kt index 521379d5..edfeb045 100644 --- a/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMTableExport.kt +++ b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMTableExport.kt @@ -26,210 +26,82 @@ data class AEMTableExport( val envActions = actions.filterIsInstance().map { it.envAction }; val fishActions = actions.filterIsInstance().map { it.fishAction }; - return AEMTableExport( - migrationRescue = AEMTableExport.getMigrationRescue(navActions), //actionRescues - outOfMigrationRescue = AEMTableExport.getOutOfMigrationRescue(navActions), //actionRescues - vesselRescue = AEMTableExport.getVesselRescue(navActions), //actionRescues - envTraffic = AEMTableExport.getAgainstTraffic(envActions), //envActions - illegalImmigration = AEMTableExport.getIllegalImmigration(navActions), //illegalImmigrationActions - notPollutionControlSurveillance = AEMTableExport.getNotPollutionControlSurveillance(envActions), //envActions - pollutionControlSurveillance = AEMTableExport.getPollutionControlSurveillance( - navActions, - envActions - ), //antiPollutionActions - illegalFish = AEMTableExport.getIllegalFish(fishActions), //fishActions - culturalMaritime = AEMTableExport.getCulturalMaritime(envActions), //envActions - seaSafety = AEMTableExport.getSeaSafety(navActions), //vigimerActions, publicOrderActions, nauticalActions, baaempActions - sovereignProtect = AEMTableExport.getSovereignProtect(navActions) - ) - } + val rescueActions = actionRescueEntities(navActions) + val illegalActions = actionIllegalImmigrationEntities(navActions) + val navAntiPollutionActions = actionAntiPollutionEntities(navActions) - private fun getMigrationRescue(navActions: List): AEMMigrationRescue { - val actions = navActions.filter { it.rescueAction != null && it.rescueAction.isMigrationRescue == true } - .map { action -> action.rescueAction }; - return AEMMigrationRescue(actions); - } + val vigimerActions = actionVigimerEntities(navActions) + val nauticalActions = actionNauticalEventEntities(navActions) + val baaemActions = actionBAAEMPermanenceEntities(navActions) + val publicActions = actionPublicOrderEntities(navActions) + val anchoredActions = actionStatusEntities(navActions) + val navigationActions = actionStatusEntities1(navActions) - private fun getOutOfMigrationRescue(navActions: List): AEMOutOfMigrationRescue { - val actions = navActions.filter { it.rescueAction != null && it.rescueAction.isMigrationRescue != true } - .map { action -> action.rescueAction }; - return AEMOutOfMigrationRescue(actions); - } - private fun getVesselRescue(navActions: List): AEMVesselRescue { - val actions = navActions.filter { it.rescueAction != null && it.rescueAction.isVesselRescue == true } - .map { action -> action.rescueAction }; - return AEMVesselRescue(actions); + return AEMTableExport( + sovereignProtect = AEMSovereignProtect( + anchoredActions = anchoredActions, + navigationActions = navigationActions + ), + seaSafety = AEMSeaSafety( + baaemActions = baaemActions, + publicActions = publicActions, + vigimerActions = vigimerActions, + nauticalActions = nauticalActions + ), + envTraffic = AEMEnvTraffic(envActions), + illegalFish = AEMIllegalFish(fishActions), + culturalMaritime = AEMCulturalMaritime(envActions), + illegalImmigration = AEMIllegalImmigration(illegalActions), + notPollutionControlSurveillance = AEMNotPollutionControlSurveillance(envActions), + pollutionControlSurveillance = AEMPollutionControlSurveillance(navAntiPollutionActions, envActions), + vesselRescue = AEMVesselRescue(rescueActions.filter { it?.isVesselRescue == true }), + migrationRescue = AEMMigrationRescue(rescueActions.filter { it?.isMigrationRescue == true }), + outOfMigrationRescue = AEMOutOfMigrationRescue(rescueActions.filter { it?.isMigrationRescue != true }), + ) } - private fun getAgainstTraffic(actions: List): AEMEnvTraffic { - return AEMEnvTraffic(); - /** - * - * 3.3.1 Nombre d’heures de mer Contrôle + surveillance thématique "espèces protégées" - importé de MonitorEnv Durée (date et heure de début et fin) - * 3.3.3 Nombre de navires ou embarcations déroutés ou saisis en mer Contrôle + surveillance thématique "espèces protégées" - importé de MonitorEnv Nombre de navires déroutés - * 3.3.4 Nombre de saisies Contrôle + surveillance thématique "espèces protégées" - importé de MonitorEnv Nb infractions ? - */ - /** - * - * 3.3.1 Nombre d’heures de mer Contrôle + surveillance thématique "espèces protégées" - importé de MonitorEnv Durée (date et heure de début et fin) - * 3.3.3 Nombre de navires ou embarcations déroutés ou saisis en mer Contrôle + surveillance thématique "espèces protégées" - importé de MonitorEnv Nombre de navires déroutés - * 3.3.4 Nombre de saisies Contrôle + surveillance thématique "espèces protégées" - importé de MonitorEnv Nb infractions ? - */ + private fun actionStatusEntities1(navActions: List): List { + return navActions.filter { it.statusAction != null }.map { action -> action.statusAction } + .filter { it?.status == ActionStatusType.NAVIGATING } } - private fun getIllegalImmigration(navActions: List): AEMIllegalImmigration { - val actions = navActions.filter { it.illegalImmigrationAction != null } - .map { action -> action.illegalImmigrationAction }; - return AEMIllegalImmigration(); //AEMVesselRescue(actionRescues.filter { it.isVesselRescue == true }); - /** - * - * 3.4.1 Nombre d’heures de mer Autre activité de mission + Opération de lutte contre l'immigration illégale Durée (date et heure de début et fin) - * 3.4.3 Nombre de navires/embarcations interceptés Autre activité de mission + Opération de lutte contre l'immigration illégale Champ nombre "Nb de navires / embarcations interceptés" - * 3.4.4 Nombre de migrants interceptés  Autre activité de mission + Opération de lutte contre l'immigration illégale Champ nombre "Nb de migrants interceptés" - * 3.4.5 Nombre de passeurs présumés interceptés Autre activité de mission + Opération de lutte contre l'immigration illégale Champ nombre "Nb de passeurs présumés" - */ - /** - * - * 3.4.1 Nombre d’heures de mer Autre activité de mission + Opération de lutte contre l'immigration illégale Durée (date et heure de début et fin) - * 3.4.3 Nombre de navires/embarcations interceptés Autre activité de mission + Opération de lutte contre l'immigration illégale Champ nombre "Nb de navires / embarcations interceptés" - * 3.4.4 Nombre de migrants interceptés  Autre activité de mission + Opération de lutte contre l'immigration illégale Champ nombre "Nb de migrants interceptés" - * 3.4.5 Nombre de passeurs présumés interceptés Autre activité de mission + Opération de lutte contre l'immigration illégale Champ nombre "Nb de passeurs présumés" - */ + private fun actionStatusEntities(navActions: List): List { + return navActions.filter { it.statusAction != null }.map { action -> action.statusAction } + .filter { it?.status == ActionStatusType.ANCHORED }; } - private fun getNotPollutionControlSurveillance(envActions: List): AEMNotPollutionControlSurveillance { - /** - * 4.1.1 Nombre d'heures de mer de surveillance ou de contrôle pour la protection de l'environnement (hors rejets illicites) Contrôle + surveillance hors thématique "Rejets illicites" - importé de MonitorEnv Durée (date et heure de début et fin) - * 4.1.3 Nombre d'opérations de surveillance ou de contrôles (hors rejets illicites) Contrôle + surveillance hors thématique "Rejets illicites" - importé de MonitorEnv Nb Action - * 4.1.4 Nombre d’infractions à la réglementation relative à la protection de l'environnement en mer (hors rejets illicites) Contrôle hors thématique "Rejets illicites" - importé de MonitorEnv Champ infraction - issu des contrôles MonitorEnv - * 4.1.5 Nombre de Procès-Verbaux dressés en mer (hors rejets illicites) Contrôle hors thématique "Rejets illicites" - importé de MonitorEnv Champ infraction + bouton radio "avec PV" - */ - /** - * 4.1.1 Nombre d'heures de mer de surveillance ou de contrôle pour la protection de l'environnement (hors rejets illicites) Contrôle + surveillance hors thématique "Rejets illicites" - importé de MonitorEnv Durée (date et heure de début et fin) - * 4.1.3 Nombre d'opérations de surveillance ou de contrôles (hors rejets illicites) Contrôle + surveillance hors thématique "Rejets illicites" - importé de MonitorEnv Nb Action - * 4.1.4 Nombre d’infractions à la réglementation relative à la protection de l'environnement en mer (hors rejets illicites) Contrôle hors thématique "Rejets illicites" - importé de MonitorEnv Champ infraction - issu des contrôles MonitorEnv - * 4.1.5 Nombre de Procès-Verbaux dressés en mer (hors rejets illicites) Contrôle hors thématique "Rejets illicites" - importé de MonitorEnv Champ infraction + bouton radio "avec PV" - */ - return AEMNotPollutionControlSurveillance(); + private fun actionPublicOrderEntities(navActions: List): List { + return navActions.filter { it.publicOrderAction != null } + .map { action -> action.publicOrderAction } } - private fun getPollutionControlSurveillance( - navActions: List, - envActions: List - ): AEMPollutionControlSurveillance { - val actions = - navActions.filter { it.antiPollutionAction != null }.map { action -> action.antiPollutionAction }; - return AEMPollutionControlSurveillance(); //AEMVesselRescue(actionRescues.filter { it.isVesselRescue == true }); - /** - * 4.2.1 Nombre d'heures de mer (surveillance et lutte) Contrôle + surveillance thématique "Rejets illicites" - importé de MonitorEnv + autre activité de mission / opération de lutte anti-pollution Durée (date et heure de début et fin) - * 4.2.3 Participation à une opération de lutte ANTIPOL en mer (simple brassage) Autre activité de mission / opération de lutte anti-pollution Toggle simple brassage - * 4.2.4 Déploiement d’un dispositif de lutte anti-pollution en mer (dispersant, barrage, etc…) Autre activité de mission / opération de lutte anti-pollution Toggle déploiement de dispositif - * 4.2.5 Nombre d’infractions constatées Contrôle + surveillance thématique "Rejets illicites" - importé de MonitorEnv Champ infraction - issu des contrôles MonitorEnv - * 4.2.6 Nombre de procès-verbaux dressés Contrôle + surveillance thématique "Rejets illicites" - importé de MonitorEnv Champ infraction + bouton radio "avec PV" - * 4.2.7 Nombre de déroutements effectués Contrôle + surveillance thématique "Rejets illicites" - importé de MonitorEnv + autre activité de mission / opération de lutte anti-pollution à ajouter dans MonitorEnv / Rapp Nav case à cocher "déroutement effectué" - * 4.2.8 Nombre de pollutions détectées et/ou constatées par un agent habilité Contrôle + surveillance thématique "Rejets illicites" - importé de MonitorEnv + autre activité de mission / opération de lutte anti-pollution à ajouter dans MonitorEnv / Rapp Nav case à cocher "Pollution constatée par un agent habilité" - */ - /** - * 4.2.1 Nombre d'heures de mer (surveillance et lutte) Contrôle + surveillance thématique "Rejets illicites" - importé de MonitorEnv + autre activité de mission / opération de lutte anti-pollution Durée (date et heure de début et fin) - * 4.2.3 Participation à une opération de lutte ANTIPOL en mer (simple brassage) Autre activité de mission / opération de lutte anti-pollution Toggle simple brassage - * 4.2.4 Déploiement d’un dispositif de lutte anti-pollution en mer (dispersant, barrage, etc…) Autre activité de mission / opération de lutte anti-pollution Toggle déploiement de dispositif - * 4.2.5 Nombre d’infractions constatées Contrôle + surveillance thématique "Rejets illicites" - importé de MonitorEnv Champ infraction - issu des contrôles MonitorEnv - * 4.2.6 Nombre de procès-verbaux dressés Contrôle + surveillance thématique "Rejets illicites" - importé de MonitorEnv Champ infraction + bouton radio "avec PV" - * 4.2.7 Nombre de déroutements effectués Contrôle + surveillance thématique "Rejets illicites" - importé de MonitorEnv + autre activité de mission / opération de lutte anti-pollution à ajouter dans MonitorEnv / Rapp Nav case à cocher "déroutement effectué" - * 4.2.8 Nombre de pollutions détectées et/ou constatées par un agent habilité Contrôle + surveillance thématique "Rejets illicites" - importé de MonitorEnv + autre activité de mission / opération de lutte anti-pollution à ajouter dans MonitorEnv / Rapp Nav case à cocher "Pollution constatée par un agent habilité" - */ + private fun actionBAAEMPermanenceEntities(navActions: List): List { + return navActions.filter { it.baaemPermanenceAction != null } + .map { action -> action.baaemPermanenceAction } } - private fun getIllegalFish(fishActions: List): AEMIllegalFish { - return AEMIllegalFish(); //AEMVesselRescue(actionRescues.filter { it.isVesselRescue == true }); - /** - * - * 4.3.1 Nombre d’heures de mer (surveillance/police des pêches) : formulaire importé de MonitorFish Durée (date et heure de début et fin) - * 4.3.3 nombre d'opérations POLPECHE formulaire importé de MonitorFish Nb action - * 4.3.5 Nombre de navires inspectés en mer (montée à bord) formulaire importé de MonitorFish Nb action - * 4.3.6 Nombre de procès-verbaux dressés en mer (législation pêche) formulaire importé de MonitorFish Champ infraction + champ PV - * 4.3.7 Nombre d'infractions constatées en mer formulaire importé de MonitorFish Champ infraction - * 4.3.8 Nombre de navires accompagnés ou déroutés formulaire importé de MonitorFish Case à cocher "Appréhension et déroutement" - * 4.3.9 Quantité de produits de la pêche saisis en mer(en kg) formulaire importé de MonitorFish Somme des champs quantitées déclarées rubrique "espèces à bord" du formulaire Fish - */ - /** - * - * 4.3.1 Nombre d’heures de mer (surveillance/police des pêches) : formulaire importé de MonitorFish Durée (date et heure de début et fin) - * 4.3.3 nombre d'opérations POLPECHE formulaire importé de MonitorFish Nb action - * 4.3.5 Nombre de navires inspectés en mer (montée à bord) formulaire importé de MonitorFish Nb action - * 4.3.6 Nombre de procès-verbaux dressés en mer (législation pêche) formulaire importé de MonitorFish Champ infraction + champ PV - * 4.3.7 Nombre d'infractions constatées en mer formulaire importé de MonitorFish Champ infraction - * 4.3.8 Nombre de navires accompagnés ou déroutés formulaire importé de MonitorFish Case à cocher "Appréhension et déroutement" - * 4.3.9 Quantité de produits de la pêche saisis en mer(en kg) formulaire importé de MonitorFish Somme des champs quantitées déclarées rubrique "espèces à bord" du formulaire Fish - */ + private fun actionNauticalEventEntities(navActions: List): List { + return navActions.filter { it.nauticalEventAction != null } + .map { action -> action.nauticalEventAction }; } - fun getCulturalMaritime(envActions: List): AEMCulturalMaritime { - return AEMCulturalMaritime(); //AEMVesselRescue(actionRescues.filter { it.isVesselRescue == true }); - /** - * 4.4.1 Nombre d’heures de mer Contrôle + surveillance thématique "Bien culturel maritime" - importé de MonitorEnv Durée (date et heure de début et fin) - * 4.4.2 Nombre d’opérations scientifiques Contrôle + surveillance thématique "Autre" / SS thém. "Campagne scientifique" - importé de MonitorEnv Nb action - * 4.4.3 Nombre d’opération de police des BCM Contrôle + surveillance thématique "Bien culturel maritime" - importé de MonitorEnv Nb action - * */ - /** - * 4.4.1 Nombre d’heures de mer Contrôle + surveillance thématique "Bien culturel maritime" - importé de MonitorEnv Durée (date et heure de début et fin) - * 4.4.2 Nombre d’opérations scientifiques Contrôle + surveillance thématique "Autre" / SS thém. "Campagne scientifique" - importé de MonitorEnv Nb action - * 4.4.3 Nombre d’opération de police des BCM Contrôle + surveillance thématique "Bien culturel maritime" - importé de MonitorEnv Nb action - * */ + private fun actionVigimerEntities(navActions: List): List { + return navActions.filter { it.vigimerAction != null } + .map { action -> action.vigimerAction }; } - private fun getSeaSafety(navActions: List): AEMSeaSafety { - val vigimerActions = - navActions.filter { it.vigimerAction != null }.map { action -> action.vigimerAction }; - val nauticalActions = - navActions.filter { it.nauticalEventAction != null }.map { action -> action.nauticalEventAction }; - val baaemActions = - navActions.filter { it.baaemPermanenceAction != null }.map { action -> action.baaemPermanenceAction }; - val publicActions = - navActions.filter { it.publicOrderAction != null }.map { action -> action.publicOrderAction }; - return AEMSeaSafety( - baaemActions = baaemActions, - publicActions = publicActions, - vigimerActions = vigimerActions, - nauticalActions = nauticalActions, - ); - - /** - * 5.1 Nombre d'heures de mer sureté maritime (y compris Vigipirate-mer)   Autre activité de mission + Permanence Vigimer / Surveillance manifestations nautiques / Maintien de l'ordre public en mer / BAAEM Durée (date et heure de début et fin) - * 5.3 Nombre d'heures de mer de maintien de l'ordre public en mer Autre activité de mission + Maintien de l'ordre public en mer Durée (date et heure de début et fin) - * 5.4 Nombre d'opérations de maintien de l'ordre public en mer Autre activité de mission + Maintien de l'ordre public en mer Nb action - * */ - - /** - * 5.1 Nombre d'heures de mer sureté maritime (y compris Vigipirate-mer)   Autre activité de mission + Permanence Vigimer / Surveillance manifestations nautiques / Maintien de l'ordre public en mer / BAAEM Durée (date et heure de début et fin) - * 5.3 Nombre d'heures de mer de maintien de l'ordre public en mer Autre activité de mission + Maintien de l'ordre public en mer Durée (date et heure de début et fin) - * 5.4 Nombre d'opérations de maintien de l'ordre public en mer Autre activité de mission + Maintien de l'ordre public en mer Nb action - * */ + private fun actionAntiPollutionEntities(navActions: List): List { + return navActions.filter { it.antiPollutionAction != null }.map { action -> action.antiPollutionAction }; } - private fun getSovereignProtect(navActions: List): AEMSovereignProtect { - val anchoredActions = - navActions.filter { it.statusAction != null }.map { action -> action.statusAction } - .filter { it?.status == ActionStatusType.ANCHORED }; - val navigationActions = - navActions.filter { it.statusAction != null }.map { action -> action.statusAction } - .filter { it?.status == ActionStatusType.NAVIGATING }; - return AEMSovereignProtect(anchoredActions = anchoredActions, navigationActions = navigationActions); - /** - * - * 7.1 Nombre d’heures de mer de surveillance générale des approches maritimes (ZEE) Statuts navire Totalité de la durée des statuts navigation et mouillage sur la mission - * 7.3 Nombre total de navires reconnus dans les approches maritimes (ZEE) Volet de gauche rapport Champ "compteur" : Nombre total de navires reconnus dans les approches maritimes (ZEE)* - * 7.4 Nombre de contrôles en mer de navires (toutes zones) Ensemble des contrôles sur navires Totalité des navires contrôlés : Fish + contrôles unités RPN + contrôles Env avec type de cible navire - */ - /** - * - * 7.1 Nombre d’heures de mer de surveillance générale des approches maritimes (ZEE) Statuts navire Totalité de la durée des statuts navigation et mouillage sur la mission - * 7.3 Nombre total de navires reconnus dans les approches maritimes (ZEE) Volet de gauche rapport Champ "compteur" : Nombre total de navires reconnus dans les approches maritimes (ZEE)* - * 7.4 Nombre de contrôles en mer de navires (toutes zones) Ensemble des contrôles sur navires Totalité des navires contrôlés : Fish + contrôles unités RPN + contrôles Env avec type de cible navire - */ + private fun actionIllegalImmigrationEntities(navActions: List): List { + return navActions.filter { it.illegalImmigrationAction != null } + .map { action -> action.illegalImmigrationAction }; } - + private fun actionRescueEntities(navActions: List): List { + return navActions.filter { it.rescueAction != null }.map { action -> action.rescueAction }; + } } } diff --git a/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMVesselRescue.kt b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMVesselRescue.kt index 4b2dd7cd..f46ad2d9 100644 --- a/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMVesselRescue.kt +++ b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMVesselRescue.kt @@ -2,36 +2,34 @@ package fr.gouv.dgampa.rapportnav.domain.entities.aem import fr.gouv.dgampa.rapportnav.domain.entities.mission.nav.action.ActionRescueEntity -class AEMVesselRescue ( +data class AEMVesselRescue( val nbrOfHourInSea: Int, // 2.1 val nbrOfRescuedOperation: Int?,// 2.3 val nbrOfNoticedVessel: Int?, // 2.4 val nbrOfTowedVessel: Int?, //2.5 -){ +) { constructor( actionRescues: List ) : this( - nbrOfHourInSea = AEMVesselRescue.processNbrOfHourInSea(actionRescues), + nbrOfHourInSea = AEMVesselRescue.getNbrOfHourInSea(actionRescues), nbrOfRescuedOperation = actionRescues.size, - nbrOfNoticedVessel = AEMVesselRescue.processNbrOfNoticedVessel(actionRescues), - nbrOfTowedVessel = AEMVesselRescue.processNbrOfNoticedVessel(actionRescues) + nbrOfNoticedVessel = AEMVesselRescue.getNbrOfNoticedVessel(actionRescues), + nbrOfTowedVessel = AEMVesselRescue.getNbrOfNoticedVessel(actionRescues) ) { - } - companion object { - fun processNbrOfHourInSea(actionRescues: List): Int { + fun getNbrOfHourInSea(actionRescues: List): Int { //startDateTimeUtc = actionRescue.startDateTimeUtc, //endDateTimeUtc = actionRescue.endDateTimeUtc return 0; } - fun processNbrOfNoticedVessel(actionRescues: List): Int { + fun getNbrOfNoticedVessel(actionRescues: List): Int { //Reduce Action with SUM OF actionRescues.isVesselNoticed return 0; } - fun processNbrOfTowedVessel(actionRescues: List): Int { + fun getNbrOfTowedVessel(actionRescues: List): Int { //Reduce Action with SUM OF actionRescues.isVesselTowed return 0; } From 2f22857d382df6b7b024b84eef97e3e62b730076 Mon Sep 17 00:00:00 2001 From: Christian Date: Tue, 9 Jul 2024 14:56:15 +0200 Subject: [PATCH 3/4] fix(aem): remove unceserary comment - Remove comment --- .../domain/entities/aem/AEMIllegalImmigration.kt | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMIllegalImmigration.kt b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMIllegalImmigration.kt index 3b22e3c8..ddc443a4 100644 --- a/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMIllegalImmigration.kt +++ b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMIllegalImmigration.kt @@ -43,18 +43,3 @@ data class AEMIllegalImmigration( } } - -/** - * - * 3.4.1 Nombre d’heures de mer Autre activité de mission + Opération de lutte contre l'immigration illégale Durée (date et heure de début et fin) - * 3.4.3 Nombre de navires/embarcations interceptés Autre activité de mission + Opération de lutte contre l'immigration illégale Champ nombre "Nb de navires / embarcations interceptés" - * 3.4.4 Nombre de migrants interceptés  Autre activité de mission + Opération de lutte contre l'immigration illégale Champ nombre "Nb de migrants interceptés" - * 3.4.5 Nombre de passeurs présumés interceptés Autre activité de mission + Opération de lutte contre l'immigration illégale Champ nombre "Nb de passeurs présumés" - */ -/** - * - * 3.4.1 Nombre d’heures de mer Autre activité de mission + Opération de lutte contre l'immigration illégale Durée (date et heure de début et fin) - * 3.4.3 Nombre de navires/embarcations interceptés Autre activité de mission + Opération de lutte contre l'immigration illégale Champ nombre "Nb de navires / embarcations interceptés" - * 3.4.4 Nombre de migrants interceptés  Autre activité de mission + Opération de lutte contre l'immigration illégale Champ nombre "Nb de migrants interceptés" - * 3.4.5 Nombre de passeurs présumés interceptés Autre activité de mission + Opération de lutte contre l'immigration illégale Champ nombre "Nb de passeurs présumés" - */ From 12a1410251a3fe9349ee2c06fcfb1e7400e7ef2f Mon Sep 17 00:00:00 2001 From: Christian Date: Tue, 9 Jul 2024 16:12:39 +0200 Subject: [PATCH 4/4] fix(aem): review - update comment on cell - AEM Export table main method updated --- .../rapportnav/domain/entities/aem/AEMIllegalFish.kt | 8 ++++---- .../rapportnav/domain/entities/aem/AEMTableExport.kt | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMIllegalFish.kt b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMIllegalFish.kt index 2583df7d..f0de7177 100644 --- a/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMIllegalFish.kt +++ b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMIllegalFish.kt @@ -4,10 +4,10 @@ import fr.gouv.dgampa.rapportnav.domain.entities.mission.nav.action.* data class AEMIllegalFish( val nbrOfHourInSea: Int, //4.3.1 - val nbrOfPolFishAction: Int, // 4.1.3 - val nbrOfTargetedVessel: Int, // 4.1.4 - val nbrOfInfraction: Int, // 4.1.5 - val nbrOfInfractionWithPV: Int, // 4.1.5 + val nbrOfPolFishAction: Int, // 4.3.3 + val nbrOfTargetedVessel: Int, // 4.3.4 + val nbrOfInfraction: Int, // 4.3.5 + val nbrOfInfractionWithPV: Int, // 4.3.6 val nbrOfTowedVessel: Int, // 4.3.8 val quantityOfFish: Int //4.3.9 ) { diff --git a/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMTableExport.kt b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMTableExport.kt index edfeb045..abd1f07d 100644 --- a/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMTableExport.kt +++ b/backend/src/main/kotlin/fr/gouv/dgampa/rapportnav/domain/entities/aem/AEMTableExport.kt @@ -21,7 +21,7 @@ data class AEMTableExport( private val logger = LoggerFactory.getLogger(AEMTableExport::class.java) companion object { - fun fromMissionAction(actions: List): AEMTableExport { + fun fromMissionAction(actions: List): AEMTableExport { val navActions = actions.filterIsInstance().map { it.navAction }; val envActions = actions.filterIsInstance().map { it.envAction }; val fishActions = actions.filterIsInstance().map { it.fishAction };