diff --git a/app/Http/Controllers/WorkstationsJobsController.php b/app/Http/Controllers/WorkstationsJobsController.php index 0f7481da..d34da6f1 100644 --- a/app/Http/Controllers/WorkstationsJobsController.php +++ b/app/Http/Controllers/WorkstationsJobsController.php @@ -16,7 +16,8 @@ class WorkstationsJobsController extends Controller { public function receiveAnswersEquipment(Request $request) - { + { + // Primeiro ele deve criar a associação entre id atual do control + perguntas e respostas $receiveAnswersElementalTasks = new workstationsTaskAnswers; $receiveAnswersElementalTasks->control_equipment_workstation_id = $request->control_equipment_workstationid; @@ -49,7 +50,7 @@ public function receiveAnswersEquipment(Request $request) // Armazenando a string JSON no banco de dados $receiveAnswersElementalTasks->answer_json = $jsonString; - $receiveAnswersElementalTasks->save(); + // $receiveAnswersElementalTasks->save(); // update departure_date value $receiveDataControlWs = ControlEquipmentWorkstation::find($request->control_equipment_workstationid); @@ -92,9 +93,60 @@ public function receiveAnswersEquipment(Request $request) $elemental_tasks_id = null; $further_tasks_id = $next_todo; } - //Se a proxima WS for igual a atual deve criar dados para a ws - if ($recebeDataControlId->id_workstations == $next_workstation) { + // Para criar a divisao do equipamento em entre compo e Obturador + if ($receiveDataControlWs->elemental_tasks_id == 5 || $receiveDataControlWs->elemental_tasks_id == 6) { + $nextEquipmentTask1 = DB::select(" + INSERT INTO control_equipment_workstation + (equipment_id, id_workstations, elemental_tasks_id, further_tasks_id, equipment_comments_id, entry_date, departure_date) + VALUES + (:equipment_id,NULL,8,:further_tasks_id,NULL,NULL,NULL) + ", [ + 'equipment_id' => $receiveDataEquipment->equipment_id, + 'further_tasks_id' => $further_tasks_id + ]); + + $nextEquipmentTask2 = DB::select(" + INSERT INTO control_equipment_workstation + (equipment_id, id_workstations, elemental_tasks_id, further_tasks_id, equipment_comments_id, entry_date, departure_date) + VALUES + (:equipment_id,NULL,9,:further_tasks_id,NULL,NULL,NULL) + ", [ + 'equipment_id' => $receiveDataEquipment->equipment_id, + 'further_tasks_id' => $further_tasks_id + ]); + // Equipamento separado em 2 corpo/ Obturador + return redirect()->route('enterWorkstation'); + } + + // Quando concluir as tarefas 8 e 9 ele apenas deve + else if ($receiveDataControlWs->elemental_tasks_id == 8 || $receiveDataControlWs->elemental_tasks_id == 9) { + // Verifique se já existem registros na tabela control_equipment_workstation + $existingRecords = DB::table('control_equipment_workstation') + ->where('equipment_id', $receiveDataControlWs->equipment_id) + ->whereIn('elemental_tasks_id', [8, 9]) + ->whereNotNull('departure_date') + ->get(); + + // Verifique se há pelo menos dois registros que atendem às condições + if ($existingRecords->count() >= 2) { + // Crie um novo registro com elemental_tasks_id igual a 10 + $nextEquipmentTask3 = DB::table('control_equipment_workstation')->insertGetId([ + 'equipment_id' => $receiveDataControlWs->equipment_id, + 'id_workstations' => NULL, + 'elemental_tasks_id' => 10, + 'further_tasks_id' => $further_tasks_id, + 'equipment_comments_id' => NULL, + 'entry_date' => NULL, + 'departure_date' => NULL, + ]); + } + + return redirect()->route('enterWorkstation'); + } + + //Se a proxima WS for igual a atual deve criar dados para a ws + else if ($recebeDataControlId->id_workstations == $next_workstation) { $nextEquipmentTask = DB::select(" INSERT INTO control_equipment_workstation (equipment_id, id_workstations, elemental_tasks_id, further_tasks_id, equipment_comments_id, entry_date, departure_date) @@ -106,6 +158,7 @@ public function receiveAnswersEquipment(Request $request) 'elemental_tasks_id' => $elemental_tasks_id, 'further_tasks_id' => $further_tasks_id ]); + $lastInsertedId = DB::getPdo()->lastInsertId(); return view('workstations.workstations', [ @@ -115,10 +168,10 @@ public function receiveAnswersEquipment(Request $request) 'task_todo' => $next_todo ]); // Se verificar que a proxima tarefa e Null ele deve apenas voltar ao start - } else if($next_todo == null){ - return view('workstations.start'); - } - else { + } else if ($next_todo == null) { + + return redirect()->route('enterWorkstation'); + } else { $nextEquipmentTask = DB::select(" INSERT INTO control_equipment_workstation (equipment_id, id_workstations, elemental_tasks_id, further_tasks_id, equipment_comments_id, entry_date, departure_date) @@ -130,21 +183,73 @@ public function receiveAnswersEquipment(Request $request) 'further_tasks_id' => $further_tasks_id ]); - return view('workstations.start'); + return redirect()->route('enterWorkstation'); } } // Ao selecionar o equipamento para se inicializar a tarefa deve mostrar os dados relacionados. public function getEquipmentData($equipment_id) { //vai receber o email atual, no caso o da workstation que se encontra - $userEmail = Auth::user()->email; + $userEmail = Auth::user(); + + // Busca os dados da Ws com base no Login + $findDataWs = ConstructionWorkstation::where('name_workstations', $userEmail->user_name)->first(); + + // Recebe os dados do Equipamento $receiveDataEquipment = Equipment::where('equipment_id', $equipment_id)->first(); - //Calling the MySQL procedure tthat will return a table with two columns and one row + // Busca as tarefas do Equipamento a serem feitas + $equipmentTasks = DB::table('users as u') + ->join('construction_workstations as cw', 'u.user_name', '=', 'cw.name_workstations') + ->join('workstations_association_tasks as wat', 'cw.id_workstations', '=', 'wat.id_workstations') + ->join('equipments as e', 'wat.company_projects_id', '=', 'e.company_projects_id') + ->join('ordered_equipment_tasks as oet', 'e.equipment_id', '=', 'oet.equipment_id') + ->where('u.email', $userEmail->email) + ->select('e.equipment_id', 'e.equipment_tag', DB::raw('GROUP_CONCAT(DISTINCT COALESCE(oet.elemental_tasks_id, oet.further_tasks_id) ORDER BY oet.execution_order) AS equipment_all_tasks')) + ->groupBy('e.equipment_id', 'e.equipment_tag') + ->orderBy('e.equipment_id', 'ASC') + ->get(); - //cria a nova linha - $equipmentData = DB::select('CALL ManageEquipmentTasks(?, ?)', [$userEmail, $equipment_id]); + //Busca as tarefas que podem ser feitas pela WS Atual a partir do Email + $userTasks = DB::table('users as u') + ->join('construction_workstations as cw', 'u.user_name', '=', 'cw.name_workstations') + ->join('workstations_association_tasks as wat', 'cw.id_workstations', '=', 'wat.id_workstations') + ->where('u.email', $userEmail->email) + ->select('cw.id_workstations', 'cw.name_workstations', DB::raw('GROUP_CONCAT(COALESCE(wat.elemental_tasks_id, wat.further_tasks_id)) AS all_tasks')) + ->groupBy('cw.id_workstations', 'cw.name_workstations') + ->get(); + + // Convertendo as tarefas do usuário em um array + $tasksArray = explode(',', $userTasks->pluck('all_tasks')->first()); + + $controlEquipmentWorkstation = ControlEquipmentWorkstation::where('equipment_id', $receiveDataEquipment->equipment_id) + ->whereIn('elemental_tasks_id', $tasksArray) + ->whereNull('id_workstations') + ->whereNull('entry_date') + ->whereNull('departure_date') + ->first(); + + // Se encontrar um dado que satisfaca as verificacoes acima deve implementar a tarefa para esta WS. + if ($controlEquipmentWorkstation) { + + $controlEquipmentWorkstation->id_workstations = $findDataWs->id_workstations; + $controlEquipmentWorkstation->entry_date = now(); + $controlEquipmentWorkstation->save(); + + $receiveDataElementalTask = ElementalTasks::find($controlEquipmentWorkstation->elemental_tasks_id); + + //Returning the values to a view "values" + return view('workstations.workstations', [ + 'receiveDataElementalTask' => $receiveDataElementalTask, + 'receiveDataEquipment' => $receiveDataEquipment, + 'control_ew_id' => $controlEquipmentWorkstation->control_equipment_workstation_id, + 'task_todo' => $controlEquipmentWorkstation->elemental_tasks_id + ]); + } else + + //cria a nova linha + $equipmentData = DB::select('CALL ManageEquipmentTasks(?, ?)', [$userEmail->email, $equipment_id]); // //Saving the values to a variable if (count($equipmentData) > 0) { @@ -156,10 +261,32 @@ public function getEquipmentData($equipment_id) $task_todo = null; } + // Recebe os dados de cada Tarefa Elementar. + $recebeDataControlId = ControlEquipmentWorkstation::find($control_ew_id); - // Recebe os dados de cada Tarefa Elementar. - $receiveDataElementalTask = ElementalTasks::find($recebeDataControlId->elemental_tasks_id); + // Quando se da Refreash a pagina me devolve um erro de laravel pois o $recebeDataControlId e Null , pois claramente ja foi feita seus scripts e apos o refreash nao e feito denovo, sendo assim e melhor perder os dados criados e fazer novamente do que ter erros de lAravel :D + if ($recebeDataControlId == NULL) { + + $deleteDataControlWhereRefreashPage = ControlEquipmentWorkstation::where('id_workstations', $findDataWs->id_workstations) + ->where('equipment_id', $receiveDataEquipment->equipment_id) + ->whereNotNull('entry_date') + ->whereNull('departure_date') + ->first(); + // dd($deleteDataControlWhereRefreashPage); + + if ($deleteDataControlWhereRefreashPage) { + $deleteDataControlWhereRefreashPage->id_workstations = null; + $deleteDataControlWhereRefreashPage->entry_date = null; + $deleteDataControlWhereRefreashPage->departure_date = null; + $deleteDataControlWhereRefreashPage->save(); + } + return redirect()->route('enterWorkstation'); + + } else + + $receiveDataElementalTask = ElementalTasks::find($recebeDataControlId->elemental_tasks_id); + //Deve recupar os dados da tarefa Atual quando receber o control_id diff --git a/app/Http/Controllers/WorkstationsJobsController1.php b/app/Http/Controllers/WorkstationsJobsController1.php deleted file mode 100644 index 0b1c2cda..00000000 --- a/app/Http/Controllers/WorkstationsJobsController1.php +++ /dev/null @@ -1,224 +0,0 @@ -email; - - dd($userEmail); - - $equipmentsTodo = DB::table('ordered_equipment_tasks AS oet') - ->distinct() - ->select('oet.equipment_id', 'eq.equipment_tag') - ->join('equipments AS eq', 'oet.equipment_id', '=', 'eq.equipment_id') - ->join('workstations_association_tasks AS wat', 'oet.elemental_tasks_id', '=', 'wat.elemental_tasks_id') - ->whereIn('eq.company_projects_id', function ($query) use ($userEmail) { - $query->select('cw.company_projects_id') - ->from('construction_workstations AS cw') - ->join('users AS u', 'cw.name_workstations', '=', 'u.user_name') - ->where('u.email', $userEmail); - }) - ->whereIn('wat.id_workstations', function ($query) use ($userEmail) { - $query->select('cw.id_workstations') - ->from('construction_workstations AS cw') - ->join('users AS u', 'cw.name_workstations', '=', 'u.user_name') - ->where('u.email', $userEmail); - }) - ->where('oet.execution_order', '=', function ($query) { - $query->selectRaw('IFNULL(MIN(ot.execution_order), 1)') - ->from('ordered_equipment_tasks AS ot') - ->whereColumn('ot.equipment_id', 'oet.equipment_id') - ->whereNotIn('ot.elemental_tasks_id', function ($query) { - $query->select('cew.elemental_tasks_id') - ->from('control_equipment_workstation AS cew') - ->whereColumn('ot.equipment_id', 'cew.equipment_id'); - }); - }) - ->whereNotExists(function ($query) { - $query->select(DB::raw(1)) - ->from('control_equipment_workstation AS cew') - ->whereColumn('oet.equipment_id', 'cew.equipment_id'); - }) - ->get(); - - - $equipmentsDone = DB::select(" - WITH username AS ( - SELECT - user_name - FROM - users - WHERE - email = :email - ), - workstations AS ( - SELECT - id_workstations, - company_projects_id - FROM - construction_workstations - WHERE - name_workstations = (SELECT user_name FROM username) - ), - watet AS ( - SELECT - elemental_tasks_id - FROM - workstations_association_tasks - WHERE - id_workstations = (SELECT id_workstations FROM workstations) - ), - jobs AS ( - SELECT - ordered_equipment_tasks.equipment_id, - equipments.equipment_tag, - ordered_equipment_tasks.execution_order, - ordered_equipment_tasks.elemental_tasks_id, - workstations.id_workstations - FROM - ordered_equipment_tasks - INNER JOIN - equipments - ON - ordered_equipment_tasks.equipment_id = equipments.equipment_id - INNER JOIN - workstations - ON - equipments.company_projects_id = workstations.company_projects_id - WHERE - ordered_equipment_tasks.elemental_tasks_id IN (SELECT elemental_tasks_id FROM watet) - ), - valid_jobs AS ( - SELECT - jobs.equipment_id, - jobs.equipment_tag - FROM - jobs - WHERE - NOT EXISTS ( - SELECT - 1 - FROM - jobs AS j2 - WHERE - j2.equipment_id = jobs.equipment_id - AND NOT EXISTS ( - SELECT - 1 - FROM - control_equipment_workstation - WHERE - control_equipment_workstation.equipment_id = j2.equipment_id - AND control_equipment_workstation.elemental_tasks_id = j2.elemental_tasks_id - AND control_equipment_workstation.elemental_tasks_id IS NOT NULL - ) - ) - AND EXISTS ( - SELECT - 1 - FROM - control_equipment_workstation - WHERE - control_equipment_workstation.equipment_id = jobs.equipment_id - AND jobs.id_workstations = control_equipment_workstation.id_workstations - AND control_equipment_workstation.id_workstations IS NOT NULL - AND control_equipment_workstation.entry_date IS NOT NULL - AND control_equipment_workstation.departure_date IS NOT NULL - ) - ) - SELECT DISTINCT - valid_jobs.equipment_id, - valid_jobs.equipment_tag - FROM - valid_jobs; - ", ['email' => $userEmail]); - - - $equipmentsReturned = DB::select(" - SELECT DISTINCT - jobs.equipment_id, - jobs.equipment_tag - FROM ( - SELECT - oet.equipment_id, - e.equipment_tag, - oet.execution_order, - oet.elemental_tasks_id, - cw.id_workstations - FROM - ordered_equipment_tasks AS oet - JOIN - equipments AS e ON oet.equipment_id = e.equipment_id - JOIN - ( - SELECT - cw.id_workstations, - cw.company_projects_id, - wat.elemental_tasks_id - FROM - construction_workstations AS cw - JOIN - users AS u ON cw.name_workstations = u.user_name - JOIN - ( - SELECT - wat.id_workstations, - wat.elemental_tasks_id - FROM - workstations_association_tasks AS wat - ) AS wat ON wat.id_workstations = cw.id_workstations - WHERE - u.email = :email - ) AS cw ON e.company_projects_id = cw.company_projects_id - WHERE - oet.elemental_tasks_id = cw.elemental_tasks_id - ) AS jobs - INNER JOIN ( - SELECT cew.* - FROM control_equipment_workstation cew - INNER JOIN ( - SELECT equipment_id, elemental_tasks_id - FROM control_equipment_workstation - GROUP BY equipment_id, elemental_tasks_id - HAVING COUNT(*) > 1 - ) AS subquery - ON cew.equipment_id = subquery.equipment_id - AND cew.elemental_tasks_id = subquery.elemental_tasks_id - WHERE cew.id_workstations IS NULL - AND cew.entry_date IS NULL - ) AS repeated ON jobs.equipment_id = repeated.equipment_id - AND jobs.elemental_tasks_id = repeated.elemental_tasks_id - ", ['email' => $userEmail]); - - $workstationNameQuery = DB::select(" - SELECT construction_workstations.nomenclature_workstation - FROM construction_workstations - JOIN users - WHERE construction_workstations.name_workstations = users.user_name - AND users.email = :email; - ", ['email' => $userEmail]); - - $workstationName = $workstationNameQuery[0]->nomenclature_workstation; - - //Counting of equipments - $equipmentsTodoCount = count($equipmentsTodo); - $equipmentsDoneCount = count($equipmentsDone); - $equipmentsReturnedCount = count($equipmentsReturned); - - //Returning values of the queries to workstations layout - return view('workstations.index', [ - 'equipmentsTodo' => $equipmentsTodo, 'equipmentsTodoCount' => $equipmentsTodoCount, - 'equipmentsDone' => $equipmentsDone, 'equipmentsDoneCount' => $equipmentsDoneCount, - 'equipmentsReturned' => $equipmentsReturned, 'equipmentsReturnedCount' => $equipmentsReturnedCount, - 'workstationName' => $workstationName - ]); - } -} diff --git a/app/Http/ViewComposers/WorkstationComposer.php b/app/Http/ViewComposers/WorkstationComposer.php index 16808d5c..48ae442b 100644 --- a/app/Http/ViewComposers/WorkstationComposer.php +++ b/app/Http/ViewComposers/WorkstationComposer.php @@ -116,7 +116,7 @@ public function compose(View $view) WHERE wc.equipment_id = emr.equipment_id AND wc.control_id_workstations IS NOT NULL GROUP BY wc.equipment_id - HAVING COUNT(DISTINCT wc.control_id_workstations) > 1 + HAVING COUNT(DISTINCT wc.control_id_workstations) > 20 ) ) GROUP BY @@ -157,6 +157,8 @@ public function compose(View $view) e.equipment_tag ), + + workstations_multiple_rows AS ( SELECT cw.id_workstations, @@ -172,6 +174,8 @@ public function compose(View $view) u.email = :email2 ), + + workstations_control_all_tasks AS ( SELECT cew.control_equipment_workstation_id, @@ -204,6 +208,8 @@ public function compose(View $view) ) ) + + SELECT emr.equipment_id, emr.equipment_tag @@ -223,7 +229,8 @@ public function compose(View $view) WHERE wc.equipment_id = emr.equipment_id AND wc.control_id_workstations IS NOT NULL GROUP BY wc.equipment_id - HAVING COUNT(DISTINCT wc.control_id_workstations) >= 2 + HAVING COUNT(DISTINCT wc.control_id_workstations) >= 20 + ) ) GROUP BY diff --git a/app/Livewire/Execução/EquipmentsDashboard.php b/app/Livewire/Execução/EquipmentsDashboard.php index f186c797..11e443f7 100644 --- a/app/Livewire/Execução/EquipmentsDashboard.php +++ b/app/Livewire/Execução/EquipmentsDashboard.php @@ -147,7 +147,6 @@ public function refreshDataEquipments($datasProject) $this->totalEquivalentEquipment = array_sum($equipmentCounts); $this->completed1 = collect($this->completed1); - dump($this->completed1); } diff --git a/resources/views/Templates/templateWorkstations.blade.php b/resources/views/Templates/templateWorkstations.blade.php index 506b759d..b6f8788c 100644 --- a/resources/views/Templates/templateWorkstations.blade.php +++ b/resources/views/Templates/templateWorkstations.blade.php @@ -133,22 +133,19 @@

- {{ $equipmentsTodoCount }} a iniciar + {{ $equipmentsTodoCount }} a inicia

diff --git a/resources/views/projectsClients/createProject.blade.php b/resources/views/projectsClients/createProject.blade.php index ef48a172..8c384eb8 100755 --- a/resources/views/projectsClients/createProject.blade.php +++ b/resources/views/projectsClients/createProject.blade.php @@ -257,4 +257,5 @@ function addBeforeUnload() { }); } + @endsection diff --git a/resources/views/workstations/workstations.blade.php b/resources/views/workstations/workstations.blade.php index 5877880a..49bb19ce 100644 --- a/resources/views/workstations/workstations.blade.php +++ b/resources/views/workstations/workstations.blade.php @@ -1,5 +1,13 @@ @extends('Templates.templateWorkstations') + + + + + + @section('content') {{-- TE1 - Desmontar da linha --}} @if ($task_todo == 1) @@ -11,7 +19,6 @@
-

TE1 - Desmontar da linha

{{ $receiveDataElementalTask->elemental_tasks_code }}-{{ $receiveDataElementalTask->elemental_tasks_description }}

@@ -19,7 +26,7 @@
-
+ @csrf @@ -147,11 +154,9 @@ class="form-control" placeholder="">
@@ -174,14 +179,14 @@ class="form-control" placeholder="">
-

TE2 - Descontaminar

+ {{--

TE2 - Descontaminar

--}}

{{ $receiveDataElementalTask->elemental_tasks_code }}-{{ $receiveDataElementalTask->elemental_tasks_description }}

{{ $receiveDataEquipment->equipment_tag }}
- + @csrf @@ -222,10 +227,10 @@ class="form-control" placeholder="">