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 $toApprove;
|
|
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,
|
|
'toApprove' => $this->toApprove,
|
|
'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,
|
|
'toApprove' => $this->toApprove,
|
|
'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->toApprove = 0;
|
|
$this->unstarted = 0;
|
|
$this->equivalentCompleted = 0;
|
|
$this->equivalentInProgress = 0;
|
|
$this->equivalentUnstarted = 0;
|
|
|
|
//recebe o total de equipamentos da Obra.
|
|
$totalEquipments = EquipmentWorkHistory::where('company_projects_id', $datasProject->company_projects_id)->get();
|
|
|
|
// 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 - para saber o numero de tarefas que cada equipamento tem. (verificar se nao seria melhor colocar em um array)
|
|
$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 primiero se tem pelos menos o mesmo numeros de tarefas feitas em relacao a tarefas por fazer(apenas este metodo nao garante , pois nao distingue historico de tarefa distinta)
|
|
// Apenas apos a 2 verificacao quando equipment_status_project = 3 significa que foi apravado e concluido.
|
|
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
|
|
&& EquipmentWorkHistory::where('equipmentWorkHistorys_id',$equipment->equipmentWorkHistorys_id)
|
|
->where('equipment_status_project',3)
|
|
) {
|
|
|
|
// 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];
|
|
|
|
}
|
|
//Verica e devolve a quantidade de equipamentos para aprovar.
|
|
//Ao tentar descomentar os graficos de queijo somem.
|
|
// elseif (EquipmentWorkHistory::where('equipmentWorkHistorys_id',$equipment->equipmentWorkHistorys_id)->where('equipment_status_project',2)){
|
|
// $this->toApprove++;
|
|
// }
|
|
|
|
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');
|
|
}
|
|
}
|