102 lines
3.0 KiB
Groovy
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"); |