enhanced duplicate finder
This commit is contained in:
@@ -160,7 +160,8 @@ class ADBWohneinheitController extends mfBaseController {
|
||||
}
|
||||
|
||||
protected function duplicateAction() {
|
||||
$duplicateHomes = ADBWohneinheitModel::searchDuplicateExtref();
|
||||
$duplicateHomes = array_merge(ADBWohneinheitModel::searchDuplicateExtref(),
|
||||
ADBWohneinheitModel::searchDuplicateOAID());
|
||||
|
||||
$JSGlobals = ["BASE_URL" => self::getUrl(""),
|
||||
"DASHBOARD_URL" => self::getUrl("Dashboard"),
|
||||
|
||||
@@ -301,6 +301,7 @@ class ADBWohneinheitModel {
|
||||
while($data = $res->fetch_assoc()) {
|
||||
$duplicateExtrefs[] = $data['extref'];
|
||||
$duplicates[$data['extref']] = [
|
||||
"duplicateType" => "extref",
|
||||
'extref' => $data['extref'],
|
||||
'count' => $data['count'],
|
||||
'homeData' => []
|
||||
@@ -309,18 +310,83 @@ class ADBWohneinheitModel {
|
||||
|
||||
if (!empty($duplicateExtrefs)) {
|
||||
$extrefList = "'" . implode("','", array_map([$db, 'real_escape_string'], $duplicateExtrefs)) . "'";
|
||||
$detailSql = "SELECT Wohneinheit.*
|
||||
FROM Wohneinheit
|
||||
LEFT JOIN Hausnummer ON (Hausnummer.id = Wohneinheit.hausnummer_id)
|
||||
WHERE $where AND Wohneinheit.extref IN ($extrefList)
|
||||
ORDER BY Wohneinheit.extref";
|
||||
$detailSql = "SELECT Wohneinheit.*, thetool.Address.company AS company, Hausnummer.rimo_id AS hausnummer_extref
|
||||
FROM Wohneinheit
|
||||
LEFT JOIN Hausnummer ON (Hausnummer.id = Wohneinheit.hausnummer_id)
|
||||
LEFT JOIN Netzgebiet ON (Netzgebiet.id = Hausnummer.netzgebiet_id)
|
||||
LEFT JOIN thetool.Network ON (Network.adb_netzgebiet_id = Netzgebiet.id)
|
||||
LEFT JOIN thetool.Address ON (Network.owner_id = Address.id)
|
||||
WHERE $where AND Wohneinheit.extref IN ($extrefList)
|
||||
ORDER BY Wohneinheit.extref";
|
||||
|
||||
|
||||
$detailRes = $db->query($detailSql);
|
||||
while($homeData = $detailRes->fetch_assoc()) {
|
||||
$duplicates[$homeData['extref']]['homeData'][] = [
|
||||
"id" => $homeData['id'],
|
||||
"oaid" => $homeData['oaid'],
|
||||
"network_company" => $homeData['company'],
|
||||
"hausnummer_id" => $homeData['hausnummer_id'],
|
||||
"hausnummer_extref" => $homeData['hausnummer_extref'],
|
||||
"num" => $homeData['num'],
|
||||
"nutzung" => $homeData['nutzung'],
|
||||
"rimo_ex_state" => $homeData['rimo_ex_state'],
|
||||
"rimo_op_state" => $homeData['rimo_op_state'],
|
||||
"create" => $homeData['create'],
|
||||
"edit" => $homeData['edit'],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
return array_values($duplicates);
|
||||
}
|
||||
|
||||
public static function searchDuplicateOAID($filter = []) {
|
||||
$duplicates = [];
|
||||
$db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME)->link;
|
||||
$where = self::getSqlFilter($filter);
|
||||
|
||||
$sql = "SELECT Wohneinheit.oaid, COUNT(*) as count
|
||||
FROM Wohneinheit
|
||||
LEFT JOIN Hausnummer ON (Hausnummer.id = Wohneinheit.hausnummer_id)
|
||||
WHERE $where AND Wohneinheit.oaid IS NOT NULL
|
||||
GROUP BY Wohneinheit.oaid
|
||||
HAVING COUNT(*) > 1
|
||||
ORDER BY COUNT(*) DESC";
|
||||
|
||||
$res = $db->query($sql);
|
||||
$duplicateOaids = [];
|
||||
|
||||
while($data = $res->fetch_assoc()) {
|
||||
$duplicateOaids[] = $data['oaid'];
|
||||
$duplicates[$data['oaid']] = [
|
||||
"duplicateType" => "oaid",
|
||||
'oaid' => $data['oaid'],
|
||||
'count' => $data['count'],
|
||||
'homeData' => []
|
||||
];
|
||||
}
|
||||
|
||||
if (!empty($duplicateOaids)) {
|
||||
$oaidList = "'" . implode("','", array_map([$db, 'real_escape_string'], $duplicateOaids)) . "'";
|
||||
$detailSql = "SELECT Wohneinheit.*, thetool.Address.company AS company, Hausnummer.rimo_id AS hausnummer_extref
|
||||
FROM Wohneinheit
|
||||
LEFT JOIN Hausnummer ON (Hausnummer.id = Wohneinheit.hausnummer_id)
|
||||
LEFT JOIN Netzgebiet ON (Netzgebiet.id = Hausnummer.netzgebiet_id)
|
||||
LEFT JOIN thetool.Network ON (Network.adb_netzgebiet_id = Netzgebiet.id)
|
||||
LEFT JOIN thetool.Address ON (Network.owner_id = Address.id)
|
||||
WHERE $where AND Wohneinheit.oaid IN ($oaidList)
|
||||
ORDER BY Wohneinheit.oaid";
|
||||
|
||||
$detailRes = $db->query($detailSql);
|
||||
while($homeData = $detailRes->fetch_assoc()) {
|
||||
$duplicates[$homeData['oaid']]['homeData'][] = [
|
||||
"id" => $homeData['id'],
|
||||
'oaid' => $homeData['oaid'],
|
||||
"extref" => $homeData['extref'],
|
||||
"network_company" => $homeData['company'],
|
||||
"hausnummer_id" => $homeData['hausnummer_id'],
|
||||
"hausnummer_extref" => $homeData['hausnummer_extref'],
|
||||
"num" => $homeData['num'],
|
||||
"nutzung" => $homeData['nutzung'],
|
||||
"rimo_ex_state" => $homeData['rimo_ex_state'],
|
||||
@@ -337,4 +403,5 @@ class ADBWohneinheitModel {
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ Vue.component('a-d-b-wohneinheit-duplicate', {
|
||||
<tt-table :data="window['TT_CONFIG']['DUPLICATE_HOMES']" :config="DuplicateHomesTableConfig" excel-export>
|
||||
|
||||
<template v-slot:extref="{ row }">
|
||||
<span class="badge badge-warning">{{ row.extref }}</span>
|
||||
<span class="badge badge-warning">{{ row.duplicateType === 'extref' ? row.extref : row.oaid }}</span>
|
||||
</template>
|
||||
|
||||
<template v-slot:count="{ row }">
|
||||
@@ -19,6 +19,8 @@ Vue.component('a-d-b-wohneinheit-duplicate', {
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
<th>OAID</th>
|
||||
<th>SDIBuilding</th>
|
||||
<th>Firma</th>
|
||||
<th>Num</th>
|
||||
<th>Nutzung</th>
|
||||
<th>Rimo Ex State</th>
|
||||
@@ -32,6 +34,8 @@ Vue.component('a-d-b-wohneinheit-duplicate', {
|
||||
<tr v-for="home in row.homeData" :key="home.id" :class="{'bg-light': home.id % 2 === 0}">
|
||||
<td>{{ home.id }}</td>
|
||||
<td>{{ home.oaid || 'N/A' }}</td>
|
||||
<td>{{ home.hausnummer_extref || 'N/A' }}</td>
|
||||
<td>{{ home.network_company || 'N/A' }}</td>
|
||||
<td>{{ home.num }}</td>
|
||||
<td>{{ home.nutzung || 'N/A' }}</td>
|
||||
<td>{{ home.rimo_ex_state || 'N/A' }}</td>
|
||||
@@ -65,15 +69,19 @@ Vue.component('a-d-b-wohneinheit-duplicate', {
|
||||
tableHeader: 'Doppelte HomeID Liste',
|
||||
defaultPageSize: 10,
|
||||
headers: [
|
||||
{text: 'HomeID', key: 'extref', sortable: true, class: 'text-nowrap', priority: 10},
|
||||
{text: 'Anzahl gleicher HomeIDs', key: 'count', sortable: true, class: 'text-center', priority: 9},
|
||||
{text: 'HomeID | OAID', key: 'extref', sortable: true, class: 'text-nowrap', priority: 10},
|
||||
{text: 'Duplicate Type', key: 'duplicateType', sortable: true, class: 'text-nowrap', priority: 9, filter: 'select', filterOptions: [
|
||||
{text: 'HomeID', value: 'extref'},
|
||||
{text: 'OAID', value: 'oaid'},
|
||||
]},
|
||||
{text: 'Anzahl gleicher HomeIDs', key: 'count', sortable: true, class: 'text-center', priority: 8},
|
||||
{
|
||||
text: 'Home Details',
|
||||
key: 'homeDetails',
|
||||
sortable: false,
|
||||
class: 'w-75',
|
||||
filter: false,
|
||||
priority: 8
|
||||
priority: 7
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user