diff --git a/app/Http/Controllers/ProjectoDatacontroller.php b/app/Http/Controllers/ProjectoDatacontroller.php index d9efca35..2f45797e 100755 --- a/app/Http/Controllers/ProjectoDatacontroller.php +++ b/app/Http/Controllers/ProjectoDatacontroller.php @@ -301,7 +301,6 @@ public function showAmbitDetailsProjectHistory($equipmentStatus, $projectID, $eq ->get(); - // Cria uma coleção para armazenar todas as tarefas, concluídas e não concluídas $receiveAllTasksHistiory = collect(); @@ -339,7 +338,6 @@ public function showAmbitDetailsProjectHistory($equipmentStatus, $projectID, $eq $taskHistory->image_paths = []; } - if (!is_null($taskHistory->entry_date) && !is_null($taskHistory->departure_date)) { // Converte para instâncias de Carbon $entryDate = \Carbon\Carbon::parse($taskHistory->entry_date); @@ -372,8 +370,6 @@ public function showAmbitDetailsProjectHistory($equipmentStatus, $projectID, $eq $receiveAllTasksHistiory->push($taskHistory); } - - // Agrupa e ordena as tarefas concluídas por elemental_tasks_id e departure_date $receiveAllTasksHistiory = $receiveAllTasksHistiory->groupBy(function ($item) { return $item->elemental_tasks_id; @@ -391,13 +387,6 @@ public function showAmbitDetailsProjectHistory($equipmentStatus, $projectID, $eq ]; }); - // ->map(function ($group) { - // return [ - // 'latest' => $group->sortByDesc('departure_date')->first(), - // 'history' => $group->sortByDesc('departure_date')->slice(1)->values() - // ]; - // }); - // Adiciona as tarefas não concluídas à coleção principal $incompleteTasks = $equipmentTasksIds->diff($completedTasksHistory->pluck('elemental_tasks_id')); @@ -415,6 +404,8 @@ public function showAmbitDetailsProjectHistory($equipmentStatus, $projectID, $eq 'formatted_answers' => [], 'entry_date' => 'N/A', 'runtime' => 'N/A', + 'statusHistory' => 'N/A', + 'typeStatusHistory' => 'N/A', 'elementalTask' => (object) [ 'elemental_tasks_code' => $elementalTask ? $elementalTask->elemental_tasks_code : null, 'elemental_tasks_description' => $elementalTask ? $elementalTask->elemental_tasks_description : null @@ -424,7 +415,7 @@ public function showAmbitDetailsProjectHistory($equipmentStatus, $projectID, $eq ]); } - // dd($receiveAllTasksHistiory); + // dd($receiveAllTasksHistiory); //recebe normalmente, porem os checkbox nao conseguem buscar valor, execepto o ultimo dado. diff --git a/app/Livewire/Execução/EquipmentsDashboard.php b/app/Livewire/Execução/EquipmentsDashboard.php index a9fe6d1b..b37c18b3 100755 --- a/app/Livewire/Execução/EquipmentsDashboard.php +++ b/app/Livewire/Execução/EquipmentsDashboard.php @@ -71,8 +71,8 @@ public function showPercentageEquipments() { // Disparar um evento com os dados atualizados $this->dispatch('refreshPercentageEquipments', [ - 'totalEquipmentsCount' => $this->totalEquipmentsCount, - 'unstarted' => $this->unstarted, + 'totalEquipmentsCount' => $this->totalEquipmentsCount, + 'unstarted' => $this->unstarted, 'inProgress' => $this->inProgress, 'toApprove' => $this->toApprove, 'completed' => $this->completed, @@ -83,7 +83,6 @@ public function showPercentageEquipments() ]); } - public function refreshDataEquipments($datasProject) { // Inicializa a zero o contador para toda a vez que atualizar. @@ -95,7 +94,7 @@ public function refreshDataEquipments($datasProject) $this->equivalentInProgress = 0; $this->equivalentUnstarted = 0; - //recebe o total de equipamentos da Obra. + // 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 @@ -104,54 +103,56 @@ public function refreshDataEquipments($datasProject) $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) + // 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 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 - + // Verifica se o equipamento está concluído + if ( + ControlEquipmentWorkstation::where('equipmentWorkHistorys_id', $equipment->equipmentWorkHistorys_id) ->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 + && EquipmentWorkHistory::where('equipmentWorkHistorys_id', $equipment->equipmentWorkHistorys_id) + ->where('equipment_status_project', 2) + ->exists() + ) { $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()) { + // Verifica se o equipamento está para aprovar + elseif ( + EquipmentWorkHistory::where('equipmentWorkHistorys_id', $equipment->equipmentWorkHistorys_id) + ->where('equipment_status_project', 1) + ->exists() + ) { + $this->toApprove++; + } + // Verifica se o equipamento está em progresso + elseif ( + ControlEquipmentWorkstation::where('equipmentWorkHistorys_id', $equipment->equipmentWorkHistorys_id) + ->exists() + ) { $this->inProgress++; $this->equivalentInProgress += $equipmentCounts[$equipment->equipment_id]; - } else { + } + // Verifica se o equipamento está por iniciar + elseif ( + EquipmentWorkHistory::where('equipmentWorkHistorys_id', $equipment->equipmentWorkHistorys_id) + ->where('equipment_status_project', 0) + ->exists() + && !ControlEquipmentWorkstation::where('equipmentWorkHistorys_id', $equipment->equipmentWorkHistorys_id) + ->exists() + ) { $this->unstarted++; $this->equivalentUnstarted += $equipmentCounts[$equipment->equipment_id]; } } - // Busca o valor total de todas as ocorrências criadas na variavel equipmentCounts + // Busca o valor total de todas as ocorrências criadas na variável equipmentCounts $this->totalEquivalentEquipment = array_sum($equipmentCounts); - - $this->completed1 = collect($this->completed1); } diff --git a/app/Livewire/Execução/TasksDashboard copy.php b/app/Livewire/Execução/TasksDashboard copy.php new file mode 100755 index 00000000..e0fb26b9 --- /dev/null +++ b/app/Livewire/Execução/TasksDashboard copy.php @@ -0,0 +1,152 @@ +receiveTasksRepository = app(ReceiveTasksRepository::class); + + // // Agora você pode usar o repositório + // $this->receiveElementalTasks = $this->receiveTasksRepository->getElementalTasks(); + // $this->receiveAllFurtherTasks = $this->receiveTasksRepository->getFurtherTasks(); + // } + + public function updateTimeGrafics() + { + // Data atual + $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', [ + 'receiveElementalTasks' => $this->receiveElementalTasks, + 'receiveElementalTasksAll' => $this->receiveElementalTasksAll, + ]); + } + + // Graficos de porcentagem entre o valor atual de finalizadas com valor final de quantas faltam + public function showPercentageElementalTasks() + { + // Disparar um evento com os dados atualizados + $this->dispatch('refreshPercentageElementalTasks', [ + 'receiveElementalTasks' => $this->receiveElementalTasks, + 'receiveElementalTasksAll' => $this->receiveElementalTasksAll, + 'countElementalTasksAll' => $this->countElementalTasksAll + ]); + } + + public function mount($datasProject) + { + $this->datasProject = $datasProject; + + // Obter todos os equipamentos relacionados ao projeto + $receiveEquipmentsProject = EquipmentWorkHistory::where('company_projects_id', $datasProject->company_projects_id)->get(); + + $elementalTasks = collect(); + // $furtherTasks = collect(); + + // Total de tarefas na Obra. + $elementalTasksCountsAll = []; + + foreach ($receiveEquipmentsProject as $equipment) { + // Obter todas as OrderEquipmentTasks relacionadas a este equipamento + $relatedTasks = OrderEquipmentTasks::where('equipmentWorkHistorys_id', $equipment->equipmentWorkHistorys_id)->get(); + + // Filtrar e armazenar os IDs únicos de elemental_tasks_id e further_tasks_id + $elementalTasks = $elementalTasks->merge($relatedTasks->whereNotNull('elemental_tasks_id')->pluck('elemental_tasks_id'))->unique(); + + // $furtherTasks = $furtherTasks->merge($relatedTasks->whereNotNull('further_tasks_id')->pluck('further_tasks_id'))->unique(); + // Agrupar as tasks relacionadas por elemental_tasks_id e contar o número de ocorrências + $groupedTasks = $relatedTasks->whereNotNull('elemental_tasks_id')->groupBy('elemental_tasks_id'); + + foreach ($groupedTasks as $taskId => $tasksGroup) { + if (isset($elementalTasksCountsAll[$taskId])) { + $elementalTasksCountsAll[$taskId] += count($tasksGroup); + } else { + $elementalTasksCountsAll[$taskId] = count($tasksGroup); + } + } + } + //Neste ponto parece esta correto a quantidade de tarefas, pois nenhuma tarefa passa do maximo de equipamentos. + $this->receiveElementalTasksAll = $elementalTasksCountsAll; + + // Contar o número de ocorrências de cada ID na tabela ControlEquipmentWorkstation + // $furtherTasksCount1 = ControlEquipmentWorkstation::whereIn('further_tasks_id', $furtherTasks)->get()->countBy('further_tasks_id'); + + // Filtrar as associações de tarefas por equipmentWorkHistorys_id que são do projeto específico + $tasksCount = ControlEquipmentWorkstation::whereIn('elemental_tasks_id', $elementalTasks) + ->whereIn('equipmentWorkHistorys_id', $receiveEquipmentsProject->pluck('equipmentWorkHistorys_id')) // Garante que estamos contando apenas para o projeto específico + ->get(['equipmentWorkHistorys_id', 'elemental_tasks_id']) + ->groupBy('elemental_tasks_id') + ->map(function ($group) { + return $group->unique('equipmentWorkHistorys_id')->count(); + }); + + $newArray = []; + + foreach ($tasksCount as $taskId => $count) { + $task = ElementalTasks::find($taskId); + if ($task) { + $newArray[$task->elemental_tasks_code] = $count; + } + } + + $this->receiveElementalTasks = $newArray; + + $newArray1 = []; + + foreach ($this->receiveElementalTasksAll as $taskId1 => $count) { + $task1 = ElementalTasks::find($taskId1); + if ($task1) { + $newArray1[$task1->elemental_tasks_code] = $count; + } + } + + // Agora, $newArray contém a contagem de tasks por elemental_tasks_code + $this->receiveElementalTasksAll = $newArray1; + + + // Criar o contador para receber o valor total. + $this->countElementalTasksAll = array_sum($this->receiveElementalTasksAll); + + + $this->lastUpdated = now()->format('Y-m-d H:i'); + } + + + public function refreshDataEquipments($datasProject) + { + } + + public function render() + { + return view('livewire.execução.tasks-dashboard'); + } +} diff --git a/app/Livewire/Execução/TasksDashboard.php b/app/Livewire/Execução/TasksDashboard.php index cbd422c6..ed5c4073 100755 --- a/app/Livewire/Execução/TasksDashboard.php +++ b/app/Livewire/Execução/TasksDashboard.php @@ -2,92 +2,61 @@ namespace App\Livewire\Execução; -use App\Models\Equipment; use App\Models\EquipmentWorkHistory; use App\Models\OrderEquipmentTasks; use App\Models\ControlEquipmentWorkstation; use App\Models\ElementalTasks; - use Livewire\Component; -use App\Repositories\ReceiveTasksRepository; - class TasksDashboard extends Component { - public $datasProject; - // protected $receiveTasksRepository; - - public $receiveElementalTasks; // Recebe todas as acoes ja feitas atualmente por tarefa - public $receiveElementalTasksAll; // Recebe o total de tarefas que vamos fazer - - public $countElementalTasks; + public $receiveElementalTasks; + public $receiveElementalTasksAll; public $countElementalTasksAll; + + public $datasProject; public $lastUpdated; - // Por enquanto nao ira usar, vamos deixar - // public $receiveAllFurtherTasks; - - - - // Deveria funcionar para receber o Repositorio. - // public function initialize() - // { - // // Injetar o repositório - // $this->receiveTasksRepository = app(ReceiveTasksRepository::class); - - // // Agora você pode usar o repositório - // $this->receiveElementalTasks = $this->receiveTasksRepository->getElementalTasks(); - // $this->receiveAllFurtherTasks = $this->receiveTasksRepository->getFurtherTasks(); - // } - - public function updateTimeGrafics() - { - // Data atual - $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', [ - 'receiveElementalTasks' => $this->receiveElementalTasks, - 'receiveElementalTasksAll' => $this->receiveElementalTasksAll, - ]); - } - - // Graficos de porcentagem entre o valor atual de finalizadas com valor final de quantas faltam - public function showPercentageElementalTasks() - { - // Disparar um evento com os dados atualizados - $this->dispatch('refreshPercentageElementalTasks', [ - 'receiveElementalTasks' => $this->receiveElementalTasks, - 'receiveElementalTasksAll' => $this->receiveElementalTasksAll, - 'countElementalTasksAll' => $this->countElementalTasksAll - ]); - } - public function mount($datasProject) { $this->datasProject = $datasProject; + $this->lastUpdated = now()->format('Y-m-d H:i'); - // Obter todos os equipamentos relacionados ao projeto + // chama a funcao e envia a variavel datasProject recebido da view principal + $this->refreshDataEquipments($datasProject); + } + + public function refreshTaskGraph() + { + $this->lastUpdated = now()->format('Y-m-d H:i'); + + $this->refreshDataEquipments($this->datasProject); + + $this->dispatch('refreshDataTasks', [ + 'receiveElementalTasks' => $this->receiveElementalTasks, + 'receiveElementalTasksAll' => $this->receiveElementalTasksAll, + ]); + } + + public function showPercentageElementalTasks() + { + $this->dispatch('refreshPercentageElementalTasks', [ + 'receiveElementalTasks' => $this->receiveElementalTasks, + 'receiveElementalTasksAll' => $this->receiveElementalTasksAll, + 'countElementalTasksAll' => $this->countElementalTasksAll, + ]); + } + + public function refreshDataEquipments($datasProject) + { $receiveEquipmentsProject = EquipmentWorkHistory::where('company_projects_id', $datasProject->company_projects_id)->get(); $elementalTasks = collect(); - // $furtherTasks = collect(); - - // Total de tarefas na Obra. $elementalTasksCountsAll = []; foreach ($receiveEquipmentsProject as $equipment) { - // Obter todas as OrderEquipmentTasks relacionadas a este equipamento $relatedTasks = OrderEquipmentTasks::where('equipmentWorkHistorys_id', $equipment->equipmentWorkHistorys_id)->get(); - - // Filtrar e armazenar os IDs únicos de elemental_tasks_id e further_tasks_id $elementalTasks = $elementalTasks->merge($relatedTasks->whereNotNull('elemental_tasks_id')->pluck('elemental_tasks_id'))->unique(); - - // $furtherTasks = $furtherTasks->merge($relatedTasks->whereNotNull('further_tasks_id')->pluck('further_tasks_id'))->unique(); - // Agrupar as tasks relacionadas por elemental_tasks_id e contar o número de ocorrências $groupedTasks = $relatedTasks->whereNotNull('elemental_tasks_id')->groupBy('elemental_tasks_id'); foreach ($groupedTasks as $taskId => $tasksGroup) { @@ -98,15 +67,10 @@ public function mount($datasProject) } } } - //Neste ponto parece esta correto a quantidade de tarefas, pois nenhuma tarefa passa do maximo de equipamentos. + $this->receiveElementalTasksAll = $elementalTasksCountsAll; - - // Contar o número de ocorrências de cada ID na tabela ControlEquipmentWorkstation - // $furtherTasksCount1 = ControlEquipmentWorkstation::whereIn('further_tasks_id', $furtherTasks)->get()->countBy('further_tasks_id'); - - // Filtrar as associações de tarefas por equipmentWorkHistorys_id que são do projeto específico $tasksCount = ControlEquipmentWorkstation::whereIn('elemental_tasks_id', $elementalTasks) - ->whereIn('equipmentWorkHistorys_id', $receiveEquipmentsProject->pluck('equipmentWorkHistorys_id')) // Garante que estamos contando apenas para o projeto específico + ->whereIn('equipmentWorkHistorys_id', $receiveEquipmentsProject->pluck('equipmentWorkHistorys_id')) ->get(['equipmentWorkHistorys_id', 'elemental_tasks_id']) ->groupBy('elemental_tasks_id') ->map(function ($group) { @@ -114,39 +78,23 @@ public function mount($datasProject) }); $newArray = []; - foreach ($tasksCount as $taskId => $count) { $task = ElementalTasks::find($taskId); if ($task) { $newArray[$task->elemental_tasks_code] = $count; } } - $this->receiveElementalTasks = $newArray; $newArray1 = []; - foreach ($this->receiveElementalTasksAll as $taskId1 => $count) { $task1 = ElementalTasks::find($taskId1); if ($task1) { $newArray1[$task1->elemental_tasks_code] = $count; } } - - // Agora, $newArray contém a contagem de tasks por elemental_tasks_code $this->receiveElementalTasksAll = $newArray1; - - - // Criar o contador para receber o valor total. $this->countElementalTasksAll = array_sum($this->receiveElementalTasksAll); - - - $this->lastUpdated = now()->format('Y-m-d H:i'); - } - - - public function refreshDataEquipments($datasProject) - { } public function render() diff --git a/public/receiveImagesControlEquipmentWorkstation/2008_3810/img1.png b/public/receiveImagesControlEquipmentWorkstation/2008_3810/img1.png new file mode 100644 index 00000000..53803077 Binary files /dev/null and b/public/receiveImagesControlEquipmentWorkstation/2008_3810/img1.png differ diff --git a/public/receiveImagesControlEquipmentWorkstation/2008_3810/img2.png b/public/receiveImagesControlEquipmentWorkstation/2008_3810/img2.png new file mode 100644 index 00000000..f4a4e562 Binary files /dev/null and b/public/receiveImagesControlEquipmentWorkstation/2008_3810/img2.png differ diff --git a/public/receiveImagesControlEquipmentWorkstation/2008_3810/img3.png b/public/receiveImagesControlEquipmentWorkstation/2008_3810/img3.png new file mode 100644 index 00000000..937dbe21 Binary files /dev/null and b/public/receiveImagesControlEquipmentWorkstation/2008_3810/img3.png differ diff --git a/public/receiveImagesControlEquipmentWorkstation/2010_3810/img1.png b/public/receiveImagesControlEquipmentWorkstation/2010_3810/img1.png new file mode 100644 index 00000000..a44d0228 Binary files /dev/null and b/public/receiveImagesControlEquipmentWorkstation/2010_3810/img1.png differ diff --git a/public/receiveImagesControlEquipmentWorkstation/2010_3810/img2.png b/public/receiveImagesControlEquipmentWorkstation/2010_3810/img2.png new file mode 100644 index 00000000..d73869b1 Binary files /dev/null and b/public/receiveImagesControlEquipmentWorkstation/2010_3810/img2.png differ diff --git a/public/receiveImagesControlEquipmentWorkstation/2010_3810/img3.png b/public/receiveImagesControlEquipmentWorkstation/2010_3810/img3.png new file mode 100644 index 00000000..2ba3b2f1 Binary files /dev/null and b/public/receiveImagesControlEquipmentWorkstation/2010_3810/img3.png differ diff --git a/public/receiveImagesControlEquipmentWorkstation/2015_3810/img1.png b/public/receiveImagesControlEquipmentWorkstation/2015_3810/img1.png new file mode 100644 index 00000000..6ba7fbaa Binary files /dev/null and b/public/receiveImagesControlEquipmentWorkstation/2015_3810/img1.png differ diff --git a/public/receiveImagesControlEquipmentWorkstation/2015_3810/img2.png b/public/receiveImagesControlEquipmentWorkstation/2015_3810/img2.png new file mode 100644 index 00000000..ce227f91 Binary files /dev/null and b/public/receiveImagesControlEquipmentWorkstation/2015_3810/img2.png differ diff --git a/public/receiveImagesControlEquipmentWorkstation/2015_3810/img3.png b/public/receiveImagesControlEquipmentWorkstation/2015_3810/img3.png new file mode 100644 index 00000000..94029c41 Binary files /dev/null and b/public/receiveImagesControlEquipmentWorkstation/2015_3810/img3.png differ diff --git a/public/receiveImagesControlEquipmentWorkstation/2022_3808/img1.png b/public/receiveImagesControlEquipmentWorkstation/2022_3808/img1.png new file mode 100644 index 00000000..9f41d3a7 Binary files /dev/null and b/public/receiveImagesControlEquipmentWorkstation/2022_3808/img1.png differ diff --git a/public/receiveImagesControlEquipmentWorkstation/2022_3808/img2.png b/public/receiveImagesControlEquipmentWorkstation/2022_3808/img2.png new file mode 100644 index 00000000..a0a26ab5 Binary files /dev/null and b/public/receiveImagesControlEquipmentWorkstation/2022_3808/img2.png differ diff --git a/public/receiveImagesControlEquipmentWorkstation/2022_3808/img3.png b/public/receiveImagesControlEquipmentWorkstation/2022_3808/img3.png new file mode 100644 index 00000000..62b12cb3 Binary files /dev/null and b/public/receiveImagesControlEquipmentWorkstation/2022_3808/img3.png differ diff --git a/resources/views/components/elemental-tasks.blade.php b/resources/views/components/elemental-tasks.blade.php index ccbae650..28cc7b61 100644 --- a/resources/views/components/elemental-tasks.blade.php +++ b/resources/views/components/elemental-tasks.blade.php @@ -1,228 +1,217 @@ - - @if ($task_todo->elemental_tasks_id == 1) - -
Data:{{ $task_todo->entry_date }} |
-Tempo de execução: {{ $task_todo->runtime }}
- @endif -+ Data:{{ $task_todo->entry_date }} |
+Tempo de execução: + {{ $task_todo->runtime }}
+ @endif +