Files
d.velop/_Vorlagen/Groovy-Skripte/automaticRelease.groovy
2025-04-04 11:35:25 +02:00

102 lines
3.0 KiB
Groovy

import com.dvelop.d3.server.core.D3Interface
import java.text.SimpleDateFormat
import java.util.Date;
D3Interface d3 = getProperty("d3");
d3.log.info("Start Skript: Automatische Freigabe");
/**
* ----------------------Start Initialisierung----------------------------------------------
*/
int returnCode;
String currentDB;
final String BEARBEITUNG = "DOC_STAT_PROCESSING";
final String FREIGABE = "DOC_STAT_RELEASE";
final String PRUEFUNG = "DOC_STAT_VERIFICATION";
def docuIdList = [];
def dtsList = [];
/**
* ----------------------Ende Initialisierung-----------------------------------------------
*/
/**
* ----------------------Konfigurationsbereich allgemein------------------------------------
*/
//Zeitintervall (Tage) für die automatische Freigabe
int daysOff = 14;
//Angabe der relevanten Dokumentart-Kürzel
dtsList = ["KRDOK"];
//Angabe des ausführenden Benutzers
def d3User = "dvelop";
/**
* ----------------------Ende Konfigurationsbereich allgemein-------------------------------
*/
/**
* ----------------------Konfigurationsbereich SQL-------------------------------------------
*/
def dtsString = String.join("','", dtsList);
d3.log.info("Dokumentart(en): ${dtsString}");
//Datumsgrente ermitteln
def date = new SimpleDateFormat("dd.MM.yyyy").format(new Date() - daysOff);
d3.log.info("Datumsgrenze: ${date}");
//Prüfung des Datenbank-Servers
String dbServer = d3.config.value("db_server");
d3.log.info("Datenbank: ${dbServer}");
if(dbServer == "ORAC" || dbServer == "DB2") {
currentDB = "to_date('${date}','DD.MM.YYYY')";
}
if(dbServer == "MSQL") {
currentDB = "CONVERT(DATETIME, '${date}', 104)";
}
String sqlStm = """select firmen_spezifisch.doku_id as dokId from phys_datei
inner join firmen_spezifisch on (firmen_spezifisch.doku_id = phys_datei.doku_id)
where dokuart in ( '${dtsString}' )
and logi_verzeichnis in ('Be', 'Pr')
and last_update_attr <= ${currentDB}""";
d3.log.info("SQL: ${sqlStm}");
def resultset = d3.sql.executeAndGet(sqlStm);
docuIdList = resultset.collect{ it.dokId };
/**
* ----------------------Ende Konfigurationsbereich SQL---------------------------------------
*/
for(String id : docuIdList)
{
// Hole aktuellen Status des Dokuments
def currentDoc = d3.archive.getDocument(id, d3User );
def docStatus = currentDoc.getStatus();
d3.log.info("Aktuelle ID: ${id}");
if(docStatus.toString() == BEARBEITUNG || docStatus.toString() == PRUEFUNG)
{
returnCode = currentDoc.transfer("Freigabe", "", "Automatischer Statustransfer", false, 0, "");
if(returnCode != 0)
{
d3.log.error("Statustransfer 'Freigabe' für DokID: ${id} ist fehlgeschlafen! Fehlercode: ${returnCode}");
} else {
d3.log.info("Statustransfer 'Freigabe' für DokID: ${id} war erfolgreich!");
}
}
}
d3.log.info("Ende Skript: Automatische Freigabe");