Changes for ADBOrtschaft in preorder api

This commit is contained in:
Frank Schubert
2022-11-15 13:07:20 +01:00
parent 2d698160c0
commit 95707ab92a
5 changed files with 84 additions and 81 deletions
@@ -22,8 +22,6 @@ $folder = BASEDIR."/scripts/addressdb/import/bev";
$db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
$log = mfLoghandler::singleton();
$db->query("SET autocommit=0");
/*
* Import Gemeinden
*/
@@ -31,6 +29,7 @@ $db->query("SET autocommit=0");
$filename = "$folder/GEMEINDE.csv";
$input = fopen($filename, "r");
$db->query("SET autocommit=0");
$i = 0;
while($csv = fgetcsv($input, 0, ";")) {
$i++;
@@ -59,7 +58,7 @@ while($csv = fgetcsv($input, 0, ";")) {
}
}
$db->query("COMMIT");
echo ($i-1)." Gemeinden importiert\n";
/*
@@ -69,6 +68,7 @@ echo ($i-1)." Gemeinden importiert\n";
$filename = "$folder/ORTSCHAFT.csv";
$input = fopen($filename, "r");
$db->query("SET autocommit=0");
$i = 0;
while($csv = fgetcsv($input, 0, ";")) {
$i++;
@@ -101,7 +101,7 @@ while($csv = fgetcsv($input, 0, ";")) {
}
}
$db->query("COMMIT");
echo ($i-1)." Ortschaften importiert\n";
/*
@@ -111,6 +111,7 @@ echo ($i-1)." Ortschaften importiert\n";
$filename = "$folder/STRASSE.csv";
$input = fopen($filename, "r");
$db->query("SET autocommit=0");
$i = 0;
while($csv = fgetcsv($input, 0, ";")) {
$i++;
@@ -226,13 +227,15 @@ while($csv = fgetcsv($input, 0, ";")) {
}
}
$db->query("COMMIT");
echo "\n".($i-1)." Straßen importiert\n";
$filename = "$folder/ADRESSE.csv";
$input = fopen($filename, "r");
$db->query("SET autocommit=0");
$current_skz = false;
$current_gkz = false;
$sdata = [];
@@ -260,7 +263,7 @@ while($csv = fgetcsv($input, 0, ";")) {
$okz = trim($csv[2]);
$plz_string = trim($csv[3]);
$skz = trim($csv[4]);
$hnz1 = trim($csv[7]);
$hnb1 = trim($csv[8]);
$hnv = trim($csv[9]);
@@ -282,18 +285,16 @@ while($csv = fgetcsv($input, 0, ";")) {
"skz" => $skz,
"hausnummer" => $hausnummer_string
];
continue;
}
if($current_skz) {
//var_dump($sdata);exit;
$gemeinde = getGemeinde($current_gkz);
if(!$gemeinde) {
die("Kann Adresse nicht importieren: Gemeinde nicht gefunden ($gkz)\n");
}
$strasse = getStrasse($current_skz);
if(!$strasse) {
die("Kann Adresse nicht importieren: Strasse nicht gefunden ($okz)\n");
@@ -301,11 +302,10 @@ while($csv = fgetcsv($input, 0, ";")) {
// do database work for all sdata
$hausnummern_filter = [];
foreach($sdata as $s) {
$plz = getPlz($s["plz"], $gemeinde->id);
if(!$plz) {
//echo "Creating PLZ ".$s["plz"]."\n";
$plz = ADBPlzModel::create([
"gemeinde_id" => $gemeinde->id,
"plz" => $s["plz"],
@@ -325,8 +325,11 @@ while($csv = fgetcsv($input, 0, ";")) {
foreach($sdata as $shausnummer => $s) {
$found = false;
$ort = getOrtschaft($s['okz']);
if(!$ort->id) die("Ortschaft nicht gefunden ".$s['okz']);
foreach($hausnummern as $h) {
if($h->hausnummer == $shausnummer) {
if($h->hausnummer == $shausnummer && $h->ortschaft_id = $ort->id) {
//exists already
$found = true;
@@ -344,6 +347,9 @@ while($csv = fgetcsv($input, 0, ";")) {
$new_hausnummern[$shausnummer] = $s;
}
}
$new_hausnummern = $sdata;
if(count($new_hausnummern)) {
$insert = "INSERT INTO `Hausnummer` (`netzgebiet_id`, `adrcd`, `ortschaft_id`, `plz_id`, `strasse_id`, `hausnummer`, `create`, `edit`) VALUES ";
@@ -351,7 +357,7 @@ while($csv = fgetcsv($input, 0, ";")) {
//var_dump($h_string, $s);exit;
//$h_string = $h->hausnummer;
//$s = $sdata[$h_string];
$adrcd = $s["adrcd"];
$acode = $s["adrcd"];
$strasse_id = $strasse->id;
$plz = getPlz($s['plz'],$gemeinde->id);
if(!$plz) {
@@ -364,7 +370,7 @@ while($csv = fgetcsv($input, 0, ";")) {
}
$ortschaft_id = $ortschaft->id;
// add to INSERT statement
$insert .= "(0, '$adrcd', $ortschaft_id, $plz_id, $strasse_id,'$h_string', UNIX_TIMESTAMP(), UNIX_TIMESTAMP()),";
$insert .= "(0, '$acode', $ortschaft_id, $plz_id, $strasse_id,'$h_string', UNIX_TIMESTAMP(), UNIX_TIMESTAMP()),";
}
$insert = preg_replace('/,$/', "", $insert);
@@ -373,44 +379,7 @@ while($csv = fgetcsv($input, 0, ";")) {
}
/*
$hausnummer = ADBHausnummerModel::getFirst([
'ortschaft_id' => $ortschaft->id,
//'plz_id' => $plz->id,
'strasse_id' => $strasse->id,
'hausnummer' => $hausnummer_string
]);
if($hausnummer) {
// update plz if necessary
//var_dump($hausnummer->plz);exit;
if($hausnummer->plz->plz != $plz->plz ) {
echo "Updating PLZ from ".$hausnummer->plz->plz." to ".$plz->plz."\n";
$hausnummer->plz_id = $plz->id;
$hausnummer->save();
}
} else {
// create new Hausnummer
$hausnummer = ADBHausnummerModel::create([
"netzgebiet_id" => 0,
"ortschaft_id" => $ortschaft->id,
"plz_id" => $plz->id,
"strasse_id" => $strasse->id,
"hausnummer" => $hausnummer_string
]);
if(!$hausnummer->save()) {
die("Error creating Hausnummer: ".print_r($hausnummer, true));
}
}
*/
}
$current_skz = $skz;
@@ -502,14 +471,14 @@ function getStrasse($kz) {
function getPlz($plz_search, $gemeinde_id) {
global $plz_cache;
if(array_key_exists("$plz_search.$gemeinde_id", $plz_cache)) {
return $plz_cache["$plz_search.$gemeinde_id"];
if(array_key_exists("$plz_search-$gemeinde_id", $plz_cache)) {
return $plz_cache["$plz_search-$gemeinde_id"];
}
$plz = ADBPlzModel::getFirst(['plz' => $plz_search, "gemeinde_id" => $gemeinde_id]);
if(!$plz) {
return false;
}
$plz_cache[$plz_search] = $plz;
$plz_cache["$plz_search-$gemeinde_id"] = $plz;
return $plz;
}
}