Changes for Preorder:

- Added OAID to Hausnummer and Wohneinheit
- Added format parameter to /addressdb/findAddress
- Added additional fields to /addressdb/findAddress
- Updated api doc yaml
- Updated addressdb import scripts for Liezen
This commit is contained in:
Frank Schubert
2022-12-06 22:47:58 +01:00
parent d65e2c5f88
commit 5dbf05d55f
10 changed files with 8218 additions and 63 deletions

View File

@@ -19,7 +19,7 @@ $freigabe_default = json_encode(["order", "reorder"]);
$me = new User(1);
$folder = __DIR__."/import/";
$csvname = "Adressendatensatz_Draft01_20221118_UTF8.csv";
$csvname = "Adressendatensatz_BP2023_20221201.csv";
$filename = $folder.$csvname;
$db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
@@ -29,20 +29,20 @@ $input = fopen($filename, "r");
$h_extrefs = [];
$i = 0;
$l = 0;
$c = 0;
$u = 0;
$w = 0;
while($csv = fgetcsv($input, 0, ";")) {
$i++;
if($i == 1) continue;
$l++;
if($l == 1) continue;
$hausnummer = false;
if(!trim($csv[0])) {
continue;
}
$adrcd = trim($csv[0]);
$gem_kz = trim($csv[2]);
$gem_name = trim($csv[3]);
@@ -62,18 +62,28 @@ while($csv = fgetcsv($input, 0, ";")) {
//$long = str_replace(",",".",trim($csv[8]));
$rollout_time = trim($csv[12]);
$grundstueck_name = trim($csv[14]);
if(!$grundstueck_name) $grundstueck_name = null;
$unit_count = trim($csv[15]);
if(!$unit_count) $unit_count = 1;
$netzgebiet_extref = trim($csv[11]);
if(!$netzgebiet_extref) continue;
// get code and name
$netzgebiet_name_parts = explode(", ",$netzgebiet_extref);
if(count($netzgebiet_name_parts) < 2) {
die("Netzgebiet Code und Subname können nicht extrahiert werden.\n");
}
if($netzgebiet_extref == "Subcluster-Ardning") {
$netzgebiet_code = "Subcluster-Ardning";
$netzgebiet_subname = "Subcluster-Ardning";
} else {
// get code and name
$netzgebiet_name_parts = explode(", ",$netzgebiet_extref);
if(count($netzgebiet_name_parts) < 2) {
die("Netzgebiet Code und Subname können nicht extrahiert werden.\n");
}
$netzgebiet_code = $netzgebiet_name_parts[0];
$netzgebiet_subname = $netzgebiet_name_parts[1];
$netzgebiet_code = $netzgebiet_name_parts[0];
$netzgebiet_subname = $netzgebiet_name_parts[1];
}
// find netzgebiet
$netzgebiet = new ADBNetzgebiet();
@@ -92,6 +102,7 @@ while($csv = fgetcsv($input, 0, ";")) {
die("Error creating Netzgebiet!\n");
}
}
//var_dump($netzgebiet);exit;
$nutzung = trim($csv[10]);
@@ -124,7 +135,7 @@ while($csv = fgetcsv($input, 0, ";")) {
// check for GemeindeNetzgebiet
checkGemeindeNetzgebiet($gemeinde, $netzgebiet);
continue;
//continue;
$strasse = ADBStrasseModel::getFirst(['kennziffer' => $skz]);
if(!$strasse) {
die("Strasse ($skz, $strasse_name) nicht in addressdb gefunden\n");
@@ -161,18 +172,17 @@ while($csv = fgetcsv($input, 0, ";")) {
$freigabe = $freigabe_default;
} elseif($rollout_time == "2024/2025") {
$rollout = null;
$rollout_info = "Bauprogramm 2024/2025";
$rollout_info = "2024/2025";
$freigabe = json_encode(['reorder']);
} else {
$rollout = null;
$rollout_info = $rollout_time;
$rollout_info = "unscheduled";
$freigabe = json_encode([]);
}
//$hausnummer = ADBHausnummerModel::getFirst(['gemeind_id' => $gemeinde->id, 'strasse_id' => $strasse->id, 'hausnummer' => $hausnummer_string]);
$hausnummer = ADBHausnummerModel::getFirst(['adrcd' => $adrcd]);
if(!$hausnummer) {
$hausnummer_data = [
'adrcd' => $adrcd,
'netzgebiet_id' => $netzgebiet->id,
@@ -181,32 +191,93 @@ while($csv = fgetcsv($input, 0, ";")) {
'plz_id' => $plz->id,
'strasse_id' => $strasse->id,
'hausnummer' => $hausnummer_string,
'grund_nr' => $grundstueck_name,
'rollout' => $rollout,
'rollout_info' => $rollout_info,
'freigabe' => $freigabe
];
$hausnummer = ADBHausnummerModel::create($hausnummer_data);
var_dump($hausnummer);exit;
if(!$hausnummer->save()) {
var_dump($hausnummer_data);
die("Konnte Hausnummer nicht anlegen\n");
}
if(!$hausnummer->oaid) {
$hausnummer->oaid = $hausnummer->getNewOAID();
if(!$hausnummer->oaid) {
die("Error generating OAID for hausnummer ".$hausnummer->id);
}
$hausnummer->save();
}
$c++;
} else {
$hausnummer->netzgebiet_id = $netzgebiet->id;
$hausnummer->extref = $adrcd;
$hausnummer->grund_nr = $grundstueck_name;
$hausnummer->rollout = $rollout;
$hausnummer->rollout_info = $rollout_info;
$hausnummer->freigabe = $freigabe;
if(!$hausnummer->oaid) {
$hausnummer->oaid = $hausnummer->getNewOAID();
if(!$hausnummer->oaid) {
die("Error generating OAID for hausnummer ".$hausnummer->id);
}
}
if(!$hausnummer->save()) {
var_dump($hausnummer);
die("Konnte Hausnummer nicht speichern\n");
}
$u++;
}
// get count of ccurnt wohneinheiten
$existing_units_count = ADBWohneinheitModel::count(['hausnummer_id' => $hausnummer->id]);
$new_units_count = $unit_count - $existing_units_count;
$last_unit_num = 0;
//if($new_units_count) {
foreach(ADBWohneinheitModel::search(['hausnummer_id' => $hausnummer->id]) as $tmp_unit) {
if(!$tmp_unit->oaid) {
// generate missing oaid
$tmp_unit->oaid = $tmp_unit->getNewOAID();
if(!$tmp_unit->oaid) {
die("Error generating OAID for wohneinheit ".$tmp_unit->id);
}
$tmp_unit->save();
}
if($tmp_unit->num > $last_unit_num) {
$last_unit_num = $tmp_unit->num;
}
}
//}
// create wohneinheiten
for($i = 1; $i <= $new_units_count; $i++) {
$num = $last_unit_num + $i;
//echo "$existing_units_count create wohneinheit $num\n";
$unit_data = [
'hausnummer_id' => $hausnummer->id,
'num' => $num,
];
$wohneinheit = ADBWohneinheitModel::create($unit_data);
$wohneinheit_id = $wohneinheit->save();
if(!$wohneinheit_id) {
die("Cannot save Wohneinheit\n");
}
$wohneinheit->oaid = $wohneinheit->getNewOAID();
if(!$wohneinheit->oaid) {
die("Error generating OAID for wohneinheit ".$wohneinheit->id);
}
$wohneinheit->save();
$w++;
}
}
echo "$i lines processed, $c created, $u updated\n";
echo "$l lines processed, $c created, $u updated\n";
echo "$w Wohneinheiten erstellt\n";
function checkGemeindeNetzgebiet($gemeinde, $netzgebiet) {

File diff suppressed because it is too large Load Diff