ソースを参照

Merge branch 'master' of bn.git:plabudda/se

Piotr Labudda 8 年 前
コミット
150c1b29d6
1 ファイル変更134 行追加73 行削除
  1. 134 73
      SE/se-lib/Route/UrlAction/BiAuditGenerate.php

+ 134 - 73
SE/se-lib/Route/UrlAction/BiAuditGenerate.php

@@ -88,7 +88,6 @@ class Route_UrlAction_BiAuditGenerate extends RouteBase {
               <td><?=$pracownik['nip']?></td>
               <td><?=$pracownik['nip']?></td>
               <td><?=$pracownik['regon']?></td>
               <td><?=$pracownik['regon']?></td>
               <td><?=$pracownik['source']?></td>
               <td><?=$pracownik['source']?></td>
-
             </tr>
             </tr>
 <?php
 <?php
 		}
 		}
@@ -133,48 +132,81 @@ function toggle(source) {
 		$prID = V::get('prID', array(), $_POST);
 		$prID = V::get('prID', array(), $_POST);
 		if (!$prID) throw new Exception("Nie wybrano żadnego pracownika!");
 		if (!$prID) throw new Exception("Nie wybrano żadnego pracownika!");
 		$reloadCache = V::get('reloadCache', 'off', $_POST);
 		$reloadCache = V::get('reloadCache', 'off', $_POST);
-		$sqlArr = [
-			'ID' => $this->powiazanie['ID'],
-			'FILE_STATUS' => 'TO_GENERATE',
-		];
+
+		if ($this->powiazanie) { // wyzwolone z poziomu tabeli BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA - aktualizujemy istniejący rekord
+			$sqlArr = [
+				'ID' => $this->powiazanie['ID'],
+				'FILE_STATUS' => 'TO_GENERATE',
+			];
+		} else { // wyzwolone z poziomu tabeli BI_audit_ENERGA_PRACOWNICY - dodajemy nowy rekord
+			if (count($prID) != 1) throw new Exception("Błąd formularza!");
+			if (!($lAppoitmentInfo = V::get('info', false, $_POST))) throw new Exception("Błąd formularza!");
+			if (!($BiAnalizaDepth = V::get('depth', false, $_POST))) throw new Exception("Błąd formularza!");
+			$query = "select * from BI_audit_ENERGA_PRACOWNICY where ID='{$prID[0]}'";
+			$result = DB::getPDO()->fetchFirst($query);
+			if (!$result) throw new Exception("Błąd formularza!");
+			$sqlArr = [
+				'L_APPOITMENT_INFO' => $lAppoitmentInfo,
+				'A_STATUS' => 'NORMAL',
+				'A_STATUS_INFO' => 'Dodane przez BiAuditGenerate z poziomu tabeli BI_audit_ENERGA_PRACOWNICY',
+				'A_ADM_COMPANY' => $result['A_ADM_COMPANY'],
+				'A_CLASSIFIED' => $result['A_CLASSIFIED'],
+				'FILE_STATUS' => 'NONE',
+				'BI_analiza_depth' => $BiAnalizaDepth,
+			];
+		}
+
 		if ($reloadCache == 'on') $sqlArr['BI_analiza_reloadCache'] = 'Y';
 		if ($reloadCache == 'on') $sqlArr['BI_analiza_reloadCache'] = 'Y';
+		else $sqlArr['BI_analiza_reloadCache'] = 'N';
 
 
-		$this->truncatePowiazaniaFromDB($this->powiazanie['ID']);
+		$query = "select count(*) from BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA where BI_analiza_reloadCache = 'Y'";
+		$result = DB::getPDO()->fetchValue($query);
+		if ($result) $sqlArr['FILE_STATUS_info'] = 'Oczekuje na odświeżenie cache (wymagane dla innego rekordu)';
+		elseif ($reloadCache == 'on') $sqlArr['FILE_STATUS_info'] = 'Oczekuje na odświeżenie cache';
+		else $sqlArr['FILE_STATUS_info'] = "Oczekuje na wygenerowanie powiązań";
+
+		if ($this->powiazanie) {
+			$powiazazanieID = $this->powiazanie['ID'];
+			$this->truncatePowiazaniaFromDB($powiazanieID);
+			$affected = DB::getDB()->UPDATE_OBJ('BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA', $sqlArr);
+			if ($affected) {
+				SE_Layout::alert('success','Oznaczono rekord do wygenerowania powiązań');
+?>
+<div class="container" style="text-align:center">
+  <a href="<?=$this->REFERER?>" class="btn btn-primary">Powrót</a>
+</div>
+<?php
+			} else throw new Exception("Wystąpił nieznany błąd @initializePowiazaniaSave");
+		} else {
+			$powiazanieID = DB::getDB()->ADD_NEW_OBJ('BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA', (object)$sqlArr);
+			if ($powiazanieID) SE_Layout::alert('success','Dodano rekord do wygenerowania powiązań');
+			else throw new Exception("Wystąpił nieznany błąd @initializePowiazaniaSave");
+		}
 
 
 		$refPowiazaniaToPracownicy = ACL::getRefTable('default_db/BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA/BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA',
 		$refPowiazaniaToPracownicy = ACL::getRefTable('default_db/BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA/BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA',
 			'default_db__x3A__BI_audit_ENERGA_PRACOWNICY:BI_audit_ENERGA_PRACOWNICY');
 			'default_db__x3A__BI_audit_ENERGA_PRACOWNICY:BI_audit_ENERGA_PRACOWNICY');
-		foreach ($prID as $v) DB::getPDO()->insert($refPowiazaniaToPracownicy, ['PRIMARY_KEY' => $this->powiazanie['ID'], 'REMOTE_PRIMARY_KEY' => $v]);
+		foreach ($prID as $v) DB::getPDO()->insert($refPowiazaniaToPracownicy, ['PRIMARY_KEY' => $powiazanieID, 'REMOTE_PRIMARY_KEY' => $v]);
 
 
 		$acl = Core_AclHelper::getAclByNamespace('default_db/BI_audit_ENERGA_RUM_KONTRAHENCI/BI_audit_ENERGA_RUM_KONTRAHENCI');
 		$acl = Core_AclHelper::getAclByNamespace('default_db/BI_audit_ENERGA_RUM_KONTRAHENCI/BI_audit_ENERGA_RUM_KONTRAHENCI');
 		$queryFeatures = $acl->buildQuery(['limit' => 0, 'cols' => ['ID']]);
 		$queryFeatures = $acl->buildQuery(['limit' => 0, 'cols' => ['ID']]);
 		$kontrahenci = $queryFeatures->getItems();
 		$kontrahenci = $queryFeatures->getItems();
 		$refPowiazaniaToKontrahenci = ACL::getRefTable('default_db/BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA/BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA',
 		$refPowiazaniaToKontrahenci = ACL::getRefTable('default_db/BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA/BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA',
 			'default_db__x3A__BI_audit_ENERGA_RUM_KONTRAHENCI:BI_audit_ENERGA_RUM_KONTRAHENCI');
 			'default_db__x3A__BI_audit_ENERGA_RUM_KONTRAHENCI:BI_audit_ENERGA_RUM_KONTRAHENCI');
-		foreach ($kontrahenci as $kontrahent) DB::getPDO()->insert($refPowiazaniaToKontrahenci, ['PRIMARY_KEY' => $this->powiazanie['ID'], 'REMOTE_PRIMARY_KEY' => $kontrahent['ID']]);
+		foreach ($kontrahenci as $kontrahent) DB::getPDO()->insert($refPowiazaniaToKontrahenci, ['PRIMARY_KEY' => $powiazanieID, 'REMOTE_PRIMARY_KEY' => $kontrahent['ID']]);
 
 
 		$acl = Core_AclHelper::getAclByNamespace('default_db/BI_audit_KW_requested_person/BI_audit_KW_requested_person');
 		$acl = Core_AclHelper::getAclByNamespace('default_db/BI_audit_KW_requested_person/BI_audit_KW_requested_person');
 		$queryFeatures = $acl->buildQuery(['limit' => 0, 'cols' => ['ID']]);
 		$queryFeatures = $acl->buildQuery(['limit' => 0, 'cols' => ['ID']]);
 		$requestedPersons = $queryFeatures->getItems();
 		$requestedPersons = $queryFeatures->getItems();
 		$refPowiazaniaToKwRequestedPreson = ACL::getRefTable('default_db/BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA/BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA',
 		$refPowiazaniaToKwRequestedPreson = ACL::getRefTable('default_db/BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA/BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA',
 			'default_db__x3A__BI_audit_KW_requested_person:BI_audit_KW_requested_person');
 			'default_db__x3A__BI_audit_KW_requested_person:BI_audit_KW_requested_person');
-		foreach ($requestedPersons as $requestedPerson) DB::getPDO()->insert($refPowiazaniaToKwRequestedPreson, ['PRIMARY_KEY' => $this->powiazanie['ID'], 'REMOTE_PRIMARY_KEY' => $requestedPerson['ID']]);
+		foreach ($requestedPersons as $requestedPerson) DB::getPDO()->insert($refPowiazaniaToKwRequestedPreson, ['PRIMARY_KEY' => $powiazanieID, 'REMOTE_PRIMARY_KEY' => $requestedPerson['ID']]);
 
 
-		$query = "select count(*) from BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA where BI_analiza_reloadCache = 'Y'";
-		$result = DB::getPDO()->fetchValue($query);
-		if ($result) $sqlArr['FILE_STATUS_info'] = 'Oczekuje na odświeżenie cache (wymagane dla innego rekordu)';
-		elseif ($reloadCache == 'on') $sqlArr['FILE_STATUS_info'] = 'Oczekuje na odświeżenie cache';
-		else $sqlArr['FILE_STATUS_info'] = "Oczekuje na wygenerowanie powiązań";
-
-		$affected = DB::getDB()->UPDATE_OBJ('BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA', $sqlArr);
-		if ($affected) {
-			SE_Layout::alert('success','Oznaczono rekord do wygenerowania');
-?>
-<div class="container" style="text-align:center">
-  <a href="<?=$this->REFERER?>" class="btn btn-primary">Powrót</a>
-</div>
-<?php
-		} else {
-			throw new Exception("Wystąpił nieznany błąd @initializePowiazaniaSave");
+		if (!$this->powiazanie) {
+			$sqlArr = [
+				'ID' => $powiazanieID,
+				'FILE_STATUS' => 'TO_GENERATE',
+			];
+			DB::getDB()->UPDATE_OBJ('BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA', $sqlArr);
 		}
 		}
 	}
 	}
 
 
@@ -196,35 +228,43 @@ function toggle(source) {
 	}
 	}
 
 
 	private function showPowiazaniaList() {
 	private function showPowiazaniaList() {
+		switch (V::get('action', '', $_POST)) {
+			case "initialize":
+				$this->initializePowiazaniaSave();
+				break;
+		}
+		$this->showPowiazaniaListForm();
+	}
+
+	private function showPowiazaniaListForm() {
 		if (!$this->SOURCE['ID']) throw new Exception("Błąd danych");
 		if (!$this->SOURCE['ID']) throw new Exception("Błąd danych");
 		elseif ($this->SOURCE['TABLE'] != 'BI_audit_ENERGA_PRACOWNICY') throw new Exception("Błąd danych");
 		elseif ($this->SOURCE['TABLE'] != 'BI_audit_ENERGA_PRACOWNICY') throw new Exception("Błąd danych");
-		echo "test";
 
 
 		$query = "select * from `{$this->SOURCE['TABLE']}` where ID = '{$this->SOURCE['ID']}'";
 		$query = "select * from `{$this->SOURCE['TABLE']}` where ID = '{$this->SOURCE['ID']}'";
 		$pracownik = DB::getPDO()->fetchFirst($query);
 		$pracownik = DB::getPDO()->fetchFirst($query);
 		if (!$pracownik) throw new Exception("Błąd danych");
 		if (!$pracownik) throw new Exception("Błąd danych");
 ?>
 ?>
 <div class="container" style="margin-top:20px">
 <div class="container" style="margin-top:20px">
-  <form class="form-horizontal" method="post">
-    <legend>
-      Lista wygenerowanych powiązań :: <?=($pracownik['imiona'] . " " . $pracownik['nazwisko'])?>
-      <span class="pull-right"># <?=$pracownik['ID']?></span>
-    </legend>
-    <div class="form-group">
-      <div class="col-sm-12">
-        <h4>Lista wygenerowanych powiązań, w których znajduje się pracownik</h4>
-        <table class="table table-bordered table-hover table-striped" height=5>
-          <thead>
-            <tr style="text-align:center; background-color:lightgray">
-              <td width=1>ID</td>
-              <td>Adnotacje</td>
-              <td>Głębokość analizy</td>
-              <td>Status raportu</td>
-              <td>Status raportu - informacje</td>
-              <td>Indywidualny raport</td>
-            </tr>
-          </thead>
-          <tbody>
+  <legend>
+    Lista wygenerowanych powiązań :: <?=htmlspecialchars($pracownik['imiona'] . " " . $pracownik['nazwisko'])?>
+    <span class="pull-right"># <?=$pracownik['ID']?></span>
+  </legend>
+  <div class="form-group">
+    <div class="col-sm-12">
+      <h4>Lista wygenerowanych powiązań, w których znajduje się pracownik</h4>
+      <table class="table table-bordered table-hover table-striped" height=5>
+        <thead>
+          <tr style="text-align:center; background-color:lightgray">
+            <td width=1>ID</td>
+            <td>Adnotacje</td>
+            <td>Głębokość analizy</td>
+            <td>Status raportu</td>
+            <td>Status raportu - informacje</td>
+            <td>Indywidualny raport</td>
+            <td width=1></td>
+          </tr>
+        </thead>
+        <tbody>
 
 
 <?php
 <?php
 		$refPowiazaniaToPracownicy = ACL::getRefTable('default_db/BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA/BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA',
 		$refPowiazaniaToPracownicy = ACL::getRefTable('default_db/BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA/BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA',
@@ -235,45 +275,66 @@ join `{$refPowiazaniaToPracownicy}` on `BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZAN
 where `REMOTE_PRIMARY_KEY` = '{$this->SOURCE['ID']}'";
 where `REMOTE_PRIMARY_KEY` = '{$this->SOURCE['ID']}'";
 		$result = DB::getPDO()->fetchAll($query);
 		$result = DB::getPDO()->fetchAll($query);
 
 
-		if (!$result) echo '<tr><td align="center" colspan="6">Brak znalezionych powiązań</td></tr>';
+		if (!$result) echo '<tr><td align="center" colspan="7">Brak znalezionych powiązań</td></tr>';
 		else {
 		else {
 	                foreach ($result as $row) {
 	                foreach ($result as $row) {
 				$query = "select count(*) from `{$refPowiazaniaToPracownicy}` where `PRIMARY_KEY` = '{$row['ID']}'";
 				$query = "select count(*) from `{$refPowiazaniaToPracownicy}` where `PRIMARY_KEY` = '{$row['ID']}'";
 				$count = DB::getPDO()->fetchValue($query);
 				$count = DB::getPDO()->fetchValue($query);
 ?>
 ?>
-            <tr>
-              <td align="right"><?=$row['ID']?></td>
-              <td><?=$row['L_APPOITMENT_INFO']?></td>
-              <td><?=$row['BI_analiza_depth']?></td>
-              <td><?=$row['FILE_STATUS']?></td>
-              <td><?=$row['FILE_STATUS_info']?></td>
-              <td><?=($count > 1 ? 'Nie' : 'Tak')?></td>
-            </tr>
+          <tr>
+            <td align="right"><?=$row['ID']?></td>
+            <td><?=$row['L_APPOITMENT_INFO']?></td>
+            <td><?=$row['BI_analiza_depth']?></td>
+            <td><?=$row['FILE_STATUS']?></td>
+            <td><?=$row['FILE_STATUS_info']?></td>
+            <td><?=($count > 1 ? 'Nie' : 'Tak')?></td>
+            <td><?=UI::hButtonPost("Pokaż w tabeli", ['class' => 'btn-info btn-xs', 'action' => "index.php?_route=ViewTableAjax&namespace=default_db/BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA&ff_ID={$row['ID']}", 'data' > ['f_ID' => $row['ID']]])?></td>
+          </tr>
 <?php
 <?php
 			}
 			}
 ?>
 ?>
-            </tr>
-          </tbody>
-        </table>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+  </div>
+  <div class="form-group">
+    <div class="col-sm-12">
+      <h4>Dodaj nowe zadanie generowania powiazań dla tego pracownika</h4>
+    </div>
+  </div>
+  <form class="form-horizontal" method="post">
+    <div class="form-group">
+      <label class="col-sm-4 control-label">Głębokość poszukiwań (liczba rekurencji)</label>
+      <div class="col-sm-1">
+        <input type="number" class="form-control" name="depth" data-bind="value:replyNumber" min="1" max="9" value="6" required/>
       </div>
       </div>
     </div>
     </div>
     <div class="form-group">
     <div class="form-group">
-      <div class="col-sm-12">
-        <h4>Dodaj nowe zadanie generowania powiazań dla tego pracownika</h4>
-        <div class="containter" style="text-align:center">
-          TODO
-        </div>
+      <label class="col-sm-4 control-label">Adnotacje</label>
+      <div class="col-sm-4">
+        <input type="text" class="form-control" name="info" value="Indywidualnie dla <?=htmlspecialchars($pracownik['imiona'] . " " . $pracownik['nazwisko'])?>" required/>
+      </div>
+    </div>
+    <div class="form-group">
+      <label class="col-sm-4 control-label">Odśwież cache (wymagane w przypadku, gdy dokonano dowolnych zmian w tabelach pracowników/kontrahentów)</label>
+      <div class="col-sm-1">
+        <select name="reloadCache" class="form-control">
+          <option value="on">Tak</option>
+          <option value="off" selected>Nie</option>
+        </select>
       </div>
       </div>
     </div>
     </div>
-<!--    <div class="form-group">
+    <div class="form-group">
       <div class="col-sm-12">
       <div class="col-sm-12">
         <div class="containter" style="text-align:center">
         <div class="containter" style="text-align:center">
           <button type="submit" class="btn btn-primary" name="action" value="initialize">Generuj</button>
           <button type="submit" class="btn btn-primary" name="action" value="initialize">Generuj</button>
           <a href="<?=$this->REFERER?>" class="btn btn-default">Powrót</a>
           <a href="<?=$this->REFERER?>" class="btn btn-default">Powrót</a>
         </div>
         </div>
       </div>
       </div>
-    </div>-->
+    </div>
     <input type="hidden" name="REFERER" value="<?=$this->REFERER?>"/>
     <input type="hidden" name="REFERER" value="<?=$this->REFERER?>"/>
+    <input type="hidden" name="prID[]" value="<?=$pracownik['ID']?>">
   </form>
   </form>
 </div>
 </div>
 
 
@@ -545,18 +606,18 @@ Router::getRoute("UrlAction_BiAuditGenerate")->' . $function . ';
 				$success = false;
 				$success = false;
 				$sqlArr = [];
 				$sqlArr = [];
 				if (file_exists($generatePowiazaniaResultFile)) {
 				if (file_exists($generatePowiazaniaResultFile)) {
-					$xmlFile = "{$tasksDirLocation}/generatePowiazania-{$row['ID']}.xml";
-					if (file_exists($xmlFile)) {
-						if (filesize($xmlFile)) {
-							$generatePowiazaniaResult = file_get_contents($generatePowiazaniaResultFile);
-							if ($generatePowiazaniaResult == "ok") {
+					$generatePowiazaniaResult = file_get_contents($generatePowiazaniaResultFile);
+					if ($generatePowiazaniaResult == "ok") {
+						$xmlFile = "{$tasksDirLocation}/generatePowiazania-{$row['ID']}.xml";
+						if (file_exists($xmlFile)) {
+							if (filesize($xmlFile)) {
 								$powiazanieDirLocation = $this->getDirectory('BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA', $row['ID']);
 								$powiazanieDirLocation = $this->getDirectory('BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA', $row['ID']);
 								if (!file_exists($powiazanieDirLocation)) mkdir($powiazanieDirLocation, 0777, false);
 								if (!file_exists($powiazanieDirLocation)) mkdir($powiazanieDirLocation, 0777, false);
 								if (!file_exists($powiazanieDirLocation)) $error = "Nie udało się wgrać pliku xml - nie można utworzyć katalogu dla rekordu";
 								if (!file_exists($powiazanieDirLocation)) $error = "Nie udało się wgrać pliku xml - nie można utworzyć katalogu dla rekordu";
 								else $success = true;
 								else $success = true;
-							} 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";
+							} else $error = "Wystąpił nieznany błąd - plk xml został wygenerowany niepoprawnie";
+						} else $error = "Wystąpił nienzany błąd - nie znaleziono pliku xml";
+					} else $error = "Wystąpił błąd podczas generowania powiązań ({$generatePowiazaniaResult})";
 				} elseif (file_exists($generatePowiazaniaPidFile)) {
 				} elseif (file_exists($generatePowiazaniaPidFile)) {
 					$pid = file_get_contents($generatePowiazaniaPidFile);
 					$pid = file_get_contents($generatePowiazaniaPidFile);
 					$processRunning = trim(shell_exec("ps -p {$pid} -o command | grep -v '^COMMAND$'"));
 					$processRunning = trim(shell_exec("ps -p {$pid} -o command | grep -v '^COMMAND$'"));