Added script for ADB import liezen 2023-03-02
This commit is contained in:
@@ -20,7 +20,7 @@ ob_start();
|
||||
<td>{{POPNAME}}</td>
|
||||
</tr><tr>
|
||||
<th>GPS:</th>
|
||||
<td><a href="https://maps.google.com/maps?t=k&q=loc:{{GPS}}">{{GPS}}</a></td>
|
||||
<td><a href="https://maps.google.com/maps?t=k&q=loc:{{GPS}}" target="_blank">{{GPS}}</a></td>
|
||||
</tr><tr>
|
||||
<th>Kontakt:</th>
|
||||
<td>{{CONTACT}}</td>
|
||||
|
||||
@@ -11,6 +11,10 @@ class ADBHausnummerModel {
|
||||
public $hausnummer;
|
||||
public $zusatz;
|
||||
public $grund_nr;
|
||||
public $gdaeigenschaft;
|
||||
public $rw;
|
||||
public $hw;
|
||||
public $meridian;
|
||||
public $unit_count;
|
||||
public $gps_lat;
|
||||
public $gps_long;
|
||||
|
||||
@@ -0,0 +1,329 @@
|
||||
#!/usr/bin/php
|
||||
<?php
|
||||
|
||||
//require 'vendor/autoload.php';
|
||||
require("../../../config/config.php");
|
||||
|
||||
define('FRONKDB_SQLDEBUG',false);
|
||||
error_reporting(E_ALL & ~(E_NOTICE | E_STRICT | E_DEPRECATED));
|
||||
|
||||
require_once(LIBDIR."/mvcfronk/mfRouter/mfRouter.php");
|
||||
require_once(LIBDIR."/mvcfronk/mfBase/mfBaseModel.php");
|
||||
require_once(LIBDIR."/mvcfronk/mfBase/mfBaseController.php");
|
||||
|
||||
|
||||
$netzgebiet_name_main = "Liezen";
|
||||
$freigabe_default = json_encode(["order", "reorder"]);
|
||||
|
||||
|
||||
$me = new User(1);
|
||||
|
||||
$folder = __DIR__."/import/";
|
||||
$csvname = "Adressendatensatz_Update-RMLI_2023-03-02.csv";
|
||||
$filename = $folder.$csvname;
|
||||
|
||||
$db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
|
||||
$log = mfLoghandler::singleton();
|
||||
|
||||
$input = fopen($filename, "r");
|
||||
|
||||
$h_extrefs = [];
|
||||
|
||||
$l = 0;
|
||||
$u = 0;
|
||||
while($csv = fgetcsv($input, 0, ",")) {
|
||||
$l++;
|
||||
if($l == 1) continue;
|
||||
|
||||
$hausnummer = false;
|
||||
|
||||
if(!trim($csv[0])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$hausnummer_id = trim($csv[0]);
|
||||
$hausnummer_extref = trim($csv[1]);
|
||||
$adrcd = trim($csv[2]);
|
||||
$oaid = trim($csv[3]);
|
||||
$netzgebiet_extref = trim($csv[4]);
|
||||
$netzgebiet_name = trim($csv[5]);
|
||||
$gkz = trim($csv[6]);
|
||||
$gem_name = trim($csv[7]);
|
||||
$okz = trim($csv[8]);
|
||||
$ort_name = trim($csv[9]);
|
||||
$plz_string = trim($csv[10]);
|
||||
$skz = trim($csv[11]);
|
||||
$strasse_name = trim($csv[12]);
|
||||
$hausnummer_string = trim($csv[13]);
|
||||
$grund_nr = trim($csv[14]);
|
||||
//gps_long, gps_lat
|
||||
$rollout_time = trim($csv[17]);
|
||||
$rollout_info = trim($csv[18]);
|
||||
//$freigabe = trim($csv[19])
|
||||
$unit_count = trim($csv[20]);
|
||||
|
||||
$gdaeigenschaft = trim($csv[21]);
|
||||
$meridian = trim($csv[22]);
|
||||
$rw = trim($csv[23]);
|
||||
$hw = trim($csv[24]);
|
||||
|
||||
/*
|
||||
$adrcd = trim($csv[0]);
|
||||
$gem_kz = trim($csv[2]);
|
||||
$gem_name = trim($csv[3]);
|
||||
$ort_kz = trim($csv[5]);
|
||||
$plz_string = trim($csv[4]);
|
||||
$ort_name = trim($csv[6]);
|
||||
$skz = trim($csv[7]);
|
||||
$strasse_name = trim($csv[8]);
|
||||
$hausnummer_string = trim($csv[9]);
|
||||
$hausnummer_extref = trim($csv[0]);
|
||||
if(in_array($hausnummer_extref, $h_extrefs)) {
|
||||
die("Hausnummer extref doppelt! $hausnummer_extref\n");
|
||||
}
|
||||
$h_extrefs[] = $hausnummer_extref;
|
||||
*/
|
||||
//$lat = str_replace(",",".",trim($csv[7]));
|
||||
//$long = str_replace(",",".",trim($csv[8]));
|
||||
|
||||
|
||||
if(!is_numeric($adrcd) || !is_numeric($hausnummer_id)) {
|
||||
die("Invalid adrcd or hausnummer_id\n");
|
||||
}
|
||||
|
||||
if(!strlen($hausnummer_string) || !strlen($strasse_name)) {
|
||||
die("!! Hausnummer oder Strasse leer (adrcd $adrcd)\n");
|
||||
}
|
||||
|
||||
if(!$gem_name || !$plz_string || !$ort_name || !$strasse_name) {
|
||||
die("!! Konnte Adresse nicht parsen\n");
|
||||
}
|
||||
|
||||
if(!$hausnummer_extref) {
|
||||
die("!!! Keine Hausnummer Extref\n");
|
||||
}
|
||||
|
||||
if(!$netzgebiet_extref) {
|
||||
die("!!! Keine Netzgebiet Extref\n");
|
||||
}
|
||||
|
||||
|
||||
|
||||
$existing_hausnummer = new ADBHausnummer($hausnummer_id);
|
||||
if(!$existing_hausnummer->id) {
|
||||
echo "$hausnummer_id not found\n";
|
||||
continue;
|
||||
}
|
||||
|
||||
//continue;
|
||||
|
||||
$updates = [];
|
||||
if($existing_hausnummer->netzgebiet->extref != $netzgebiet_extref) {
|
||||
echo "$hausnummer_id: netzgebiet '".$existing_hausnummer->netzgebiet->name."' => '$netzgebiet_name'\n";
|
||||
$updates[] = "netzgebiet";
|
||||
}
|
||||
if($existing_hausnummer->strasse->name != $strasse_name) {
|
||||
echo "$hausnummer_id: strasse '".$existing_hausnummer->strasse->name."' => '$strasse_name'\n";
|
||||
$updates[] = "strasse";
|
||||
}
|
||||
if($existing_hausnummer->strasse->gemeinde->name != $gem_name) {
|
||||
echo "$hausnummer_id: gemeinde '".$existing_hausnummer->strasse->gemeinde->name."' => '$gem_name'\n";
|
||||
$updates[] = "gemeinde";
|
||||
}
|
||||
if($existing_hausnummer->hausnummer != $hausnummer_string) {
|
||||
echo "$hausnummer_id: hausnummer '".$existing_hausnummer->hausnummer."' => '$hausnummer_string'\n";
|
||||
$updates[] = "hausnummer";
|
||||
}
|
||||
if($existing_hausnummer->ortschaft->name != $ort_name) {
|
||||
echo "$hausnummer_id: ortschaft '".$existing_hausnummer->ortschaft->name."' => '$ort_name'\n";
|
||||
$updates[] = "ortschaft";
|
||||
}
|
||||
if($existing_hausnummer->plz->plz != $plz_string) {
|
||||
echo "$hausnummer_id: plz '".$existing_hausnummer->plz->plz."' => '$plz_string'\n";
|
||||
$updates[] = "plz";
|
||||
}
|
||||
if($existing_hausnummer->rollout != $rollout_time) {
|
||||
echo "$hausnummer_id: rollout '".$existing_hausnummer->rollout."' => '$rollout_time'\n";
|
||||
$updates[] = "rollout";
|
||||
}
|
||||
if($existing_hausnummer->rollout_info != $rollout_info) {
|
||||
echo "$hausnummer_id: rollout_info '".$existing_hausnummer->rollout_info."' => '$rollout_info'\n";
|
||||
$updates[] = "rollout_info";
|
||||
}
|
||||
if($existing_hausnummer->unit_count != $unit_count) {
|
||||
echo "$hausnummer_id: unit_count '".$existing_hausnummer->unit_count."' => '$unit_count'\n";
|
||||
$updates[] = "unit_count";
|
||||
}
|
||||
if($existing_hausnummer->gdaeigenschaft != $gdaeigenschaft) {
|
||||
echo "$hausnummer_id: gdaeigenschaft '".$existing_hausnummer->gdaeigenschaft."' => '$gdaeigenschaft'\n";
|
||||
$updates[] = "gdaeigenschaft";
|
||||
}
|
||||
if($existing_hausnummer->meridian != $meridian) {
|
||||
echo "$hausnummer_id: meridian '".$existing_hausnummer->meridian."' => '$meridian'\n";
|
||||
$updates[] = "meridian";
|
||||
}
|
||||
if($existing_hausnummer->rw != $rw) {
|
||||
echo "$hausnummer_id: rw '".$existing_hausnummer->rw."' => '$rw'\n";
|
||||
$updates[] = "rw";
|
||||
}
|
||||
if($existing_hausnummer->hw != $hw) {
|
||||
echo "$hausnummer_id: hw '".$existing_hausnummer->hw."' => '$hw'\n";
|
||||
$updates[] = "hw";
|
||||
}
|
||||
|
||||
//continue;
|
||||
|
||||
if(!count($updates)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if(in_array("netzgebiet", $updates)) {
|
||||
$netzgebiet = ADBNetzgebietModel::getFirst(['extref' => $netzgebiet_extref]);
|
||||
if(!$netzgebiet) {
|
||||
die("$hausnummer_id: Netzgebiet ($netzgebiet_extref: $netzgebiet_name) nicht gefunden\n");
|
||||
}
|
||||
$existing_hausnummer->netzgebiet_id = $netzgebiet->id;
|
||||
echo "$hausnummer_id: Updating Netzgebiet to ".$netzgebiet->id."\n";
|
||||
//$existing_hausnummer->save();
|
||||
}
|
||||
|
||||
if(in_array("gdaeigenschaft", $updates)) {
|
||||
$existing_hausnummer->gdaeigenschaft = $gdaeigenschaft;
|
||||
}
|
||||
|
||||
if(in_array("meridian", $updates)) {
|
||||
$existing_hausnummer->meridian = $meridian;
|
||||
}
|
||||
|
||||
if(in_array("rw", $updates)) {
|
||||
if(is_numeric($rw)) {
|
||||
$existing_hausnummer->rw = $rw;
|
||||
}
|
||||
}
|
||||
|
||||
if(in_array("hw", $updates)) {
|
||||
if(is_numeric($hw)) {
|
||||
$existing_hausnummer->hw = $hw;
|
||||
}
|
||||
}
|
||||
|
||||
if(in_array("rollout", $updates) || in_array("rollout_info", $updates)) {
|
||||
$new_rollout = false;
|
||||
$new_rollout_info = false;
|
||||
$freigabe = $freigabe_default;
|
||||
|
||||
if(is_numeric($rollout_time)) {
|
||||
$new_rollout = $rollout_time;
|
||||
$new_rollout_info = null;
|
||||
$freigabe = $freigabe_default;
|
||||
} elseif($rollout_time == "2024/2025") {
|
||||
$new_rollout = null;
|
||||
$new_rollout_info = "2024/2025";
|
||||
$freigabe = json_encode(['reorder']);
|
||||
} elseif($rollout_info == "2099") {
|
||||
$new_rollout = null;
|
||||
$new_rollout_info = "2099";
|
||||
$freigabe = json_encode(['reorder']);
|
||||
} else {
|
||||
$new_rollout = null;
|
||||
$new_rollout_info = "unscheduled";
|
||||
$freigabe = json_encode([]);
|
||||
}
|
||||
|
||||
$existing_hausnummer->rollout = $new_rollout;
|
||||
$existing_hausnummer->rollout_info = $new_rollout_info;
|
||||
$existing_hausnummer->freigabe = $freigabe;
|
||||
|
||||
echo "$hausnummer_id: updating rollout/info/freigabe to $new_rollout / $new_rollout_info / $freigabe\n";
|
||||
//$existing_hausnummer->save();
|
||||
}
|
||||
|
||||
$preorder = PreorderModel::getFirst(["adb_hausnummer_id" => $existing_hausnummer->id]);
|
||||
if($preorder) {
|
||||
echo "========================================================================\n";
|
||||
echo "========================================================================\n";
|
||||
echo "=============== [Hausnummer id: ".$existing_hausnummer->id."] Existing Preorder!! (".$preorder->id.")";
|
||||
echo "========================================================================\n";
|
||||
echo "========================================================================\n";
|
||||
}
|
||||
|
||||
$existing_hausnummer->save();
|
||||
$u++;
|
||||
|
||||
// update GemeindeNetzgebiet if needed
|
||||
$netzgebiet = new ADBNetzgebiet($existing_hausnummer->netzgebiet_id);
|
||||
$gemeinde = new ADBGemeinde($existing_hausnummer->strasse->gemeinde_id);
|
||||
checkGemeindeNetzgebiet($gemeinde, $netzgebiet);
|
||||
|
||||
// add new units
|
||||
$existing_units_count = ADBWohneinheitModel::count(['hausnummer_id' => $existing_hausnummer->id]);
|
||||
if($existing_units_count != $unit_count) {
|
||||
if($existing_units_count > $unit_count) {
|
||||
echo "========================================================================\n";
|
||||
echo "=============== [".$existing_hausnummer->id."] Need to delete ".($existing_units_count - $unit_count)." units\n";
|
||||
echo "========================================================================\n";
|
||||
}
|
||||
if($existing_units_count < $unit_count) {
|
||||
echo "=============== Adding ".($unit_count - $existing_units_count)." units\n";
|
||||
|
||||
$new_units_count = $unit_count - $existing_units_count;
|
||||
$last_unit_num = 0;
|
||||
|
||||
|
||||
foreach(ADBWohneinheitModel::search(['hausnummer_id' => $existing_hausnummer->id]) as $tmp_unit) {
|
||||
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' => $existing_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);
|
||||
}
|
||||
var_dump($wohneinheit);
|
||||
$wohneinheit->save();
|
||||
$w++;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
echo "=================================\n";
|
||||
|
||||
|
||||
}
|
||||
|
||||
echo "$l lines processed, $u updated\n";
|
||||
|
||||
|
||||
function checkGemeindeNetzgebiet($gemeinde, $netzgebiet) {
|
||||
global $db;
|
||||
|
||||
$sql = "SELECT * FROM GemeindeNetzgebiet WHERE gemeinde_id=".$gemeinde->id." AND netzgebiet_id=".$netzgebiet->id;
|
||||
$res = $db->query($sql);
|
||||
if($db->num_rows($res)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
$sql = "INSERT INTO GemeindeNetzgebiet (gemeinde_id, netzgebiet_id, `create`, `edit`) VALUES (".$gemeinde->id.", ".$netzgebiet->id.", UNIX_TIMESTAMP(), UNIX_TIMESTAMP())";
|
||||
if(!$db->query($sql)) {
|
||||
die("SQL Query failed: $sql\n ".$db->getLastError());
|
||||
}
|
||||
|
||||
echo "updated GemeindeNetzgebiet\n";
|
||||
|
||||
return true;
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user