163 lines
6.6 KiB
PHP
Executable File
163 lines
6.6 KiB
PHP
Executable File
<?php
|
|
|
|
namespace App\Livewire\Execução;
|
|
|
|
use App\Models\EquipmentWorkHistory;
|
|
use Livewire\Component;
|
|
use Livewire\Exceptions\PublicPropertyNotFoundException;
|
|
use App\Models\Equipment;
|
|
use App\Models\GeneralAttributesEquipment;
|
|
use App\Models\OrderEquipmentTasks;
|
|
use App\Models\ControlEquipmentWorkstation;
|
|
|
|
use Spatie\LaravelIgnition\Recorders\DumpRecorder\Dump;
|
|
|
|
class EquipmentsDashboard extends Component
|
|
{
|
|
public $totalEquipmentsCount;
|
|
public $unstarted;
|
|
public $inProgress;
|
|
public $completed;
|
|
public $completed1;
|
|
public $totalEquivalentEquipment;
|
|
public $equivalentUnstarted;
|
|
public $equivalentInProgress;
|
|
public $equivalentCompleted;
|
|
|
|
public $datasProject;
|
|
public $lastUpdated;
|
|
|
|
|
|
public function mount($datasProject)
|
|
{
|
|
$this->datasProject = $datasProject;
|
|
|
|
$this->lastUpdated = now()->format('Y-m-d H:i');
|
|
|
|
|
|
// chama a funcao e envia a variavel datasProject recebido da view principal
|
|
$this->refreshDataEquipments($datasProject);
|
|
}
|
|
|
|
public function updateTimeGrafics()
|
|
{
|
|
// $this->lastUpdated = now()->toDateTimeString();
|
|
$this->lastUpdated = now()->format('Y-m-d H:i');
|
|
|
|
|
|
// Chame o método para atualizar os dados dos gráficos
|
|
$this->refreshDataEquipments($this->datasProject);
|
|
|
|
// Disparar um evento com os dados atualizados
|
|
$this->dispatch('refreshData', [
|
|
'totalEquipmentsCount' => $this->totalEquipmentsCount,
|
|
'unstarted' => $this->unstarted,
|
|
'inProgress' => $this->inProgress,
|
|
'completed' => $this->completed,
|
|
'totalEquivalentEquipment' => $this->totalEquivalentEquipment,
|
|
'equivalentUnstarted' => $this->equivalentUnstarted,
|
|
'equivalentInProgress' => $this->equivalentInProgress,
|
|
'equivalentCompleted' => $this->equivalentCompleted,
|
|
]);
|
|
}
|
|
|
|
// Por tipo de equipamento,
|
|
|
|
// Por Fabrica
|
|
|
|
//Porcentagem
|
|
public function showPercentageEquipments()
|
|
{
|
|
// Disparar um evento com os dados atualizados
|
|
$this->dispatch('refreshPercentageEquipments', [
|
|
'totalEquipmentsCount' => $this->totalEquipmentsCount,
|
|
'unstarted' => $this->unstarted,
|
|
'inProgress' => $this->inProgress,
|
|
'completed' => $this->completed,
|
|
'totalEquivalentEquipment' => $this->totalEquivalentEquipment,
|
|
'equivalentUnstarted' => $this->equivalentUnstarted,
|
|
'equivalentInProgress' => $this->equivalentInProgress,
|
|
'equivalentCompleted' => $this->equivalentCompleted,
|
|
]);
|
|
}
|
|
|
|
|
|
public function refreshDataEquipments($datasProject)
|
|
{
|
|
|
|
// Inicializa a zero o contador para toda a vez que atualizar.
|
|
$this->completed = 0;
|
|
$this->inProgress = 0;
|
|
$this->unstarted = 0;
|
|
$this->equivalentCompleted = 0;
|
|
$this->equivalentInProgress = 0;
|
|
$this->equivalentUnstarted = 0;
|
|
|
|
|
|
$totalEquipments = EquipmentWorkHistory::where('company_projects_id', $datasProject->company_projects_id)->get();
|
|
|
|
// $detalsEquipmentWorkProject = EquipmentWorkHistory::where('equipment_id', $equipmentID)
|
|
// ->where('company_projects_id', $projectID)->first();
|
|
|
|
// Busca o valor total de todos os equipamentos encontrados
|
|
$this->totalEquipmentsCount = $totalEquipments->count();
|
|
|
|
$equipmentCounts = [];
|
|
|
|
foreach ($totalEquipments as $equipment) {
|
|
|
|
// Conta quantas vezes o equipamento aparece em OrderEquipmentTasks
|
|
$tasksCount = OrderEquipmentTasks::where('equipmentWorkHistorys_id', $equipment->equipmentWorkHistorys_id)->count();
|
|
|
|
// ira receber varios dados para o array sendo array[key:equipment_id,valor:quantidade de vezes que o equipment_id se repete na tabela 'OrderEquipmentTasks']
|
|
$equipmentCounts[$equipment->equipment_id] = $tasksCount;
|
|
|
|
// Verifica quantos dados tem para o mesmo equipamento, resumindo quantas tarefas ja vez e seu circuito ao longo de seu Ambito
|
|
$controlCount = ControlEquipmentWorkstation::where('equipmentWorkHistorys_id', $equipment->equipmentWorkHistorys_id)->count();
|
|
|
|
// Verifica inicialmente se a quantido de vezes que tal equipamento apacere na ControlEquipmentWorkstation e o mesmo numero de vezes que aparece na tabela : OrderEquipmentTasks
|
|
// Isto para ver se o ciclo foi correto sem retornos se os 2 valores forem iguais significa que o equipamento foi concluido.
|
|
// if (
|
|
// $controlCount >= $tasksCount && ControlEquipmentWorkstation::where('equipment_id', $equipment->equipment_id)
|
|
// // apos receber ambos os numeros se as colunas 'entry_date' e 'departure_date' forem diferente de Null significa que o equipamento foi concluido
|
|
// ->whereNotNull('entry_date')
|
|
// ->whereNotNull('departure_date')
|
|
// ->count() >= $tasksCount
|
|
// ) {
|
|
|
|
if (ControlEquipmentWorkstation::where('equipmentWorkHistorys_id', $equipment->equipmentWorkHistorys_id)
|
|
// apos receber ambos os numeros se as colunas 'entry_date' e 'departure_date' forem diferente de Null significa que o equipamento foi concluido
|
|
|
|
->whereNotNull('id_workstations')
|
|
->whereNotNull('entry_date')
|
|
->whereNotNull('departure_date')
|
|
->count() >= $tasksCount
|
|
) {
|
|
|
|
// se o equipamento foi considerado concluido, conta +1 para o completed e o equivalentCompleted busca no array equipmentCounts, quando a key for igual ao equipment_id atual e conta com + os valores da key encontrada
|
|
$this->completed++;
|
|
|
|
$this->completed1[] = $equipment->equipment_id; // Adiciona o equipment_id ao array
|
|
|
|
$this->equivalentCompleted += $equipmentCounts[$equipment->equipment_id];
|
|
} elseif (ControlEquipmentWorkstation::where('equipmentWorkHistorys_id', $equipment->equipmentWorkHistorys_id)->exists()) {
|
|
$this->inProgress++;
|
|
$this->equivalentInProgress += $equipmentCounts[$equipment->equipment_id];
|
|
} else {
|
|
$this->unstarted++;
|
|
$this->equivalentUnstarted += $equipmentCounts[$equipment->equipment_id];
|
|
}
|
|
}
|
|
// Busca o valor total de todas as ocorrências criadas na variavel equipmentCounts
|
|
$this->totalEquivalentEquipment = array_sum($equipmentCounts);
|
|
|
|
$this->completed1 = collect($this->completed1);
|
|
}
|
|
|
|
|
|
public function render()
|
|
{
|
|
return view('livewire.execução.equipments-dashboard');
|
|
}
|
|
}
|