Fuege Optima hinzu
This commit is contained in:
383
Optima/Anlegen Equiment-Aktenstrukturen/anlegen_equipm_akten.groovy
Executable file
383
Optima/Anlegen Equiment-Aktenstrukturen/anlegen_equipm_akten.groovy
Executable file
@@ -0,0 +1,383 @@
|
||||
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 = "anlegen_equipm_akten.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 = 1000000;
|
||||
|
||||
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
def debugtext;
|
||||
|
||||
switch ( debug )
|
||||
{
|
||||
case 0:
|
||||
debugtext = "ausgeschaltet";
|
||||
break;
|
||||
default:
|
||||
debugtext = "eingeschaltet (keine Aenderungen am Datenbestand)";
|
||||
break;
|
||||
}
|
||||
|
||||
def aktengruppe = ['AG101', 'AG102', 'AG103'];
|
||||
//def aktengruppe = ['Projektorganisation', 'Spezifikation', 'Technik'];
|
||||
|
||||
def ag_sortmap = [ "AG101":"50", "AG102":"60", "AG103":"70" ];
|
||||
def ua_sortmap = [ "AK029":"51", "AK007":"52", "AK008":"53", "AK016":"54", "AK003":"55", "AK024":"61", "AK012":"62", "AK013":"63", "AK028":"64", "AK006":"71", "AK018":"72", "AK015":"73", "AK001":"74", "AK020":"75", "AK023":"76", "AK019":"77" ];
|
||||
|
||||
|
||||
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, "********************************************************" );
|
||||
|
||||
def sqlQuery = "select top " + dokumente_pro_durchlauf + " doku_id, dok_dat_feld_9 from firmen_spezifisch where kue_dokuart = 'AEQUI'";
|
||||
|
||||
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;
|
||||
|
||||
|
||||
for ( i = 0; i < resultRows.size(); i++ )
|
||||
{
|
||||
xlog( d3, 4, "Nr. " + (i+1) + ": Equipmentakte Doku-ID " + resultRows[ i ].doku_id + " / E-Nr. " + resultRows[ i ].dok_dat_feld_9 );
|
||||
xlog( d3, 4, "*************************************" );
|
||||
// Lade Equipment:
|
||||
|
||||
def eq_akte = d3.archive.getDocument( resultRows[ i ].doku_id );
|
||||
|
||||
// Lege die Aktengruppe-Akten an:
|
||||
|
||||
def doku_id_eq;
|
||||
|
||||
aktengruppe.each
|
||||
{
|
||||
//xlog( d3, 3, "Nr. " + (i+1) + ": Aktengruppe. " + it );
|
||||
|
||||
// Prüfen, ob diee Aktengruppe bereits für dieses Equipment existiert
|
||||
|
||||
xlog( d3, 4, "Nr. " + (i+1) + ": pruefe: Equpmentaktegruppe | DDF16 = " + it + " | DDF9 = " + eq_akte.field[ 9 ] );
|
||||
|
||||
def STATEMENT_1 = "select doku_id from firmen_spezifisch where kue_dokuart = 'AEQE1' and dok_dat_feld_9 = '" + eq_akte.field[ 9 ] + "' and dok_dat_feld_16 = '" + it + "'";
|
||||
|
||||
xlog( d3, 5, "Nr. " + (i+1) + ": " + STATEMENT_1 );
|
||||
|
||||
def ergebnis_1 = d3.sql.executeAndGet( STATEMENT_1 );
|
||||
|
||||
if ( ergebnis_1.size() == 0 )
|
||||
{
|
||||
xlog( d3, 4, "Nr. " + (i+1) + ": Equipmentaktengruppe. " + it + " existiert nicht. Lege Aktengruppe an ..." )
|
||||
Document neue_akte = d3.archive.newDocument();
|
||||
|
||||
neue_akte.type = "AEQE1";
|
||||
neue_akte.status = Document.DocStatus.DOC_STAT_RELEASE;
|
||||
//neue_akte.editor = "d3tadm";
|
||||
|
||||
neue_akte.field[ 9 ] = eq_akte.field[ 9 ]; // Equipmentnummer
|
||||
xlog( d3, 4, "Nr. " + (i+1) + ": Equipmentnummer : " + neue_akte.field[ 9 ] );
|
||||
neue_akte.field[ 22 ] = eq_akte.field[ 22 ]; // Kundennummer
|
||||
xlog( d3, 4, "Nr. " + (i+1) + ": Kundennummer : " + neue_akte.field[ 22 ] );
|
||||
neue_akte.field[ 36 ] = eq_akte.field[ 36 ]; // Linie
|
||||
xlog( d3, 4, "Nr. " + (i+1) + ": Linie : " + neue_akte.field[ 36 ] );
|
||||
neue_akte.field[ 12 ] = eq_akte.field[ 12 ]; // Netzplan_Nr
|
||||
xlog( d3, 4, "Nr. " + (i+1) + ": Netzplan_Nr : " + neue_akte.field[ 12 ] );
|
||||
neue_akte.field[ 19 ] = eq_akte.field[ 19 ]; // Projekt-Nr
|
||||
xlog( d3, 4, "Nr. " + (i+1) + ": Projekt-Nr : " + neue_akte.field[ 19 ] );
|
||||
neue_akte.field[ 2 ] = eq_akte.field[ 2 ]; // PSP-Element
|
||||
xlog( d3, 4, "Nr. " + (i+1) + ": PSP-Element : " + neue_akte.field[ 2 ] );
|
||||
neue_akte.field[ 1 ] = eq_akte.field[ 1 ]; // SAP-Status
|
||||
xlog( d3, 4, "Nr. " + (i+1) + ": SAP-Status : " + neue_akte.field[ 1 ] );
|
||||
neue_akte.field[ 40 ] = eq_akte.field[ 40 ]; // Beschreibung
|
||||
xlog( d3, 4, "Nr. " + (i+1) + ": Beschreibung : " + neue_akte.field[ 40 ] );
|
||||
neue_akte.field[ 28 ] = eq_akte.field[ 28 ]; // Buchungskreis
|
||||
xlog( d3, 4, "Nr. " + (i+1) + ": Buchungskreis : " + neue_akte.field[ 28 ] );
|
||||
neue_akte.field[ 35 ] = eq_akte.field[ 35 ]; // Equipmenttyp
|
||||
xlog( d3, 4, "Nr. " + (i+1) + ": Equipmenttyp : " + neue_akte.field[ 35 ] );
|
||||
neue_akte.field[ 23 ] = eq_akte.field[ 23 ]; // Kunden_Name
|
||||
xlog( d3, 4, "Nr. " + (i+1) + ": Kunden_Name : " + neue_akte.field[ 23 ] );
|
||||
neue_akte.field[ 37 ] = eq_akte.field[ 37 ]; // Submission
|
||||
xlog( d3, 4, "Nr. " + (i+1) + ": Submission : " + neue_akte.field[ 37 ] );
|
||||
neue_akte.field[ 3 ] = eq_akte.field[ 3 ]; // Prozess
|
||||
xlog( d3, 4, "Nr. " + (i+1) + ": Prozess : " + neue_akte.field[ 3 ] );
|
||||
neue_akte.field[ 16 ] = it; // Aktengruppe
|
||||
xlog( d3, 4, "Nr. " + (i+1) + ": Aktengruppe : " + it );
|
||||
neue_akte.field[ 30 ] = ag_sortmap[ it ] ; // Sortierreihenfolge
|
||||
xlog( d3, 4, "Nr. " + (i+1) + ": Sortierreihenfolge : " + neue_akte.field[ 30 ] );
|
||||
|
||||
|
||||
//xlog( d3, 4, "Nr. " + (i+1) + ": Setze Mehrfachfelder Regionalorganisation und Intercompany ..." );
|
||||
|
||||
for ( int j = 1; j <= Integer.valueOf( d3.config.value( "CUR_60er_FIELD_NR" ) ); j++ )
|
||||
{
|
||||
neue_akte.field[ 68 ][ j ] = eq_akte.field[ 68 ][ j ]; // Intercompany
|
||||
neue_akte.field[ 67 ][ j ] = eq_akte.field[ 67 ][ j ]; // Regionalorganisation
|
||||
}
|
||||
|
||||
xlog( d3, 4, "Nr. " + (i+1) + ": Setze Mehrfachfelder Regionalorganisation und Intercompany => fertig." );
|
||||
|
||||
allesgut = true;
|
||||
|
||||
try
|
||||
{
|
||||
if ( debug == 0 )
|
||||
{
|
||||
neue_akte = d3.archive.importDocument( neue_akte );
|
||||
xlog( d3, 4, "Nr. " + (i+1) + ": Aktengruppe. " + it + " angelegt mit Doku-ID " + neue_akte.id() );
|
||||
doku_id_eq = neue_akte.id();
|
||||
}
|
||||
else
|
||||
{
|
||||
xlog( d3, 3, "Nr. " + (i+1) + ": keine Aktenanlage, da DEBUG-Modus eingeschaltet. " );
|
||||
}
|
||||
}
|
||||
catch ( D3Exception e )
|
||||
{
|
||||
xlog( d3, 2, "Nr. " + (i+1) + ": Akte konnte nicht angelegt werden: " + e.message )
|
||||
allesgut = false;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
xlog( d3, 3, "Nr. " + (i+1) + ": Aktengruppe " + it + " existiert mit Doku-ID " + ergebnis_1[ 0 ].doku_id + ". Keine Aktion erforderlich." )
|
||||
doku_id_eq = ergebnis_1[ 0 ].doku_id;
|
||||
}
|
||||
|
||||
if ( allesgut )
|
||||
{
|
||||
|
||||
xlog( d3, 4, "Nr. " + (i+1) + ": Doku_id Equipmentaktengruppe: " + doku_id_eq );
|
||||
xlog( d3, 4, "*************************************" );
|
||||
// Lege nun die Unterakten an:
|
||||
|
||||
// Feststellen, welche Unterakten angelegt werden müssen:
|
||||
def STATEMENT_2 = "select dok_dat_feld_26 from firmen_spezifisch where kue_dokuart = 'aafol' and dok_dat_feld_45 = 'DEQUI' and dok_dat_feld_48 = '" + it + "' ";
|
||||
|
||||
def ergebnis_2 = d3.sql.executeAndGet( STATEMENT_2 );
|
||||
|
||||
if ( ergebnis_2.size() > 0 )
|
||||
{
|
||||
for ( int m = 0; m < ergebnis_2.size(); m++ )
|
||||
{
|
||||
xlog( d3, 4, "Nr. " + (i+1) + ": pruefe: Equpmentunterakte | DDF16 = " + it + " | DDF9 = " + eq_akte.field[ 9 ] + " | DDF48 = " + ergebnis_2[ m ].dok_dat_feld_26 );
|
||||
|
||||
// Feststellen, ob die Unterakte bereits existiert
|
||||
|
||||
def STATEMENT_3 = " select doku_id from firmen_spezifisch where kue_dokuart = 'AEQE2' and dok_dat_feld_16 = '" + it + "' and dok_dat_feld_9 = '" + eq_akte.field[ 9 ] + "' and dok_dat_feld_48 = '" + ergebnis_2[ m ].dok_dat_feld_26 + "'";
|
||||
xlog( d3, 5, "Nr. " + (i+1) + ": Statement zum Test ob Unterakte existiert: " + STATEMENT_3 );
|
||||
|
||||
def ergebnis_3 = d3.sql.executeAndGet( STATEMENT_3 );
|
||||
|
||||
if ( ergebnis_3.size() == 0 )
|
||||
{
|
||||
xlog( d3, 4, "Nr. " + (i+1) + ": Equipmentunterakte " + it + " / " + ergebnis_2[ m ].dok_dat_feld_26 + " existiert nicht. Lege Equipmentunterakte an ..." )
|
||||
Document eua = d3.archive.newDocument();
|
||||
|
||||
eua.type = "AEQE2";
|
||||
//eua.status = Document.DocStatus.DOC_STAT_PROCESSING;
|
||||
eua.status = Document.DocStatus.DOC_STAT_RELEASE;
|
||||
//eua.editor = "d3tadm";
|
||||
|
||||
eua.field[ 9 ] = eq_akte.field[ 9 ]; // Equipmentnummer
|
||||
xlog( d3, 4, "Nr. " + (i+1) + ": Equipmentnummer : " + eq_akte.field[ 9 ] );
|
||||
eua.field[ 16 ] = it; // Aktengruppe
|
||||
xlog( d3, 4, "Nr. " + (i+1) + ": Aktengruppe : " + it );
|
||||
eua.field[ 48 ] = ergebnis_2[ m ].dok_dat_feld_26; // Akte
|
||||
xlog( d3, 4, "Nr. " + (i+1) + ": Akte : " + ergebnis_2[ m ].dok_dat_feld_26 );
|
||||
eua.field[ 30 ] = ua_sortmap[ ergebnis_2[ m ].dok_dat_feld_26 ] ; // Sortierreihenfolge
|
||||
xlog( d3, 4, "Nr. " + (i+1) + ": Sortierreihenfolge: " + eua.field[ 30 ] );
|
||||
|
||||
|
||||
try
|
||||
{
|
||||
if ( debug == 0 )
|
||||
{
|
||||
eua = d3.archive.importDocument( eua );
|
||||
xlog( d3, 4, "Nr. " + (i+1) + ": Equipmentunterakte " + eua.field[ 16 ] + " / Akte " + eua.field[ 48 ] + " angelegt mit Doku-ID " + eua.id() );
|
||||
}
|
||||
else
|
||||
{
|
||||
xlog( d3, 3, "Nr. " + (i+1) + ": keine Aktenanlage, da DEBUG-Modus eingeschaltet. " );
|
||||
}
|
||||
}
|
||||
catch ( D3Exception e )
|
||||
{
|
||||
xlog( d3, 2, "Nr. " + (i+1) + ": Equipmentunterakte konnte nicht angelegt werden: " + e.message )
|
||||
}
|
||||
|
||||
xlog( d3, 4, "***************************" );
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
xlog( d3, 3, "Nr. " + (i+1) + ": Kombination existiert bereits mit Doku-ID " + ergebnis_3[ 0 ].doku_id );
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
xlog( d3, 2, "Nr. " + (i+1) + ": keine Unterakten fuer " + it + " gefunden." );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
xlog( d3, 4, "*************************************" );
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
xlog( d3, 4, "*************************************************" );
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
def xlog( D3Interface d3, int loglevel, String logtext )
|
||||
{
|
||||
def logdatei = "d:\\d3\\logs\\" + prg + ".txt";
|
||||
def g_loglevel = 4;
|
||||
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