diff --git a/ConfMan.IOB.UI/Properties/PublishProfiles/IIS01.pubxml b/ConfMan.IOB.UI/Properties/PublishProfiles/IIS01.pubxml new file mode 100644 index 0000000..c036a25 --- /dev/null +++ b/ConfMan.IOB.UI/Properties/PublishProfiles/IIS01.pubxml @@ -0,0 +1,27 @@ + + + + + MSDeploy + true + Release + Any CPU + https://iis01.egalware.com/MP/CONF + false + c2109e71-4eae-4167-9052-175123ccc2bc + false + https://iis01.egalware.com:8172/MsDeploy.axd + Default Web Site/MP/CONF + + false + WMSVC + true + true + jenkins + <_SavePWD>true + <_TargetId>IISWebDeploy + net6.0 + + \ No newline at end of file diff --git a/ConfMan.IOB.UI/Properties/PublishProfiles/IIS02.pubxml b/ConfMan.IOB.UI/Properties/PublishProfiles/IIS02.pubxml new file mode 100644 index 0000000..5639ba6 --- /dev/null +++ b/ConfMan.IOB.UI/Properties/PublishProfiles/IIS02.pubxml @@ -0,0 +1,27 @@ + + + + + MSDeploy + true + Release + Any CPU + https://iis02.egalware.com/MP/CONF + false + c2109e71-4eae-4167-9052-175123ccc2bc + false + https://iis02.egalware.com:8172/MsDeploy.axd + Default Web Site/MP/CONF + + false + WMSVC + true + true + jenkins + <_SavePWD>true + <_TargetId>IISWebDeploy + net6.0 + + \ No newline at end of file diff --git a/ConfMan.IOB.UI/Properties/PublishProfiles/IIS03.pubxml b/ConfMan.IOB.UI/Properties/PublishProfiles/IIS03.pubxml new file mode 100644 index 0000000..4b0aa4d --- /dev/null +++ b/ConfMan.IOB.UI/Properties/PublishProfiles/IIS03.pubxml @@ -0,0 +1,27 @@ + + + + + MSDeploy + true + Release + Any CPU + https://iis03.egalware.com/MP/CONF + false + c2109e71-4eae-4167-9052-175123ccc2bc + false + https://iis03.egalware.com:8172/MsDeploy.axd + Default Web Site/MP/CONF + + false + WMSVC + true + true + jenkins + <_SavePWD>true + <_TargetId>IISWebDeploy + net6.0 + + \ No newline at end of file diff --git a/ConfMan.IOB.UI/Properties/PublishProfiles/IISProfile.pubxml b/ConfMan.IOB.UI/Properties/PublishProfiles/IISProfile.pubxml new file mode 100644 index 0000000..9d7fb2c --- /dev/null +++ b/ConfMan.IOB.UI/Properties/PublishProfiles/IISProfile.pubxml @@ -0,0 +1,19 @@ + + + + + Package + Release + Any CPU + + true + false + c2109e71-4eae-4167-9052-175123ccc2bc + bin\publish\MP.CONF.zip + true + Default Web Site/MP/CONF + <_TargetId>IISWebDeployPackage + + \ No newline at end of file diff --git a/DemoData/INTERCL_01.json b/DemoData/INTERCL_01.json new file mode 100644 index 0000000..5e4fc3d --- /dev/null +++ b/DemoData/INTERCL_01.json @@ -0,0 +1,136 @@ +{ + "SetupSimInt": { + "Dep_Cil_mmH2O": { + 0: 1, + 1: 1, + 25: 5, + 50: 10, + 75: 15, + 99: 26, + 100: 52 + }, + "Bruc_0_100": { + 0: 1, + 1: 17, + 25: 24, + 50: 33, + 75: 47, + 99: 71, + 100: 100 + }, + "Asp_0_100": { + 0: 3, + 1: 36, + 25: 52, + 50: 59, + 75: 77, + 99: 100, + 100: 100 + } + }, + "SetupSimReal": { + "Temp_Filtro": { + 0: 0.1, + 1: 5.6, + 25: 89.1, + 50: 103.7, + 75: 108.3, + 99: 118.1, + 100: 135.6 + }, + "T_Attuale_Cil": { + 0: 0.01, + 1: 0.65, + 25: 10.36, + 50: 11.46, + 75: 11.98, + 99: 13.99, + 100: 327.67 + }, + "Flowrate": { + 0: 0.01, + 1: 0.06, + 25: 5.34, + 50: 8.22, + 75: 9.48, + 99: 12.86, + 100: 262.8 + }, + "Ampere_Cil": { + 0: 10.6, + 1: 14.1, + 25: 14.4, + 50: 14.6, + 75: 15, + 99: 16.4, + 100: 79.1 + }, + "Ampere_Asp": { + 0: 12.1, + 1: 14.8, + 25: 15.9, + 50: 17.2, + 75: 22.1, + 99: 32.4, + 100: 87.3 + }, + "Ampere_Dosat": { + 0: 0.1, + 1: 1.8, + 25: 2, + 50: 2, + 75: 2.1, + 99: 2.4, + 100: 3.3 + } + }, + "SetupDtData": { + "Tot_Parz_Dosatore": { + "2019-11-29 02:24:13": 3619.129, + "2020-01-08 13:56:24": 4101.16, + "2020-01-12 17:34:34": 4201.494, + "2020-01-12 17:34:35": 0, + "2020-01-17 17:34:35": 119.352, + "2020-01-31 11:39:32": 471.494, + "2020-02-07 19:38:58": 606.883, + "2020-03-19 23:59:53": 2112.625, + "2020-04-23 20:38:32": 2929.045, + "2020-05-15 17:30:57": 3500.943, + "2020-05-15 17:30:58": 447.943, + "2020-05-15 20:04:57": 457.217, + "2020-05-15 20:04:58": 0, + "2020-06-12 19:19:36": 736.229, + "2020-06-30 19:56:21": 1225.481, + "2020-07-14 20:05:37": 1828.772, + "2020-07-28 20:15:55": 2358.175, + "2020-09-30 11:29:26": 4081.050, + "2020-11-16 13:01:33": 5419.626, + "2021-11-24 12:50:37": 16632.060, + "2022-01-14 20:07:39": 18187.904, + "2022-03-14 11:33:21": 20782.475, + "2022-11-21 08:48:21": 27770.447, + "2023-03-07 15:40:44": 30951.118 + }, + "Tot_Dosatore": { + "2019-11-29 02:24:14": 3770.426, + "2020-01-08 13:56:24": 4252.457, + "2020-01-17 17:34:35": 4465.844, + "2020-01-31 11:39:32": 4817.986, + "2020-02-07 19:38:58": 4953.375, + "2020-03-19 23:59:53": 6459.117, + "2020-04-23 20:38:32": 7275.537, + "2020-05-15 17:30:58": 7818.401, + "2020-06-12 19:19:36": 8563.820, + "2020-06-30 19:56:21": 9053.072, + "2020-07-14 20:05:37": 9656.363, + "2020-07-28 20:15:55": 10185.766, + "2020-09-30 11:29:26": 11908.641, + "2020-11-16 13:01:33": 13247.217, + "2021-11-24 12:50:37": 24459.651, + "2022-01-14 20:07:39": 26015.495, + "2022-03-14 11:33:21": 28610.066, + "2022-11-21 08:48:21": 35598.038, + "2023-03-07 15:40:44": 38778.709 + } + } +} \ No newline at end of file diff --git a/DemoData/INTERCL_01.yaml b/DemoData/INTERCL_01.yaml new file mode 100644 index 0000000..981b19f --- /dev/null +++ b/DemoData/INTERCL_01.yaml @@ -0,0 +1,6 @@ +--- +ConfDir: C:\Temp\Interclays +CodIOB: INTERCL_01 +HasHeader: true +TimeTable: Interclays01.csv +OutFolder: C:\Temp\Interclays\SIM_01 diff --git a/DemoData/INTERCL_02.json b/DemoData/INTERCL_02.json new file mode 100644 index 0000000..1a37234 --- /dev/null +++ b/DemoData/INTERCL_02.json @@ -0,0 +1,103 @@ +{ + "SetupSimInt": { + "Dep_Cil_mmH2O": { + 0: 1, + 1: 1, + 25: 5, + 50: 10, + 75: 15, + 99: 26, + 100: 52 + }, + "Bruc_0_100": { + 0: 1, + 1: 17, + 25: 24, + 50: 33, + 75: 47, + 99: 71, + 100: 100 + }, + "Asp_0_100": { + 0: 3, + 1: 36, + 25: 52, + 50: 59, + 75: 77, + 99: 100, + 100: 100 + } + }, + "SetupSimReal": { + "Temp_Filtro": { + 0: 0.1, + 1: 5.6, + 25: 89.1, + 50: 103.7, + 75: 108.3, + 99: 118.1, + 100: 135.6 + }, + "T_Attuale_Cil": { + 0: 0.01, + 1: 0.65, + 25: 10.36, + 50: 11.46, + 75: 11.98, + 99: 13.99, + 100: 327.67 + }, + "Flowrate": { + 0: 0.01, + 1: 0.06, + 25: 5.34, + 50: 8.22, + 75: 9.48, + 99: 12.86, + 100: 262.8 + }, + "Ampere_Cil": { + 0: 10.6, + 1: 14.1, + 25: 14.4, + 50: 14.6, + 75: 15, + 99: 16.4, + 100: 79.1 + }, + "Ampere_Asp": { + 0: 12.1, + 1: 14.8, + 25: 15.9, + 50: 17.2, + 75: 22.1, + 99: 32.4, + 100: 87.3 + }, + "Ampere_Dosat": { + 0: 0.1, + 1: 1.8, + 25: 2, + 50: 2, + 75: 2.1, + 99: 2.4, + 100: 3.3 + } + }, + "SetupDtData": { + "Tot_Parz_Dosatore": { + "2020-06-30 19:56:21": 1225.481, + "2020-11-16 13:01:33": 5419.626, + "2022-03-14 11:33:21": 20782.475, + "2022-11-21 08:48:21": 27770.447, + "2023-03-07 15:40:44": 30951.118 + }, + "Tot_Dosatore": { + "2020-06-30 19:56:21": 9053.072, + "2020-11-16 13:01:33": 13247.217, + "2022-03-14 11:33:21": 28610.066, + "2022-11-21 08:48:21": 35598.038, + "2023-03-07 15:40:44": 38778.709 + } + } +} \ No newline at end of file diff --git a/DemoData/INTERCL_02.yaml b/DemoData/INTERCL_02.yaml new file mode 100644 index 0000000..15f38f2 --- /dev/null +++ b/DemoData/INTERCL_02.yaml @@ -0,0 +1,6 @@ +--- +ConfDir: C:\Temp\Interclays +CodIOB: INTERCL_02 +HasHeader: true +TimeTable: Interclays02.csv +OutFolder: C:\Temp\Interclays\SIM_02 diff --git a/DemoData/Interclays01.csv b/DemoData/Interclays01.csv new file mode 100644 index 0000000..21db6c6 --- /dev/null +++ b/DemoData/Interclays01.csv @@ -0,0 +1,419 @@ +Data;Ora Inizio ;Ore Lavorate +mer 04/12/2019;05.30;10,25 +gio 05/12/2019;13.30;6,41 +ven 06/12/2019;06.34;12,35 +lun 09/12/2019;06.20;12,25 +mar 10/12/2019;05.40;13,35 +lun 16/12/2019;05.30;13,30 +mar 17/12/2019;05.30;13,40 +mer 18/12/2019;05.30;13,20 +ven 20/12/2019;05.30;13,10 +ven 27/12/2019;07.00;9,30 +lun 30/12/2019;07.00;10,20 +gio 09/01/2020;05.00;12,40 +ven 10/01/2020;05.00;13,50 +lun 13/01/2020;06.10;10,25 +mar 14/01/2020;05.40;13,10 +mer 15/01/2020;05.00;14,20 +gio 16/01/2020;07.30;10,15 +ven 17/01/2020;07.30;11,30 +ven 24/01/2020;05.35;12,45 +lun 27/01/2020;06.25;12,25 +mer 29/01/2020;05.40;13,16 +mer 05/02/2020;05.25;13,28 +gio 06/02/2020;05.20;13,05 +lun 10/02/2020;05.20;13,40 +mer 12/02/2020;05.35;13,15 +gio 13/02/2020;05.25;12,30 +ven 14/02/2020;05.50;8,15 +lun 17/02/2020;05.24;10,15 +mar 18/02/2020;05.30;9,45 +mer 19/02/2020;05.40;7,40 +gio 20/02/2020;05.36;11,22 +ven 21/02/2020;05.28;9,15 +lun 24/02/2020;05.20;10,33 +mar 25/02/2020;05.26;11,25 +mer 26/02/2020;05.35;11,40 +gio 27/02/2020;05.50;12,40 +ven 28/02/2020;05.27;13,05 +lun 02/03/2020;07.25;8,15 +mar 03/03/2020;07.15;10,45 +mer 04/03/2020;05.32;13,34 +gio 05/03/2020;06.44;11,50 +ven 06/03/2020;07.40;9,40 +lun 09/03/2020;05.15;14,10 +mar 10/03/2020;05.18;13,45 +mer 11/03/2020;05.25;11,50 +gio 12/03/2020;05.31;13,28 +ven 13/03/2020;05.45;8,55 +lun 23/03/2020;05.30;14,05 +mar 24/03/2020;05.22;13,50 +mer 25/03/2020;05.45;13,06 +gio 26/03/2020;08.45;9,42 +ven 27/03/2020;06.50;11,35 +lun 30/03/2020;05.42;13,50 +mar 31/03/2020;05.38;11,14 +mer 01/04/2020;05.55;11,25 +gio 02/04/2020;05.33;13,49 +ven 03/04/2020;06.11;9,55 +lun 06/04/2020;07.19;7,48 +mar 07/04/2020;06.28;9,55 +mer 08/04/2020;06.34;10,24 +gio 09/04/2020;05.53;12,40 +ven 10/04/2020;05.55;7,29 +mar 14/04/2020;13.15;6,45 +mer 15/04/2020;05.34;11,05 +gio 16/04/2020;05.41;12,36 +ven 17/04/2020;05.50;10,50 +gio 23/04/2020;05.53;9,45 +ven 24/04/2020;07.35;8,55 +lun 27/04/2020;08.10;9,26 +mar 28/04/2020;05.50;10,58 +mer 29/04/2020;05.38;11,35 +gio 30/04/2020;07.30;9,27 +lun 04/05/2020;06.50;12,10 +mar 05/05/2020;07.10;10,19 +mer 06/05/2020;07.13;11,40 +gio 07/05/2020;07.25;8,35 +ven 08/05/2020;07.05;9,55 +lun 11/05/2020;06.40;11,40 +mar 12/05/2020;07.15;7,50 +mer 13/05/2020;06.25;9,48 +gio 14/05/2020;05.50;13,45 +ven 15/05/2020;07.40;11,23 +lun 08/06/2020;06.42;11,50 +mer 17/06/2020;07.09;13,05 +lun 27/07/2020;06.59;11,53 +mer 29/07/2020;06.50;12,09 +gio 30/07/2020;07.01;10,58 +ven 31/07/2020;07.10;9,51 +lun 03/08/2020;05.31;13,50 +mar 04/08/2020;05.25;12,49 +mer 05/08/2020;05.42;11,55 +gio 06/08/2020;05.33;10,56 +ven 07/08/2020;07.15;7,38 +lun 17/08/2020;05.25;13,21 +mar 18/08/2020;05.29;13,05 +mer 19/08/2020;05.36;13,39 +gio 20/08/2020;05.28;13,42 +ven 21/08/2020;05.34;13,04 +lun 24/08/2020;05.28;13,21 +mar 25/08/2020;05.19;13,45 +mer 26/08/2020;05.34;13,29 +gio 27/08/2020;05.26;13,40 +ven 28/08/2020;05.32;12,50 +lun 31/08/2020;07.05;12,55 +mar 01/09/2020;07.09;9,25 +mer 02/09/2020;07.15;10,33 +gio 03/09/2020;06.58;11,04 +ven 04/09/2020;07.11;10,50 +lun 07/09/2020;06.53;12,52 +mar 08/09/2020;06.50;11,32 +mer 09/09/2020;06.57;11,28 +gio 10/09/2020;07.03;8,39 +ven 11/09/2020;07.15;9,44 +lun 14/09/2020;05.17;14,05 +mar 15/09/2020;05.21;13,49 +mer 16/09/2020;05.28;13,56 +gio 17/09/2020;05.23;12.59 +ven 18/09/2020;05.19;13,36 +lun 21/09/2020;10.44;6,28 +mar 22/09/2020;05.22;13,39 +mer 23/09/2020;05.19;12,51 +lun 28/09/2020;07.03;12,09 +gio 01/10/2020;06.55;12,19 +mer 07/10/2020;05.19;14,25 +gio 08/10/2020;11.04;5,40 +ven 09/10/2020;07.38;8,27 +lun 12/10/2020;06.15;11,46 +mar 13/10/2020;05.39;12,50 +mer 14/10/2020;05.24;12,05 +gio 15/10/2020;05.49;10,19 +ven 16/10/2020;09.25;6,48 +mar 20/10/2020;05.26;12,47 +mer 21/10/2020;05.19;13,04 +lun 26/10/2020;05.22;12,49 +mar 27/10/2020;05.17;13,25 +mar 10/11/2020;07.15;13,05 +mer 11/11/2020;07.19;8,48 +lun 16/11/2020;05.25;14,15 +mar 17/11/2020;07.01;10,29 +mer 18/11/2020;07.26;10,08 +gio 19/11/2020;07.32;7,55 +ven 20/11/2020;06.58;13,15 +lun 23/11/2020;05.18;14,17 +mar 24/11/2020;05.29;12,53 +mer 25/11/2020;09.44;8,43 +gio 26/11/2020;05.28;13,24 +ven 27/11/2020;05.23;12,49 +lun 30/11/2020;05.21;13,33 +mar 01/12/2020;05.26;13,08 +mer 02/12/2020;06.44;10,29 +gio 03/12/2020;07.25;10,37 +ven 04/12/2020;07.30;6,49 +lun 07/12/2020;08.29;7,56 +mer 09/12/2020;05.24;12,03 +gio 10/12/2020;05.19;13,25 +ven 11/12/2020;05.39;10,27 +lun 14/12/2020;05.28;12,59 +mar 15/12/2020;05.24;12,05 +mer 16/12/2020;05.20;11,44 +gio 17/12/2020;05.26;11,59 +ven 18/12/2020;06.20;9,44 +lun 21/12/2020;07.03;8,55 +mar 22/12/2020;07.10;10,21 +mer 23/12/2020;07.09;9,58 +gio 24/12/2020;07.15;4,50 +lun 28/12/2020;08.10;8,43 +mar 29/12/2020;07.44;10,04 +mer 30/12/2020;07.25;10,47 +gio 31/12/2020;07.18;6,53 +gio 07/01/2021;06.24;9,05 +ven 08/01/2021;06.17;7,46 +lun 11/01/2021;05.26;13,10 +mar 12/01/2021;05.28;12,42 +mer 13/01/2021;05.21;13,05 +gio 14/01/2021;05.19;11,29 +ven 15/01/2021;05.27;10,59 +lun 18/01/2021;07.15;9,55 +mar 19/01/2021;06.44;11,06 +mer 20/01/2021;06.50;10,59 +gio 21/01/2021;07.03;9,58 +ven 22/01/2021;07.12;9,15 +lun 25/01/2021;07.15;10,29 +mar 26/01/2021;07.11;9,42 +mer 27/01/2021;07.19;11,04 +gio 28/01/2021;07.26;12,25 +ven 29/01/2021;06.41;8,19 +lun 01/02/2021;05.17;13,21 +mar 02/02/2021;07.22;10,56 +mer 03/02/2021;07.17;9,23 +gio 04/02/2021;06.44;10,39 +ven 05/02/2021;10.15;8,05 +lun 08/02/2021;06.50;11,05 +mar 09/02/2021;05.33;12,37 +mer 10/02/2021;05.29;13,05 +gio 11/02/2021;07.13;10,13 +ven 12/02/2021;06.58;10,38 +lun 15/02/2021;07.15;11,05 +mar 16/02/2021;07.22;11,25 +mer 17/02/2021;07.29;10,48 +gio 18/02/2021;07.18;10,25 +ven 19/02/2021;07.28;9,59 +lun 22/02/2021;05.20;13,25 +mar 23/02/2021;05.27;13,05 +mer 24/02/2021;05.18;13,17 +gio 25/02/2021;05.22;13,10 +ven 26/02/2021;05.24;12,39 +lun 01/03/2021;07.20;11,35 +mar 02/03/2021;07.16;10,44 +mer 03/03/2021;07.18;10,59 +gio 04/03/2021;07.22;10,35 +ven 05/03/2021;07.19;9,57 +lun 08/03/2021;06.55;12,48 +mar 09/03/2021;06.59;12,05 +mer 10/03/2021;07.05;10,38 +gio 11/03/2021;07.20;9,46 +ven 12/03/2021;07.15;10,09 +lun 15/03/2021;07.19;10,15 +mar 16/03/2021;07.25;9,43 +mer 17/03/2021;07.28;10,05 +gio 18/03/2021;07.44;8,59 +ven 19/03/2021;07.33;8,34 +lun 22/03/2021;05.25;13,15 +mar 23/03/2021;05.18;13,04 +mer 24/03/2021;05.26;13,27 +gio 25/03/2021;05.19;12,49 +ven 26/03/2021;05.20;10,34 +lun 29/03/2021;06.13;13,55 +mar 30/03/2021;06.25;13,01 +mer 31/03/2021;06.49;11,44 +gio 01/04/2021;07.15;10,35 +ven 02/04/2021;07.22;9,54 +mar 06/04/2021;06.57;12,05 +mer 07/04/2021;07.02;11,38 +gio 08/04/2021;07.05;10,58 +ven 09/04/2021;06.55;11,22 +lun 12/04/2021;05.20;14,16 +mar 13/04/2021;05.27;13,54 +mer 14/04/2021;05.31;13,49 +gio 15/04/2021;05.19;12,51 +ven 16/04/2021;05.22;12,43 +lun 19/04/2021;07.02;11,48 +mar 20/04/2021;07.10;11,25 +mer 21/04/2021;07.04;11,53 +gio 22/04/2021;07.15;10,35 +ven 23/04/2021;07.19;10,07, +lun 26/04/2021;06.52;12,05 +mar 27/04/2021;06.57;11,51 +mer 28/04/2021;07.02;12,24 +gio 29/04/2021;07.15;12,35 +ven 30/04/2021;06.59;10,52 +lun 03/05/2021;05.19;13,51 +mar 04/05/2021;05.24;13,07 +mer 05/05/2021;05.33;14,05 +gio 06/05/2021;05.26;13,29 +ven 07/05/2021;05.21;10,35 +lun 10/05/2021;05.17;14,25 +mar 11/05/2021;05.21;13,42 +mer 12/05/2021;05.28;14,09 +gio 13/05/2021;05.19;13,38 +ven 14/05/2021;05.31;11,07 +lun 17/05/2021;07.15;9,55 +mar 18/05/2021;06.38;11,36 +mer 19/05/2021;06.18;12,42 +gio 20/05/2021;07.39;6,58 +ven 21/05/2021;09.34;8,43 +lun 24/05/2021;11.10;7,06 +mar 25/05/2021;05.52;12,47 +mer 26/05/2021;06.03;12,29 +gio 27/05/2021;06.10;13,02 +ven 28/05/2021;06.17;12,44 +lun 31/05/2021;05.29;13,36 +mar 01/06/2021;05.17;13,07 +gio 03/06/2021;08.54;7,42 +ven 04/06/2021;08.25;9,21 +lun 07/06/2021;07.22;11,08 +mar 08/06/2021;07.10;12,25 +mer 09/06/2021;07.35;12,57 +gio 10/06/2021;06.51;13,09 +ven 11/06/2021;06.48;9,54 +lun 14/06/2021;05.27;13,26 +mar 15/06/2021;05.31;11,54 +mer 16/06/2021;05.19;12,06 +gio 17/06/2021;05.22;13,38 +ven 18/06/2021;05.24;12,43 +lun 21/06/2021;09.15;8,53 +mar 22/06/2021;05.23;14,06 +mer 23/06/2021;07.38;11,28 +gio 24/06/2021;06.25;12,04 +ven 25/06/2021;13.35;5,59 +lun 28/06/2021;05.21;13,39 +mar 29/06/2021;05.19;13,04 +mer 30/06/2021;05.23;12,37 +gio 01/07/2021;05.26;13,28 +ven 02/07/2021;05.48;10,09 +lun 05/07/2021;05.17;13,25 +mar 06/07/2021;05.32;13,33 +mer 07/07/2021;05.24;12,57 +gio 08/07/2021;05.48;12,35 +ven 09/07/2021;05.37;10,41 +lun 12/07/2021;07.25;10,54 +mar 13/07/2021;06.34;10,37 +mer 14/07/2021;07.10;9,59 +gio 15/07/2021;07.05;10,48 +ven 16/07/2021;07.43;8,29 +lun 19/07/2021;06.55;12,06 +mar 20/07/2021;07.03;11,53 +mer 21/07/2021;07.11;10,18 +gio 22/07/2021;07.22;9,06 +ven 23/07/2021;07.49;8,59 +lun 26/07/2021;10.19;7,38 +mar 27/07/2021;05.26;13,45 +mer 28/07/2021;05.35;13,19 +gio 29/07/2021;05.23;12,47 +ven 30/07/2021;07.37;9,16 +lun 02/08/2021;05.18;14,06 +mar 03/08/2021;05.23;13,48 +mer 04/08/2021;05.21;11,29 +gio 05/08/2021;05.32;10,36 +ven 06/08/2021;05.19;11,24 +lun 16/08/2021;08.31;9,44 +mar 17/08/2021;07.06;11,06 +mer 18/08/2021;07.19;10,35 +gio 19/08/2021;07.36;8,54 +ven 20/08/2021;07.03;12,07 +lun 23/08/2021;10.07;8,53 +mar 24/08/2021;07.10;11,28 +mer 25/08/2021;07.15;12,09 +gio 26/08/2021;07.01;13,04 +ven 27/08/2021;09.24;7,59 +lun 30/08/2021;07.25;13,02 +mar 31/08/2021;05.03;14,23 +mer 01/09/2021;05.33;14,55 +gio 02/09/2021;13.24;7,29 +ven 03/09/2021;05.55;14,08 +gio 09/09/2021;05.45;14,33 +ven 10/09/2021;05.08;15,01 +lun 13/09/2021;13.08;7,50 +mar 14/09/2021;05.23;14,56 +mer 15/09/2021;05.06;14,39 +gio 16/09/2021;06.27;12,41 +ven 17/09/2021;05.18;14,28 +lun 20/09/2021;05.11;14.48 +mar 21/09/2021;07.05;12.55 +mer 22/09/2021;07.11;12.59 +lun 27/09/2021;07.01;12,38 +mar 28/09/2021;07.15;12,47 +mer 29/09/2021;07.33;12,53 +gio 30/09/2021;07.29;12,21 +ven 01/10/2021;07.24;12,34 +lun 04/10/2021;07.17;13,39 +mar 05/10/2021;07.18;13,38 +mer 06/10/2021;07.11;13,03 +gio 07/10/2021;07.12;13,01 +ven 08/10/2021;07.07;12,31 +lun 11/10/2021;07.17;13,05 +mar 12/10/2021;07.22;13,38 +mer 13/10/2021;07.37;12,54 +gio 14/10/2021;08.43;10,08 +ven 15/10/2021;07.02;12,30 +lun 18/10/2021;07.27;13,01 +mar 19/10/2021;07.39;12,29 +mer 20/10/2021;07.19;13,22 +gio 21/10/2021;07.17;11,31 +ven 22/10/2021;11.10;7,00 +lun 25/10/2021;07.17;13,31 +mar 26/10/2021;07.27;11,58 +gio 28/10/2021;07.40;10,06 +ven 29/10/2021;07.03;9,27 +mer 03/11/2021;07.17;13,17 +gio 04/11/2021;07.05;10,30 +ven 05/11/2021;07.24;9,23 +lun 08/11/2021;07.20;13,30 +mar 09/11/2021;07.37;13,09 +mer 10/11/2021;07.17;12.48 +gio 11/11/2021;07.03;8,09 +ven 12/11/2021;07.10;9,08 +lun 15/11/2021;07.17;13,20 +mar 16/11/2021;07.18;11,43 +mer 17/11/2021;09.27;9,30 +gio 18/11/2021;07.03;10,12 +ven 19/11/2021;07.17;8,08 +lun 22/11/2021;08.40;12,10 +mar 23/11/2021;07.18;13,27 +mar 14/12/2021;07.47;13,10 +mer 15/12/2021;07.15;13.30 +gio 16/12/2021;07.03;13,08 +ven 17/12/2021;07.17;13.32 +mer 29/12/2021;09.10;9,19 +gio 30/12/2021;13.38;6,30 +lun 03/01/2022;07.07;13,20 +mar 04/01/2022;11.10;9,01 +mer 05/01/2022;07.27;7,30 +lun 10/01/2022;07.17;13,32 +gio 20/01/2022;07.27;13,08 +ven 21/01/2022;07.17;13,01 +lun 28/02/2022;07.13;13,10 +mar 01/03/2022;07.07;13,03 +mer 02/03/2022;07.49;13,09 +gio 03/03/2022;07.04;9,00 +ven 04/03/2022;07.27;10,33 +lun 07/03/2022;07.17;13,20 +mar 08/03/2022;07.23;13.33 +mer 09/03/2022;07.38;13.00 +gio 10/03/2022;08.07;11,00 +ven 11/03/2022;12.10;7,38 +mar 15/03/2022;07.23;13,29 +mer 16/03/2022;07.30;13,02 +gio 17/03/2022;07.27;13,01 +ven 18/03/2022;09.14;10,27 +lun 21/03/2022;13.10;7,18 +mar 22/03/2022;07.19;13,32 +mer 23/03/2022;07.23;13,06 +gio 24/03/2022;08.11;10,13 +ven 25/03/2022;07.17;8,00 +lun 28/03/2022;07.02;13,30 +mar 29/03/2022;07.29;13,09 +mer 30/03/2022;07.41;13.07 +gio 31/03/2022;07.14;13,20 \ No newline at end of file diff --git a/DemoData/Interclays02.csv b/DemoData/Interclays02.csv new file mode 100644 index 0000000..27234c1 --- /dev/null +++ b/DemoData/Interclays02.csv @@ -0,0 +1,508 @@ +Data;Ora Inizio ;Ore Lavorate +lun 02/12/2019;05.18;7,41 +mar 03/12/2019;05.22;7,22 +mer 04/12/2019;05.16;7,35 +lun 09/12/2019;14.12;5,43 +mar 10/12/2019;13.10;6,55 +mer 11/12/2019;13.15;7,19 +gio 12/12/2019;13.30;6,18 +ven 13/12/2019;13.10;7,24 +lun 16/12/2019;05.12;7,33 +mar 17/12/2019;05.22;7,27 +mer 18/12/2019;05.08;7,18 +gio 19/12/2019;05.17;6,57 +ven 20/12/2019;05.25;7,05 +lun 23/12/2019;13.18;7,32 +mar 24/12/2019;13.02;7,33 +mer 25/12/2019;13.11;7,28 +gio 26/12/2019;15.01;5,16 +ven 27/12/2019;13.25;7,12 +lun 30/12/2019;05.17;15,33 +mar 31/12/2019;05.03;15,28 +mer 01/01/2020;05.09;15,45 +gio 02/01/2020;05.08;15,37 +ven 03/01/2020;05.17;15,03 +lun 06/01/2020;13.14;7,43 +mar 07/01/2020;13.25;6,55 +mer 08/01/2020;15.05;5,18 +lun 20/01/2020;13.07;7,44 +mar 21/01/2020;13.14;6,51 +mer 22/01/2020;13.22;4,48 +gio 23/01/2020;13.19;7,27 +ven 24/01/2020;13.10;7,36 +mer 29/01/2020;07.19;3,19 +ven 31/01/2020;13.58;1,59 +lun 03/02/2020;13.10;7,25 +mar 04/02/2020;13.16;6,54 +mer 05/02/2020;13.09;7,06 +gio 06/02/2020;13.18;5,59 +ven 07/02/2020;13.26;4,29 +gio 13/02/2020;08.33;6,55 +ven 14/02/2020;08.19;7,02 +lun 17/02/2020;13.11;7,45 +mar 18/02/2020;13.06;7,48 +mer 19/02/2020;13.18;7,36 +gio 20/02/2020;14.36;6,15 +ven 21/02/2020;13.16;7,29 +lun 24/02/2020;05.06;7,45 +mar 25/02/2020;05.14;7,43 +mer 26/02/2020;05.11;7,44 +gio 27/02/2020;05.21;7,39 +ven 28/02/2020;05.19;7,28 +lun 02/03/2020;13.05;7,47 +mar 03/03/2020;13.08;5,55 +mer 04/03/2020;13.09;7,46 +gio 05/03/2020;13.17;7,01 +ven 06/03/2020;13.11;4,59 +lun 09/03/2020;05.15;7,44 +mar 10/03/2020;05.13;7,39 +mer 11/03/2020;05.09;7,51 +gio 12/03/2020;05.17;7,31 +ven 13/03/2020;05.33;7,26 +lun 16/03/2020;13.12;7,45 +mar 17/03/2020;13.19;7,33 +mer 18/03/2020;13.08;7,51 +gio 19/03/2020;13.23;7,29 +ven 20/03/2020;13.17;7,37 +mer 25/03/2020;17.29;0,33 +gio 26/03/2020;13.18;1,57 +lun 30/03/2020;13.17;7,22 +mar 31/03/2020;13.45;7,13 +mer 01/04/2020;14.01;5,54 +gio 02/04/2020;13.48;6,02 +ven 03/04/2020;13.09;7,48 +lun 06/04/2020;05.09;7,48 +mar 07/04/2020;05.15;15,26 +mer 08/04/2020;05.36;15,09 +gio 09/04/2020;05.06;15,12 +ven 10/04/2020;05.25;7,05 +mer 15/04/2020;14.54;1,25 +gio 16/04/2020;15.44;1,09 +ven 17/04/2020;17.46;1,38 +mar 21/04/2020;05.09;7,15 +ven 24/04/2020;05.01;6,31 +lun 27/04/2020;13.45;5,37 +mar 28/04/2020;15.23;4,29 +mer 29/04/2020;17.03;2,36 +lun 04/05/2020;08.06;7,39 +mar 05/05/2020;08.12;7,33 +mer 06/05/2020;08.11;7,21 +gio 07/05/2020;08.14;7,26 +ven 08/05/2020;08.19;7,33 +lun 11/05/2020;08.14;7,03 +mar 12/05/2020;08.16;7,15 +mer 13/05/2020;08.17;7,24 +gio 14/05/2020;08.11;7,18 +ven 15/05/2020;08.14;7,33 +lun 18/05/2020;09.22;1,59 +mar 19/05/2020;15.01;1,48 +lun 25/05/2020;10.55;2,03 +gio 28/05/2020;18.06;0,59 +ven 29/05/2020;09.28;3,45 +lun 01/06/2020;16.13;1,55 +mer 03/06/2020;05.33;14,42 +gio 04/06/2020;05.14;15,03 +ven 05/06/2020;05.33;15,16 +lun 08/06/2020;05.08;15,01 +mar 09/06/2020;05.11;15,12 +mer 10/06/2020;05.09;14,53 +gio 11/06/2020;05.04;15,33 +ven 12/06/2020;05.15;15,27 +lun 15/06/2020;05.06;15,18 +mar 16/06/2020;05.22;14,45 +mer 17/06/2020;05.18;15,22 +gio 18/06/2020;05.19;15,31 +ven 19/06/2020;05.07;15,09 +mar 23/06/2020;09.27;1,59 +gio 25/06/2020;14.56;2,04 +ven 26/06/2020;10.23;2,54 +lun 29/06/2020;08.23;1,49 +mar 30/06/2020;11.01;1,05 +ven 03/07/2020;18.47;0,45 +lun 06/07/2020;13.15;7,35 +mar 07/07/2020;13.10;7,45 +mer 08/07/2020;13.08;7,48 +gio 09/07/2020;13.11;7,25 +ven 10/07/2020;13.04;7,39 +lun 13/07/2020;05.09;7,46 +mar 14/07/2020;05.12;7,39 +mer 15/07/2020;05.04;7,42 +gio 16/07/2020;05.11;7,38 +ven 17/07/2020;05.39;6,41 +lun 20/07/2020;13.18;7,05 +mar 21/07/2020;13.09;7,19 +mer 22/07/2020;13.33;5,44 +gio 23/07/2020;13.03;6,44 +ven 24/07/2020;13.12;7,45 +lun 27/07/2020;08.06;7,51 +mar 28/07/2020;08.14;7,39 +mer 29/07/2020;08.03;7,55 +gio 30/07/2020;08.08;7,51 +ven 31/07/2020;08.09;7,49 +lun 03/08/2020;08.58;0,45 +mar 04/08/2020;16.55;1,33 +mar 18/08/2020;11.11;2,33 +mer 19/08/2020;09.28;1,58 +ven 21/08/2020;14.29;1,47 +mer 26/08/2020;07.19;3,19 +ven 28/08/2020;13.58;1,59 +lun 31/08/2020;13.10;7,25 +mar 01/09/2020;13.16;6,54 +mer 02/09/2020;13.09;7,06 +gio 03/09/2020;13.18;5,59 +ven 04/09/2020;13.26;4,29 +gio 10/09/2020;08.33;6,55 +ven 11/09/2020;08.19;7,02 +lun 14/09/2020;13.11;7,45 +mar 15/09/2020;13.06;7,48 +mer 16/09/2020;13.18;7,36 +gio 17/09/2020;14.36;6,15 +ven 18/09/2020;13.16;7,29 +lun 21/09/2020;05.06;7,45 +mar 22/09/2020;05.14;7,43 +mer 23/09/2020;05.11;7,44 +gio 24/09/2020;05.21;7,39 +ven 25/09/2020;05.19;7,28 +lun 28/09/2020;08.02;7,55 +mar 29/09/2020;08.12;7,42 +mer 30/09/2020;08.17;7,39 +gio 01/10/2020;08.09;7,41 +ven 02/10/2020;08.05;7,43 +lun 05/10/2020;08.33;7,18 +mar 06/10/2020;08.17;7,39 +mer 07/10/2020;08.09;7,44 +gio 08/10/2020;08.11;7,43 +ven 09/10/2020;08.12;7,38 +lun 12/10/2020;05.01;15,09 +mar 13/10/2020;05.13;14,58 +mer 14/10/2020;05.07;15,04 +gio 15/10/2020;05.03;15,11 +ven 16/10/2020;05.15;15,03 +lun 19/10/2020;05.11;15,13 +mar 20/10/2020;05.17;14,45 +mer 21/10/2020;05.08;14,29 +gio 22/10/2020;05.21;13,47 +ven 23/10/2020;05.55;14,17 +lun 26/10/2020;13.08;7,45 +mar 27/10/2020;13.07;7,48 +mer 28/10/2020;13.17;7,29 +gio 29/10/2020;13.11;7,17 +ven 30/10/2020;13.09;4,22 +lun 02/11/2020;12.01;2,02 +mer 04/11/2020;08.56;2,18 +ven 06/11/2020;14.33;2,17 +mar 10/11/2020;18.47;0,49 +mer 11/11/2020;13.57;1,56 +lun 16/11/2020;15.37;1,59 +ven 20/11/2020;16.55;0,47 +lun 23/11/2020;05.09;14,55 +mar 24/11/2020;05.04;15,09 +mer 25/11/2020;05.11;15,12 +gio 26/11/2020;05.03;15,01 +ven 27/11/2020;05.08;15,06 +lun 30/11/2020;05.18;15,09 +mar 01/12/2020;05.01;14,31 +mer 02/12/2020;05.09;14,55 +gio 03/12/2020;05.07;15,02 +ven 04/12/2020;05.14;14,37 +gio 10/12/2020;10.29;2,23 +ven 11/12/2020;16.41;2,57 +mar 15/12/2020;7.44;1,56 +mer 16/12/2020;09.03;2,38 +dom 20/12/2020;11.37;3,01 +lun 21/12/2020;17.01;2,44 +mar 22/12/2020;07.59;4,39 +lun 04/01/2021;15.27;1,59 +mar 05/01/2021;13.48;1,55 +gio 07/01/2021;09.24;1,56 +lun 11/01/2021;13.05;7,47 +mar 12/01/2021;13.08;5,55 +mer 13/01/2021;13.09;7,46 +gio 14/01/2021;13.17;7,01 +ven 15/01/2021;13.11;4,59 +lun 18/01/2021;05.15;7,44 +mar 19/01/2021;05.13;7,39 +mer 20/01/2021;05.09;7,51 +gio 21/01/2021;05.17;7,31 +ven 22/01/2021;05.33;7,26 +lun 25/01/2021;13.12;7,45 +mar 26/01/2021;13.19;7,33 +mer 27/01/2021;13.08;7,51 +gio 28/01/2021;13.23;7,29 +ven 29/01/2021;13.17;7,37 +lun 01/02/2021;08.06;7,39 +mar 02/02/2021;08.12;7,33 +mer 03/02/2021;08.11;7,21 +gio 04/02/2021;08.14;7,26 +ven 05/02/2021;08.19;7,33 +lun 08/02/2021;08.14;7,03 +mar 09/02/2021;08.16;7,15 +mer 10/02/2021;08.17;7,24 +gio 11/02/2021;08.11;7,18 +ven 12/02/2021;08.14;7,33 +lun 15/02/2021;08.33;7,18 +mar 16/02/2021;08.17;7,39 +mer 17/02/2021;08.09;7,44 +gio 18/02/2021;08.11;7,43 +ven 19/02/2021;08.12;7,38 +lun 22/02/2021;05.01;15,09 +mar 23/02/2021;05.13;14,58 +mer 24/02/2021;05.07;15,04 +gio 25/02/2021;05.03;15,11 +ven 26/02/2021;05.15;15,03 +lun 01/03/2021;05.11;15,13 +mar 02/03/2021;05.17;14,45 +mer 03/03/2021;05.08;14,29 +gio 04/03/2021;05.21;13,47 +ven 05/03/2021;05.55;14,17 +lun 08/03/2021;08.09;7,41 +mar 09/03/2021;08.13;7,35 +mer 10/03/2021;08.04;7,38 +gio 11/03/2021;08.22;7,17 +ven 12/03/2021;08.08;7,07 +lun 15/03/2021;14.12;5,43 +mar 16/03/2021;13.10;6,55 +mer 17/03/2021;13.15;7,19 +gio 18/03/2021;13.30;6,18 +ven 19/03/2021;13.10;7,24 +lun 22/03/2021;05.12;7,33 +mar 23/03/2021;05.22;7,27 +mer 24/03/2021;05.08;7,18 +gio 25/03/2021;05.17;6,57 +ven 26/03/2021;05.25;7,05 +lun 29/03/2021;13.18;7,32 +mar 30/03/2021;13.02;7,33 +mer 31/03/2021;13.11;7,28 +gio 01/04/2021;15.01;5,16 +ven 02/04/2021;13.25;7,12 +mar 06/04/2021;05.11;7,44 +mer 07/04/2021;05.03;7,51 +gio 08/04/2021;05.19;7,26 +ven 09/04/2021;05.07;7,39 +lun 12/04/2021;14.12;5,43 +mar 13/04/2021;13.10;6,55 +mer 14/04/2021;13.15;7,19 +gio 15/04/2021;13.30;6,18 +ven 16/04/2021;13.10;7,24 +lun 19/04/2021;05.12;7,33 +mar 20/04/2021;05.22;7,27 +mer 21/04/2021;05.08;7,18 +gio 22/04/2021;05.17;6,57 +ven 23/04/2021;05.25;7,05 +lun 26/04/2021;13.18;7,32 +mar 27/04/2021;13.02;7,33 +mer 28/04/2021;13.11;7,28 +gio 29/04/2021;15.01;5,16 +ven 30/04/2021;13.25;7,12 +mar 04/05/2021;16.37;1,59 +gio 06/05/2021;15.22;2,09 +ven 07/05/2021;18.39;2,14 +lun 10/05/2021;13.08;7,45 +mar 11/05/2021;13.07;7,48 +mer 12/05/2021;13.17;7,29 +gio 13/05/2021;13.11;7,17 +ven 14/05/2021;13.09;4,22 +lun 17/05/2021;05.09;7,46 +mar 18/05/2021;05.12;7,39 +mer 19/05/2021;05.04;7,42 +gio 20/05/2021;05.11;7,38 +ven 21/05/2021;05.39;6,41 +lun 24/05/2021;13.01;7,49 +mar 25/05/2021;13.09;2,57 +mer 26/05/2021;13.22;3,29 +gio 27/05/2021;13.19;4,25 +ven 28/05/2021;13.08;7,43 +lun 31/05/2021;12.59;2,11 +mar 01/06/2021;16.34;2,18 +gio 03/06/2021;13.48;2,17 +ven 04/06/2021;17.01;2,29 +lun 07/06/2021;13.18;7,32 +mar 08/06/2021;13.02;7,33 +mer 09/06/2021;13.11;7,28 +gio 10/06/2021;15.01;5,16 +ven 11/06/2021;13.25;7,12 +lun 14/06/2021;13.05;7,47 +mar 15/06/2021;13.08;5,55 +mer 16/06/2021;13.09;7,46 +gio 17/06/2021;13.17;7,01 +ven 18/06/2021;13.11;4,59 +lun 21/06/2021;05.15;7,44 +mar 22/06/2021;05.13;7,39 +mer 23/06/2021;05.09;7,51 +gio 24/06/2021;05.17;7,31 +ven 25/06/2021;05.33;7,26 +lun 28/06/2021;13.12;7,45 +mar 29/06/2021;13.19;7,33 +mer 30/06/2021;13.08;7,51 +gio 01/07/2021;13.23;7,29 +ven 02/07/2021;13.17;7,37 +lun 05/07/2021;05.12;7,33 +mar 06/07/2021;05.22;7,27 +mer 07/07/2021;05.08;7,18 +gio 08/07/2021;05.17;6,57 +ven 09/07/2021;05.25;7,05 +lun 12/07/2021;13.18;7,32 +mar 13/07/2021;13.02;7,33 +mer 14/07/2021;13.11;7,28 +gio 15/07/2021;15.01;5,16 +ven 16/07/2021;13.25;7,12 +lun 19/07/2021;05.17;15,33 +mar 20/07/2021;05.03;15,28 +mer 21/07/2021;05.09;15,45 +gio 22/07/2021;05.08;15,37 +ven 23/07/2021;05.17;15,03 +lun 26/07/2021;13.14;7,43 +mar 27/07/2021;13.25;6,55 +mer 28/07/2021;15.05;5,18 +lun 02/08/2021;17.14;2,48 +mar 03/08/2021;09.33;1,36 +mer 04/08/2021;10.51;1,55 +gio 05/08/2021;08.36;2,21 +ven 06/08/2021;13.09;3,35 +lun 16/08/2021;14.37;2,45 +lun 23/08/2021;05.09;14,55 +mar 24/08/2021;05.04;15,09 +mer 25/08/2021;05.11;15,12 +gio 26/08/2021;05.03;15,01 +ven 27/08/2021;05.08;15,06 +lun 30/08/2021;05.18;15,09 +mar 31/08/2021;05.01;14,31 +mer 01/09/2021;05.09;14,55 +gio 02/09/2021;05.07;15,02 +ven 03/09/2021;05.14;14,37 +lun 06/09/2021;05.08;15,01 +mar 07/09/2021;05.11;15,12 +mer 08/09/2021;05.09;14,53 +gio 09/09/2021;05.04;15,33 +ven 10/09/2021;05.15;15,27 +lun 13/09/2021;05.06;15,18 +mar 14/09/2021;05.22;14,45 +mer 15/09/2021;05.18;15,22 +gio 16/09/2021;05.19;15,31 +ven 17/09/2021;05.07;15,09 +lun 20/09/2021;09.11;2,12 +mar 21/09/2021;11.11;3,15 +mer 22/09/2021;12.59;2,27 +gio 23/09/2021;07.45;4,39 +ven 24/09/2021;17.37;5,21 +lun 27/09/2021;05.06;7,45 +mar 28/09/2021;05.14;7,43 +mer 29/09/2021;05.11;7,44 +gio 30/09/2021;05.21;7,39 +ven 01/10/2021;05.19;7,28 +lun 04/10/2021;08.02;7,55 +mar 05/10/2021;08.12;7,42 +mer 06/10/2021;08.17;7,39 +gio 07/10/2021;08.09;7,41 +ven 08/10/2021;08.05;7,43 +lun 11/10/2021;08.33;7,18 +mar 12/10/2021;08.17;7,39 +mer 13/10/2021;08.09;7,44 +gio 14/10/2021;08.11;7,43 +ven 15/10/2021;08.12;7,38 +lun 18/10/2021;05.01;15,09 +mar 19/10/2021;05.13;14,58 +mer 20/10/2021;05.07;15,04 +gio 21/10/2021;05.03;15,11 +ven 22/10/2021;05.15;15,03 +lun 25/10/2021;05.11;15,13 +mar 26/10/2021;05.17;14,45 +mer 27/10/2021;05.08;14,29 +gio 28/10/2021;05.21;13,47 +ven 29/10/2021;05.55;14,17 +lun 01/11/2021;09.35;5,27 +mer 03/11/2021;12.48;4,56 +gio 04/11/2021;16.39;3,33 +ven 05/11/2021;07.33;9,24 +lun 08/11/2021;14.12;5,43 +mar 09/11/2021;13.10;6,55 +mer 10/11/2021;13.15;7,19 +gio 11/11/2021;13.30;6,18 +ven 12/11/2021;13.10;7,24 +lun 15/11/2021;05.12;7,33 +mar 16/11/2021;05.22;7,27 +mer 17/11/2021;05.08;7,18 +gio 18/11/2021;05.17;6,57 +ven 19/11/2021;05.25;7,05 +lun 22/11/2021;13.18;7,32 +mer 24/11/2021;13.11;7,28 +gio 25/11/2021;15.01;5,16 +ven 26/11/2021;13.25;7,12 +lun 29/11/2021;05.17;15,33 +gio 02/12/2021;05.08;15,37 +ven 03/12/2021;05.17;15,03 +lun 06/12/2021;13.11;7,44 +mar 07/12/2021;13.02;7,51 +mar 14/12/2021;08.12;7,33 +mer 15/12/2021;08.11;7,21 +gio 16/12/2021;08.14;7,26 +ven 17/12/2021;08.19;7,33 +lun 20/12/2021;08.14;7,03 +mar 21/12/2021;08.16;7,15 +mer 22/12/2021;08.17;7,24 +gio 23/12/2021;08.11;7,18 +ven 24/12/2021;08.14;7,33 +lun 27/12/2021;10.09;1,36 +mar 28/12/2021;14.37;1,59 +mer 29/12/2021;14.19;2,07 +gio 30/12/2021;08.08;2,38 +mar 04/01/2022;13.27;2,06 +lun 10/01/2022;13.05;7,47 +mar 11/01/2022;13.08;5,55 +mer 12/01/2022;13.09;7,46 +gio 13/01/2022;13.17;7,01 +ven 14/01/2022;13.11;4,59 +lun 17/01/2022;05.15;7,44 +mar 18/01/2022;05.13;7,39 +mer 19/01/2022;05.09;7,51 +gio 20/01/2022;05.17;7,31 +ven 21/01/2022;05.33;7,26 +lun 24/01/2022;13.12;7,45 +mar 25/01/2022;13.19;7,33 +mer 26/01/2022;13.08;7,51 +gio 27/01/2022;13.23;7,29 +ven 28/01/2022;13.17;7,37 +lun 31/01/2022;08.06;7,39 +mar 01/02/2022;08.12;7,33 +mer 02/02/2022;08.11;7,21 +gio 03/02/2022;08.14;7,26 +ven 04/02/2022;08.19;7,33 +lun 07/02/2022;08.14;7,03 +mar 08/02/2022;08.16;7,15 +mer 09/02/2022;08.17;7,24 +gio 10/02/2022;08.11;7,18 +ven 11/02/2022;08.14;7,33 +lun 14/02/2022;05.06;7,42 +mar 15/02/2022;05.21;7,02 +mer 16/02/2022;05.46;5,33 +gio 17/02/2022;05.37;6,27 +ven 18/02/2022;05.22;7,09 +lun 21/02/2022;13.01;7,55 +mar 22/02/2022;13.06;7,42 +mer 23/02/2022;13.08;7,51 +gio 24/02/2022;13.11;7,36 +ven 25/02/2022;13.03;7,49 +lun 28/02/2022;05.12;7,33 +mar 01/03/2022;05.22;7,27 +mer 02/03/2022;05.08;7,18 +gio 03/03/2022;05.17;6,57 +ven 04/03/2022;05.25;7,05 +lun 07/03/2022;13.18;7,32 +mar 08/03/2022;13.02;7,33 +mer 09/03/2022;13.11;7,28 +gio 10/03/2022;15.01;5,16 +ven 11/03/2022;13.25;7,12 +lun 14/03/2022;05.17;15,33 +mar 15/03/2022;05.03;15,28 +mer 16/03/2022;05.09;15,45 +gio 17/03/2022;05.08;15,37 +ven 18/03/2022;05.17;15,03 +lun 21/03/2022;13.01;7,49 +mar 22/03/2022;13.09;2,57 +mer 23/03/2022;13.22;3,29 +gio 24/03/2022;13.19;4,25 +ven 25/03/2022;13.08;7,43 +lun 28/03/2022;08.06;7,01 +mar 29/03/2022;08.07;7,23 +mer 30/03/2022;08.11;6,27 +gio 31/03/2022;08.17;3,45 \ No newline at end of file diff --git a/DemoData/InterclaysDatiProd_Puliti.xlsx b/DemoData/InterclaysDatiProd_Puliti.xlsx new file mode 100644 index 0000000..f1e6f04 Binary files /dev/null and b/DemoData/InterclaysDatiProd_Puliti.xlsx differ diff --git a/MapoDataFiller.sln b/MapoDataFiller.sln new file mode 100644 index 0000000..b31717e --- /dev/null +++ b/MapoDataFiller.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.5.33530.505 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MapoDataFiller", "MapoDataFiller\MapoDataFiller.csproj", "{28FCC5FB-4A82-4251-A547-C233BAF1FB5A}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {28FCC5FB-4A82-4251-A547-C233BAF1FB5A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {28FCC5FB-4A82-4251-A547-C233BAF1FB5A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {28FCC5FB-4A82-4251-A547-C233BAF1FB5A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {28FCC5FB-4A82-4251-A547-C233BAF1FB5A}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {A1A70B19-B422-435B-9391-86897FA78BC8} + EndGlobalSection +EndGlobal diff --git a/MapoDataFiller/Conf/INTERCL_01.json b/MapoDataFiller/Conf/INTERCL_01.json new file mode 100644 index 0000000..5e4fc3d --- /dev/null +++ b/MapoDataFiller/Conf/INTERCL_01.json @@ -0,0 +1,136 @@ +{ + "SetupSimInt": { + "Dep_Cil_mmH2O": { + 0: 1, + 1: 1, + 25: 5, + 50: 10, + 75: 15, + 99: 26, + 100: 52 + }, + "Bruc_0_100": { + 0: 1, + 1: 17, + 25: 24, + 50: 33, + 75: 47, + 99: 71, + 100: 100 + }, + "Asp_0_100": { + 0: 3, + 1: 36, + 25: 52, + 50: 59, + 75: 77, + 99: 100, + 100: 100 + } + }, + "SetupSimReal": { + "Temp_Filtro": { + 0: 0.1, + 1: 5.6, + 25: 89.1, + 50: 103.7, + 75: 108.3, + 99: 118.1, + 100: 135.6 + }, + "T_Attuale_Cil": { + 0: 0.01, + 1: 0.65, + 25: 10.36, + 50: 11.46, + 75: 11.98, + 99: 13.99, + 100: 327.67 + }, + "Flowrate": { + 0: 0.01, + 1: 0.06, + 25: 5.34, + 50: 8.22, + 75: 9.48, + 99: 12.86, + 100: 262.8 + }, + "Ampere_Cil": { + 0: 10.6, + 1: 14.1, + 25: 14.4, + 50: 14.6, + 75: 15, + 99: 16.4, + 100: 79.1 + }, + "Ampere_Asp": { + 0: 12.1, + 1: 14.8, + 25: 15.9, + 50: 17.2, + 75: 22.1, + 99: 32.4, + 100: 87.3 + }, + "Ampere_Dosat": { + 0: 0.1, + 1: 1.8, + 25: 2, + 50: 2, + 75: 2.1, + 99: 2.4, + 100: 3.3 + } + }, + "SetupDtData": { + "Tot_Parz_Dosatore": { + "2019-11-29 02:24:13": 3619.129, + "2020-01-08 13:56:24": 4101.16, + "2020-01-12 17:34:34": 4201.494, + "2020-01-12 17:34:35": 0, + "2020-01-17 17:34:35": 119.352, + "2020-01-31 11:39:32": 471.494, + "2020-02-07 19:38:58": 606.883, + "2020-03-19 23:59:53": 2112.625, + "2020-04-23 20:38:32": 2929.045, + "2020-05-15 17:30:57": 3500.943, + "2020-05-15 17:30:58": 447.943, + "2020-05-15 20:04:57": 457.217, + "2020-05-15 20:04:58": 0, + "2020-06-12 19:19:36": 736.229, + "2020-06-30 19:56:21": 1225.481, + "2020-07-14 20:05:37": 1828.772, + "2020-07-28 20:15:55": 2358.175, + "2020-09-30 11:29:26": 4081.050, + "2020-11-16 13:01:33": 5419.626, + "2021-11-24 12:50:37": 16632.060, + "2022-01-14 20:07:39": 18187.904, + "2022-03-14 11:33:21": 20782.475, + "2022-11-21 08:48:21": 27770.447, + "2023-03-07 15:40:44": 30951.118 + }, + "Tot_Dosatore": { + "2019-11-29 02:24:14": 3770.426, + "2020-01-08 13:56:24": 4252.457, + "2020-01-17 17:34:35": 4465.844, + "2020-01-31 11:39:32": 4817.986, + "2020-02-07 19:38:58": 4953.375, + "2020-03-19 23:59:53": 6459.117, + "2020-04-23 20:38:32": 7275.537, + "2020-05-15 17:30:58": 7818.401, + "2020-06-12 19:19:36": 8563.820, + "2020-06-30 19:56:21": 9053.072, + "2020-07-14 20:05:37": 9656.363, + "2020-07-28 20:15:55": 10185.766, + "2020-09-30 11:29:26": 11908.641, + "2020-11-16 13:01:33": 13247.217, + "2021-11-24 12:50:37": 24459.651, + "2022-01-14 20:07:39": 26015.495, + "2022-03-14 11:33:21": 28610.066, + "2022-11-21 08:48:21": 35598.038, + "2023-03-07 15:40:44": 38778.709 + } + } +} \ No newline at end of file diff --git a/MapoDataFiller/Conf/INTERCL_02.json b/MapoDataFiller/Conf/INTERCL_02.json new file mode 100644 index 0000000..1a37234 --- /dev/null +++ b/MapoDataFiller/Conf/INTERCL_02.json @@ -0,0 +1,103 @@ +{ + "SetupSimInt": { + "Dep_Cil_mmH2O": { + 0: 1, + 1: 1, + 25: 5, + 50: 10, + 75: 15, + 99: 26, + 100: 52 + }, + "Bruc_0_100": { + 0: 1, + 1: 17, + 25: 24, + 50: 33, + 75: 47, + 99: 71, + 100: 100 + }, + "Asp_0_100": { + 0: 3, + 1: 36, + 25: 52, + 50: 59, + 75: 77, + 99: 100, + 100: 100 + } + }, + "SetupSimReal": { + "Temp_Filtro": { + 0: 0.1, + 1: 5.6, + 25: 89.1, + 50: 103.7, + 75: 108.3, + 99: 118.1, + 100: 135.6 + }, + "T_Attuale_Cil": { + 0: 0.01, + 1: 0.65, + 25: 10.36, + 50: 11.46, + 75: 11.98, + 99: 13.99, + 100: 327.67 + }, + "Flowrate": { + 0: 0.01, + 1: 0.06, + 25: 5.34, + 50: 8.22, + 75: 9.48, + 99: 12.86, + 100: 262.8 + }, + "Ampere_Cil": { + 0: 10.6, + 1: 14.1, + 25: 14.4, + 50: 14.6, + 75: 15, + 99: 16.4, + 100: 79.1 + }, + "Ampere_Asp": { + 0: 12.1, + 1: 14.8, + 25: 15.9, + 50: 17.2, + 75: 22.1, + 99: 32.4, + 100: 87.3 + }, + "Ampere_Dosat": { + 0: 0.1, + 1: 1.8, + 25: 2, + 50: 2, + 75: 2.1, + 99: 2.4, + 100: 3.3 + } + }, + "SetupDtData": { + "Tot_Parz_Dosatore": { + "2020-06-30 19:56:21": 1225.481, + "2020-11-16 13:01:33": 5419.626, + "2022-03-14 11:33:21": 20782.475, + "2022-11-21 08:48:21": 27770.447, + "2023-03-07 15:40:44": 30951.118 + }, + "Tot_Dosatore": { + "2020-06-30 19:56:21": 9053.072, + "2020-11-16 13:01:33": 13247.217, + "2022-03-14 11:33:21": 28610.066, + "2022-11-21 08:48:21": 35598.038, + "2023-03-07 15:40:44": 38778.709 + } + } +} \ No newline at end of file diff --git a/MapoDataFiller/DayConf.cs b/MapoDataFiller/DayConf.cs new file mode 100644 index 0000000..2ecdc7d --- /dev/null +++ b/MapoDataFiller/DayConf.cs @@ -0,0 +1,46 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MapoDataFiller +{ + public class DayConf + { + public DateTime dtStart { get; set; } = DateTime.Today; + public DateTime dtEnd { get; set; } = DateTime.Today.AddDays(1); + + /// + /// Init di default + /// + public DayConf() + { } + + /// + /// restituisce un oggetto DayConf data stringa raw + cod formato + /// + /// Formato della stringa dati... es CsvDateDur --> data;ora;durata + /// + public DayConf(string formato, string rawData) + { + string pattern = "dd/MM/YYYY"; + var cultInfo = new CultureInfo("it-IT"); + double numOre = 0; + if (formato == "CsvDateDur") + { + var dBlock = rawData.Split(";"); + var datePart = dBlock[0].Split(' '); + if (datePart.Length > 1) + { + string dateForm = $"{datePart[1]} {dBlock[1].Replace(".", ":")}"; + dtStart = DateTime.Parse(dateForm, cultInfo); + // ora fine... + double.TryParse(dBlock[2], out numOre); + dtEnd = dtStart.AddHours(numOre); + } + } + } + } +} diff --git a/MapoDataFiller/Filler/InterClays.cs b/MapoDataFiller/Filler/InterClays.cs new file mode 100644 index 0000000..99fbe9a --- /dev/null +++ b/MapoDataFiller/Filler/InterClays.cs @@ -0,0 +1,405 @@ +namespace MapoDataFiller.Filler +{ + public class InterClays + { + #region Public Properties + + public SimSetup currSetup { get; set; } = new SimSetup(); + + #endregion Public Properties + + #region Public Methods + + /// + /// Restituisce elenco righe da caricare sul DB dato periodo indicato + /// + /// + /// + /// + public SimBlock GetDataRows(string CodIOB, DayConf currDay) + { + string fileConf = Path.Combine("Conf", $"{CodIOB}.json"); + if (File.Exists(fileConf)) + { + currSetup = SimSetup.readConf(fileConf); + } + + SimBlock answ = new SimBlock(); + int idxEv = 0; + int idxFl = 0; + bool doProd = false; + List nextRowsFL = new List(); + List nextRowsEV = new List(); + int valReq = 0; + int valCurr = 0; + // simulo periodi + int numPer = rnd.Next(10, numPerMax); + // calcolo durata media periodi in minuti + double avgDurPer = (currDay.dtEnd.Subtract(currDay.dtStart).TotalMinutes) / numPer; + double preDelay = avgDurPer / 2; + // imposto cursore + DateTime dtStart = currDay.dtStart.AddMinutes(preDelay); + DateTime dtEnd = dtStart; + // per prima cosa aggiungo start dopo un delay di max 1/2 periodo... + answ.FlList.Add($"{CodIOB};{dtStart:yyyy-MM-dd HH:mm:ss.fff};IOB-STATUS;IOB Started;{idxFl++}"); + answ.EvList.Add($"{CodIOB};{dtStart:yyyy-MM-dd HH:mm:ss.fff};14;ND;[{idxEv++}] 00;0;-"); + // calcolo durata successivi + while (dtEnd < currDay.dtEnd) + { + dtStart = dtEnd.AddSeconds(rnd.Next(25, 35)); + dtEnd = dtStart.AddMinutes(avgDurPer * rnd.Next(600, 1400) / 1000); + // verifico il tipo di CodIOB + if (CodIOB == "INTERCL_01") + { + // tiro a dadi x decidere SE LAVORA periodo... 50% dei casi nel periodo TRACCIATO + doProd = (rnd.Next(0, 100) <= 40); + + // FluxLOG: genero righe FL x periodo e sommo + nextRowsFL = IC_ESS_getFlRows(CodIOB, dtStart, dtEnd, doProd, ref idxFl); + + // EvList: genero righe EV x periodo e sommo + nextRowsEV = IC_ESS_getEvRows(CodIOB, dtStart, dtEnd, doProd, ref idxEv); + } + else if (CodIOB == "INTERCL_02") + { + // verifico se DEVO finire caricamento... + if (valCurr < valReq) + { + doProd = true; + } + else + { + // tiro a dadi x decidere SE ho pesate nel periodo... 30% dei casi + doProd = (rnd.Next(0, 100) <= 30); + + // FluxLOG: SE ho pesate --> genero target + valReq = doProd ? rnd.Next(valMin / valStep, valMax / valStep) * valStep : 0; + } + // FluxLOG: genero righe FL x periodo e sommo + nextRowsFL = IC_OX_getFlRows(CodIOB, dtStart, dtEnd, doProd, valReq, ref idxFl, ref valCurr); + + // EvList: genero righe EV x periodo e sommo + nextRowsEV = IC_OX_getEvRows(CodIOB, dtStart, dtEnd, doProd, ref idxEv); + } + // accodo FL + answ.FlList.AddRange(nextRowsFL); + // accodo EV + answ.EvList.AddRange(nextRowsEV); + } + + // aggiungo chiusura eventi... + dtStart = dtEnd.AddSeconds(rnd.Next(25, 35)); + answ.EvList.Add($"{CodIOB};{dtStart:yyyy-MM-dd HH:mm:ss.fff};15;ND;[{idxEv++}] 01;0;-"); + dtStart = dtEnd.AddSeconds(rnd.Next(80, 180)); + answ.EvList.Add($"{CodIOB};{dtStart:yyyy-MM-dd HH:mm:ss.fff};14;ND;[{idxEv++}] 00;0;-"); + + // ritorno + return answ; + } + + #endregion Public Methods + + #region Protected Fields + + protected int numPerMax = 50; + protected int numSec = 30; + protected Random rnd = new Random(); + protected int stepMax = 150; + protected int stepMin = 50; + protected int valMax = 15000; + protected int valMin = 500; + protected int valStep = 10; + protected int waitMax = 240; + protected int waitMin = 10; + + #endregion Protected Fields + + #region Protected Methods + + /// + /// Simulo un blocco dati FL + /// + /// + /// + /// + /// + /// + /// + protected List IC_OX_getEvRows(string CodIOB, DateTime dtStart, DateTime dtEnd, bool doProd, ref int idxCount) + { + List rows = new List(); + DateTime dtCurs = dtStart.AddMilliseconds(rnd.Next(1000, 60000)); + string currRow = ""; + // reset counter + idxCount = idxCount <= 9999 ? idxCount : 0; + // se produce registro poweron... + if (doProd) + { + currRow = $"{CodIOB};{dtStart.AddSeconds(5):yyyy-MM-dd HH:mm:ss.fff};16;ND;[{idxCount++}] 23;0;-"; + rows.Add(currRow); + currRow = $"{CodIOB};{dtEnd.AddSeconds(-5):yyyy-MM-dd HH:mm:ss.fff};15;ND;[{idxCount++}] 01;0;-"; + rows.Add(currRow); + } + // se NON produce alterno valori spenta/accesa + else + { + // genera i dati secondo lo schema configurato... con periodo da 15" a 15 min di pausa + while (dtCurs < dtEnd) + { + currRow = $"{CodIOB};{dtCurs:yyyy-MM-dd HH:mm:ss.fff};15;ND;[{idxCount++}] 01;0;-"; + rows.Add(currRow); + dtCurs = dtCurs.AddSeconds(rnd.Next(60 * 5, 60 * 15)); + currRow = $"{CodIOB};{dtCurs:yyyy-MM-dd HH:mm:ss.fff};14;ND;[{idxCount++}] 00;0;-"; + rows.Add(currRow); + dtCurs = dtCurs.AddMilliseconds(rnd.Next(500, 5000)); + // reset counter + idxCount = idxCount <= 9999 ? idxCount : 0; + } + } + return rows; + } + + /// + /// Simulo un blocco dati FL + /// + /// + /// + /// + /// + /// + /// + /// + /// + protected List IC_OX_getFlRows(string CodIOB, DateTime dtStart, DateTime dtEnd, bool doProd, int valReq, ref int idxCount, ref int valCurr) + { + List rows = new List(); + DateTime dtCurs = dtStart; + int valTo = doProd ? valReq + rnd.Next(0, valStep) * valStep : 0; + valCurr = valReq > 0 ? valCurr : 0; + string currRow = ""; + // reset counter + idxCount = idxCount <= 9999 ? idxCount : 0; + // genera i dati secondo lo schema configurato... + while (dtCurs < dtEnd) + { + currRow = $"{CodIOB};{dtCurs:yyyy-MM-dd HH:mm:ss.fff};kgImp;{valReq};{idxCount++}"; + rows.Add(currRow); + dtCurs = dtCurs.AddMilliseconds(rnd.Next(50, 300)); + currRow = $"{CodIOB};{dtCurs:yyyy-MM-dd HH:mm:ss.fff};kgAct;{valCurr};{idxCount++}"; + rows.Add(currRow); + dtCurs = dtCurs.AddMilliseconds(rnd.Next(27000, 33000)); + // incremento peso... SE <= max... + if (valCurr < valTo) + { + valCurr += rnd.Next(stepMin / valStep, stepMax / valStep) * valStep; + } + // reset counter + idxCount = idxCount <= 9999 ? idxCount : 0; + } + return rows; + } + + + /// + /// Simulo un blocco dati FL + /// + /// + /// + /// + /// + /// + /// + protected List IC_ESS_getEvRows(string CodIOB, DateTime dtStart, DateTime dtEnd, bool doProd, ref int idxCount) + { + List rows = new List(); + DateTime dtCurs = dtStart.AddMilliseconds(rnd.Next(1000, 60000)); + string currRow = ""; + // reset counter + idxCount = idxCount <= 9999 ? idxCount : 0; + var fullDuration = dtEnd.Subtract(dtStart).TotalMinutes; + // se produce registro riscaldamento + poweron... + if (doProd) + { + // calcolo 1/8 = 12.5% riscaldamento... + currRow = $"{CodIOB};{dtStart.AddSeconds(1):yyyy-MM-dd HH:mm:ss.fff};40;ND;[{idxCount++}] 34;0;-"; + rows.Add(currRow); + // ...il resto lavoro... partendo a 1/8 + currRow = $"{CodIOB};{dtStart.AddMinutes(fullDuration / 8):yyyy-MM-dd HH:mm:ss.fff};16;ND;[{idxCount++}] 13;0;-"; + rows.Add(currRow); + currRow = $"{CodIOB};{dtEnd.AddSeconds(-1):yyyy-MM-dd HH:mm:ss.fff};15;ND;[{idxCount++}] 12;0;-"; + rows.Add(currRow); + } + // se NON produce alterno valori spenta/accesa + else + { + /* + * genera i dati con durata secondo pareto standard... + * - 10% --> 24: manuale + * - 30% --> 15: fermo generico + * - 60% --> 14: spenta + */ + // manuale + currRow = $"{CodIOB};{dtStart.AddSeconds(1):yyyy-MM-dd HH:mm:ss.fff};24;ND;[{idxCount++}] 24;0;-"; + rows.Add(currRow); + // fermo generico dopo 10% + currRow = $"{CodIOB};{dtStart.AddMinutes(fullDuration / 10):yyyy-MM-dd HH:mm:ss.fff};15;ND;[{idxCount++}] 12;0;-"; + rows.Add(currRow); + // spenta dopo 40% + currRow = $"{CodIOB};{dtStart.AddMinutes(fullDuration * 4 / 10):yyyy-MM-dd HH:mm:ss.fff};15;ND;[{idxCount++}] 12;0;-"; + rows.Add(currRow); + // reset counter + idxCount = idxCount <= 9999 ? idxCount : 0; + } + return rows; + } + + /// + /// Simulo un blocco dati FL + /// + /// + /// + /// + /// + /// + /// + /// + /// + protected List IC_ESS_getFlRows(string CodIOB, DateTime dtStart, DateTime dtEnd, bool doProd, ref int idxCount) + { + List rows = new List(); + // inizio spostando di 5-10 sec avanti inizio + DateTime dtCurs = dtStart.AddSeconds(rnd.Next(5, 10)); + int simInt = 0; + double simReal = 0; + double simDTime = 0; + // se è do prod --> simulo 50° percentile in su, altrimenti primi 50 percentili... + string currRow = ""; + // reset counter + idxCount = idxCount <= 9999 ? idxCount : 0; + // genera i dati secondo lo schema configurato... + while (dtCurs < dtEnd) + { + // in primis genero gli items INT + if (currSetup.SetupSimInt.Count > 0) + { + foreach (var item in currSetup.SetupSimInt) + { + simInt = simValInt(doProd, item.Key, item.Value); + currRow = $"{CodIOB};{dtCurs:yyyy-MM-dd HH:mm:ss.fff};{item.Key};{simInt};{idxCount++}"; + rows.Add(currRow); + dtCurs = dtCurs.AddMilliseconds(rnd.Next(10, 100)); + idxCount = idxCount <= 9999 ? idxCount : 0; + } + } + // poi gli item REAL + if (currSetup.SetupSimReal.Count > 0) + { + foreach (var item in currSetup.SetupSimReal) + { + simReal = simValReal(doProd, item.Key, item.Value); + currRow = $"{CodIOB};{dtCurs:yyyy-MM-dd HH:mm:ss.fff};{item.Key};{simReal};{idxCount++}"; + rows.Add(currRow); + dtCurs = dtCurs.AddMilliseconds(rnd.Next(10, 100)); + idxCount = idxCount <= 9999 ? idxCount : 0; + } + } + // infine certo gli items basati su datetime + if (currSetup.SetupDtData.Count > 0 && doProd) + { + foreach (var item in currSetup.SetupDtData) + { + simDTime = simValData(dtCurs, item.Key, item.Value); + currRow = $"{CodIOB};{dtCurs:yyyy-MM-dd HH:mm:ss.fff};{item.Key};{simDTime};{idxCount++}"; + rows.Add(currRow); + dtCurs = dtCurs.AddMilliseconds(rnd.Next(10, 100)); + idxCount = idxCount <= 9999 ? idxCount : 0; + } + } + + + dtCurs = dtCurs.AddMilliseconds(rnd.Next(87000, 93000)); + // reset counter + idxCount = idxCount <= 9999 ? idxCount : 0; + } + return rows; + } + /// + /// Simulazione valore int secondo tab transcodifica: + /// doProd=true --> simulo 50° percentile in su, altrimenti primi 50 percentili... + /// + /// + /// + /// + /// + protected int simValInt(bool doProd, string codFlux, Dictionary transcMap) + { + int result = 0; + // se è in prod --> 50° perc in su... + int rawSim = rnd.Next(0, 50) + (doProd ? 50 : 0); + // transcodifico + var val0 = transcMap + .Where(x => x.Key <= rawSim) + .OrderByDescending(x => x.Value) + .FirstOrDefault(); + var val1 = transcMap + .Where(x => x.Key >= rawSim) + .OrderBy(x => x.Value) + .FirstOrDefault(); + result = val0.Value + (int)Math.Round((double)(val1.Value - val0.Value) * (rawSim - val0.Key) / (val1.Key - val0.Key), 0); + return result; + } + /// + /// Simulazione valore REAL secondo tab transcodifica: + /// doProd=true --> simulo 50° percentile in su, altrimenti primi 50 percentili... + /// + /// + /// + /// + /// + protected double simValReal(bool doProd, string codFlux, Dictionary transcMap) + { + double result = 0; + // se è in prod --> 50° perc in su... + int rawSim = rnd.Next(0, 50) + (doProd ? 50 : 0); + // transcodifico + var val0 = transcMap + .Where(x => x.Key <= rawSim) + .OrderByDescending(x => x.Value) + .FirstOrDefault(); + var val1 = transcMap + .Where(x => x.Key >= rawSim) + .OrderBy(x => x.Value) + .FirstOrDefault(); + result = Math.Round(val0.Value + (val1.Value - val0.Value) * (rawSim - val0.Key) / (val1.Key - val0.Key), 2); + return result; + } + /// + /// Simulazione valore Real dt-based secondo tab transcodifica + /// + /// + /// + /// + /// + protected double simValData(DateTime dtCurs, string codFlux, Dictionary transcMap) + { + double result = 0; + int rawSim = rnd.Next(-5000, 5000); + // perturbo la data in ms per +/-5 sec + dtCurs = dtCurs.AddMilliseconds(rawSim); + // transcodifico + var val0 = transcMap + .Where(x => x.Key <= dtCurs) + .OrderByDescending(x => x.Value) + .FirstOrDefault(); + var val1 = transcMap + .Where(x => x.Key >= dtCurs) + .OrderBy(x => x.Value) + .FirstOrDefault(); + // prendo valore intervallo calcolato... + result = Math.Round(val0.Value + (val1.Value - val0.Value) * (dtCurs - val0.Key) / (val1.Key - val0.Key), 2); + return result; + } + + #endregion Protected Methods + } +} \ No newline at end of file diff --git a/MapoDataFiller/FluxStats.cs b/MapoDataFiller/FluxStats.cs new file mode 100644 index 0000000..202bdd5 --- /dev/null +++ b/MapoDataFiller/FluxStats.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using YamlDotNet.Serialization.NamingConventions; +using YamlDotNet.Serialization; +using Newtonsoft.Json; + +namespace MapoDataFiller +{ + public class SimSetup + { + public Dictionary> SetupSimInt { get; set; } = new Dictionary>(); + public Dictionary> SetupSimReal { get; set; } = new Dictionary>(); + public Dictionary> SetupDtData { get; set; } = new Dictionary>(); + + public static SimSetup readConf(string filePath) + { + SimSetup retObj = new SimSetup(); + if (File.Exists(filePath)) + { + string rawData = File.ReadAllText(filePath); + var rawDecode = JsonConvert.DeserializeObject(rawData); + retObj = rawDecode != null ? rawDecode : new SimSetup(); + } + return retObj; + } + } +} diff --git a/MapoDataFiller/MConf.cs b/MapoDataFiller/MConf.cs new file mode 100644 index 0000000..8bc824b --- /dev/null +++ b/MapoDataFiller/MConf.cs @@ -0,0 +1,52 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Xml.Linq; +using YamlDotNet.Serialization.NamingConventions; +using YamlDotNet.Serialization; +using System.Reflection.Metadata; + +namespace MapoDataFiller +{ + public class MConf + { + public string ConfDir { get; set; } = ""; + public string CodIOB { get; set; } = ""; + public bool HasHeader { get; set; } = false; + public string TimeTable { get; set; } = ""; + public string OutFolder { get; set; } = ""; + + public MConf() + { + ConfDir = @"C:\Temp\Interclays\"; + CodIOB = "NONE"; + HasHeader = false; + TimeTable = "Demo.csv"; + OutFolder = @"C:\Temp\Interclays\Out"; + } + } + public class CMan + { + /// + /// Deserializza dato filePath + /// + /// + public static MConf readConf(string filePath) + { + MConf retObj = new MConf(); + if (File.Exists(filePath)) + { + var deserializer = new DeserializerBuilder() + .WithNamingConvention(new PascalCaseNamingConvention()) + .Build(); + string rawData = File.ReadAllText(filePath); + + var input = new StringReader(rawData); + retObj = deserializer.Deserialize(input); + } + return retObj; + } + } +} diff --git a/MapoDataFiller/MapoDataFiller.csproj b/MapoDataFiller/MapoDataFiller.csproj new file mode 100644 index 0000000..5e57c73 --- /dev/null +++ b/MapoDataFiller/MapoDataFiller.csproj @@ -0,0 +1,28 @@ + + + + Exe + net6.0 + enable + enable + + + + + + + + + + + Always + + + Always + + + Always + + + + diff --git a/MapoDataFiller/Program.cs b/MapoDataFiller/Program.cs new file mode 100644 index 0000000..3c47632 --- /dev/null +++ b/MapoDataFiller/Program.cs @@ -0,0 +1,131 @@ +// See https://aka.ms/new-console-template for more information +using MapoDataFiller; +using MapoDataFiller.Filler; +using Spectre.Console; + + +AnsiConsole.Write( + new FigletText("MapoDataFiller") + .LeftAligned() + .Color(Color.Blue1)); +var rule = new Rule("[green]Setup data[/]"); +rule.Alignment = Justify.Left; +AnsiConsole.Write(rule); + +// recupero configurazione... +MConf currConf = new MConf(); +if (File.Exists("conf.yaml")) +{ + currConf = CMan.readConf("conf.yaml"); +} +AnsiConsole.WriteLine(); + +AnsiConsole.MarkupLineInterpolated($"Conf ConfDir: [yellow]{currConf.ConfDir}[/]"); +var pathOk = AnsiConsole.Confirm("Confermi ConfDir?"); +while (!pathOk) +{ + currConf.ConfDir = AnsiConsole.Ask("Inserisci ConfDir desiderato:"); + AnsiConsole.WriteLine(currConf.ConfDir); + pathOk = AnsiConsole.Confirm("Confermi ConfDir?"); +} + +// ora leggo i file di conf yaml e presento opzione... +if (!Directory.Exists(currConf.ConfDir)) +{ + // segnalo errore, credo directory + AnsiConsole.WriteLine("Conf directory not found! exiting..."); + Directory.CreateDirectory(currConf.ConfDir); +} +else +{ + // leggo elenco file yaml e presento alternativa + var fileOpt = Directory.GetFiles(currConf.ConfDir, "*.yaml"); + if (fileOpt.Length == 0) + { + AnsiConsole.WriteLine("Sim Conf file not found, exiting!"); + } + else + { + var fileSel = AnsiConsole.Prompt( + new SelectionPrompt() + .Title("Quale file vuoi [green]processare[/]?") + .PageSize(10) + .MoreChoicesText("[grey](Usare up/down per scorrere)[/]") + .AddChoices(fileOpt)); + + // leggo la conf del file selezionato... + if (!string.IsNullOrEmpty(fileSel)) + { + currConf = CMan.readConf(fileSel); + +#if false + // procedo come prima + AnsiConsole.MarkupLineInterpolated($"Conf FillMode: [yellow]{currConf.FillMode}[/]"); + var fillOK = AnsiConsole.Confirm("Confermi FillMode?"); + while (!fillOK) + { + currConf.FillMode = AnsiConsole.Ask("Inserisci il modo desiderato:"); + AnsiConsole.WriteLine(currConf.FillMode); + fillOK = AnsiConsole.Confirm("Confermi FillMode?"); + } + + AnsiConsole.MarkupLineInterpolated($"Conf HasHeader: [yellow]{currConf.HasHeader}[/]"); + var headOK = AnsiConsole.Confirm("Confermi HasHeader?"); + while (!headOK) + { + currConf.HasHeader = AnsiConsole.Ask("HasHeader (true/false)?"); + AnsiConsole.WriteLine(currConf.HasHeader); + headOK = AnsiConsole.Confirm("Confermi HasHeader?"); + } +#endif + + // leggo timetable + string filePath = Path.Combine(currConf.ConfDir, currConf.TimeTable); + if (File.Exists(filePath)) + { + var righe = File.ReadAllLines(filePath).ToList(); + // se devo saltare + if (currConf.HasHeader) + { + righe = righe.Skip(1).ToList(); + } + // svuoto cartella output + if (!Directory.Exists(currConf.OutFolder)) + { + Directory.CreateDirectory(currConf.OutFolder); + } + var fileList = Directory.GetFiles(currConf.OutFolder); + foreach (var file in fileList) + { + File.Delete(file); + } + + // verifico quale oggetto sim avviare... x ora SOLO interclays + InterClays currSim = new InterClays(); + // ciclo su ogni record + foreach (var riga in righe) + { + // recupero dati del giorno corrente + var giornata = new DayConf("CsvDateDur", riga); + + var simDataBlock = currSim.GetDataRows(currConf.CodIOB, giornata); + // scrivo sul file annuale i dati del singolo giorno... + string pathFileFL = Path.Combine(currConf.OutFolder, $"{currConf.CodIOB}_FL_{giornata.dtStart:yyyy}.csv"); + if (!File.Exists(pathFileFL)) + { + File.WriteAllText(pathFileFL, ""); + } + string pathFileEL = Path.Combine(currConf.OutFolder, $"{currConf.CodIOB}_EL_{giornata.dtStart:yyyy}.csv"); + if (!File.Exists(pathFileEL)) + { + File.WriteAllText(pathFileEL, ""); + } + // vado in append... + File.AppendAllLines(pathFileFL, simDataBlock.FlList); + File.AppendAllLines(pathFileEL, simDataBlock.EvList); + } + } + } + } + +} \ No newline at end of file diff --git a/MapoDataFiller/SimBlock.cs b/MapoDataFiller/SimBlock.cs new file mode 100644 index 0000000..80e5262 --- /dev/null +++ b/MapoDataFiller/SimBlock.cs @@ -0,0 +1,12 @@ +namespace MapoDataFiller +{ + public class SimBlock + { + #region Public Properties + + public List EvList { get; set; } = new List(); + public List FlList { get; set; } = new List(); + + #endregion Public Properties + } +} \ No newline at end of file diff --git a/MapoDataFiller/conf.yaml b/MapoDataFiller/conf.yaml new file mode 100644 index 0000000..55d6e2f --- /dev/null +++ b/MapoDataFiller/conf.yaml @@ -0,0 +1,6 @@ +--- +ConfDir: C:\Temp\Interclays +CodIOB: INTERCL_02 +HasHeader: true +TimeTable: Interclays02.csv +OutFolder: C:\Temp\Interclays\Out diff --git a/MapoDataFiller_DemoData/Interclays02.csv b/MapoDataFiller_DemoData/Interclays02.csv new file mode 100644 index 0000000..b394e44 --- /dev/null +++ b/MapoDataFiller_DemoData/Interclays02.csv @@ -0,0 +1,514 @@ +Data;Ora Inizio ;Ore Lavorate +lun 02/12/2019;05.18;7,41 +mar 03/12/2019;05.22;7,22 +mer 04/12/2019;05.16;7,35 +lun 09/12/2019;14.12;5,43 +mar 10/12/2019;13.10;6,55 +mer 11/12/2019;13.15;7,19 +gio 12/12/2019;13.30;6,18 +ven 13/12/2019;13.10;7,24 +lun 16/12/2019;05.12;7,33 +mar 17/12/2019;05.22;7,27 +mer 18/12/2019;05.08;7,18 +gio 19/12/2019;05.17;6,57 +ven 20/12/2019;05.25;7,05 +lun 23/12/2019;13.18;7,32 +mar 24/12/2019;13.02;7,33 +mer 25/12/2019;13.11;7,28 +gio 26/12/2019;15.01;5,16 +ven 27/12/2019;13.25;7,12 +lun 30/12/2019;05.17;15,33 +mar 31/12/2019;05.03;15,28 +mer 01/01/2020;05.09;15,45 +gio 02/01/2020;05.08;15,37 +ven 03/01/2020;05.17;15,03 +lun 06/01/2020;13.14;7,43 +mar 07/01/2020;13.25;6,55 +mer 08/01/2020;15.05;5,18 +lun 20/01/2020;13.07;7,44 +mar 21/01/2020;13.14;6,51 +mer 22/01/2020;13.22;4,48 +gio 23/01/2020;13.19;7,27 +ven 24/01/2020;13.10;7,36 +mer 29/01/2020;07.19;3,19 +ven 31/01/2020;13.58;1,59 +lun 03/02/2020;13.10;7,25 +mar 04/02/2020;13.16;6,54 +mer 05/02/2020;13.09;7,06 +gio 06/02/2020;13.18;5,59 +ven 07/02/2020;13.26;4,29 +gio 13/02/2020;08.33;6,55 +ven 14/02/2020;08.19;7,02 +lun 17/02/2020;13.11;7,45 +mar 18/02/2020;13.06;7,48 +mer 19/02/2020;13.18;7,36 +gio 20/02/2020;14.36;6,15 +ven 21/02/2020;13.16;7,29 +lun 24/02/2020;05.06;7,45 +mar 25/02/2020;05.14;7,43 +mer 26/02/2020;05.11;7,44 +gio 27/02/2020;05.21;7,39 +ven 28/02/2020;05.19;7,28 +lun 02/03/2020;13.05;7,47 +mar 03/03/2020;13.08;5,55 +mer 04/03/2020;13.09;7,46 +gio 05/03/2020;13.17;7,01 +ven 06/03/2020;13.11;4,59 +lun 09/03/2020;05.15;7,44 +mar 10/03/2020;05.13;7,39 +mer 11/03/2020;05.09;7,51 +gio 12/03/2020;05.17;7,31 +ven 13/03/2020;05.33;7,26 +lun 16/03/2020;13.12;7,45 +mar 17/03/2020;13.19;7,33 +mer 18/03/2020;13.08;7,51 +gio 19/03/2020;13.23;7,29 +ven 20/03/2020;13.17;7,37 +mer 25/03/2020;17.29;0,33 +gio 26/03/2020;13.18;1,57 +lun 30/03/2020;13.17;7,22 +mar 31/03/2020;13.45;7,13 +mer 01/04/2020;14.01;5,54 +gio 02/04/2020;13.48;6,02 +ven 03/04/2020;13.09;7,48 +lun 06/04/2020;05.09;7,48 +mar 07/04/2020;05.15;15,26 +mer 08/04/2020;05.36;15,09 +gio 09/04/2020;05.06;15,12 +ven 10/04/2020;05.25;7,05 +mer 15/04/2020;14.54;1,25 +gio 16/04/2020;15.44;1,09 +ven 17/04/2020;17.46;1,38 +mar 21/04/2020;05.09;7,15 +ven 24/04/2020;05.01;6,31 +lun 27/04/2020;13.45;5,37 +mar 28/04/2020;15.23;4,29 +mer 29/04/2020;17.03;2,36 +lun 04/05/2020;08.06;7,39 +mar 05/05/2020;08.12;7,33 +mer 06/05/2020;08.11;7,21 +gio 07/05/2020;08.14;7,26 +ven 08/05/2020;08.19;7,33 +lun 11/05/2020;08.14;7,03 +mar 12/05/2020;08.16;7,15 +mer 13/05/2020;08.17;7,24 +gio 14/05/2020;08.11;7,18 +ven 15/05/2020;08.14;7,33 +lun 18/05/2020;09.22;1,59 +mar 19/05/2020;15.01;1,48 +lun 25/05/2020;10.55;2,03 +gio 28/05/2020;18.06;0,59 +ven 29/05/2020;09.28;3,45 +lun 01/06/2020;16.13;1,55 +mer 03/06/2020;05.33;14,42 +gio 04/06/2020;05.14;15,03 +ven 05/06/2020;05.33;15,16 +lun 08/06/2020;05.08;15,01 +mar 09/06/2020;05.11;15,12 +mer 10/06/2020;05.09;14,53 +gio 11/06/2020;05.04;15,33 +ven 12/06/2020;05.15;15,27 +lun 15/06/2020;05.06;15,18 +mar 16/06/2020;05.22;14,45 +mer 17/06/2020;05.18;15,22 +gio 18/06/2020;05.19;15,31 +ven 19/06/2020;05.07;15,09 +mar 23/06/2020;09.27;1,59 +gio 25/06/2020;14.56;2,04 +ven 26/06/2020;10.23;2,54 +lun 29/06/2020;08.23;1,49 +mar 30/06/2020;11.01;1,05 +ven 03/07/2020;18.47;0,45 +lun 06/07/2020;13.15;7,35 +mar 07/07/2020;13.10;7,45 +mer 08/07/2020;13.08;7,48 +gio 09/07/2020;13.11;7,25 +ven 10/07/2020;13.04;7,39 +lun 13/07/2020;05.09;7,46 +mar 14/07/2020;05.12;7,39 +mer 15/07/2020;05.04;7,42 +gio 16/07/2020;05.11;7,38 +ven 17/07/2020;05.39;6,41 +lun 20/07/2020;13.18;7,05 +mar 21/07/2020;13.09;7,19 +mer 22/07/2020;13.33;5,44 +gio 23/07/2020;13.03;6,44 +ven 24/07/2020;13.12;7,45 +lun 27/07/2020;08.06;7,51 +mar 28/07/2020;08.14;7,39 +mer 29/07/2020;08.03;7,55 +gio 30/07/2020;08.08;7,51 +ven 31/07/2020;08.09;7,49 +lun 03/08/2020;08.58;0,45 +mar 04/08/2020;16.55;1,33 +mar 18/08/2020;11.11;2,33 +mer 19/08/2020;09.28;1,58 +ven 21/08/2020;14.29;1,47 +mer 26/08/2020;07.19;3,19 +ven 28/08/2020;13.58;1,59 +lun 31/08/2020;13.10;7,25 +mar 01/09/2020;13.16;6,54 +mer 02/09/2020;13.09;7,06 +gio 03/09/2020;13.18;5,59 +ven 04/09/2020;13.26;4,29 +gio 10/09/2020;08.33;6,55 +ven 11/09/2020;08.19;7,02 +lun 14/09/2020;13.11;7,45 +mar 15/09/2020;13.06;7,48 +mer 16/09/2020;13.18;7,36 +gio 17/09/2020;14.36;6,15 +ven 18/09/2020;13.16;7,29 +lun 21/09/2020;05.06;7,45 +mar 22/09/2020;05.14;7,43 +mer 23/09/2020;05.11;7,44 +gio 24/09/2020;05.21;7,39 +ven 25/09/2020;05.19;7,28 +lun 28/09/2020;08.02;7,55 +mar 29/09/2020;08.12;7,42 +mer 30/09/2020;08.17;7,39 +gio 01/10/2020;08.09;7,41 +ven 02/10/2020;08.05;7,43 +lun 05/10/2020;08.33;7,18 +mar 06/10/2020;08.17;7,39 +mer 07/10/2020;08.09;7,44 +gio 08/10/2020;08.11;7,43 +ven 09/10/2020;08.12;7,38 +lun 12/10/2020;05.01;15,09 +mar 13/10/2020;05.13;14,58 +mer 14/10/2020;05.07;15,04 +gio 15/10/2020;05.03;15,11 +ven 16/10/2020;05.15;15,03 +lun 19/10/2020;05.11;15,13 +mar 20/10/2020;05.17;14,45 +mer 21/10/2020;05.08;14,29 +gio 22/10/2020;05.21;13,47 +ven 23/10/2020;05.55;14,17 +lun 26/10/2020;13.08;7,45 +mar 27/10/2020;13.07;7,48 +mer 28/10/2020;13.17;7,29 +gio 29/10/2020;13.11;7,17 +ven 30/10/2020;13.09;4,22 +lun 02/11/2020;12.01;2,02 +mer 04/11/2020;08.56;2,18 +ven 06/11/2020;14.33;2,17 +mar 10/11/2020;18.47;0,49 +mer 11/11/2020;13.57;1,56 +lun 16/11/2020;15.37;1,59 +ven 20/11/2020;16.55;0,47 +lun 23/11/2020;05.09;14,55 +mar 24/11/2020;05.04;15,09 +mer 25/11/2020;05.11;15,12 +gio 26/11/2020;05.03;15,01 +ven 27/11/2020;05.08;15,06 +lun 30/11/2020;05.18;15,09 +mar 01/12/2020;05.01;14,31 +mer 02/12/2020;05.09;14,55 +gio 03/12/2020;05.07;15,02 +ven 04/12/2020;05.14;14,37 +gio 10/12/2020;10.29;2,23 +ven 11/12/2020;16.41;2,57 +mar 15/12/2020;7.44;1,56 +mer 16/12/2020;09.03;2,38 +dom 20/12/2020;11.37;3,01 +lun 21/12/2020;17.01;2,44 +mar 22/12/2020;07.59;4,39 +lun 04/01/2021;15.27;1,59 +mar 05/01/2021;13.48;1,55 +gio 07/01/2021;09.24;1,56 +lun 11/01/2021;13.05;7,47 +mar 12/01/2021;13.08;5,55 +mer 13/01/2021;13.09;7,46 +gio 14/01/2021;13.17;7,01 +ven 15/01/2021;13.11;4,59 +lun 18/01/2021;05.15;7,44 +mar 19/01/2021;05.13;7,39 +mer 20/01/2021;05.09;7,51 +gio 21/01/2021;05.17;7,31 +ven 22/01/2021;05.33;7,26 +lun 25/01/2021;13.12;7,45 +mar 26/01/2021;13.19;7,33 +mer 27/01/2021;13.08;7,51 +gio 28/01/2021;13.23;7,29 +ven 29/01/2021;13.17;7,37 +lun 01/02/2021;08.06;7,39 +mar 02/02/2021;08.12;7,33 +mer 03/02/2021;08.11;7,21 +gio 04/02/2021;08.14;7,26 +ven 05/02/2021;08.19;7,33 +lun 08/02/2021;08.14;7,03 +mar 09/02/2021;08.16;7,15 +mer 10/02/2021;08.17;7,24 +gio 11/02/2021;08.11;7,18 +ven 12/02/2021;08.14;7,33 +lun 15/02/2021;08.33;7,18 +mar 16/02/2021;08.17;7,39 +mer 17/02/2021;08.09;7,44 +gio 18/02/2021;08.11;7,43 +ven 19/02/2021;08.12;7,38 +lun 22/02/2021;05.01;15,09 +mar 23/02/2021;05.13;14,58 +mer 24/02/2021;05.07;15,04 +gio 25/02/2021;05.03;15,11 +ven 26/02/2021;05.15;15,03 +lun 01/03/2021;05.11;15,13 +mar 02/03/2021;05.17;14,45 +mer 03/03/2021;05.08;14,29 +gio 04/03/2021;05.21;13,47 +ven 05/03/2021;05.55;14,17 +lun 08/03/2021;08.09;7,41 +mar 09/03/2021;08.13;7,35 +mer 10/03/2021;08.04;7,38 +gio 11/03/2021;08.22;7,17 +ven 12/03/2021;08.08;7,07 +lun 15/03/2021;14.12;5,43 +mar 16/03/2021;13.10;6,55 +mer 17/03/2021;13.15;7,19 +gio 18/03/2021;13.30;6,18 +ven 19/03/2021;13.10;7,24 +lun 22/03/2021;05.12;7,33 +mar 23/03/2021;05.22;7,27 +mer 24/03/2021;05.08;7,18 +gio 25/03/2021;05.17;6,57 +ven 26/03/2021;05.25;7,05 +lun 29/03/2021;13.18;7,32 +mar 30/03/2021;13.02;7,33 +mer 31/03/2021;13.11;7,28 +gio 01/04/2021;15.01;5,16 +ven 02/04/2021;13.25;7,12 +mar 06/04/2021;05.11;7,44 +mer 07/04/2021;05.03;7,51 +gio 08/04/2021;05.19;7,26 +ven 09/04/2021;05.07;7,39 +lun 12/04/2021;14.12;5,43 +mar 13/04/2021;13.10;6,55 +mer 14/04/2021;13.15;7,19 +gio 15/04/2021;13.30;6,18 +ven 16/04/2021;13.10;7,24 +lun 19/04/2021;05.12;7,33 +mar 20/04/2021;05.22;7,27 +mer 21/04/2021;05.08;7,18 +gio 22/04/2021;05.17;6,57 +ven 23/04/2021;05.25;7,05 +lun 26/04/2021;13.18;7,32 +mar 27/04/2021;13.02;7,33 +mer 28/04/2021;13.11;7,28 +gio 29/04/2021;15.01;5,16 +ven 30/04/2021;13.25;7,12 +mar 04/05/2021;16.37;1,59 +gio 06/05/2021;15.22;2,09 +ven 07/05/2021;18.39;2,14 +lun 10/05/2021;13.08;7,45 +mar 11/05/2021;13.07;7,48 +mer 12/05/2021;13.17;7,29 +gio 13/05/2021;13.11;7,17 +ven 14/05/2021;13.09;4,22 +lun 17/05/2021;05.09;7,46 +mar 18/05/2021;05.12;7,39 +mer 19/05/2021;05.04;7,42 +gio 20/05/2021;05.11;7,38 +ven 21/05/2021;05.39;6,41 +lun 24/05/2021;13.01;7,49 +mar 25/05/2021;13.09;2,57 +mer 26/05/2021;13.22;3,29 +gio 27/05/2021;13.19;4,25 +ven 28/05/2021;13.08;7,43 +lun 31/05/2021;12.59;2,11 +mar 01/06/2021;16.34;2,18 +gio 03/06/2021;13.48;2,17 +ven 04/06/2021;17.01;2,29 +lun 07/06/2021;13.18;7,32 +mar 08/06/2021;13.02;7,33 +mer 09/06/2021;13.11;7,28 +gio 10/06/2021;15.01;5,16 +ven 11/06/2021;13.25;7,12 +lun 14/06/2021;13.05;7,47 +mar 15/06/2021;13.08;5,55 +mer 16/06/2021;13.09;7,46 +gio 17/06/2021;13.17;7,01 +ven 18/06/2021;13.11;4,59 +lun 21/06/2021;05.15;7,44 +mar 22/06/2021;05.13;7,39 +mer 23/06/2021;05.09;7,51 +gio 24/06/2021;05.17;7,31 +ven 25/06/2021;05.33;7,26 +lun 28/06/2021;13.12;7,45 +mar 29/06/2021;13.19;7,33 +mer 30/06/2021;13.08;7,51 +gio 01/07/2021;13.23;7,29 +ven 02/07/2021;13.17;7,37 +lun 05/07/2021;05.12;7,33 +mar 06/07/2021;05.22;7,27 +mer 07/07/2021;05.08;7,18 +gio 08/07/2021;05.17;6,57 +ven 09/07/2021;05.25;7,05 +lun 12/07/2021;13.18;7,32 +mar 13/07/2021;13.02;7,33 +mer 14/07/2021;13.11;7,28 +gio 15/07/2021;15.01;5,16 +ven 16/07/2021;13.25;7,12 +lun 19/07/2021;05.17;15,33 +mar 20/07/2021;05.03;15,28 +mer 21/07/2021;05.09;15,45 +gio 22/07/2021;05.08;15,37 +ven 23/07/2021;05.17;15,03 +lun 26/07/2021;13.14;7,43 +mar 27/07/2021;13.25;6,55 +mer 28/07/2021;15.05;5,18 +lun 02/08/2021;17.14;2,48 +mar 03/08/2021;09.33;1,36 +mer 04/08/2021;10.51;1,55 +gio 05/08/2021;08.36;2,21 +ven 06/08/2021;13.09;3,35 +lun 16/08/2021;14.37;2,45 +lun 23/08/2021;05.09;14,55 +mar 24/08/2021;05.04;15,09 +mer 25/08/2021;05.11;15,12 +gio 26/08/2021;05.03;15,01 +ven 27/08/2021;05.08;15,06 +lun 30/08/2021;05.18;15,09 +mar 31/08/2021;05.01;14,31 +mer 01/09/2021;05.09;14,55 +gio 02/09/2021;05.07;15,02 +ven 03/09/2021;05.14;14,37 +lun 06/09/2021;05.08;15,01 +mar 07/09/2021;05.11;15,12 +mer 08/09/2021;05.09;14,53 +gio 09/09/2021;05.04;15,33 +ven 10/09/2021;05.15;15,27 +lun 13/09/2021;05.06;15,18 +mar 14/09/2021;05.22;14,45 +mer 15/09/2021;05.18;15,22 +gio 16/09/2021;05.19;15,31 +ven 17/09/2021;05.07;15,09 +lun 20/09/2021;09.11;2,12 +mar 21/09/2021;11.11;3,15 +mer 22/09/2021;12.59;2,27 +gio 23/09/2021;07.45;4,39 +ven 24/09/2021;17.37;5,21 +lun 27/09/2021;05.06;7,45 +mar 28/09/2021;05.14;7,43 +mer 29/09/2021;05.11;7,44 +gio 30/09/2021;05.21;7,39 +ven 01/10/2021;05.19;7,28 +lun 04/10/2021;08.02;7,55 +mar 05/10/2021;08.12;7,42 +mer 06/10/2021;08.17;7,39 +gio 07/10/2021;08.09;7,41 +ven 08/10/2021;08.05;7,43 +lun 11/10/2021;08.33;7,18 +mar 12/10/2021;08.17;7,39 +mer 13/10/2021;08.09;7,44 +gio 14/10/2021;08.11;7,43 +ven 15/10/2021;08.12;7,38 +lun 18/10/2021;05.01;15,09 +mar 19/10/2021;05.13;14,58 +mer 20/10/2021;05.07;15,04 +gio 21/10/2021;05.03;15,11 +ven 22/10/2021;05.15;15,03 +lun 25/10/2021;05.11;15,13 +mar 26/10/2021;05.17;14,45 +mer 27/10/2021;05.08;14,29 +gio 28/10/2021;05.21;13,47 +ven 29/10/2021;05.55;14,17 +lun 01/11/2021;09.35;5,27 +mer 03/11/2021;12.48;4,56 +gio 04/11/2021;16.39;3,33 +ven 05/11/2021;07.33;9,24 +lun 08/11/2021;14.12;5,43 +mar 09/11/2021;13.10;6,55 +mer 10/11/2021;13.15;7,19 +gio 11/11/2021;13.30;6,18 +ven 12/11/2021;13.10;7,24 +lun 15/11/2021;05.12;7,33 +mar 16/11/2021;05.22;7,27 +mer 17/11/2021;05.08;7,18 +gio 18/11/2021;05.17;6,57 +ven 19/11/2021;05.25;7,05 +lun 22/11/2021;13.18;7,32 +mar 23/11/2021;13.02;7,33 +mer 24/11/2021;13.11;7,28 +gio 25/11/2021;15.01;5,16 +ven 26/11/2021;13.25;7,12 +lun 29/11/2021;05.17;15,33 +mar 30/11/2021;05.03;15,28 +mer 01/12/2021;05.09;15,45 +gio 02/12/2021;05.08;15,37 +ven 03/12/2021;05.17;15,03 +lun 06/12/2021;13.11;7,44 +mar 07/12/2021;13.02;7,51 +gio 09/12/2021;13.08;7,52 +ven 10/12/2021;13.17;7,43 +lun 13/12/2021;08.06;7,39 +mar 14/12/2021;08.12;7,33 +mer 15/12/2021;08.11;7,21 +gio 16/12/2021;08.14;7,26 +ven 17/12/2021;08.19;7,33 +lun 20/12/2021;08.14;7,03 +mar 21/12/2021;08.16;7,15 +mer 22/12/2021;08.17;7,24 +gio 23/12/2021;08.11;7,18 +ven 24/12/2021;08.14;7,33 +lun 27/12/2021;10.09;1,36 +mar 28/12/2021;14.37;1,59 +mer 29/12/2021;14.19;2,07 +gio 30/12/2021;08.08;2,38 +mar 04/01/2022;13.27;2,06 +lun 10/01/2022;13.05;7,47 +mar 11/01/2022;13.08;5,55 +mer 12/01/2022;13.09;7,46 +gio 13/01/2022;13.17;7,01 +ven 14/01/2022;13.11;4,59 +lun 17/01/2022;05.15;7,44 +mar 18/01/2022;05.13;7,39 +mer 19/01/2022;05.09;7,51 +gio 20/01/2022;05.17;7,31 +ven 21/01/2022;05.33;7,26 +lun 24/01/2022;13.12;7,45 +mar 25/01/2022;13.19;7,33 +mer 26/01/2022;13.08;7,51 +gio 27/01/2022;13.23;7,29 +ven 28/01/2022;13.17;7,37 +lun 31/01/2022;08.06;7,39 +mar 01/02/2022;08.12;7,33 +mer 02/02/2022;08.11;7,21 +gio 03/02/2022;08.14;7,26 +ven 04/02/2022;08.19;7,33 +lun 07/02/2022;08.14;7,03 +mar 08/02/2022;08.16;7,15 +mer 09/02/2022;08.17;7,24 +gio 10/02/2022;08.11;7,18 +ven 11/02/2022;08.14;7,33 +lun 14/02/2022;05.06;7,42 +mar 15/02/2022;05.21;7,02 +mer 16/02/2022;05.46;5,33 +gio 17/02/2022;05.37;6,27 +ven 18/02/2022;05.22;7,09 +lun 21/02/2022;13.01;7,55 +mar 22/02/2022;13.06;7,42 +mer 23/02/2022;13.08;7,51 +gio 24/02/2022;13.11;7,36 +ven 25/02/2022;13.03;7,49 +lun 28/02/2022;05.12;7,33 +mar 01/03/2022;05.22;7,27 +mer 02/03/2022;05.08;7,18 +gio 03/03/2022;05.17;6,57 +ven 04/03/2022;05.25;7,05 +lun 07/03/2022;13.18;7,32 +mar 08/03/2022;13.02;7,33 +mer 09/03/2022;13.11;7,28 +gio 10/03/2022;15.01;5,16 +ven 11/03/2022;13.25;7,12 +lun 14/03/2022;05.17;15,33 +mar 15/03/2022;05.03;15,28 +mer 16/03/2022;05.09;15,45 +gio 17/03/2022;05.08;15,37 +ven 18/03/2022;05.17;15,03 +lun 21/03/2022;13.01;7,49 +mar 22/03/2022;13.09;2,57 +mer 23/03/2022;13.22;3,29 +gio 24/03/2022;13.19;4,25 +ven 25/03/2022;13.08;7,43 +lun 28/03/2022;08.06;7,01 +mar 29/03/2022;08.07;7,23 +mer 30/03/2022;08.11;6,27 +gio 31/03/2022;08.17;3,45 \ No newline at end of file