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 4f5f48f3a1..872a1d3c13 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 @@ -1080,47 +1080,55 @@ public class ActivityService { if (activityDTOS != null) { List elencoId = Stream.of(activityDTOS).map(ActivityDTO::getIdAttivita).toList(); sql = - "SELECT stb_activity.parent_activity_id,\n" + - " stb_activity.user_name,\n" + + "SELECT parent.activity_id,\n" + + " ISNULL(stb_activity.user_name, parent.user_name) AS user_name,\n" + " stb_user.full_name,\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" + + " MAX(IIF(stb_activity.effective_date <= CAST(GETDATE() AS DATE), stb_activity.effective_date,\n" + + " NULL)) AS last_activity_date,\n" + + " MIN(IIF(stb_activity.estimated_date >= CAST(GETDATE() AS DATE), stb_activity.estimated_date,\n" + + " NULL)) AS next_activity_date,\n" + + " MAX(IIF(\n" + + " ((stb_activity.estimated_date BETWEEN dbo.f_getfirstdayofweek(GETDATE()) AND dbo.f_getlastdayofweek(GETDATE()) OR\n" + + " stb_activity.estimated_date IS NULL) AND stb_activity.effective_date IS NULL),\n" + + " 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" + + " ISNULL(ISNULL(stb_activity.effective_date, stb_activity.estimated_date),\n" + + " parent.estimated_date) BETWEEN dbo.f_getfirstdayofweek(GETDATE()) AND dbo.f_getlastdayofweek(GETDATE()),\n" + " 1,\n" + - " 0)) AS BIT) AS planned_this_week,\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" + + " ISNULL(ISNULL(stb_activity.effective_date, stb_activity.estimated_date),\n" + + " parent.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" + + " 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" + + " ISNULL(ISNULL(stb_activity.effective_date, stb_activity.estimated_date),\n" + + " parent.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" + + " 0)) AS BIT) AS planned_next_week,\n" + + " CAST(MAX(IIF(stb_activity.effective_date IS NOT NULL AND\n" + + " stb_activity.effective_date BETWEEN dbo.f_getfirstdayofmonth(GETDATE()) AND EOMONTH(GETDATE()), 1,\n" + + " 0)) AS BIT) AS done_this_month,\n" + + " CAST(MAX(IIF(stb_activity.effective_date IS NOT NULL AND\n" + + " stb_activity.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" + + " 0)) AS BIT) AS done_previous_month,\n" + + " CAST(MAX(IIF(stb_activity.effective_date IS NOT NULL AND\n" + + " DATEPART(QUARTER, stb_activity.effective_date) = DATEPART(QUARTER, GETDATE()), 1,\n" + + " 0)) AS BIT) AS done_this_quarter,\n" + + " CAST(MAX(IIF(stb_activity.effective_date IS NOT NULL AND DATEPART(QUARTER, stb_activity.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 parent\n" + + " LEFT OUTER JOIN stb_activity\n" + + " ON stb_activity.parent_activity_id = parent.activity_id AND stb_activity.flag_tipologia = 'A'\n" + + " INNER JOIN stb_user ON ISNULL(stb_activity.user_name, parent.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" + + "WHERE parent.activity_id IN (" + UtilityDB.listValueToString(elencoId) + ")\n" + + "GROUP BY parent.activity_id,\n" + + " ISNULL(stb_activity.user_name, parent.user_name),\n" + " stb_user.full_name"; List activityResponseDtoWorkedHours = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, ActivityDTO.WorkedHours.class);