148 lines
6.6 KiB
Groovy
148 lines
6.6 KiB
Groovy
// Das Skript prueft die Felder
|
|
// - Erinnerungsdatum
|
|
// - Erinnerung an
|
|
// - Erinnerung verschickt
|
|
// und sendet abhaengig hiervon Erinnerungen an die hinterlegten Benutzer
|
|
|
|
// Importe
|
|
import groovy.sql.GroovyRowResult
|
|
import groovy.json.JsonOutput;
|
|
import groovy.json.JsonSlurper;
|
|
import com.dvelop.d3.server.exceptions.SQLException
|
|
import com.dvelop.d3.server.Document
|
|
import com.dvelop.d3.server.DocumentType
|
|
import com.dvelop.d3.server.core.D3Interface
|
|
|
|
import javax.net.ssl.HttpsURLConnection;
|
|
import java.text.SimpleDateFormat
|
|
|
|
// #################################################################################
|
|
// Konfigurationsbereich
|
|
// #################################################################################
|
|
String versandModus = "1" // 0 = Keine Erinnerungen verschicken, nur Logs ausgeben, 1 = Erinnerungen verschicken
|
|
|
|
int repoIdErinnerungVerschickt = 97
|
|
int repoIdErinnerungAn = 98
|
|
int repoIdErinnerungsdatum = 99
|
|
|
|
int dbPosErinnerungVerschickt = 33
|
|
int dbPosErinnerungAn = 34
|
|
int dbPosErinnerungsdatum = 58
|
|
|
|
String apiServiceUser = "D3APIServi"
|
|
|
|
String baseURi = "https://meinHost.meineDomain.de"
|
|
String repoId = "xxx"
|
|
String ServiceAPIKey = "xxx"
|
|
|
|
// #################################################################################
|
|
// Ende Konfigurationsbereich
|
|
// #################################################################################
|
|
|
|
try{
|
|
|
|
d3.log.info("Starte Skript TH_sendReminder");
|
|
d3.log.info("Ermittle Dokumente zur Erinnerung")
|
|
|
|
// Dokumente suchen, fuer die noch keine Erinnerung verschickt wurde
|
|
// Und dessen Erinnerungsdatum in der Vergangenheit liegt
|
|
def sqlQuery = """select doku_id, dok_dat_feld_$dbPosErinnerungAn as ErinnerungAn
|
|
from firmen_spezifisch
|
|
where dok_dat_feld_$dbPosErinnerungAn is not null and dok_dat_feld_$dbPosErinnerungsdatum is not null and dok_dat_feld_$dbPosErinnerungVerschickt is null
|
|
and kue_dokuart in (
|
|
select kue_dokuart from fispe_titel_dokuart
|
|
where repository_id = ${repoIdErinnerungVerschickt}
|
|
intersect
|
|
select kue_dokuart from fispe_titel_dokuart
|
|
where repository_id = ${repoIdErinnerungAn}
|
|
intersect
|
|
select kue_dokuart from fispe_titel_dokuart
|
|
where repository_id = ${repoIdErinnerungsdatum}
|
|
)
|
|
and dok_dat_feld_$dbPosErinnerungsdatum < getdate()"""
|
|
|
|
def resultSet = d3.sql.executeAndGet(sqlQuery)
|
|
|
|
d3.log.info (resultSet.size() + " Dokumente ermittelt.")
|
|
|
|
if (resultSet.size() > 0)
|
|
{
|
|
|
|
// Ergebnis durchlaufen und Erinnerungen verschicken
|
|
resultSet.each
|
|
{
|
|
lDokId = it.get("doku_id")
|
|
lEmpfaenger = it.get("ErinnerungAn")
|
|
|
|
if (versandModus == "0")
|
|
{
|
|
d3.log.info ("Nur Test: Erinnerung zu " + it.get("doku_id") + " wuerde an " + it.get("ErinnerungAn") + " verschickt werden.")
|
|
}
|
|
else if (versandModus == "1")
|
|
{
|
|
d3.log.info ("Erinnerung zu " + lDokId + " wird an " + lEmpfaenger + " verschickt.")
|
|
|
|
//Auslesen der IDP Gruppen IDs
|
|
HttpsURLConnection taskAppRequest = new URL(baseURi + "/task/tasks").openConnection();
|
|
taskAppRequest.setRequestMethod("POST");
|
|
taskAppRequest.setRequestProperty("Origin", baseURi);
|
|
taskAppRequest.setRequestProperty("content-type", "application/json");
|
|
taskAppRequest.setRequestProperty("Authorization", "Bearer " + ServiceAPIKey);
|
|
taskAppRequest.setDoOutput(true);
|
|
|
|
//correlationKey zusammensetzen
|
|
UUID uuid = UUID.randomUUID();
|
|
String randomUUIDString = uuid.toString();
|
|
|
|
String jsonInputString = """{
|
|
"subject" : "Erinnerung zum Dokument",
|
|
"description" : "Das Erinnerungsdatum für das anliegende Dokument wurde erreicht.",
|
|
"assignees" : [${lEmpfaenger}],
|
|
"correlationKey" : ${randomUUIDString},
|
|
"context" : {
|
|
"key" : "COMMON",
|
|
"type" : "task",
|
|
"name" : "Allgemeine Erinnerung"
|
|
},
|
|
"dmsReferences" : [
|
|
{
|
|
"repoId" : ${repoId},
|
|
"objectId" : ${lDokId}
|
|
}
|
|
],
|
|
"_links" : {
|
|
"attachment" : { "href": "/dms/r/${repoId}/o2/${lDokId}"}
|
|
}
|
|
}""";
|
|
|
|
def response = taskAppRequest.getOutputStream().write(jsonInputString.getBytes("UTF-8"));
|
|
|
|
response = taskAppRequest.getResponseCode()
|
|
|
|
if (response == 200 || response == 201)
|
|
{
|
|
// Wenn erfolgreich, Feld "Erinnerung verschickt" aktualisieren
|
|
d3.log.info("Aufgabe erfolgreich angelegt")
|
|
|
|
Document currentDoc = d3.archive.getDocument(lDokId, apiServiceUser)
|
|
|
|
def date = new Date()
|
|
def dateTime = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss")
|
|
currentDoc.field[dbPosErinnerungVerschickt] = "Verschickt am " + dateTime.format(date)
|
|
|
|
currentDoc.updateAttributes(apiServiceUser, true)
|
|
}
|
|
else
|
|
{
|
|
d3.log.error("Fehlercode " + response + " bei Anlage der Aufgabe")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
d3.log.info("Skript TH_sendReminder erfolgreich beendet.");
|
|
}
|
|
catch (SQLException e)
|
|
{
|
|
d3.log.error ("Dokumente loeschen: Fehler in Script aufgetreten!");
|
|
} |