sistemare regola attività

This commit is contained in:
2025-02-10 14:06:51 +01:00
parent 12cf184235
commit fe3c1e3dca

View File

@@ -44,27 +44,27 @@ rule "completeDataEffettiva"
no-loop
when
eval(completeRulesEnabled && customerDb == IntegryCustomerDB.Integry_Studioml)
$stbActivity : StbActivity(flagTipologia == "A" && parentActivityId != null && (operation == OperationType.INSERT || operation == OperationType.UPDATE || operation == OperationType.INSERT_OR_UPDATE))
$stbActivity : StbActivity(flagTipologia == "A" &&
effectiveTime != null &&
parentActivityId != null && (operation == OperationType.INSERT || operation == OperationType.UPDATE || operation == OperationType.INSERT_OR_UPDATE))
then
String sql =
Query.format(
"SELECT CAST(IIF((stb_activity.effective_time IS NULL OR stb_activity.effective_time > %s), 1, 0) AS BIT) AS bool,\n" +
" stb_activity.effective_time\n" +
"FROM stb_activity\n" +
"WHERE stb_activity.activity_id = %s",
$stbActivity.getEffectiveTime(), $stbActivity.getParentActivityId()
);
HashMap<String,Object> resultQuery = UtilityDB.executeSimpleQueryOnlyFirstRow(conn, sql);
boolean result = (boolean) resultQuery.get("bool");
Date effectiveTime = (Date) resultQuery.get("effective_time");
List<StbActivity> list = new ArrayList<>();
if (result) {
StbActivity parent = new StbActivity()
.setActivityId($stbActivity.getParentActivityId())
.setEffectiveTime(effectiveTime);
parent.setOperation(OperationType.UPDATE);
list.add(parent);
if ($stbActivity.getParent() == null ) {
String sql =
Query.format(
"SELECT *\n" +
"FROM stb_activity\n" +
"WHERE stb_activity.activity_id = %s",
$stbActivity.getParentActivityId()
);
list = UtilityDB.executeSimpleQueryDTO(conn, sql, StbActivity.class);
if (list != null && list.size() > 0 ) {
Date data = list.get(0).getEffectiveTime();
if ( data == null || data.before($stbActivity.getEffectiveTime())){
list.get(0).setEffectiveTime($stbActivity.getEffectiveTime());
list.get(0).setOperation(OperationType.UPDATE);
}
}
}
modify ( $stbActivity ) { setStbActivity(list) }
end
@@ -73,37 +73,43 @@ rule "completeResultId"
no-loop
when
eval(completeRulesEnabled && customerDb == IntegryCustomerDB.Integry_Studioml)
$stbActivity : StbActivity(flagTipologia == "A" && parentActivityId != null && (operation == OperationType.INSERT || operation == OperationType.UPDATE || operation == OperationType.INSERT_OR_UPDATE))
$stbActivity : StbActivity(flagTipologia == "A" && parentActivityId != null &&
activityResultId != null &&
(operation == OperationType.INSERT || operation == OperationType.UPDATE || operation == OperationType.INSERT_OR_UPDATE))
then
String sql =
Query.format(
"WITH childActivityResult AS (SELECT *\n" +
" FROM stb_activity_result\n" +
" WHERE activity_result_id = %s)\n" +
"SELECT CAST(IIF(\n" +
" (stb_activity_result.flag_stato_attivita IS NULL OR\n" +
" stb_activity_result.flag_stato_attivita <> '4' OR\n" +
" stb_activity_result.flag_stato_attivita <> '3' OR\n" +
" stb_activity_result.flag_stato_attivita <> '1'),\n" +
" 1, 0) AS BIT) AS 'execute',\n" +
" IIF(childActivityResult.flag_stato_attivita <> 0, 'DA COMPLETARE', childActivityResult.activity_result_id) AS 'stato'\n" +
"FROM stb_activity\n" +
" CROSS APPLY childActivityResult\n" +
" LEFT OUTER JOIN stb_activity_result ON stb_activity_result.activity_result_id = stb_activity.activity_result_id\n" +
"WHERE stb_activity.activity_id = %s",
$stbActivity.getActivityResultId(), $stbActivity.getParentActivityId()
);
HashMap<String,Object> resultQuery = UtilityDB.executeSimpleQueryOnlyFirstRow(conn, sql);
boolean execute = (boolean) resultQuery.get("execute");
String stato = (String) resultQuery.get("stato");
List<StbActivity> list = new ArrayList<>();
if (execute) {
StbActivity parent = new StbActivity()
.setActivityId($stbActivity.getParentActivityId())
.setActivityResultId(stato);
parent.setOperation(OperationType.UPDATE);
list.add(parent);
List<StbActivity> list = new ArrayList<>();
if ($stbActivity.getParent() == null ) {
String sql =
Query.format(
"WITH childActivityResult AS (SELECT *\n" +
" FROM stb_activity_result\n" +
" WHERE activity_result_id = %s)\n" +
"SELECT CAST(IIF(\n" +
" (stb_activity_result.flag_stato_attivita IS NULL OR\n" +
" stb_activity_result.flag_stato_attivita <> '4' OR\n" +
" stb_activity_result.flag_stato_attivita <> '3' OR\n" +
" stb_activity_result.flag_stato_attivita <> '1'),\n" +
" 1, 0) AS BIT) AS 'execute',\n" +
" IIF(childActivityResult.flag_stato_attivita <> 0, 'DA COMPLETARE', childActivityResult.activity_result_id) AS 'stato'\n" +
"FROM stb_activity\n" +
" CROSS APPLY childActivityResult\n" +
" LEFT OUTER JOIN stb_activity_result ON stb_activity_result.activity_result_id = stb_activity.activity_result_id\n" +
"WHERE stb_activity.activity_id = %s",
$stbActivity.getActivityResultId(), $stbActivity.getParentActivityId()
);
HashMap<String,Object> resultQuery = UtilityDB.executeSimpleQueryOnlyFirstRow(conn, sql);
boolean execute = (boolean) resultQuery.get("execute");
String stato = (String) resultQuery.get("stato");
if (execute) {
StbActivity parent = new StbActivity()
.setActivityId($stbActivity.getParentActivityId())
.setActivityResultId(stato);
parent.setOperation(OperationType.UPDATE);
list.add(parent);
}
}
modify ( $stbActivity ) { setStbActivity(list) }
end