diff --git a/pom.xml b/pom.xml
index 4e2bf4459..8db7773df 100644
--- a/pom.xml
+++ b/pom.xml
@@ -32,7 +32,7 @@
42.5.5
8.6.6
1.17.6
- 1.20.2
+ 1.21.0
diff --git a/src/main/resources/h2/data-h2.sql b/src/main/resources/h2/data-h2.sql
index e4bd7c0fe..01863feb7 100644
--- a/src/main/resources/h2/data-h2.sql
+++ b/src/main/resources/h2/data-h2.sql
@@ -373,3 +373,16 @@ INSERT INTO NODO4_CFG.IBAN_ATTRIBUTES_MASTER (OBJ_ID, FK_IBAN_MASTER, FK_IBAN_AT
values (200, 200, 200),
(201, 201, 200),
(202, 202, 201);
+
+INSERT INTO NODO4_CFG.MANUTENZIONE_STAZIONE (OBJ_ID, DATA_ORA_INIZIO, DATA_ORA_FINE, STANDIN, FK_STAZIONE)
+VALUES('1', '2024-02-15 01:00:00', '2024-02-15 20:00:00', false, 2);
+INSERT INTO NODO4_CFG.MANUTENZIONE_STAZIONE (OBJ_ID, DATA_ORA_INIZIO, DATA_ORA_FINE, STANDIN, FK_STAZIONE)
+VALUES('2', '2024-04-15 01:00:00', '2024-04-15 20:00:00', true, 2);
+INSERT INTO NODO4_CFG.MANUTENZIONE_STAZIONE (OBJ_ID, DATA_ORA_INIZIO, DATA_ORA_FINE, STANDIN, FK_STAZIONE)
+VALUES('3', '2024-07-15 01:00:00', '2024-07-15 20:00:00', true, 2);
+INSERT INTO NODO4_CFG.MANUTENZIONE_STAZIONE (OBJ_ID, DATA_ORA_INIZIO, DATA_ORA_FINE, STANDIN, FK_STAZIONE)
+VALUES('4', '2023-12-31 11:00:00', '2024-01-01 18:00:00', false, 2);
+INSERT INTO NODO4_CFG.MANUTENZIONE_STAZIONE (OBJ_ID, DATA_ORA_INIZIO, DATA_ORA_FINE, STANDIN, FK_STAZIONE)
+VALUES('5', '2024-05-21 01:00:00', '2024-05-21 20:00:00', true, 3);
+INSERT INTO NODO4_CFG.MANUTENZIONE_STAZIONE (OBJ_ID, DATA_ORA_INIZIO, DATA_ORA_FINE, STANDIN, FK_STAZIONE)
+VALUES('6', '2023-12-31 11:00:00', '2024-01-01 18:00:00', true, 3);
diff --git a/src/main/resources/h2/schema-h2.sql b/src/main/resources/h2/schema-h2.sql
index c2c28ed4c..e980bbb6c 100644
--- a/src/main/resources/h2/schema-h2.sql
+++ b/src/main/resources/h2/schema-h2.sql
@@ -96,6 +96,7 @@ create table NODO4_CFG.STAZIONI
VERSIONE numeric not null default 1.0,
SERVIZIO_NMP varchar(255),
INVIO_RT_ISTANTANEO char not null default 'N',
+ FLAG_STANDIN char not null default 'Y',
TARGET_HOST varchar(100),
TARGET_PORT numeric,
TARGET_PATH varchar(100),
@@ -719,5 +720,44 @@ CREATE OR REPLACE VIEW NODO4_CFG.IBAN_VALIDI_PER_PA AS
JOIN NODO4_CFG.PA p ON (( mas.FK_PA = p.OBJ_ID))
);
-
-
+CREATE TABLE NODO4_CFG.MANUTENZIONE_STAZIONE(
+ OBJ_ID integer GENERATED BY DEFAULT AS IDENTITY,
+ DATA_ORA_INIZIO TIMESTAMP(0) WITH TIME ZONE NOT NULL,
+ DATA_ORA_FINE TIMESTAMP(0) WITH TIME ZONE NOT NULL,
+ STANDIN boolean NOT NULL,
+ FK_STAZIONE integer NOT NULL,
+ CONSTRAINT PK_MANUTENZIONE_STAZIONE PRIMARY KEY (OBJ_ID),
+ CONSTRAINT FK_MANUTENZIONE_STAZIONE_STAZIONE FOREIGN KEY (FK_STAZIONE) REFERENCES NODO4_CFG.STAZIONI
+);
+
+-- MANUTENZIONE_STAZIONE_ESPANSA VIEW
+CREATE OR REPLACE VIEW NODO4_CFG.MANUTENZIONE_STAZIONE_ESPANSA AS
+SELECT mequal.OBJ_ID::varchar(255) AS ID, mequal.DATA_ORA_INIZIO, mequal.DATA_ORA_FINE, ipa.ID_INTERMEDIARIO_PA AS INTERMEDIARIO_PA_CODICE_FISCALE
+FROM NODO4_CFG.MANUTENZIONE_STAZIONE mequal JOIN NODO4_CFG.STAZIONI s ON mequal.FK_STAZIONE = s.OBJ_ID JOIN NODO4_CFG.INTERMEDIARI_PA ipa ON s.FK_INTERMEDIARIO_PA = ipa.OBJ_ID
+WHERE EXTRACT('year' FROM mequal.DATA_ORA_INIZIO) = EXTRACT('year' FROM mequal.DATA_ORA_FINE )
+UNION ALL
+SELECT mdiffStart.OBJ_ID || 'start' AS ID, mdiffStart.DATA_ORA_INIZIO, (DATE_TRUNC('year', mdiffStart.DATA_ORA_INIZIO) + interval '1' year) AS DATA_ORA_FINE , ipa.ID_INTERMEDIARIO_PA AS INTERMEDIARIO_PA_CODICE_FISCALE
+FROM NODO4_CFG.MANUTENZIONE_STAZIONE mdiffStart JOIN NODO4_CFG.STAZIONI s ON mdiffStart.FK_STAZIONE = s.OBJ_ID JOIN NODO4_CFG.INTERMEDIARI_PA ipa ON s.FK_INTERMEDIARIO_PA = ipa.OBJ_ID
+WHERE EXTRACT('year' FROM mdiffStart.DATA_ORA_INIZIO) != EXTRACT('year' FROM mdiffStart.DATA_ORA_FINE )
+UNION ALL
+SELECT mdiffEnd.OBJ_ID || 'end' AS ID, (DATE_TRUNC('year', mdiffEnd.DATA_ORA_FINE )) AS DATA_ORA_INIZIO, mdiffEnd.DATA_ORA_FINE , ipa.ID_INTERMEDIARIO_PA AS INTERMEDIARIO_PA_CODICE_FISCALE
+FROM NODO4_CFG.MANUTENZIONE_STAZIONE mdiffEnd JOIN NODO4_CFG.STAZIONI s ON mdiffEnd.FK_STAZIONE = s.OBJ_ID JOIN NODO4_CFG.INTERMEDIARI_PA ipa ON s.FK_INTERMEDIARIO_PA = ipa.OBJ_ID
+WHERE EXTRACT('year' FROM mdiffEnd.DATA_ORA_INIZIO) != EXTRACT('year' FROM mdiffEnd.DATA_ORA_FINE );
+
+-- MANUTENZIONE_STAZIONE_RIEPILOGO VIEW
+CREATE OR REPLACE VIEW NODO4_CFG.MANUTENZIONE_STAZIONE_RIEPILOGO AS
+SELECT INTERMEDIARIO_PA_CODICE_FISCALE, TO_CHAR(DATE_TRUNC('year', DATA_ORA_INIZIO), 'YYYY') AS ANNO_MANUTENZIONE,
+SUM(COALESCE(
+ (
+ SELECT EXTRACT(epoch FROM DATA_ORA_FINE - DATA_ORA_INIZIO)/3600
+ FROM NODO4_CFG.MANUTENZIONE_STAZIONE_ESPANSA AS maintenanceForUsedHours
+ WHERE maintenanceForUsedHours.DATA_ORA_FINE < CURRENT_TIMESTAMP and maintenanceForUsedHours.ID = maintenanceBase.ID
+ ), 0)) AS ORE_UTILIZZATE,
+SUM(COALESCE(
+ (
+ SELECT EXTRACT(epoch FROM DATA_ORA_FINE - DATA_ORA_INIZIO)/3600
+ FROM NODO4_CFG.MANUTENZIONE_STAZIONE_ESPANSA AS maintenanceForScheduledHours
+ WHERE maintenanceForScheduledHours.DATA_ORA_INIZIO > CURRENT_TIMESTAMP and maintenanceForScheduledHours.ID = maintenanceBase.ID
+ ), 0)) AS ORE_PROGRAMMATE
+FROM NODO4_CFG.MANUTENZIONE_STAZIONE_ESPANSA AS maintenanceBase
+GROUP BY INTERMEDIARIO_PA_CODICE_FISCALE, ANNO_MANUTENZIONE;
\ No newline at end of file