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