Vorlagen ergänzt
This commit is contained in:
148
_Vorlagen/Groovy-Skripte/reminderFunction.groovy
Normal file
148
_Vorlagen/Groovy-Skripte/reminderFunction.groovy
Normal file
@@ -0,0 +1,148 @@
|
||||
// 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!");
|
||||
}
|
||||
Reference in New Issue
Block a user