From a205f222b0e4fb0dae939fb92db3e98f910f2e76 Mon Sep 17 00:00:00 2001 From: MinaR Date: Tue, 2 Sep 2025 11:09:48 +0200 Subject: [PATCH 1/2] modifiche per task --- ems-core/src/main/resources/rules/Integry.drl | 11 +++ .../ems/activity/service/ActivityService.java | 72 ++++++++++--------- 2 files changed, 51 insertions(+), 32 deletions(-) diff --git a/ems-core/src/main/resources/rules/Integry.drl b/ems-core/src/main/resources/rules/Integry.drl index 24ce936fd6..5e00ea7137 100644 --- a/ems-core/src/main/resources/rules/Integry.drl +++ b/ems-core/src/main/resources/rules/Integry.drl @@ -22,6 +22,17 @@ global Boolean completeRulesEnabled global IntegryCustomerDB customerDb global IntegryCustomer customer + +rule "completeStatoTask" +no-loop +when + eval(completeRulesEnabled && customerDb == IntegryCustomerDB.Integry_Studioml) + $stbActivity : StbActivity(flagTipologia == "P" && estimatedEnddate != null && userName != "DEV" && userName != "T0003" && activityResultId == null && + effectiveEndtime == null) +then + modify ( $stbActivity ) { setActivityResultId("DA FARE") } +end + /* rule "completeStatoAttivita" no-loop 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 951c8d7a7d..e7670a0b92 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 @@ -1066,47 +1066,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); From 7893e6d8083715037eb21916e70c2e9c593f7ce9 Mon Sep 17 00:00:00 2001 From: MinaR Date: Tue, 2 Sep 2025 12:26:31 +0200 Subject: [PATCH 2/2] modifiche per task --- .../ems/activity/service/ActivityService.java | 72 +++++++++---------- .../system/controller/SystemController.java | 45 ++++++++++++ 2 files changed, 77 insertions(+), 40 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 e7670a0b92..951c8d7a7d 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 @@ -1066,55 +1066,47 @@ public class ActivityService { if (activityDTOS != null) { List elencoId = Stream.of(activityDTOS).map(ActivityDTO::getIdAttivita).toList(); sql = - "SELECT parent.activity_id,\n" + - " ISNULL(stb_activity.user_name, parent.user_name) AS user_name,\n" + + "SELECT stb_activity.parent_activity_id,\n" + + " stb_activity.user_name,\n" + " stb_user.full_name,\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" + + " 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(ISNULL(stb_activity.effective_date, stb_activity.estimated_date),\n" + - " parent.estimated_date) BETWEEN dbo.f_getfirstdayofweek(GETDATE()) AND dbo.f_getlastdayofweek(GETDATE()),\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" + + " 0)) AS BIT) AS planned_this_week,\n" + " CAST(MAX(IIF(\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" + + " 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" + + " 0)) AS BIT) AS planned_previous_week,\n" + " CAST(MAX(IIF(\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" + + " 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(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" + + " 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(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" + + " 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" + - "WHERE parent.activity_id IN (" + UtilityDB.listValueToString(elencoId) + ")\n" + - "GROUP BY parent.activity_id,\n" + - " ISNULL(stb_activity.user_name, parent.user_name),\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); diff --git a/ems-engine/src/main/java/it/integry/ems/system/controller/SystemController.java b/ems-engine/src/main/java/it/integry/ems/system/controller/SystemController.java index c6c04f7fc3..8c5692e371 100644 --- a/ems-engine/src/main/java/it/integry/ems/system/controller/SystemController.java +++ b/ems-engine/src/main/java/it/integry/ems/system/controller/SystemController.java @@ -52,6 +52,11 @@ import it.integry.ems_model.service.SetupGest; import it.integry.ems_model.types.OperationType; import it.integry.ems_model.utility.*; import it.integry.ems_model.utility.dto.ConvertQueryDTO; +import it.integry.firebase.dto.MessageDTO; +import it.integry.firebase.dto.NotificationDTO; +import it.integry.firebase.dto.apns.ApnsConfigDTO; +import it.integry.firebase.dto.apns.ApsDTO; +import it.integry.firebase.service.NotificationService; import it.integry.security.cache.SecretKeyCacheComponent; import it.integry.security.dto.LoginRequestDTO; import kotlin.Triple; @@ -113,6 +118,8 @@ public class SystemController { @Autowired private RequestDataDTO requestDataDTO; + @Autowired + private NotificationService notificationService; @GetMapping(value = "/system/ok") @@ -822,6 +829,44 @@ public class SystemController { multiDBTransactionManager); } activity.setActivityId(stbActivity.getActivityId()); + + + if (!stbActivity.getUserCreator().equalsIgnoreCase(stbActivity.getUserName()) && + !stbActivity.getUserName().equalsIgnoreCase("T0003") && + stbActivity.getActivityTypeId().equalsIgnoreCase("TICKET")) { + + String title = "E' stato inserito un ticket"; + String message = String.format("E' stato inserito il ticket #%s commessa %s. %s", stbActivity.getActivityId(), + stbActivity.getCodJcom(), stbActivity.getActivityDescription()); + + List utenti = new ArrayList<>(); + if (stbActivity.getUserName().equalsIgnoreCase("DEV")) { + utenti.add("F0003"); + utenti.add("F0237"); + utenti.add("F0060"); + } else { + utenti.add(stbActivity.getUserName()); + } + + for (String username : utenti) { + notificationService.sendNotificationToUserDevices(new MessageDTO() + .setUserName(username) + .setAppName(WtbUserDeviceToken.AppName.TASK) + .setNotification(new NotificationDTO() + .setTitle(title) + .setBody(message) + ) + .setApns(new ApnsConfigDTO() + .setAps(new ApsDTO() + .setSound("default") + .setContentAvailable(true) + ) + ) + ); + } + } + + return ServiceRestResponse.createPositiveResponse(activity); } catch (Exception e) {