deleteDocuments.groovy hinzugefügt

This commit is contained in:
2025-06-04 14:26:00 +02:00
parent ff85a06ead
commit e0fffb4ae2

View File

@@ -0,0 +1,112 @@
import com.dvelop.d3.server.Document
import com.dvelop.d3.server.DocumentType
import com.dvelop.d3.server.User
import com.dvelop.d3.server.ValueSet
import com.dvelop.d3.server.Validation
import com.dvelop.d3.server.core.D3
import com.dvelop.d3.server.core.D3Interface
import com.dvelop.d3.server.exceptions.SQLException
import com.dvelop.d3.server.exceptions.D3Exception
import java.lang.annotation.*
import java.sql.SQLWarning;
import java.sql.Timestamp
/*
Skript zum Löschen von Dokumenten
Folgende Konfigurationsparameter sollten vorher im d.3 angedacht werden, insofern die Dokumente auch physikalisch gelöscht werden sollen
DELETE_DOCS_ELAPSED_AUTO (Dokumente logisch löschen)
DELETE_DOCS_ELAPSED_PHYSICAL (Dokumente physikalisch löschen)
DELETE_DOCS_ELAPSED_SEC_STORAGE (Dokumente vom Sekundärspeicher löschen, falls im Einsatz)
RECYCLE_STORAGE_PERIOD (Verweildauer im Papierkorb)
*/
// #################################################################################
// Konfigurationsbereich
// #################################################################################
// Pflichtfelder:
// --------------
def DokumentArt = "('DVFVA', 'DSFVA', 'AFOND', 'AVFVA', 'AMAND', 'AFVA', 'AKUND', 'ASFVA')" // Dokumentarten, entspricht SQL-Where In ...
int LoeschModus = 2 // 1 = erzeuge d3l-Datei, 2 = Dokumente Loeschen
// Optionale Felder
// ----------------
// Falls leer, im Format <Feldname> = "" angeben, dann wird ueber das Feld nicht eingeschränkt,
def ImportDatum = "" // Dokumente >= Import-Datum gem. DB-Tabelle phys_datei, Spalte datum_einbring
// Format: DD.MM.YYYY
def ImportBenutzer = "" // d.3 Benutzerkürzel, optional
def StammGPNummer = "" // Stamm-GP-Nummer
// Pfade
// -----
def LogPfad = "D:\\d3log\\DokumenteLoeschen\\"
def LogDateiName = "DokumenteLoeschen"
def LinkDateiName = "DokumenteLoeschenLink"
// #################################################################################
// Ende Konfigurationsbereich
// #################################################################################
d3.log.info("Starte Lösch-Skript für Dokumentarten: " + DokumentArt)
d3.log.info("ImportDatum >= " + ImportDatum)
d3.log.info("ImportBenutzer = " + ImportBenutzer)
d3.log.info("StammGPNummer = " + StammGPNummer)
def LogDatei = new File(LogPfad + LogDateiName + ".log")
LogDatei.append("\n\rStarte Löschen von Dokumenten ")
def LinkDatei = new File(LogPfad + LinkDateiName + ".d3l")
int countDeleted = 0
if (LoeschModus == 1)
{
LinkDatei.write("idlist")
}
try
{
// SQL Abfrage zusammensetzen
def SQLWhere = "where kue_dokuart in " + DokumentArt
if (ImportDatum)
{
SQLWhere = SQLWhere + " and datum_einbring >= to_date('" + ImportDatum + "', 'DD.MM.YYYY')"
}
if (ImportBenutzer)
{
SQLWhere = SQLWhere + " and besitzer = '" + ImportBenutzer + "'"
}
if (StammGPNummer)
{
SQLWhere = SQLWhere + " and dok_dat_feld_3 = '" + StammGPNummer + "'"
}
def resultset = d3.sql.executeAndGet("""select fs.doku_id
from firmen_spezifisch fs
inner join phys_datei pd on (fs.doku_id = pd.doku_id)""" + SQLWhere)
if (resultset.size() > 0)
{
d3.log.info (resultset.size() + " Dokumente zum Löschen ermittelt.")
LogDatei.append("\n\r" + resultset.size() + " Dokumente zum Löschen ermittelt.")
// Ergebnis durchlaufen und Dokumente / Akten aktualisieren
resultset.each
{
if (LoeschModus == 1)
{
LinkDatei.append("\n" + it.get("doku_id"))
}
else if (LoeschModus == 2)
{
LogDatei.append("\n" + it.get("doku_id") + " wird gelöscht.")
d3.call.document_delete("TestdokumenteLoeschen", true, true, it.get("doku_id"), "", false)
countDeleted++
d3.log.info(countDeleted + " von " + resultset.size() + " Dokumente geloescht.")
}
}
}
}
catch (SQLException e)
{
d3.log.error ("Dokumente loeschen: Fehler in Script aufgetreten!");
}