From 4361215ce1eb0a585fe43f5fec96a126616e96f0 Mon Sep 17 00:00:00 2001 From: MinaR Date: Tue, 11 Feb 2025 12:36:37 +0100 Subject: [PATCH 1/3] modifiche a servizio di task --- .../ems/activity/service/ActivityService.java | 282 +++++++----------- 1 file changed, 111 insertions(+), 171 deletions(-) diff --git a/ems-engine/src/main/java/it/integry/ems/activity/service/ActivityService.java b/ems-engine/src/main/java/it/integry/ems/activity/service/ActivityService.java index 18256e709a..e1f6146241 100644 --- a/ems-engine/src/main/java/it/integry/ems/activity/service/ActivityService.java +++ b/ems-engine/src/main/java/it/integry/ems/activity/service/ActivityService.java @@ -852,72 +852,31 @@ public class ActivityService { isPersonaRif = UtilityHashMap.getValueIfExists(datiUtente, "isPersonaRif"); } - sql = "WITH escludi_commesse AS (SELECT value_string cod_jcom\n" + - " FROM dbo.parsestringintoarray((SELECT value\n" + + sql = "WITH escludi_commesse AS (SELECT value cod_jcom\n" + + " FROM string_split((SELECT value\n" + " FROM stb_gest_setup\n" + " WHERE gest_name = 'STB_ACTIVITY'\n" + " AND section = 'SETUP'\n" + - " AND key_section = 'ESCLUDI_COMMESSE'), '|') s),\n" + - " sottoattivita AS (SELECT stb_activity.parent_activity_id,\n" + - " MAX(CASE\n" + - " WHEN effective_date <= CAST(GETDATE() AS DATE) THEN effective_date\n" + - " ELSE NULL END) AS last_activity_date,\n" + - " MIN(CASE\n" + - " WHEN estimated_date >= CAST(GETDATE() AS DATE) THEN estimated_date\n" + - " ELSE NULL END) AS next_activity_date,\n" + - " MAX(CASE\n" + - " WHEN ((estimated_date BETWEEN dbo.f_getfirstdayofweek(GETDATE()) AND dbo.f_getlastdayofweek(GETDATE()) OR\n" + - " estimated_date IS NULL) and effective_date is null) \n" + - " THEN stb_activity.activity_description\n" + - " ELSE NULL END) AS activity_description,\n" + - " MAX(CASE\n" + - " WHEN IsNull(effective_date, estimated_date) BETWEEN dbo.f_getfirstdayofweek(GETDATE()) AND dbo.f_getlastdayofweek(GETDATE())\n" + - " THEN 1\n" + - " ELSE 0 END) AS planned_this_week,\n" + - " MAX(CASE\n" + - " WHEN IsNull(effective_date, estimated_date) between dbo.f_getfirstdayofweek(DateAdd(week, -1, GETDATE())) AND dbo.f_getLastDayOfWeek(DateAdd(week, -1, GETDATE())) THEN 1\n" + - " ELSE 0 END) AS planned_previous_week,\n" + - " MAX(CASE\n" + - " WHEN IsNull(effective_date, estimated_date) between dbo.f_getfirstdayofweek(DateAdd(week, 1, GETDATE())) AND dbo.f_getLastDayOfWeek(DateAdd(week, 1, GETDATE())) THEN 1\n" + - " ELSE 0 END) AS planned_next_week,\n" + - " MAX(CASE\n" + - " WHEN effective_date is not null AND effective_date BETWEEN dbo.f_getfirstdayofmonth(GETDATE()) AND EOMONTH(GETDATE())\n" + - " THEN 1\n" + - " ELSE 0 END) AS done_this_month,\n" + - " MAX(CASE\n" + - " WHEN effective_date is not null AND effective_date BETWEEN dbo.f_getfirstdayofmonth(DateAdd(MONTH, -1, GETDATE())) AND EOMONTH(DateAdd(MONTH, -1, GETDATE())) THEN 1\n" + - " ELSE 0 END) AS done_previous_month,\n" + - " MAX(CASE\n" + - " WHEN effective_date is not null AND DATEPART(QUARTER, effective_date) = DATEPART(QUARTER, GETDATE())\n" + - " THEN 1\n" + - " ELSE 0 END) AS done_this_quarter,\n" + - " MAX(CASE\n" + - " WHEN effective_date is not null AND DATEPART(QUARTER, effective_date) = Datepart(quarter, dateadd(month, -3, getdate())) THEN 1\n" + - " ELSE 0 END) AS done_previous_quarter,\n" + - " SUM(jtb_rlavr.ore) AS ore\n" + - " FROM stb_activity\n" + - " INNER JOIN stb_user ON stb_activity.user_name = stb_user.user_name\n" + - " LEFT OUTER JOIN jtb_rlavr ON stb_activity.activity_id = jtb_rlavr.activity_id\n" + - " WHERE stb_activity.flag_tipologia = 'A'\n" + - (isTable || daInstallare ? "" : " AND stb_activity.user_name = '" + username + "'") + - " GROUP BY stb_activity.parent_activity_id),\n" + - " processi AS (SELECT stb_activity.cod_jcom,\n" + + " AND key_section = 'ESCLUDI_COMMESSE'), '|') s)\n" + + " SELECT stb_activity.cod_jcom as 'Commessa',\n" + " stb_activity.user_name,\n" + - " stb_activity.activity_id,\n" + + " stb_activity.activity_id as 'Id_Attivita',\n" + " stb_activity.parent_activity_id,\n" + - " stb_activity.activity_description,\n" + - " stb_activity.estimated_time,\n" + - " stb_activity.estimated_endtime,\n" + - " stb_activity.effective_time,\n" + - " stb_activity.effective_endtime,\n" + + " stb_activity.activity_description as 'Descrizione',\n" + + " stb_activity.estimated_time as 'Data_Inizio_prev',\n" + + " stb_activity.estimated_endtime as 'data_fine_prev',\n" + + " stb_activity.effective_time as 'Data_Inizio_Effettiva',\n" + + " stb_activity.effective_endtime as 'Data_Fine_Effettiva',\n" + " stb_activity.flag_risolto,\n" + - " stb_activity.estimated_hours,\n" + - " stb_activity.activity_result_id AS 'esito',\n" + + " stb_activity.estimated_hours as 'Ore_Stimate',\n" + + " CAST(CASE WHEN stb_activity.effective_endtime IS NULL THEN 0 ELSE 1 END AS BIT) AS 'attivita_chiusa', \n" + + " stb_activity.activity_result_id AS 'Esito',\n" + " stb_activity.result_description AS 'descr_esito',\n" + " ISNULL(stb_activity.priorita, 0) AS 'priorita',\n" + " stb_activity.activity_type_id AS 'tipo_attivita',\n" + " IsNull(stb_activity.ora_ins_act, stb_activity.data_ins_act) AS 'data_inserimento',\n" + - " stb_activity.ora_mod_act AS 'ultima_modifica',\n" + + " stb_activity.ora_mod_act AS 'ultima_modifica'," + + " CAST(CASE WHEN estimated_enddate < CAST(GETDATE() AS DATE) THEN 1 ELSE 0 END AS BIT) AS scaduta,\n" + " stb_activity.persona_rif AS 'richiedente',\n" + " stb_activity.estimated_enddate,\n" + " stb_activity.cod_mart AS cod_mart,\n" + @@ -926,11 +885,11 @@ public class ActivityService { " ELSE ISNULL(mtb_aart.descr_cassa, mtb_aart.descrizione) END AS descr_prodotto,\n" + " stb_activity.user_creator,\n" + " stb_activity.note,\n" + - " stb_user.full_name,\n" + + " stb_user.full_name as 'Responsabile',\n" + " parent.responabile_progetto,\n" + " ISNULL(parent.project_description, '') AS 'project_description',\n" + " ISNULL(parent.activity_description, 'Altre Attività') AS 'parent_activity_description',\n" + - " creator.full_name AS 'user_creator_name',\n" + + " creator.full_name AS 'creata_da',\n" + " parent.activity_type_id AS 'parent_activity_type',\n" + " CASE\n" + " WHEN stb_activity_result.flag_stato_attivita IS NULL THEN 0 --backlog\n" + @@ -944,33 +903,17 @@ public class ActivityService { " CAST(ISNULL(integry_tag.is_bug, 0) AS BIT) AS is_bug,\n" + " integry_tag.tags,\n" + " DENSE_RANK() OVER (ORDER BY parent.project_description, parent.activity_description) AS 'id_processo',\n" + - " gtb_anag.rag_soc"; - + " gtb_anag.rag_soc,\n " + + " task.dapagare AS da_pagare,\n " + + " task.acanone AS a_canone\n "; if (daInstallare) { - sql += ", lastUpdt.data \n"; + sql += ", lastUpdt.data AS 'ultimo_aggiornamento'\n"; } else { - sql += ", null AS 'data' \n"; + sql += ", null AS 'ultimo_aggiornamento'\n"; } - sql += " FROM stb_activity\n" + - " INNER JOIN stb_user ON stb_activity.user_name = stb_user.user_name\n"; - - if (year == null && activityId == null) { - sql += " INNER JOIN (SELECT *\n" + - " FROM jtb_comt\n" + - " WHERE stato_commessa IN ('IN CORSO', 'POST VENDITA', 'TRATTATIVA')) jtb_comt\n" + - " ON stb_activity.cod_jcom = jtb_comt.cod_jcom\n"; - } else if (activityId == null) { - sql += " INNER JOIN (SELECT *\n" + - " FROM jtb_comt\n" + - " WHERE stato_commessa = 'CHIUSA'\n" + - " AND (YEAR(data_inizi_lav) = " + year + " OR YEAR(data_cons) = " + year + ")) jtb_comt\n" + - " ON stb_activity.cod_jcom = jtb_comt.cod_jcom\n"; - } else { - sql += " INNER JOIN jtb_comt ON stb_activity.cod_jcom = jtb_comt.cod_jcom\n"; - } - - sql += " INNER JOIN stb_user creator ON stb_activity.user_creator = creator.user_name\n" + + " INNER JOIN stb_user ON stb_activity.user_name = stb_user.user_name\n" + + " INNER JOIN stb_user creator ON stb_activity.user_creator = creator.user_name\n" + " LEFT OUTER JOIN pvw_clienti_prospect gtb_anag on stb_activity.cod_anag = gtb_anag.cod_ppro and stb_activity.tipo_anag = gtb_anag.tipologia\n" + " AND gtb_anag.flag_stato = 'A'\n" + " LEFT OUTER JOIN mtb_aart ON stb_activity.cod_mart = mtb_aart.cod_mart\n" + @@ -987,7 +930,10 @@ public class ActivityService { " ON stb_activity.parent_activity_id = parent.activity_id\n" + " LEFT OUTER JOIN stb_activity_result\n" + " ON stb_activity.activity_result_id = stb_activity_result.activity_result_id\n" + - " LEFT OUTER JOIN integry_tag ON stb_activity.activity_id = integry_tag.activity_id\n"; + " LEFT OUTER JOIN integry_tag ON stb_activity.activity_id = integry_tag.activity_id \n" + + " OUTER APPLY ( SELECT CAST(MAX(CASE WHEN task.cod_jfas <> 'C01' THEN 0 ELSE 1 END) AS BIT) AS daPagare,\n" + + " CAST(MAX(CASE WHEN task.cod_jfas = 'C01' THEN 0 ELSE 1 END) AS BIT) AS aCanone \n" + + " FROM stb_activity task WHERE stb_activity.activity_id = task.parent_activity_id) task "; if (daInstallare) { sql += " LEFT OUTER JOIN integry_last_upd_clie lastUpdt ON stb_activity.cod_anag = lastUpdt.cod_anag\n"; @@ -997,103 +943,47 @@ public class ActivityService { " AND NOT EXISTS(SELECT *\n" + " FROM escludi_commesse\n" + " WHERE stb_activity.cod_jcom = escludi_commesse.cod_jcom)\n" + - " AND stb_activity.activity_type_id IN (SELECT activity_type_id\n" + - " FROM srl_activity_type\n" + - " WHERE activity_type_id IN\n" + - " (SELECT srl_activity_type.activity_type_id\n" + - " FROM srl_activity_type,\n" + - " stb_activity_type\n" + - " WHERE srl_activity_type.flag_tipologia = 'P'\n" + - " AND srl_activity_type.activity_type_id_next =\n" + - " stb_activity_type.activity_type_id\n" + - " AND srl_activity_type.flag_tipologia_next =\n" + - " stb_activity_type.flag_tipologia\n" + - " AND stb_activity_type.flag_attiva = 'S'\n" + - " GROUP BY srl_activity_type.activity_type_id\n" + - " HAVING COUNT(DISTINCT flag_tipologia_next) = 1)\n"; - + " AND EXISTS (SELECT *\n" + + " FROM srl_activity_type inner join stb_activity_type a on srl_activity_type.activity_type_id_next = a.activity_type_id\n" + + " WHERE stb_activity.activity_type_id = srl_activity_type.activity_type_id\n" + + " and srl_activity_type.flag_tipologia = 'P' \n"; if (activityId == null) { - sql += " AND flag_tipologia_next = 'A'\n"; + sql += " and srl_activity_type.flag_tipologia_next = 'A' \n"; + } + sql += " and a.flag_attiva = 's'\n" + + " GROUP BY srl_activity_type.activity_type_id\n" + + " HAVING sum(IIF(flag_tipologia_next = 'A',0,1)) = 0 )\n " ; + + if (year == null && activityId == null) { + sql += " AND EXISTS (SELECT *\n" + + " FROM jtb_comt\n" + + " WHERE stato_commessa IN ('IN CORSO', 'POST VENDITA', 'TRATTATIVA')\n" + + " AND stb_activity.cod_jcom = jtb_comt.cod_jcom) \n"; + } else if (activityId == null) { + sql += " AND EXISTS (SELECT *\n" + + " FROM jtb_comt\n" + + " WHERE stato_commessa = 'CHIUSA'\n" + + " AND (YEAR(data_inizi_lav) = " + year + " OR YEAR(data_cons) = " + year + ")\n" + + " AND stb_activity.cod_jcom = jtb_comt.cod_jcom )\n"; } - sql += " ))\n" + - "\n" + - "SELECT processi.cod_jcom AS 'Commessa',\n" + - " processi.user_name,\n" + - " processi.full_name AS 'Responsabile',\n" + - " processi.cod_mart,\n" + - " processi.descr_prodotto,\n" + - " processi.project_description,\n" + - " processi.parent_activity_description,\n" + - " processi.parent_activity_type,\n" + - " processi.tipo_attivita,\n" + - " processi.data_inserimento,\n" + - " processi.ultima_modifica,\n" + - " processi.activity_id AS 'Id_Attivita',\n" + - " processi.activity_description AS 'Descrizione',\n" + - " processi.effective_time AS 'Data_Inizio_Effettiva',\n" + - " processi.effective_endtime AS 'Data_Fine_Effettiva',\n" + - " processi.estimated_hours 'Ore_Stimate',\n" + - " processi.esito AS 'Esito',\n" + - " processi.priorita,\n" + - " CAST(CASE WHEN processi.effective_endtime IS NULL THEN 0 ELSE 1 END AS BIT) AS 'attivita_chiusa',\n" + - " processi.estimated_time AS 'Data_Inizio_prev',\n" + - " processi.estimated_endtime AS 'data_fine_prev',\n" + - " processi.descr_esito,\n" + - " id_processo,\n" + - " processi.parent_activity_id,\n" + - " processi.richiedente,\n" + - " processi.responabile_progetto,\n" + - " CAST(ISNULL(sottoattivita.planned_previous_week, 0) AS BIT) AS planned_previous_week,\n" + - " CAST(ISNULL(sottoattivita.planned_next_week, 0) AS BIT) AS planned_next_week,\n" + - " CAST(ISNULL(sottoattivita.planned_this_week, 0) AS BIT) AS planned_this_week,\n" + - " CAST(ISNULL(sottoattivita.done_this_month, 0) AS BIT) AS done_this_month,\n" + - " CAST(ISNULL(sottoattivita.done_previous_month, 0) AS BIT) AS done_previous_month,\n" + - " CAST(ISNULL(sottoattivita.done_this_quarter, 0) AS BIT) AS done_this_quarter,\n" + - " CAST(ISNULL(sottoattivita.done_previous_quarter, 0) AS BIT) AS done_previous_quarter,\n" + - " stato_attivita,\n" + - " is_bug,\n" + - " tags,\n" + - " CAST(CASE WHEN estimated_enddate < CAST(GETDATE() AS DATE) THEN 1 ELSE 0 END AS BIT) AS scaduta,\n" + - " processi.user_creator,\n" + - " processi.user_creator_name AS 'creata_da',\n" + - " processi.note,\n" + - " sottoattivita.last_activity_date AS 'data_ult_attivita',\n" + - " ISNULL(sottoattivita.ore, 0) AS 'Ore_tot',\n" + - " sottoattivita.next_activity_date AS 'data_prossima_attivita',\n" + - " processi.rag_soc,\n" + - " processi.data AS 'ultimo_aggiornamento',\n" + - " processi.flag_risolto,\n" + - " CASE\n" + - " WHEN sottoattivita.activity_description <> processi.activity_description\n" + - " THEN sottoattivita.activity_description\n" + - " ELSE\n" + - " '' END AS 'descrizione_sottoattivita',\n" + - " task.daPagare as da_pagare,\n" + - " task.aCanone as a_canone " + - "FROM processi\n" + - " LEFT OUTER JOIN sottoattivita ON processi.activity_id = sottoattivita.parent_activity_id\n" + - " OUTER APPLY ( SELECT CAST(MAX(CASE WHEN task.cod_jfas <> 'C01' THEN 0 ELSE 1 END) AS BIT) AS daPagare,\n" + - " CAST(MAX(CASE WHEN task.cod_jfas = 'C01' THEN 0 ELSE 1 END) AS BIT) AS aCanone \n" + - " FROM stb_activity task WHERE processi.activity_id = task.parent_activity_id) task "; - if (!isTable) { - sql += " WHERE processi.effective_endtime IS NULL " + - " AND processi.tipo_attivita <> 'AGGIORNAMENTI SOFTWARE'"; + sql += " AND stb_activity.effective_endtime IS NULL " + + " AND stb_activity.activity_type_id <> 'AGGIORNAMENTI SOFTWARE'"; if (daInstallare) { - sql += " AND esito = 'DA INSTALLARE' AND cod_jcom not like 'INTEGRY%'"; + sql += " AND stb_activity.activity_result_id = 'DA INSTALLARE' AND cod_jcom not like 'INTEGRY%'"; } } else if (activityId != null) { - sql += " WHERE processi.activity_id = " + UtilityDB.valueToString(activityId); + sql += " AND stb_activity.activity_id = " + UtilityDB.valueToString(activityId); } else if (isCliente) { - sql += " WHERE esito NOT IN ('ANNULLATA', 'SOSPESA')"; + sql += " AND stb_activity.activity_result_id NOT IN ('ANNULLATA', 'SOSPESA')"; if (isPersonaRif) { String whereCondPersRif = Query.format(" AND EXISTS( SELECT *\n" + " from stb_user s inner join vtb_clie_pers_rif on s.e_mail = vtb_clie_pers_rif.e_mail\n" + - " where S.USER_NAME = %s and vtb_clie_pers_rif.persona_rif = processi.richiedente )", + " where S.USER_NAME = %s and vtb_clie_pers_rif.persona_rif = stb_activity.richiedente )", requestDataDTO.getUsername()); sql += whereCondPersRif; } @@ -1101,12 +991,62 @@ public class ActivityService { List activityDTOS = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, ActivityDTO.class); List elencoId = Stream.of(activityDTOS).map(ActivityDTO::getIdAttivita).toList(); - - sql = "select parent_activity_id, stb_activity.user_name, full_name, ISNULL(SUM(jtb_rlavr.ore), 0) as 'ore_fatte'\n" + - "FROM stb_activity \n" + - "INNER JOIN stb_user ON stb_activity.user_name = stb_user.user_name LEFT OUTER JOIN jtb_rlavr ON stb_activity.activity_id = jtb_rlavr.activity_id\n" + - "where stb_activity.parent_activity_id in (" + UtilityDB.listValueToString(elencoId) + ")\n" + - "group by parent_activity_id, stb_activity.user_name, full_name"; + sql = + "SELECT stb_activity.parent_activity_id,\n" + + " stb_activity.user_name,\n" + + " stb_user.full_name,\n" + + " MAX(CASE\n" + + " WHEN effective_date <= CAST(GETDATE() AS DATE) THEN effective_date\n" + + " ELSE NULL END) AS last_activity_date,\n" + + " MIN(CASE\n" + + " WHEN estimated_date >= CAST(GETDATE() AS DATE) THEN estimated_date\n" + + " ELSE NULL END) AS next_activity_date,\n" + + " MAX(CASE\n" + + " WHEN (\n" + + " (estimated_date BETWEEN dbo.f_getfirstdayofweek(GETDATE()) AND dbo.f_getlastdayofweek(GETDATE()) OR\n" + + " estimated_date IS NULL) AND effective_date IS NULL)\n" + + " THEN stb_activity.activity_description\n" + + " ELSE NULL END) AS activity_description,\n" + + " MAX(CASE\n" + + " WHEN ISNULL(effective_date, estimated_date) BETWEEN dbo.f_getfirstdayofweek(GETDATE()) AND dbo.f_getlastdayofweek(GETDATE())\n" + + " THEN 1\n" + + " ELSE 0 END) AS planned_this_week,\n" + + " MAX(CASE\n" + + " WHEN ISNULL(effective_date, estimated_date) BETWEEN dbo.f_getfirstdayofweek(DATEADD(WEEK, -1, GETDATE())) AND dbo.f_getlastdayofweek(DATEADD(WEEK, -1, GETDATE()))\n" + + " THEN 1\n" + + " ELSE 0 END) AS planned_previous_week,\n" + + " MAX(CASE\n" + + " WHEN ISNULL(effective_date, estimated_date) BETWEEN dbo.f_getfirstdayofweek(DATEADD(WEEK, 1, GETDATE())) AND dbo.f_getlastdayofweek(DATEADD(WEEK, 1, GETDATE()))\n" + + " THEN 1\n" + + " ELSE 0 END) AS planned_next_week,\n" + + " MAX(CASE\n" + + " WHEN effective_date IS NOT NULL AND\n" + + " effective_date BETWEEN dbo.f_getfirstdayofmonth(GETDATE()) AND EOMONTH(GETDATE())\n" + + " THEN 1\n" + + " ELSE 0 END) AS done_this_month,\n" + + " MAX(CASE\n" + + " WHEN effective_date IS NOT NULL AND\n" + + " effective_date BETWEEN dbo.f_getfirstdayofmonth(DATEADD(MONTH, -1, GETDATE())) AND EOMONTH(DATEADD(MONTH, -1, GETDATE()))\n" + + " THEN 1\n" + + " ELSE 0 END) AS done_previous_month,\n" + + " MAX(CASE\n" + + " WHEN effective_date IS NOT NULL AND\n" + + " DATEPART(QUARTER, effective_date) = DATEPART(QUARTER, GETDATE()) THEN 1\n" + + " ELSE 0 END) AS done_this_quarter,\n" + + " MAX(CASE\n" + + " WHEN effective_date IS NOT NULL AND DATEPART(QUARTER, effective_date) =\n" + + " DATEPART(QUARTER, DATEADD(MONTH, -3, GETDATE()))\n" + + " THEN 1\n" + + " ELSE 0 END) AS done_previous_quarter,\n" + + " SUM(jtb_rlavr.ore) AS ore\n" + + "FROM stb_activity\n" + + " INNER JOIN stb_user ON stb_activity.user_name = stb_user.user_name\n" + + " LEFT OUTER JOIN jtb_rlavr ON stb_activity.activity_id = jtb_rlavr.activity_id\n" + + "WHERE stb_activity.flag_tipologia = 'A'\n" + + " AND stb_activity.parent_activity_id IN (" + UtilityDB.listValueToString(elencoId) + ")\n" + + "GROUP BY stb_activity.parent_activity_id,\n" + + " stb_activity.user_name,\n" + + " stb_user.full_name"; List activityResponseDtoWorkedHours = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, ActivityDTO.WorkedHours.class); From 0198f425303f4ccee928000abd129eca86aac6fc Mon Sep 17 00:00:00 2001 From: MarcoE Date: Tue, 11 Feb 2025 16:40:43 +0100 Subject: [PATCH 2/3] Modificato servizio task --- .../integry/ems/activity/dto/ActivityDTO.java | 171 +++++++++--------- .../ems/activity/service/ActivityService.java | 83 ++++----- 2 files changed, 122 insertions(+), 132 deletions(-) diff --git a/ems-engine/src/main/java/it/integry/ems/activity/dto/ActivityDTO.java b/ems-engine/src/main/java/it/integry/ems/activity/dto/ActivityDTO.java index 2b789142d4..e387194353 100644 --- a/ems-engine/src/main/java/it/integry/ems/activity/dto/ActivityDTO.java +++ b/ems-engine/src/main/java/it/integry/ems/activity/dto/ActivityDTO.java @@ -106,27 +106,6 @@ public class ActivityDTO { @SqlField(value = "responabile_progetto") private String responsabileProgetto; - @SqlField(value = "planned_previous_week") - private boolean plannedPreviousWeek; - - @SqlField(value = "planned_next_week") - private boolean plannedNextWeek; - - @SqlField(value = "planned_this_week") - private boolean plannedThisWeek; - - @SqlField(value = "done_this_month") - private boolean doneThisMonth; - - @SqlField(value = "done_previous_month") - private boolean donePreviousMonth; - - @SqlField(value = "done_this_quarter") - private boolean doneThisQuarter; - - @SqlField(value = "done_previous_quarter") - private boolean donePreviousQuarter; - @SqlField(value = "stato_attivita") private Integer statoAttivita; @@ -529,69 +508,6 @@ public class ActivityDTO { return this; } - public boolean isPlannedPreviousWeek() { - return plannedPreviousWeek; - } - - public ActivityDTO setPlannedPreviousWeek(boolean plannedPreviousWeek) { - this.plannedPreviousWeek = plannedPreviousWeek; - return this; - } - - public boolean isPlannedNextWeek() { - return plannedNextWeek; - } - - public ActivityDTO setPlannedNextWeek(boolean plannedNextWeek) { - this.plannedNextWeek = plannedNextWeek; - return this; - } - - public boolean isPlannedThisWeek() { - return plannedThisWeek; - } - - public ActivityDTO setPlannedThisWeek(boolean plannedThisWeek) { - this.plannedThisWeek = plannedThisWeek; - return this; - } - - public boolean isDoneThisMonth() { - return doneThisMonth; - } - - public ActivityDTO setDoneThisMonth(boolean doneThisMonth) { - this.doneThisMonth = doneThisMonth; - return this; - } - - public boolean isDonePreviousMonth() { - return donePreviousMonth; - } - - public ActivityDTO setDonePreviousMonth(boolean donePreviousMonth) { - this.donePreviousMonth = donePreviousMonth; - return this; - } - - public boolean isDoneThisQuarter() { - return doneThisQuarter; - } - - public ActivityDTO setDoneThisQuarter(boolean doneThisQuarter) { - this.doneThisQuarter = doneThisQuarter; - return this; - } - - public boolean isDonePreviousQuarter() { - return donePreviousQuarter; - } - - public ActivityDTO setDonePreviousQuarter(boolean donePreviousQuarter) { - this.donePreviousQuarter = donePreviousQuarter; - return this; - } - public Integer getStatoAttivita() { return statoAttivita; } @@ -712,13 +628,37 @@ public class ActivityDTO { public static class WorkedHours { @SqlField("parent_activity_id") private String parentActivityId; + @SqlField("user_name") private String username; + @SqlField("full_name") private String fullName; + @SqlField("ore_fatte") private BigDecimal oreFatte; + @SqlField(value = "planned_previous_week") + private boolean plannedPreviousWeek; + + @SqlField(value = "planned_next_week") + private boolean plannedNextWeek; + + @SqlField(value = "planned_this_week") + private boolean plannedThisWeek; + + @SqlField(value = "done_this_month") + private boolean doneThisMonth; + + @SqlField(value = "done_previous_month") + private boolean donePreviousMonth; + + @SqlField(value = "done_this_quarter") + private boolean doneThisQuarter; + + @SqlField(value = "done_previous_quarter") + private boolean donePreviousQuarter; + public String getFullName() { return fullName; } @@ -755,5 +695,68 @@ public class ActivityDTO { this.oreFatte = oreFatte; return this; } + + public boolean isPlannedPreviousWeek() { + return plannedPreviousWeek; + } + + public WorkedHours setPlannedPreviousWeek(boolean plannedPreviousWeek) { + this.plannedPreviousWeek = plannedPreviousWeek; + return this; + } + + public boolean isPlannedNextWeek() { + return plannedNextWeek; + } + + public WorkedHours setPlannedNextWeek(boolean plannedNextWeek) { + this.plannedNextWeek = plannedNextWeek; + return this; + } + + public boolean isPlannedThisWeek() { + return plannedThisWeek; + } + + public WorkedHours setPlannedThisWeek(boolean plannedThisWeek) { + this.plannedThisWeek = plannedThisWeek; + return this; + } + + public boolean isDoneThisMonth() { + return doneThisMonth; + } + + public WorkedHours setDoneThisMonth(boolean doneThisMonth) { + this.doneThisMonth = doneThisMonth; + return this; + } + + public boolean isDonePreviousMonth() { + return donePreviousMonth; + } + + public WorkedHours setDonePreviousMonth(boolean donePreviousMonth) { + this.donePreviousMonth = donePreviousMonth; + return this; + } + + public boolean isDoneThisQuarter() { + return doneThisQuarter; + } + + public WorkedHours setDoneThisQuarter(boolean doneThisQuarter) { + this.doneThisQuarter = doneThisQuarter; + return this; + } + + public boolean isDonePreviousQuarter() { + return donePreviousQuarter; + } + + public WorkedHours setDonePreviousQuarter(boolean donePreviousQuarter) { + this.donePreviousQuarter = donePreviousQuarter; + return this; + } } } diff --git a/ems-engine/src/main/java/it/integry/ems/activity/service/ActivityService.java b/ems-engine/src/main/java/it/integry/ems/activity/service/ActivityService.java index e1f6146241..70aaf9171a 100644 --- a/ems-engine/src/main/java/it/integry/ems/activity/service/ActivityService.java +++ b/ems-engine/src/main/java/it/integry/ems/activity/service/ActivityService.java @@ -913,7 +913,7 @@ public class ActivityService { } sql += " FROM stb_activity\n" + " INNER JOIN stb_user ON stb_activity.user_name = stb_user.user_name\n" + - " INNER JOIN stb_user creator ON stb_activity.user_creator = creator.user_name\n" + + " INNER JOIN stb_user creator ON stb_activity.user_creator = creator.user_name\n" + " LEFT OUTER JOIN pvw_clienti_prospect gtb_anag on stb_activity.cod_anag = gtb_anag.cod_ppro and stb_activity.tipo_anag = gtb_anag.tipologia\n" + " AND gtb_anag.flag_stato = 'A'\n" + " LEFT OUTER JOIN mtb_aart ON stb_activity.cod_mart = mtb_aart.cod_mart\n" + @@ -948,11 +948,11 @@ public class ActivityService { " WHERE stb_activity.activity_type_id = srl_activity_type.activity_type_id\n" + " and srl_activity_type.flag_tipologia = 'P' \n"; if (activityId == null) { - sql += " and srl_activity_type.flag_tipologia_next = 'A' \n"; + sql += " and srl_activity_type.flag_tipologia_next = 'A' \n"; } - sql += " and a.flag_attiva = 's'\n" + + sql += " and a.flag_attiva = 's'\n" + " GROUP BY srl_activity_type.activity_type_id\n" + - " HAVING sum(IIF(flag_tipologia_next = 'A',0,1)) = 0 )\n " ; + " HAVING sum(IIF(flag_tipologia_next = 'A',0,1)) = 0 )\n "; if (year == null && activityId == null) { sql += " AND EXISTS (SELECT *\n" + @@ -995,50 +995,37 @@ public class ActivityService { "SELECT stb_activity.parent_activity_id,\n" + " stb_activity.user_name,\n" + " stb_user.full_name,\n" + - " MAX(CASE\n" + - " WHEN effective_date <= CAST(GETDATE() AS DATE) THEN effective_date\n" + - " ELSE NULL END) AS last_activity_date,\n" + - " MIN(CASE\n" + - " WHEN estimated_date >= CAST(GETDATE() AS DATE) THEN estimated_date\n" + - " ELSE NULL END) AS next_activity_date,\n" + - " MAX(CASE\n" + - " WHEN (\n" + - " (estimated_date BETWEEN dbo.f_getfirstdayofweek(GETDATE()) AND dbo.f_getlastdayofweek(GETDATE()) OR\n" + - " estimated_date IS NULL) AND effective_date IS NULL)\n" + - " THEN stb_activity.activity_description\n" + - " ELSE NULL END) AS activity_description,\n" + - " MAX(CASE\n" + - " WHEN ISNULL(effective_date, estimated_date) BETWEEN dbo.f_getfirstdayofweek(GETDATE()) AND dbo.f_getlastdayofweek(GETDATE())\n" + - " THEN 1\n" + - " ELSE 0 END) AS planned_this_week,\n" + - " MAX(CASE\n" + - " WHEN ISNULL(effective_date, estimated_date) BETWEEN dbo.f_getfirstdayofweek(DATEADD(WEEK, -1, GETDATE())) AND dbo.f_getlastdayofweek(DATEADD(WEEK, -1, GETDATE()))\n" + - " THEN 1\n" + - " ELSE 0 END) AS planned_previous_week,\n" + - " MAX(CASE\n" + - " WHEN ISNULL(effective_date, estimated_date) BETWEEN dbo.f_getfirstdayofweek(DATEADD(WEEK, 1, GETDATE())) AND dbo.f_getlastdayofweek(DATEADD(WEEK, 1, GETDATE()))\n" + - " THEN 1\n" + - " ELSE 0 END) AS planned_next_week,\n" + - " MAX(CASE\n" + - " WHEN effective_date IS NOT NULL AND\n" + - " effective_date BETWEEN dbo.f_getfirstdayofmonth(GETDATE()) AND EOMONTH(GETDATE())\n" + - " THEN 1\n" + - " ELSE 0 END) AS done_this_month,\n" + - " MAX(CASE\n" + - " WHEN effective_date IS NOT NULL AND\n" + - " effective_date BETWEEN dbo.f_getfirstdayofmonth(DATEADD(MONTH, -1, GETDATE())) AND EOMONTH(DATEADD(MONTH, -1, GETDATE()))\n" + - " THEN 1\n" + - " ELSE 0 END) AS done_previous_month,\n" + - " MAX(CASE\n" + - " WHEN effective_date IS NOT NULL AND\n" + - " DATEPART(QUARTER, effective_date) = DATEPART(QUARTER, GETDATE()) THEN 1\n" + - " ELSE 0 END) AS done_this_quarter,\n" + - " MAX(CASE\n" + - " WHEN effective_date IS NOT NULL AND DATEPART(QUARTER, effective_date) =\n" + - " DATEPART(QUARTER, DATEADD(MONTH, -3, GETDATE()))\n" + - " THEN 1\n" + - " ELSE 0 END) AS done_previous_quarter,\n" + - " SUM(jtb_rlavr.ore) AS ore\n" + + " MAX(IIF(effective_date <= CAST(GETDATE() AS DATE), effective_date, NULL)) AS last_activity_date,\n" + + " MIN(IIF(estimated_date >= CAST(GETDATE() AS DATE), estimated_date, NULL)) AS next_activity_date,\n" + + " MAX(IIF(((estimated_date BETWEEN dbo.f_getfirstdayofweek(GETDATE()) AND dbo.f_getlastdayofweek(GETDATE()) OR\n" + + " estimated_date IS NULL) AND effective_date IS NULL), stb_activity.activity_description,\n" + + " NULL)) AS activity_description,\n" + + " CAST(MAX(IIF(\n" + + " ISNULL(effective_date, estimated_date) BETWEEN dbo.f_getfirstdayofweek(GETDATE()) AND dbo.f_getlastdayofweek(GETDATE()),\n" + + " 1,\n" + + " 0)) AS BIT) AS planned_this_week,\n" + + " CAST(MAX(IIF(\n" + + " ISNULL(effective_date, estimated_date) BETWEEN dbo.f_getfirstdayofweek(DATEADD(WEEK, -1, GETDATE())) AND dbo.f_getlastdayofweek(DATEADD(WEEK, -1, GETDATE())),\n" + + " 1,\n" + + " 0)) AS BIT) AS planned_previous_week,\n" + + " CAST(MAX(IIF(\n" + + " ISNULL(effective_date, estimated_date) BETWEEN dbo.f_getfirstdayofweek(DATEADD(WEEK, 1, GETDATE())) AND dbo.f_getlastdayofweek(DATEADD(WEEK, 1, GETDATE())),\n" + + " 1,\n" + + " 0)) AS BIT) AS planned_next_week,\n" + + " CAST(MAX(IIF(effective_date IS NOT NULL AND\n" + + " effective_date BETWEEN dbo.f_getfirstdayofmonth(GETDATE()) AND EOMONTH(GETDATE()), 1,\n" + + " 0)) AS BIT) AS done_this_month,\n" + + " CAST(MAX(IIF(effective_date IS NOT NULL AND\n" + + " effective_date BETWEEN dbo.f_getfirstdayofmonth(DATEADD(MONTH, -1, GETDATE())) AND EOMONTH(DATEADD(MONTH, -1, GETDATE())),\n" + + " 1,\n" + + " 0)) AS BIT) AS done_previous_month,\n" + + " CAST(MAX(IIF(effective_date IS NOT NULL AND\n" + + " DATEPART(QUARTER, effective_date) = DATEPART(QUARTER, GETDATE()), 1,\n" + + " 0)) AS BIT) AS done_this_quarter,\n" + + " CAST(MAX(IIF(effective_date IS NOT NULL AND DATEPART(QUARTER, effective_date) =\n" + + " DATEPART(QUARTER, DATEADD(MONTH, -3, GETDATE())), 1,\n" + + " 0)) AS BIT) AS done_previous_quarter,\n" + + " SUM(jtb_rlavr.ore) AS ore_fatte\n" + "FROM stb_activity\n" + " INNER JOIN stb_user ON stb_activity.user_name = stb_user.user_name\n" + " LEFT OUTER JOIN jtb_rlavr ON stb_activity.activity_id = jtb_rlavr.activity_id\n" + From b2745452842eda1abfea2225b162862e3bc5a943 Mon Sep 17 00:00:00 2001 From: MarcoE Date: Fri, 14 Feb 2025 14:47:00 +0100 Subject: [PATCH 3/3] Fix workedHours --- .../it/integry/ems/activity/dto/ActivityDTO.java | 12 ++++++++++++ .../ems/activity/service/ActivityService.java | 14 ++++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/ems-engine/src/main/java/it/integry/ems/activity/dto/ActivityDTO.java b/ems-engine/src/main/java/it/integry/ems/activity/dto/ActivityDTO.java index e387194353..d8a012d8eb 100644 --- a/ems-engine/src/main/java/it/integry/ems/activity/dto/ActivityDTO.java +++ b/ems-engine/src/main/java/it/integry/ems/activity/dto/ActivityDTO.java @@ -638,6 +638,9 @@ public class ActivityDTO { @SqlField("ore_fatte") private BigDecimal oreFatte; + @SqlField("activity_description") + private String activityDescription; + @SqlField(value = "planned_previous_week") private boolean plannedPreviousWeek; @@ -687,6 +690,15 @@ public class ActivityDTO { return this; } + public String getActivityDescription() { + return activityDescription; + } + + public WorkedHours setActivityDescription(String activityDescription) { + this.activityDescription = activityDescription; + return this; + } + public BigDecimal getOreFatte() { return oreFatte; } diff --git a/ems-engine/src/main/java/it/integry/ems/activity/service/ActivityService.java b/ems-engine/src/main/java/it/integry/ems/activity/service/ActivityService.java index 70aaf9171a..4df23b2cdd 100644 --- a/ems-engine/src/main/java/it/integry/ems/activity/service/ActivityService.java +++ b/ems-engine/src/main/java/it/integry/ems/activity/service/ActivityService.java @@ -1046,8 +1046,18 @@ public class ActivityService { )); for (ActivityDTO activityResponse : activityDTOS) { - if (subActivityList.containsKey(activityResponse.getIdAttivita())) - activityResponse.setWorkedHours(subActivityList.get(activityResponse.getIdAttivita())); + if (subActivityList.containsKey(activityResponse.getIdAttivita())) { + List workedHours = subActivityList.get(activityResponse.getIdAttivita()); + + for (ActivityDTO.WorkedHours workedHour : workedHours) { + if (workedHour.getActivityDescription() != null && + workedHour.getActivityDescription().equals(activityResponse.getDescrizione())) { + workedHour.setActivityDescription(null); + } + } + + activityResponse.setWorkedHours(workedHours); + } } }