Fuege Optima hinzu
This commit is contained in:
@@ -0,0 +1,273 @@
|
||||
import com.dvelop.d3.server.Document
|
||||
import com.dvelop.d3.server.core.D3Interface
|
||||
import com.dvelop.d3.server.exceptions.SQLException
|
||||
import com.dvelop.d3.server.exceptions.D3Exception
|
||||
import groovy.transform.Field
|
||||
|
||||
|
||||
|
||||
D3Interface d3 = getProperty( "d3" );
|
||||
|
||||
@Field prg = "verkn_equipm_dokumente.groovy";
|
||||
@Field version = "0.1";
|
||||
@Field kunde = "Optima";
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
|
||||
// debug:
|
||||
// 0 => es finden Änderungen am Datenbestand statt
|
||||
// 1 => es finden keine Änderungen am Datenbestand statt
|
||||
@Field debug = 0;
|
||||
|
||||
|
||||
// Dokumente pro Durchlauf
|
||||
// Gibt an, wie viele Dokumente maximal pro Durchlauf verarbeitet werden
|
||||
@Field dokumente_pro_durchlauf = 10;
|
||||
|
||||
// CSV-Datei, enthält die Zuordnungen von Dokumentgruppe zu Akte
|
||||
// Wird erwartet ohne Spaltenüberschriften. Sollte aber auch kein Problem sein, wenn welche drin wären.
|
||||
@Field CSV_FILE = "D:\\d3\\d3server.prg\\ext_groovy\\mapping_equipm_dokumente.csv"
|
||||
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
def debugtext;
|
||||
|
||||
switch ( debug )
|
||||
{
|
||||
case 0:
|
||||
debugtext = "ausgeschaltet";
|
||||
break;
|
||||
default:
|
||||
debugtext = "eingeschaltet (keine Aenderungen am Datenbestand)";
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
xlog( d3, 4, "********************************************************" );
|
||||
xlog( d3, 4, "* Programm : " + prg );
|
||||
xlog( d3, 4, "* Version : " + version );
|
||||
xlog( d3, 4, "* Kunde : " + kunde );
|
||||
xlog( d3, 4, "* geschrieben von : calb / d.velop AG" );
|
||||
xlog( d3, 4, "* (c) d.velop AG " );
|
||||
xlog( d3, 4, "********************************************************" );
|
||||
|
||||
xlog( d3, 4, "Parameter: " );
|
||||
xlog( d3, 4, "* Debug : " + debugtext );
|
||||
xlog( d3, 4, "* Dokumente pro Durchlauf : " + dokumente_pro_durchlauf );
|
||||
xlog( d3, 4, "* CSV-Datei : " + CSV_FILE );
|
||||
|
||||
|
||||
xlog( d3, 4, "********************************************************" );
|
||||
|
||||
xlog( d3, 4, "* Lese CSV-Datei: " );
|
||||
|
||||
def csvanzahl = 0; // Wie viele Zeilen sind in der CSV-Datei enthalten
|
||||
def csvdatei = new File( CSV_FILE );
|
||||
def csvzeilen = csvdatei.readLines().collect{ it.split( ";" ) };
|
||||
csvzeilen.each{ csvanzahl++; xlog( d3, 5, "* Zeile " + csvanzahl + ": " + it ); }
|
||||
|
||||
xlog( d3, 4, "* " + csvanzahl + " Zeilen gelesen." )
|
||||
xlog( d3, 4, "********************************************************" );
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def sqlQuery = "select top " + dokumente_pro_durchlauf + " doku_id, dok_dat_feld_9, dok_dat_feld_21 from firmen_spezifisch where kue_dokuart = 'DEQUI' and dok_dat_feld_48 is null";
|
||||
|
||||
resultRows = d3.sql.executeAndGet( (String) sqlQuery );
|
||||
|
||||
|
||||
if ( resultRows.size() > 0 )
|
||||
{
|
||||
xlog( d3, 4, " Es wurden " + resultRows.size() + " Treffer gefunden." );
|
||||
xlog( d3, 4, "********************************************************" );
|
||||
|
||||
def i = 0;
|
||||
def allesgut = true;
|
||||
def allesgut_2 = true;
|
||||
|
||||
for ( i = 0; i < resultRows.size(); i++ )
|
||||
{
|
||||
xlog( d3, 4, "Nr. " + (i+1) + "/" + resultRows[ i ].doku_id + ": Equipmentdokument Doku-ID " + resultRows[ i ].doku_id + " / E-Nr. " + resultRows[ i ].dok_dat_feld_9 + " / Dokumentgruppe " + resultRows[ i ].dok_dat_feld_21 );
|
||||
|
||||
|
||||
// Lade das Dokument
|
||||
|
||||
equidok = d3.archive.getDocument( resultRows[ i ].doku_id );
|
||||
def gefunden = false;
|
||||
|
||||
// DDF21 => Dokumentgruppe
|
||||
// DDF48 => Akte
|
||||
|
||||
|
||||
|
||||
// Suche in den CSV-Daten:
|
||||
csvzeilen.each
|
||||
{
|
||||
if ( it[ 0 ] == equidok.field[ 21 ] )
|
||||
{
|
||||
gefunden = true;
|
||||
// Setze Akte:
|
||||
xlog( d3, 4, "Nr. " + (i+1) + "/" + resultRows[ i ].doku_id + ": setze Akte " + it[ 2 ] + " bei Dokument " + resultRows[ i ].doku_id );
|
||||
equidok.field[ 48 ] = it[ 2 ];
|
||||
|
||||
// Wenn neue Dokumentgruppe verschieden ist von alter Dokumentgruppe, dann ändere Dokumentgruppe:
|
||||
if ( it[ 0 ] != it[ 1 ] )
|
||||
{
|
||||
xlog( d3, 4, "Nr. " + (i+1) + "/" + resultRows[ i ].doku_id + ": Dokumentgruppe bei Dokument " + resultRows[ i ].doku_id + " wird gesetzt (alt/neu) " + equidok.field[ 21 ] + " / " + it[ 1 ] );
|
||||
equidok.field[ 21 ] = it[ 1 ];
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if ( gefunden == true )
|
||||
{
|
||||
try
|
||||
{
|
||||
if ( debug == 0 )
|
||||
{
|
||||
equidok.updateAttributes("Master");
|
||||
xlog( d3, 4, "Nr. " + (i+1) + "/" + resultRows[ i ].doku_id + ": Dokument " + equidok.id() + " wurde aktualisiert.");
|
||||
}
|
||||
else
|
||||
{
|
||||
xlog( d3, 4, "Nr. " + (i+1) + "/" + resultRows[ i ].doku_id + ": keine Dokumentaktualisierung, da DEBUG-Modus eingeschaltet." );
|
||||
}
|
||||
}
|
||||
catch ( D3Exception e )
|
||||
{
|
||||
xlog( d3, 2, "Nr. " + (i+1) + "/" + resultRows[ i ].doku_id + ": Equipmentdokument konnte nicht aktualisiert werden: " + e.message )
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
xlog( d3, 3, "Nr. " + (i+1) + "/" + resultRows[ i ].doku_id + ": Dokumentgruppe " + equidok.field[ 21 ] + " wurde nicht in der CSV-Datei gefunden.");
|
||||
}
|
||||
|
||||
xlog( d3, 4, "*************************************" );
|
||||
}
|
||||
|
||||
xlog( d3, 4, "*************************************************" );
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
xlog( d3, 4, "* Es wurden keine Dokumente zur Bearbeitung gefunden." );
|
||||
xlog( d3, 4, "*************************************" );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
def xlog( D3Interface d3, int loglevel, String logtext )
|
||||
{
|
||||
def logdatei = "d:\\d3\\logs\\" + prg + ".txt";
|
||||
def g_loglevel = 5;
|
||||
def g_logdirect = "BEIDE";
|
||||
|
||||
def date = new Date();
|
||||
def zeitstempel = date.format( "yyyy.MM.dd HH:mm:ss", TimeZone.getTimeZone('CET') );
|
||||
def loglevel_lang = "[INFO ]";
|
||||
|
||||
|
||||
|
||||
if ( loglevel <= g_loglevel )
|
||||
{
|
||||
switch ( loglevel )
|
||||
{
|
||||
case 1:
|
||||
loglevel_lang = "[FATAL]";
|
||||
if ( ( g_logdirect == "D3LOG" ) || ( g_logdirect == "BEIDE" ) )
|
||||
{
|
||||
d3.log.critical( logtext );
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
loglevel_lang = "[ERROR]";
|
||||
if ( ( g_logdirect == "D3LOG" ) || ( g_logdirect == "BEIDE" ) )
|
||||
{
|
||||
d3.log.error( logtext );
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
loglevel_lang = "[WARN ]";
|
||||
if ( ( g_logdirect == "D3LOG" ) || ( g_logdirect == "BEIDE" ) )
|
||||
{
|
||||
d3.log.warn( logtext );
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
loglevel_lang = "[INFO ]";
|
||||
if ( ( g_logdirect == "D3LOG" ) || ( g_logdirect == "BEIDE" ) )
|
||||
{
|
||||
d3.log.info( logtext );
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
loglevel_lang = "[DEBUG]";
|
||||
if ( ( g_logdirect == "D3LOG" ) || ( g_logdirect == "BEIDE" ) )
|
||||
{
|
||||
d3.log.debug( logtext );
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if ( ( g_logdirect == "DATEI" ) || ( g_logdirect == "BEIDE" ) )
|
||||
{
|
||||
new File( logdatei ).append( zeitstempel + " " + loglevel_lang + " " + logtext + "\n", "UTF8" );
|
||||
}
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user