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 = "" 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!"); }