99 lines
3.0 KiB
Perl
99 lines
3.0 KiB
Perl
#!/usr/bin/perl -w
|
|
use strict;
|
|
use warnings;
|
|
|
|
use Modern::Perl;
|
|
use PRV::Common;
|
|
|
|
use DBI;
|
|
# use Data::Printer;
|
|
# use JSON;
|
|
use File::Slurp qw(:std);
|
|
|
|
my $station = 2049;
|
|
my $pid = 7781;
|
|
|
|
my $db = "prod"; # Datenbankparameter
|
|
my $user = "root"; # Datenbankuser
|
|
my $pass = "jagger"; # Datenbankpasswort
|
|
|
|
|
|
my $server = "zeus"; # Datenbankserver
|
|
# my $server = "ares"; # Datenbankserver
|
|
my $cmn = PRV::Common->new(prvws => 'http://prv-ws:1111', secret => 'sbyET-gq');
|
|
# my $cmn = PRV::Common->new(prvws => 'http://arthur:1111', secret => 'SehrGeheim');
|
|
|
|
my $dbh = DBI->connect("DBI:mysql:$db:$server", $user, $pass)
|
|
#my $dbh = DBI->connect('DBI:mysql:prod:ares', 'root', 'jagger')
|
|
or die "Couldn't connect to database: " . DBI->errstr;
|
|
|
|
my $Verzeichnis = "ssg_boundaryscan";
|
|
|
|
opendir(DIR, $Verzeichnis) or die $!;
|
|
my @files = readdir(DIR);
|
|
closedir(DIR) or die $!;
|
|
|
|
for my $datei (@files) {
|
|
# 000042276477.CAP
|
|
next if ( $datei =~ /^\./ ); # raus wenn keine Datei;
|
|
|
|
my $txt = read_file($Verzeichnis ."/".$datei);
|
|
my $start;
|
|
my $phid;
|
|
my $result = 0;
|
|
my $wid = $datei =~ s/\.CAP//r;
|
|
my $phidcheck; # je nachdem welches Protokoll wird entschieden welcher vorherriege Arbeitsgang gut sein muss
|
|
$wid *= 1; # WID zu Zahl
|
|
|
|
# Protokoll zerstückeln
|
|
my @l = split ( /=============================================================================/, $txt ) ;
|
|
chomp(@l);
|
|
|
|
# Phasenid zuordnung aus dem Header und Visproabhängigkeit
|
|
if ( $l[0] =~ /All_BH/ ) {
|
|
$phid = 68;
|
|
$phidcheck = 220;
|
|
} elsif ( $l[0] =~ /All_FE/ ) {
|
|
$phid = 21;
|
|
$phidcheck = 4;
|
|
} else {
|
|
print "Error --- $datei --- kein ALL_FE|BH\n";
|
|
next;
|
|
}
|
|
|
|
# Status aus Footer
|
|
if ( $l[2] =~ /P A S S/ ) {
|
|
$result = 1;
|
|
} elsif ( $l[2] =~ /F A I L/ ) {
|
|
$result = 0;
|
|
}
|
|
|
|
# Datum für SQL vorbereiten
|
|
$l[0] =~ m/(..\...\..... ..:..:..)/;
|
|
my @spl1 = split (/ / , $1 ); # deutsches Datum und Uhrzeit teilen
|
|
my @spl2 = split (/\./ , $spl1[0] ); # Uhrzeit teilen
|
|
my $date = $spl2[2].'-'.$spl2[1].'-'.$spl2[0]; # SQL Datum zusammensetzen
|
|
$start = "$date $spl1[1]"; # SQL Datum und Zeit zusammensetzen
|
|
|
|
# letzten richtigen Checkpoint pruefen
|
|
my $lchkpnt = $cmn->get_last_chkpnt($wid, $phidcheck);
|
|
|
|
# Checkpoint schreiben
|
|
if ( defined $lchkpnt->{result} && $lchkpnt->{result} == 1 ) {
|
|
# print "$wid --- $start --- $phid --- $result\n";
|
|
my $cpid = $cmn->write_checkpoint($wid, $phid, $station, $result, undef, $txt); # $cpid ($wid, $phid, $station, $result, $xnote, $xtxt, $mkz)
|
|
if ( $cpid ) {
|
|
# Zeitstempel aktuallisieren
|
|
$dbh->do("UPDATE prv_chkpnt set chktime = ? where cpid = ?", undef, $start, $cpid );
|
|
print "GOOD --- $wid --- $start --- $phid --- $result\n";
|
|
} else {
|
|
print "BAD --- $wid --- $start --- $phid --- $result\n";
|
|
}
|
|
} else {
|
|
print "BAD last --- $wid --- $start --- $phid --- $result\n";
|
|
}
|
|
}
|
|
|
|
$dbh->disconnect;
|
|
|
|
1; |