|
@@ -150,6 +150,13 @@ function toggle(source) {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ private function showPowiazania() {
|
|
|
|
|
+// $powiazanieDirLocation = $this->getDirectory('BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA', $this->powiazanie['ID']);
|
|
|
|
|
+// $xmlFile = "{$powiazanieDirLocation}/relations.xml";
|
|
|
|
|
+// echo "<pre>" . htmlentities(file_get_contents($xmlFile)) . "</pre>";
|
|
|
|
|
+ echo "Statystyki znalezionych powiązań [TODO]";
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
private function powiazania($ID_BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA) {
|
|
private function powiazania($ID_BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA) {
|
|
|
try {
|
|
try {
|
|
|
$powiazania = DB::getPDO()->fetchall("select * from BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA where ID = '{$ID_BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA}'");
|
|
$powiazania = DB::getPDO()->fetchall("select * from BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA where ID = '{$ID_BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA}'");
|
|
@@ -159,6 +166,9 @@ function toggle(source) {
|
|
|
case "NONE":
|
|
case "NONE":
|
|
|
$this->initializePowiazania();
|
|
$this->initializePowiazania();
|
|
|
break;
|
|
break;
|
|
|
|
|
+ case "GENERATED":
|
|
|
|
|
+ $this->showPowiazania();
|
|
|
|
|
+ break;
|
|
|
default:
|
|
default:
|
|
|
throw new Exception("Błędny status rekordu");
|
|
throw new Exception("Błędny status rekordu");
|
|
|
}
|
|
}
|
|
@@ -188,6 +198,11 @@ function toggle(source) {
|
|
|
|
|
|
|
|
public function doGenerate() {
|
|
public function doGenerate() {
|
|
|
|
|
|
|
|
|
|
+ function deleteResultsFromDB($ID) {
|
|
|
|
|
+ $query = "delete from row, ref using BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA_row row join `CRM__#REF_TABLE__25` ref on row.ID=ref.REMOTE_PRIMARY_KEY where ref.PRIMARY_KEY='{$ID}'";
|
|
|
|
|
+ DB::getPDO()->query($query);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
function generatePhpScript($function) {
|
|
function generatePhpScript($function) {
|
|
|
return '<?php
|
|
return '<?php
|
|
|
ini_set("memory_limit", "4G");
|
|
ini_set("memory_limit", "4G");
|
|
@@ -231,9 +246,11 @@ Router::getRoute("UrlAction_BiAuditGenerate")->' . $function . ';
|
|
|
|
|
|
|
|
|
|
|
|
|
### Sprawdzenie czy któryś rekord wymaga odświeżenia cache
|
|
### Sprawdzenie czy któryś rekord wymaga odświeżenia cache
|
|
|
- $query = "select ID from BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA where BI_analiza_reloadCache = 'Y'";
|
|
|
|
|
|
|
+ $query = "select ID from BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA where BI_analiza_reloadCache = 'Y' and FILE_STATUS = 'TO_GENERATE'";
|
|
|
$result = DB::getPDO()->fetchAll($query);
|
|
$result = DB::getPDO()->fetchAll($query);
|
|
|
if ($result) {
|
|
if ($result) {
|
|
|
|
|
+ $sqlArr = [];
|
|
|
|
|
+
|
|
|
if (file_exists($reloadCachePhpFile)) {
|
|
if (file_exists($reloadCachePhpFile)) {
|
|
|
if (file_exists($reloadCacheResultFile)) {
|
|
if (file_exists($reloadCacheResultFile)) {
|
|
|
$reloadCacheResult = file_get_contents($reloadCacheResultFile);
|
|
$reloadCacheResult = file_get_contents($reloadCacheResultFile);
|
|
@@ -246,25 +263,33 @@ Router::getRoute("UrlAction_BiAuditGenerate")->' . $function . ';
|
|
|
$sqlArr = [
|
|
$sqlArr = [
|
|
|
'FILE_STATUS' => 'ERROR',
|
|
'FILE_STATUS' => 'ERROR',
|
|
|
'FILE_STATUS_info' => "Wystąpił błąd podczas odświeżania cache ({$reloadCacheResult})",
|
|
'FILE_STATUS_info' => "Wystąpił błąd podczas odświeżania cache ({$reloadCacheResult})",
|
|
|
- 'BI_analiza_reloadCache' => 'N',
|
|
|
|
|
];
|
|
];
|
|
|
$query = "select ID from BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA where FILE_STATUS = 'TO_GENERATE'";
|
|
$query = "select ID from BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA where FILE_STATUS = 'TO_GENERATE'";
|
|
|
$result = DB::getPDO()->fetchAll($query);
|
|
$result = DB::getPDO()->fetchAll($query);
|
|
|
}
|
|
}
|
|
|
- foreach ($result as $row) {
|
|
|
|
|
- DB::getDB()->UPDATE_OBJ('BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA', array_merge(['ID' => $row['ID']], $sqlArr));
|
|
|
|
|
- }
|
|
|
|
|
unlink($reloadCachePhpFile);
|
|
unlink($reloadCachePhpFile);
|
|
|
unlink($reloadCacheResultFile);
|
|
unlink($reloadCacheResultFile);
|
|
|
- } else exit;
|
|
|
|
|
|
|
+ }
|
|
|
} else {
|
|
} else {
|
|
|
$query = "select count(*) from BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA where FILE_STATUS = 'IN_PROGRESS'";
|
|
$query = "select count(*) from BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA where FILE_STATUS = 'IN_PROGRESS'";
|
|
|
$result = DB::getPDO()->fetchValue($query);
|
|
$result = DB::getPDO()->fetchValue($query);
|
|
|
- if ($result) exit;
|
|
|
|
|
|
|
+ if ($result) {
|
|
|
|
|
+ $sqlArr = [
|
|
|
|
|
+ 'FILE_STATUS_info' => 'Wstrzymano odświeżanie cache - oczekiwanie na dokończenie szukania powiązań dla innych rekordów',
|
|
|
|
|
+ ];
|
|
|
|
|
+ } else {
|
|
|
|
|
+ $sqlArr = [
|
|
|
|
|
+ 'FILE_STATUS_info' => 'W trakcie odświeżania cache',
|
|
|
|
|
+ ];
|
|
|
|
|
+ file_put_contents($reloadCachePhpFile, generatePhpScript('doReloadCache()'));
|
|
|
|
|
+ shell_exec('su - root -c "php ' . $reloadCachePhpFile . ' > ' . $reloadCacheLogFile. ' 2>&1 &"');
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- file_put_contents($reloadCachePhpFile, generatePhpScript('doReloadCache()'));
|
|
|
|
|
- shell_exec('su - root -c "php ' . $reloadCachePhpFile . ' > ' . $reloadCacheLogFile. ' 2>&1 &"');
|
|
|
|
|
- exit;
|
|
|
|
|
|
|
+ if ($sqlArr) {
|
|
|
|
|
+ foreach ($result as $row) {
|
|
|
|
|
+ DB::getDB()->UPDATE_OBJ('BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA', array_merge(['ID' => $row['ID']], $sqlArr));
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -279,6 +304,7 @@ Router::getRoute("UrlAction_BiAuditGenerate")->' . $function . ';
|
|
|
'FILE_STATUS_info' => 'W trakcie generowania powiązań',
|
|
'FILE_STATUS_info' => 'W trakcie generowania powiązań',
|
|
|
];
|
|
];
|
|
|
DB::getDB()->UPDATE_OBJ('BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA', $sqlArr);
|
|
DB::getDB()->UPDATE_OBJ('BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA', $sqlArr);
|
|
|
|
|
+ deleteResultsFromDB($row['ID']);
|
|
|
|
|
|
|
|
$generatePowiazaniaResultFile = "{$tasksDirLocation}/generatePowiazania-{$row['ID']}.result";
|
|
$generatePowiazaniaResultFile = "{$tasksDirLocation}/generatePowiazania-{$row['ID']}.result";
|
|
|
$generatePowiazaniaPhpFile = "{$tasksDirLocation}/generatePowiazania-{$row['ID']}.php";
|
|
$generatePowiazaniaPhpFile = "{$tasksDirLocation}/generatePowiazania-{$row['ID']}.php";
|
|
@@ -289,28 +315,51 @@ Router::getRoute("UrlAction_BiAuditGenerate")->' . $function . ';
|
|
|
|
|
|
|
|
|
|
|
|
|
### Weryfikacja świeżo wygenerowanych powiązań
|
|
### Weryfikacja świeżo wygenerowanych powiązań
|
|
|
- $query = "select ID from BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA where FILE_STATUS = 'IN_PROGRESS'";
|
|
|
|
|
|
|
+ $query = "select ID, BI_analiza_depth from BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA where FILE_STATUS = 'IN_PROGRESS'";
|
|
|
$result = DB::getPDO()->fetchAll($query);
|
|
$result = DB::getPDO()->fetchAll($query);
|
|
|
foreach ($result as $row) {
|
|
foreach ($result as $row) {
|
|
|
$generatePowiazaniaResultFile = "{$tasksDirLocation}/generatePowiazania-{$row['ID']}.result";
|
|
$generatePowiazaniaResultFile = "{$tasksDirLocation}/generatePowiazania-{$row['ID']}.result";
|
|
|
|
|
+ $generatePowiazaniaPidFile = "{$tasksDirLocation}/generatePowiazania-{$row['ID']}.pid";
|
|
|
if (file_exists($generatePowiazaniaResultFile)) {
|
|
if (file_exists($generatePowiazaniaResultFile)) {
|
|
|
- $generatePowiazaniaResult = file_get_contents($generatePowiazaniaResultFile);
|
|
|
|
|
- if ($generatePowiazaniaResult == "ok") {
|
|
|
|
|
|
|
+ $error = false;
|
|
|
|
|
+ $xmlFile = "{$tasksDirLocation}/generatePowiazania-{$row['ID']}.xml";
|
|
|
|
|
+ if (file_exists($xmlFile)) {
|
|
|
|
|
+ if (filesize($xmlFile)) {
|
|
|
|
|
+ $generatePowiazaniaResult = file_get_contents($generatePowiazaniaResultFile);
|
|
|
|
|
+ if ($generatePowiazaniaResult == "ok") {
|
|
|
|
|
+ $generatePowiazaniaSqlFile = "{$tasksDirLocation}/generatePowiazania-{$row['ID']}.sql";
|
|
|
|
|
+ if (!file_exists($generatePowiazaniaSqlFile)) $error = "Wystąpił nieznany błąd w przetwarzaniu";
|
|
|
|
|
+ } else $error = "Wystąpił błąd podczas generowania powiązań ({$generatePowiazaniaResult})";
|
|
|
|
|
+ } else $error = "Wystąpił nieznany błąd - plk xml został wygenerowany niepoprawnie";
|
|
|
|
|
+ } else $error = "Wystąpił nienzany błąd - nie znaleziono pliku xml";
|
|
|
|
|
+
|
|
|
|
|
+ if ($error) {
|
|
|
$sqlArr = [
|
|
$sqlArr = [
|
|
|
- 'FILE_STATUS' => 'GENERATED',
|
|
|
|
|
- 'FILE_STATUS_info' => 'Poprawnie wygenerowano powiązania',
|
|
|
|
|
|
|
+ 'FILE_STATUS' => 'ERROR',
|
|
|
|
|
+ 'FILE_STATUS_info' => $error,
|
|
|
];
|
|
];
|
|
|
|
|
+ deleteResultsFromDB($row['ID']);
|
|
|
|
|
+ if (file_exists($xmlFile)) unlink($xmlFile);
|
|
|
} else {
|
|
} else {
|
|
|
$sqlArr = [
|
|
$sqlArr = [
|
|
|
- 'FILE_STATUS' => 'ERROR',
|
|
|
|
|
- 'FILE_STATUS_info' => "Wystąpił błąd podczas generowania powiązań ({$generatePowiazaniaResult})",
|
|
|
|
|
|
|
+ 'FILE_STATUS' => 'GENERATED',
|
|
|
|
|
+ 'FILE_STATUS_info' => 'Poprawnie wygenerowano powiązania',
|
|
|
];
|
|
];
|
|
|
|
|
+ $powiazanieDirLocation = $this->getDirectory('BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA', $row['ID']);
|
|
|
|
|
+ $destXmlFile = "{$powiazanieDirLocation}/relations.xml";
|
|
|
|
|
+ rename($xmlFile, $destXmlFile);
|
|
|
}
|
|
}
|
|
|
$sqlArr['ID'] = $row['ID'];
|
|
$sqlArr['ID'] = $row['ID'];
|
|
|
DB::getDB()->UPDATE_OBJ('BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA', $sqlArr);
|
|
DB::getDB()->UPDATE_OBJ('BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA', $sqlArr);
|
|
|
$generatePowiazaniaPhpFile = "{$tasksDirLocation}/generatePowiazania-{$row['ID']}.php";
|
|
$generatePowiazaniaPhpFile = "{$tasksDirLocation}/generatePowiazania-{$row['ID']}.php";
|
|
|
unlink($generatePowiazaniaPhpFile);
|
|
unlink($generatePowiazaniaPhpFile);
|
|
|
|
|
+ unlink($generatePowiazaniaPidFile);
|
|
|
unlink($generatePowiazaniaResultFile);
|
|
unlink($generatePowiazaniaResultFile);
|
|
|
|
|
+ if (file_exists($generatePowiazaniaSqlFile)) unlink($generatePowiazaniaSqlFile);
|
|
|
|
|
+
|
|
|
|
|
+ } elseif (file_exists($generatePowiazaniaPidFile)) {
|
|
|
|
|
+ $pid = file_get_contents($generatePowiazaniaPidFile);
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -440,7 +489,11 @@ Router::getRoute("UrlAction_BiAuditGenerate")->' . $function . ';
|
|
|
public function doGeneratePowiazania($ID) {
|
|
public function doGeneratePowiazania($ID) {
|
|
|
$powiazaniaDirLocation = $this->getMainDirectory();
|
|
$powiazaniaDirLocation = $this->getMainDirectory();
|
|
|
$tasksDirLocation = $powiazaniaDirLocation . "/.tasks";
|
|
$tasksDirLocation = $powiazaniaDirLocation . "/.tasks";
|
|
|
- $generatePowiazaniaResultFile = "{$tasksDirLocation}/generatePowiazania-{$ID}.result";
|
|
|
|
|
|
|
+ $resultFile = "{$tasksDirLocation}/generatePowiazania-{$ID}.result";
|
|
|
|
|
+ $xmlFile = "{$tasksDirLocation}/generatePowiazania-{$ID}.xml";
|
|
|
|
|
+ $pidFile = "{$tasksDirLocation}/generatePowiazania-{$ID}.pid";
|
|
|
|
|
+ $sqlFile = "{$tasksDirLocation}/generatePowiazania-{$ID}.sql";
|
|
|
|
|
+ file_put_contents($pidFile, getmypid());
|
|
|
|
|
|
|
|
$tablesConf = [
|
|
$tablesConf = [
|
|
|
'BI_audit_CEIDG' => ['ID', 'imie', 'nazwisko', 'nip', 'regon', 'firma', 'miejscowosc'],
|
|
'BI_audit_CEIDG' => ['ID', 'imie', 'nazwisko', 'nip', 'regon', 'firma', 'miejscowosc'],
|
|
@@ -467,13 +520,12 @@ Router::getRoute("UrlAction_BiAuditGenerate")->' . $function . ';
|
|
|
$BiAuditPowiazania = new BiAuditPowiazania($powiazanie['BI_analiza_depth']);
|
|
$BiAuditPowiazania = new BiAuditPowiazania($powiazanie['BI_analiza_depth']);
|
|
|
foreach ($result as $row) $BiAuditPowiazania->findPowiazania($row['ID']);
|
|
foreach ($result as $row) $BiAuditPowiazania->findPowiazania($row['ID']);
|
|
|
|
|
|
|
|
- $powiazanieDirLocation = $this->getDirectory('BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA', $ID);
|
|
|
|
|
- $xmlFile = "{$powiazanieDirLocation}/relations_id{$ID}_depth{$powiazanie['BI_analiza_depth']}.xml";
|
|
|
|
|
- file_put_contents($xmlFile, $BiAuditPowiazania->asXml());
|
|
|
|
|
-
|
|
|
|
|
|
|
+ if (!$BiAuditPowiazania->powiazaniaFound()) throw new Exception("Nie znaleziono żadnych powiązań");
|
|
|
|
|
+ $xml = $BiAuditPowiazania->asXml();
|
|
|
|
|
+ file_put_contents($xmlFile, $xml);
|
|
|
|
|
+ file_put_contents($sqlFile, mysql_real_escape_string(gzcompress($xml)));
|
|
|
$powiazania = $BiAuditPowiazania->asArray('BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA');
|
|
$powiazania = $BiAuditPowiazania->asArray('BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA');
|
|
|
if (!$powiazania) return false;
|
|
if (!$powiazania) return false;
|
|
|
- $query = "delete from row, ref using BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA_row row join `CRM__#REF_TABLE__25` ref on row.ID=ref.REMOTE_PRIMARY_KEY where ref.PRIMARY_KEY=1";
|
|
|
|
|
DB::getPDO()->query($query);
|
|
DB::getPDO()->query($query);
|
|
|
foreach ($powiazania['BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA_row'] as $row) {
|
|
foreach ($powiazania['BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA_row'] as $row) {
|
|
|
$powiazaniaRowSqlArr = [];
|
|
$powiazaniaRowSqlArr = [];
|
|
@@ -493,11 +545,12 @@ Router::getRoute("UrlAction_BiAuditGenerate")->' . $function . ';
|
|
|
}
|
|
}
|
|
|
$powiazaniaRowSqlArr['string_concat_path'] = implode(' / ', $string_concat_path);
|
|
$powiazaniaRowSqlArr['string_concat_path'] = implode(' / ', $string_concat_path);
|
|
|
$id_row = DB::getPDO()->insert("BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA_row", $powiazaniaRowSqlArr);
|
|
$id_row = DB::getPDO()->insert("BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA_row", $powiazaniaRowSqlArr);
|
|
|
- if (!$id_row) throw new Exception("Błąd bazy danych"); DB::getPDO()->insert('CRM__#REF_TABLE__25', ["PRIMARY_KEY" => $ID, "REMOTE_PRIMARY_KEY" => $id_row]);
|
|
|
|
|
|
|
+ if (!$id_row) throw new Exception("Błąd bazy danych");
|
|
|
|
|
+ DB::getPDO()->insert('CRM__#REF_TABLE__25', ["PRIMARY_KEY" => $ID, "REMOTE_PRIMARY_KEY" => $id_row]);
|
|
|
}
|
|
}
|
|
|
- file_put_contents($generatePowiazaniaResultFile, "ok");
|
|
|
|
|
|
|
+ file_put_contents($resultFile, "ok");
|
|
|
} catch (Exception $e) {
|
|
} catch (Exception $e) {
|
|
|
- file_put_contents($generatePowiazaniaResultFile, $e->getMessage());
|
|
|
|
|
|
|
+ file_put_contents($resultFile, $e->getMessage());
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -708,16 +761,23 @@ class BiAuditPowiazania {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public function asXml() {
|
|
public function asXml() {
|
|
|
|
|
+ if (!$this->results) return null;
|
|
|
if (!$this->items_results) $this->generateItemsResults();
|
|
if (!$this->items_results) $this->generateItemsResults();
|
|
|
$xmlRoot = "RelatedFeatureRoot";
|
|
$xmlRoot = "RelatedFeatureRoot";
|
|
|
return V::arrayToXML($this->items_results, true, $xmlRoot);
|
|
return V::arrayToXML($this->items_results, true, $xmlRoot);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public function asArray($subArray = null) {
|
|
public function asArray($subArray = null) {
|
|
|
|
|
+ if (!$this->results) return null;
|
|
|
if (!$this->items_results) $this->generateItemsResults();
|
|
if (!$this->items_results) $this->generateItemsResults();
|
|
|
if ($subArray) {
|
|
if ($subArray) {
|
|
|
if (isset($this->items_results[$subArray])) return $this->items_results[$subArray];
|
|
if (isset($this->items_results[$subArray])) return $this->items_results[$subArray];
|
|
|
else return [];
|
|
else return [];
|
|
|
} else return $this->items_results;
|
|
} else return $this->items_results;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ public function powiazaniaFound() {
|
|
|
|
|
+ if ($this->results) return true;
|
|
|
|
|
+ else return false;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|